From 248c42efcc30cb55d1827bb7b1e438753ffd0898 Mon Sep 17 00:00:00 2001 From: Miqdad Date: Mon, 15 Sep 2025 11:07:40 +0700 Subject: done --- indoteknik_custom/models/purchase_order.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 18811b85..98cf6ff1 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -1066,8 +1066,11 @@ class PurchaseOrder(models.Model): # sticky=True # ) + has_bom = self.product_bom_id.id + has_manufacturing = self.manufacturing_id.id + if not self.from_apo: - if not self.matches_so and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: + if not self.matches_so and not self.env.user.is_purchasing_manager and not self.env.user.is_leader and not has_bom and not has_manufacturing: raise UserError("Tidak ada link dengan SO, harus di confirm oleh Purchasing Manager") send_email = False -- cgit v1.2.3 From 7fe2c169a448df17c9395dfae20c524e94aa8bfc Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 16 Sep 2025 09:27:32 +0700 Subject: push --- indoteknik_custom/models/purchase_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 98cf6ff1..4636c243 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -137,7 +137,7 @@ class PurchaseOrder(models.Model): def _compute_date_planned(self): """ date_planned = the earliest date_planned across all order lines. """ for order in self: - order.date_planned = False + order.date_planned = order.date_planned @api.constrains('date_planned') def constrains_date_planned(self): -- cgit v1.2.3 From 19a286c49f2ae626d9d6c12829d7bc094ba563b2 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 16 Sep 2025 14:13:10 +0700 Subject: push --- indoteknik_custom/models/purchase_order.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 4636c243..e7e5c382 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -6,6 +6,7 @@ import logging from pytz import timezone, utc import io import base64 +from odoo.tools import lazy_property try: from odoo.tools.misc import xlsxwriter except ImportError: @@ -115,6 +116,19 @@ class PurchaseOrder(models.Model): compute='_compute_complete_bu_in_count' ) + show_description = fields.Boolean( + string='Show Description' + ) + + @api.onchange('show_description') + def onchange_show_description(self): + if self.show_description == True: + for line in self.order_line: + line.show_description = True + else: + for line in self.order_line: + line.show_description = False + def _compute_complete_bu_in_count(self): for order in self: if order.state not in ['done', 'cancel']: -- cgit v1.2.3 From 1ff3a02196c74dd21573e84aba22cca8bd99a3bb Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 17 Sep 2025 09:27:58 +0700 Subject: push --- indoteknik_custom/models/purchase_order.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index e7e5c382..68180235 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -117,7 +117,8 @@ class PurchaseOrder(models.Model): ) show_description = fields.Boolean( - string='Show Description' + string='Show Description', + default=True ) @api.onchange('show_description') -- cgit v1.2.3 From fe75f5b4ad91ef9c5d54cd98449a53b8a40018bc Mon Sep 17 00:00:00 2001 From: Miqdad Date: Wed, 17 Sep 2025 12:47:26 +0700 Subject: push --- indoteknik_custom/models/purchase_order.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index e7e5c382..45fbe6e7 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -197,8 +197,11 @@ class PurchaseOrder(models.Model): # Ambil semua BU awal dari PO base_bu = StockPicking.search([ + '|', + '&', ('name', 'ilike', 'BU/'), - ('origin', 'ilike', order.name) + ('group_id.id', '=', order.group_id.id), + ('origin', '=', order.name), ]) all_bu = base_bu @@ -228,10 +231,12 @@ class PurchaseOrder(models.Model): # Step 1: cari semua BU pertama (PUT, INT) yang berasal dari PO ini base_bu = StockPicking.search([ + '|', + '&', ('name', 'ilike', 'BU/'), - ('origin', 'ilike', self.name) + ('group_id.id', '=', self.group_id.id), + ('origin', '=', self.name), ]) - all_bu = base_bu seen_names = set(base_bu.mapped('name')) @@ -242,10 +247,10 @@ class PurchaseOrder(models.Model): ('origin', 'in', ['Return of %s' % name for name in seen_names]) ]) next_names = set(next_bu.mapped('name')) - + if not next_names - seen_names: break - + all_bu |= next_bu seen_names |= next_names -- cgit v1.2.3 From ef5418ec79e17a4b233e6ea51ba66126a97ab0eb Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Fri, 19 Sep 2025 14:05:23 +0700 Subject: (andri) add validasi jika pengajuan assets harus isi notes --- indoteknik_custom/models/purchase_order.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 0304b5e2..b34ec926 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -1057,8 +1057,19 @@ class PurchaseOrder(models.Model): message="Produk "+line.product_id.name+" memiliki vendor berbeda dengan SO (Vendor PO: "+str(self.partner_id.name)+", Vendor SO: "+str(line.so_line_id.vendor_id.name)+")", sticky=True ) + + def _check_assets_note(self): + for order in self: + # Cari apakah ada line dengan produk ID 614469 ('Assets Mesin & Peralatan') + asset_line = order.order_line.filtered(lambda l: l.product_id.id == 595346) + if asset_line and not order.notes: + raise UserError(_( + "%s berisi produk 'Assets Mesin & Peralatan'. " + "Harap isi Notes untuk menjelaskan kebutuhan dan divisi terkait." + ) % order.name) def button_confirm(self): + self._check_assets_note() # self._check_payment_term() # check payment term res = super(PurchaseOrder, self).button_confirm() current_time = datetime.now() -- cgit v1.2.3