From 4dd6ef58e2c60df7cb25b65ae6ad23d3bee2ebc1 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 15 Jul 2025 11:13:04 +0700 Subject: add so number on purchasing job --- indoteknik_custom/models/approval_payment_term.py | 6 +++--- indoteknik_custom/models/mrp_production.py | 2 ++ indoteknik_custom/models/purchasing_job.py | 4 +++- indoteknik_custom/views/purchasing_job.xml | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/indoteknik_custom/models/approval_payment_term.py b/indoteknik_custom/models/approval_payment_term.py index 025f9ed4..6c857b45 100644 --- a/indoteknik_custom/models/approval_payment_term.py +++ b/indoteknik_custom/models/approval_payment_term.py @@ -143,17 +143,17 @@ class ApprovalPaymentTerm(models.Model): user = self.env.user is_it = user.has_group('indoteknik_custom.group_role_it') - if (not user.id ==7 and user.id == 19 and not self.approve_sales_manager) or is_it: + if (not user.id ==7 and user.id == 19 and not self.approve_sales_manager) or (is_it and not self.approve_sales_manager): self.approve_sales_manager = True self.state = 'waiting_approval_finance' return - if (not user.id ==7 and user.id == 688 and not self.approve_finance) or is_it: + if (not user.id ==7 and user.id == 688 and not self.approve_finance) or (is_it and not self.approve_finance): self.approve_finance = True self.state = 'waiting_approval_leader' return - if (user.id == 7 and self.approve_finance) or is_it: + if (user.id == 7 and self.approve_finance) or (is_it and not self.approve_leader): self.approve_leader = True if not self.approve_finance and not is_it: diff --git a/indoteknik_custom/models/mrp_production.py b/indoteknik_custom/models/mrp_production.py index 85b8405f..7977bdf7 100644 --- a/indoteknik_custom/models/mrp_production.py +++ b/indoteknik_custom/models/mrp_production.py @@ -156,6 +156,8 @@ class MrpProduction(models.Model): 'order_id': new_po.id }]) + new_po.button_confirm() + self.is_po = True return po_ids diff --git a/indoteknik_custom/models/purchasing_job.py b/indoteknik_custom/models/purchasing_job.py index ea2f46cb..58f1c067 100644 --- a/indoteknik_custom/models/purchasing_job.py +++ b/indoteknik_custom/models/purchasing_job.py @@ -26,6 +26,7 @@ class PurchasingJob(models.Model): purchase_representative_id = fields.Many2one('res.users', string="Purchase Representative", readonly=True) note = fields.Char(string="Note Detail") date_po = fields.Datetime(string='Date PO', copy=False) + so_number = fields.Char(string='SO Number', copy=False) def unlink(self): # Example: Delete related records from the underlying model @@ -66,6 +67,7 @@ class PurchasingJob(models.Model): max(pjs.status_apo::text) AS status_apo, max(pjs.note::text) AS note, max(pjs.date_po::text) AS date_po, + pmp.so_number, CASE WHEN pmp.brand IN ('Tekiro', 'RYU', 'Rexco', 'RYU (Sparepart)') THEN 27 WHEN sub.vendor_id = 9688 THEN 397 @@ -83,7 +85,7 @@ class PurchasingJob(models.Model): group by vso.product_id ) sub ON sub.product_id = pmp.product_id WHERE pmp.action = 'kurang'::text AND sub.vendor_id IS NOT NULL - GROUP BY pmp.product_id, pmp.brand, pmp.item_code, pmp.product, pmp.action, sub.vendor_id; + GROUP BY pmp.product_id, pmp.brand, pmp.item_code, pmp.product, pmp.action, sub.vendor_id, pmp.so_number; """ % self._table) def open_form_multi_generate_request_po(self): diff --git a/indoteknik_custom/views/purchasing_job.xml b/indoteknik_custom/views/purchasing_job.xml index bb1c7643..976f1485 100644 --- a/indoteknik_custom/views/purchasing_job.xml +++ b/indoteknik_custom/views/purchasing_job.xml @@ -18,6 +18,7 @@ + @@ -41,6 +42,7 @@ + -- cgit v1.2.3 From 0198b0a0683cc7db1241ec9b7184c2cb608ba049 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Tue, 15 Jul 2025 11:52:33 +0700 Subject: (andri) fix edit unit price PO --- indoteknik_custom/models/purchase_order.py | 9 ++++++++- indoteknik_custom/views/purchase_order.xml | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 4dc26d74..6901ecb6 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -668,9 +668,16 @@ class PurchaseOrder(models.Model): resposible_ids = list(set(resposible_ids)) purchase.responsible_ids = resposible_ids + # def _compute_has_active_invoice(self): + # for order in self: + # order.has_active_invoice = any(invoice.state != 'cancel' for invoice in order.invoice_ids) + def _compute_has_active_invoice(self): for order in self: - order.has_active_invoice = any(invoice.state != 'cancel' for invoice in order.invoice_ids) + related_invoices = order.invoice_ids.filtered( + lambda inv: inv.purchase_order_id.id == order.id and inv.move_type == 'in_invoice' and inv.state != 'cancel' + ) + order.has_active_invoice = bool(related_invoices) def add_product_to_pricelist(self): i = 0 diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml index dae23eed..fa8d40d5 100755 --- a/indoteknik_custom/views/purchase_order.xml +++ b/indoteknik_custom/views/purchase_order.xml @@ -164,7 +164,7 @@ - {'readonly': ['|', ('state', 'in', ['purchase', 'done', 'cancel']), ('has_active_invoice', '=', True)]} + {'readonly': ['&', ('state', 'in', ['purchase', 'done', 'cancel']), ('has_active_invoice', '=', True)]} -- cgit v1.2.3 From f3fc6d3d1a4c5ac0b287e3bb7e1163b99393c728 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Tue, 15 Jul 2025 13:20:58 +0700 Subject: (andri) fix --- indoteknik_custom/models/purchase_order.py | 16 ++++++++-------- indoteknik_custom/views/purchase_order.xml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 6901ecb6..f98a37be 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -668,16 +668,16 @@ class PurchaseOrder(models.Model): resposible_ids = list(set(resposible_ids)) purchase.responsible_ids = resposible_ids - # def _compute_has_active_invoice(self): - # for order in self: - # order.has_active_invoice = any(invoice.state != 'cancel' for invoice in order.invoice_ids) - def _compute_has_active_invoice(self): for order in self: - related_invoices = order.invoice_ids.filtered( - lambda inv: inv.purchase_order_id.id == order.id and inv.move_type == 'in_invoice' and inv.state != 'cancel' - ) - order.has_active_invoice = bool(related_invoices) + order.has_active_invoice = any(invoice.state != 'cancel' for invoice in order.invoice_ids) + + # def _compute_has_active_invoice(self): + # for order in self: + # related_invoices = order.invoice_ids.filtered( + # lambda inv: inv.purchase_order_id.id == order.id and inv.move_type == 'in_invoice' and inv.state != 'cancel' + # ) + # order.has_active_invoice = bool(related_invoices) def add_product_to_pricelist(self): i = 0 diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml index fa8d40d5..dae23eed 100755 --- a/indoteknik_custom/views/purchase_order.xml +++ b/indoteknik_custom/views/purchase_order.xml @@ -164,7 +164,7 @@ - {'readonly': ['&', ('state', 'in', ['purchase', 'done', 'cancel']), ('has_active_invoice', '=', True)]} + {'readonly': ['|', ('state', 'in', ['purchase', 'done', 'cancel']), ('has_active_invoice', '=', True)]} -- cgit v1.2.3