From 5e4b34998b2af53de965667e5e9b957affeda6fa Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 1 Aug 2024 13:43:52 +0700 Subject: fix so ask approve --- indoteknik_custom/models/sale_order.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 376ae20a..44e4a886 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -486,7 +486,7 @@ class SaleOrder(models.Model): # pattern = r'^\d{10,}$' # return re.match(pattern, self.npwp) is not None - def sale_order_approve(self): + def sale_order_check_approve(self): self.check_due() self._validate_order() @@ -502,6 +502,35 @@ class SaleOrder(models.Model): raise UserError("Payment Term berbeda pada Master Data Customer") if not order.client_order_ref and order.create_date > datetime(2024, 6, 27): raise UserError("Customer Reference kosong, di isi dengan NO PO jika PO tidak ada mohon ditulis Tanpa PO") + + def sale_order_approve(self): + self.check_due() + + self._validate_order() + for order in self: + order.order_line.validate_line() + + partner = order.partner_id.parent_id or order.partner_id + if not partner.property_payment_term_id: + raise UserError("Payment Term pada Master Data Customer harus diisi") + if not partner.active_limit: + raise UserError("Credit Limit pada Master Data Customer harus diisi") + if order.payment_term_id != partner.property_payment_term_id: + raise UserError("Payment Term berbeda pada Master Data Customer") + if not order.client_order_ref and order.create_date > datetime(2024, 6, 27): + raise UserError("Customer Reference kosong, di isi dengan NO PO jika PO tidak ada mohon ditulis Tanpa PO") + + if order.validate_partner_invoice_due(): + return self._create_notification_action('Notification', 'Terdapat invoice yang telah melewati batas waktu, mohon perbarui pada dokumen Due Extension') + + if order._requires_approval_margin_leader(): + order.approval_status = 'pengajuan2' + return self._create_approval_notification('Pimpinan') + elif order._requires_approval_margin_manager(): + order.approval_status = 'pengajuan1' + return self._create_approval_notification('Sales Manager') + + raise UserError("Bisa langsung Confirm") def send_notif_to_salesperson(self, cancel=False): @@ -575,7 +604,7 @@ class SaleOrder(models.Model): def action_confirm(self): for order in self: - order.sale_order_approve() + order.sale_order_check_approve() order._validate_order() order.order_line.validate_line() -- cgit v1.2.3