summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-04-27 10:41:15 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-04-27 10:41:15 +0700
commit04216fb6fc1ecc1bba78b7f0ed50195d3876b287 (patch)
tree4909d48824a70b008857af651083ca424857c937
parentaad3d92f97ad443c9288a5b51e618a112deb981e (diff)
add menu procurement monitoring
-rwxr-xr-xindoteknik_custom/__manifest__.py1
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/procurement_monitoring_detail.py55
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv3
-rw-r--r--indoteknik_custom/views/procurement_monitoring_detail.xml41
5 files changed, 100 insertions, 1 deletions
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py
index cff7d212..df74375f 100755
--- a/indoteknik_custom/__manifest__.py
+++ b/indoteknik_custom/__manifest__.py
@@ -71,6 +71,7 @@
'views/midtrans.xml',
'views/automatic_purchase.xml',
'views/raja_ongkir.xml',
+ 'views/procurement_monitoring_detail.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 d6c88f7d..68b7df93 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -59,3 +59,4 @@ from . import uangmuka_pembelian
from . import automatic_purchase
from . import apache_solr
from . import raja_ongkir
+from . import procurement_monitoring_detail
diff --git a/indoteknik_custom/models/procurement_monitoring_detail.py b/indoteknik_custom/models/procurement_monitoring_detail.py
new file mode 100644
index 00000000..348fce68
--- /dev/null
+++ b/indoteknik_custom/models/procurement_monitoring_detail.py
@@ -0,0 +1,55 @@
+from odoo import fields, models, api, tools
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class SaleMonitoringDetail(models.Model):
+ _name = 'procurement.monitoring.detail'
+ _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_reserved = fields.Integer(string="Qty Reserved")
+ qty_available = fields.Integer(string="Qty Available")
+ qty_po = fields.Integer(string="Qty PO")
+ date_order = fields.Datetime(string="Date Order")
+ status = fields.Char(string="Status")
+
+ def init(self):
+ tools.drop_view_if_exists(self.env.cr, self._table)
+ self.env.cr.execute("""
+ CREATE OR REPLACE VIEW %s AS (
+ SELECT
+ *,
+ a.qty_so-a.qty_reserved as qty_po,
+ case when a.qty_so-a.qty_reserved > 0 then 'harus beli'
+ else 'cukup' 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,
+ get_qty_available(sol.product_id) as qty_available,
+ get_qty_reserved(so.id, sol.product_id) as qty_reserved,
+ so.date_order AS date_order
+ 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 f7de6d3f..4abfa123 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -45,4 +45,5 @@ access_automatic_purchase,access.automatic.purchase,model_automatic_purchase,,1,
access_automatic_purchase_line,access.automatic.purchase.line,model_automatic_purchase_line,,1,1,1,1
access_automatic_purchase_match,access.automatic.purchase.match,model_automatic_purchase_match,,1,1,1,1
access_apache_solr,access.apache.solr,model_apache_solr,,1,1,1,1
-access_group_partner,access.group.partner,model_group_partner,,1,1,1,1 \ No newline at end of file
+access_group_partner,access.group.partner,model_group_partner,,1,1,1,1
+access_procurement_monitoring_detail,access.procurement.monitoring.detail,model_procurement_monitoring_detail,,1,1,1,1 \ No newline at end of file
diff --git a/indoteknik_custom/views/procurement_monitoring_detail.xml b/indoteknik_custom/views/procurement_monitoring_detail.xml
new file mode 100644
index 00000000..4819fccd
--- /dev/null
+++ b/indoteknik_custom/views/procurement_monitoring_detail.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+ <record id="procurement_monitoring_detail_tree" model="ir.ui.view">
+ <field name="name">procurement.monitoring.detail.tree</field>
+ <field name="model">procurement.monitoring.detail</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_available"/>
+ <field name="qty_po"/>
+ <field name="status"
+ widget="badge"
+ decoration-danger="status == 'harus beli'"
+ decoration-success="status == 'cukup'"
+ />
+ </tree>
+ </field>
+ </record>
+
+ <record id="procurement_monitoring_detail_action" model="ir.actions.act_window">
+ <field name="name">Procurement Monitoring Detail</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">procurement.monitoring.detail</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem
+ id="menu_procurement_monitoring_detail_in_purchase"
+ name="Procurement Monitoring Detail"
+ parent="menu_monitoring_in_purchase"
+ sequence="150"
+ action="procurement_monitoring_detail_action"
+ />
+
+</odoo> \ No newline at end of file