diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-04-27 10:41:15 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-04-27 10:41:15 +0700 |
| commit | 04216fb6fc1ecc1bba78b7f0ed50195d3876b287 (patch) | |
| tree | 4909d48824a70b008857af651083ca424857c937 | |
| parent | aad3d92f97ad443c9288a5b51e618a112deb981e (diff) | |
add menu procurement monitoring
| -rwxr-xr-x | indoteknik_custom/__manifest__.py | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/procurement_monitoring_detail.py | 55 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | indoteknik_custom/views/procurement_monitoring_detail.xml | 41 |
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 |
