summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindoteknik_custom/__manifest__.py1
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/automatic_purchase.py2
-rw-r--r--indoteknik_custom/models/sale_monitoring_detail_v2.py68
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv3
-rw-r--r--indoteknik_custom/views/sale_monitoring_detail_v2.xml113
6 files changed, 186 insertions, 2 deletions
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py
index d31ac21a..e7793f1c 100755
--- a/indoteknik_custom/__manifest__.py
+++ b/indoteknik_custom/__manifest__.py
@@ -106,6 +106,7 @@
'views/wati_history.xml',
'views/purchasing_job.xml',
'views/purchasing_job_multi_update.xml',
+ 'views/sale_monitoring_detail_v2.xml',
'report/report.xml',
'report/report_banner_banner.xml',
'report/report_banner_banner2.xml',
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index fb986c0d..f1d0a6cf 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -98,3 +98,4 @@ from . import purchasing_job
from . import purchasing_job_multi_update
from . import purchase_order_sales_match
from . import sales_order_purchase_match
+from . import sale_monitoring_detail_v2 \ No newline at end of file
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index ed35835e..d0bbdb1e 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -67,7 +67,7 @@ class AutomaticPurchase(models.Model):
if self.is_po:
raise UserError('Sudah pernah di create PO')
- self.validate_so_is_po()
+ # self.validate_so_is_po()
current_time = datetime.now()
vendor_ids = self.env['automatic.purchase.line'].read_group(
diff --git a/indoteknik_custom/models/sale_monitoring_detail_v2.py b/indoteknik_custom/models/sale_monitoring_detail_v2.py
new file mode 100644
index 00000000..1aec2bef
--- /dev/null
+++ b/indoteknik_custom/models/sale_monitoring_detail_v2.py
@@ -0,0 +1,68 @@
+from odoo import fields, models, api, tools
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class SaleMonitoringDetailV2(models.Model):
+ _name = 'sale.monitoring.detail.v2'
+ _auto = False
+ _rec_name = 'sale_order_id'
+
+ id = fields.Integer()
+ sale_order_id = fields.Many2one("sale.order", string="Sale Order")
+ partner_id = fields.Many2one("res.partner", string="Customer")
+ user_id = fields.Many2one("res.users", string="Salesperson")
+ product_id = fields.Many2one("product.product", string="Product")
+ qty_so = fields.Integer(string="Qty SO")
+ qty_po = fields.Integer(string="Qty PO")
+ qty_po_received = fields.Integer(string="Qty PO Received")
+ qty_so_delivered = fields.Integer(string="Qty SO Delivered")
+ qty_so_invoiced = fields.Integer(string="Qty SO Invoiced")
+ date_order = fields.Datetime(string="Date Order")
+ status = fields.Char(string="Status")
+ qty_reserved = fields.Integer(string="Qty Reserved")
+ note = fields.Char(string="Note")
+
+ def init(self):
+ tools.drop_view_if_exists(self.env.cr, self._table)
+ self.env.cr.execute("""
+ CREATE OR REPLACE VIEW %s AS (
+ SELECT
+ *,
+ CASE
+ when qty_so_delivered = qty_so then 'Delivered'
+ when qty_reserved >= qty_so then 'Siap kirim'
+ when qty_po + qty_reserved - qty_po_received < qty_so then 'Belum/Kurang PO'
+ when qty_po_received = 0 then 'Belum terima'
+ when qty_po_received < qty_po then 'Terima sebagian'
+ when qty_so_invoiced = qty_so then 'Invoiced'
+ END AS status
+ FROM
+ (
+ SELECT
+ sol.id AS id,
+ so.id AS sale_order_id,
+ so.partner_id as partner_id,
+ so.user_id,
+ p.id AS product_id,
+ sol.product_uom_qty AS qty_so,
+ sol.qty_delivered AS qty_so_delivered,
+ get_qty_to_delivered(sol.id) as qty_to_delivered,
+ sol.qty_invoiced AS qty_so_invoiced,
+ so.date_order AS date_order,
+ get_qty_po_matches_so(so.id, sol.product_id) AS qty_po,
+ get_qty_received(so.id, sol.product_id) AS qty_po_received,
+ get_qty_reserved(so.id, sol.product_id) as qty_reserved,
+ sol.note_procurement as note
+ FROM sale_order so
+ JOIN sale_order_line sol ON sol.order_id = so.id
+ JOIN product_product p ON p.id = sol.product_id
+ JOIN product_template pt ON pt.id = p.product_tmpl_id
+ WHERE pt.type IN ('consu','product')
+ AND so.state IN ('sale','done')
+ AND so.create_date >= '2022-08-10'
+ and so.so_status not in('terproses')
+ ) a
+ )
+ """ % self._table)
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index c22ec688..ad266bd7 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -90,4 +90,5 @@ access_purchasing_job_multi_update,access.purchasing.job.multi.update,model_purc
access_automatic_purchase_sales_match,access.automatic.purchase.sales.match,model_automatic_purchase_sales_match,,1,1,1,1
access_v_sales_outstanding,access.v.sales.outstanding,model_v_sales_outstanding,,1,1,1,1
access_purchase_order_sales_match,access.purchase.order.sales.match,model_purchase_order_sales_match,,1,1,1,1
-access_sales_order_purchase_match,access.sale.order.purchase.match,model_sales_order_purchase_match,,1,1,1,1 \ No newline at end of file
+access_sales_order_purchase_match,access.sale.order.purchase.match,model_sales_order_purchase_match,,1,1,1,1
+access_sale_monitoring_detail_v2,access.sale.monitoring.detail.v2,model_sale_monitoring_detail_v2,,1,1,1,1 \ No newline at end of file
diff --git a/indoteknik_custom/views/sale_monitoring_detail_v2.xml b/indoteknik_custom/views/sale_monitoring_detail_v2.xml
new file mode 100644
index 00000000..c2e7844d
--- /dev/null
+++ b/indoteknik_custom/views/sale_monitoring_detail_v2.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+ <record id="sale_monitoring_detail_v2_tree" model="ir.ui.view">
+ <field name="name">sale.monitoring.detail.v2.tree</field>
+ <field name="model">sale.monitoring.detail.v2</field>
+ <field name="arch" type="xml">
+ <tree create="false" multi_edit="1">
+ <field name="date_order"/>
+ <field name="sale_order_id"/>
+ <field name="partner_id"/>
+ <field name="user_id"/>
+ <field name="product_id"/>
+ <field name="qty_so"/>
+ <field name="qty_reserved"/>
+ <field name="qty_po"/>
+ <field name="qty_po_received"/>
+ <field name="qty_so_delivered"/>
+ <field name="qty_so_invoiced"/>
+ <field name="status"
+ widget="badge"
+ decoration-danger="status == 'Belum/Kurang PO'"
+ decoration-warning="status == 'Belum terima' or status == 'Terima sebagian'"
+ decoration-success="status == 'Siap kirim'"
+ decoration-info="status == 'Delivered' or status == 'Invoiced'"
+ />
+ <field name="note" optional="hide"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="sale_monitoring_detail_v2_form" model="ir.ui.view">
+ <field name="name">sale.monitoring.detail.v2.form</field>
+ <field name="model">sale.monitoring.detail.v2</field>
+ <field name="arch" type="xml">
+ <form create="false" edit="false">
+ <sheet>
+ <group>
+ <group>
+ <field name="sale_order_id"/>
+ <field name="partner_id"/>
+ <field name="user_id"/>
+ <field name="product_id"/>
+ <field name="status"
+ widget="badge"
+ decoration-danger="status == 'Belum/Kurang PO'"
+ decoration-warning="status == 'Belum terima' or status == 'Terima sebagian'"
+ decoration-success="status == 'Siap kirim'"
+ decoration-info="status == 'Delivered' or status == 'Invoiced'"
+ />
+ <field name="note"/>
+ </group>
+ <group>
+ <field name="qty_so"/>
+ <field name="qty_reserved"/>
+ <field name="qty_po"/>
+ <field name="qty_po_received"/>
+ <field name="qty_so_delivered"/>
+ <field name="qty_so_invoiced"/>
+ </group>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="view_monitoring_detail_filter" model="ir.ui.view">
+ <field name="name">sale.monitoring.detail.v2.list.select</field>
+ <field name="model">sale.monitoring.detail.v2</field>
+ <field name="priority" eval="15"/>
+ <field name="arch" type="xml">
+ <search string="Search Monitoring">
+ <field name="sale_order_id"/>
+ <field name="partner_id"/>
+ <field name="user_id"/>
+ <field name="product_id"/>
+ <field name="status"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="sale_monitoring_detail_v2_action" model="ir.actions.act_window">
+ <field name="name">Sale Monitoring Detail V2</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">sale.monitoring.detail.v2</field>
+ <field name="search_view_id" ref="view_monitoring_detail_filter"/>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem
+ id="menu_sale_monitoring_detail_v2_in_purchase"
+ name="Sale Detail V2"
+ parent="menu_monitoring_in_purchase"
+ sequence="2"
+ action="sale_monitoring_detail_v2_action"
+ />
+
+ <menuitem
+ id="menu_sale_monitoring_detail_v2_in_sale"
+ name="Sale Detail V2"
+ parent="menu_monitoring_in_sale"
+ sequence="2"
+ action="sale_monitoring_detail_v2_action"
+ />
+
+ <menuitem
+ id="menu_sale_monitoring_detail_v2_in_stock"
+ name="Sale Detail V2"
+ parent="menu_monitoring_in_stock"
+ sequence="2"
+ action="sale_monitoring_detail_v2_action"
+ />
+
+</odoo> \ No newline at end of file