diff options
| author | FIN-IT_AndriFP <andrifebriyadiputra@gmail.com> | 2026-02-27 16:47:17 +0700 |
|---|---|---|
| committer | FIN-IT_AndriFP <andrifebriyadiputra@gmail.com> | 2026-02-27 16:47:17 +0700 |
| commit | f1a0f0edb52a0d68bb711cf96ef6be8904e3faa3 (patch) | |
| tree | d5f2221df5547adc91889f21adbe75463990a368 | |
| parent | 2bb66cc9ac20dc68b0a2480bf29c8b4ee661ed08 (diff) | |
approve 2 layer dengan penambahan ketentuan cek amount baru cek margin
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 59 |
1 files changed, 37 insertions, 22 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 27bda20c..df72c9cb 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -2386,8 +2386,14 @@ class SaleOrder(models.Model): # return self._create_notification_action('Notification', # 'Terdapat invoice yang telah melewati batas waktu, mohon perbarui pada dokumen Due Extension') value_trigger = order._requires_approval_by_value() - - if order._requires_approval_margin_leader(): + if value_trigger: + self.check_product_bom() + self.check_credit_limit() + self.check_limit_so_to_invoice() + order.approval_status = 'pengajuan0' + order.message_post(body="Mengajukan approval ke Team Sales_") + return self._create_approval_notification('Team Sales') + elif order._requires_approval_margin_leader(): order.approval_status = 'pengajuan2' order.message_post(body="Mengajukan approval ke Pimpinan") return self._create_approval_notification('Pimpinan') @@ -2405,13 +2411,13 @@ class SaleOrder(models.Model): order.approval_status = 'pengajuan0' order.message_post(body="Mengajukan approval ke Team Sales") return self._create_approval_notification('Team Sales') - elif value_trigger: - self.check_product_bom() - self.check_credit_limit() - self.check_limit_so_to_invoice() - order.approval_status = 'pengajuan0' - order.message_post(body="Mengajukan approval ke Team Sales (Amount Total > 50jt)") - return self._create_approval_notification('Team Sales') + # elif value_trigger: + # self.check_product_bom() + # self.check_credit_limit() + # self.check_limit_so_to_invoice() + # order.approval_status = 'pengajuan0' + # order.message_post(body="Mengajukan approval ke Team Sales_") + # return self._create_approval_notification('Team Sales') if not order.with_context(ask_approval=True)._is_request_to_own_team_leader(): return self._create_notification_action( @@ -2677,20 +2683,24 @@ class SaleOrder(models.Model): 'Hanya bisa konfirmasi SO tim Anda.' ) value_trigger = order._requires_approval_by_value() - if order._requires_approval_margin_leader(): + if value_trigger: + order.approval_status = 'pengajuan0' + order.message_post(body="Mengajukan approval ke Team Sales") + return self._create_approval_notification('Team Sales') + elif 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') - elif order._requires_approval_team_sales(): - order.approval_status = 'pengajuan1' + elif value_trigger or order._requires_approval_team_sales(): + order.approval_status = 'pengajuan0' order.message_post(body="Mengajukan approval ke Team Sales") return self._create_approval_notification('Team Sales') - elif value_trigger: - order.approval_status = 'pengajuan1' - order.message_post(body="Mengajukan approval ke Team Sales (Total SO > 50jt)") - return self._create_approval_notification('Team Sales') + # elif value_trigger: + # order.approval_status = 'pengajuan0' + # order.message_post(body="Mengajukan approval ke Team Sales (Total SO > 50jt)") + # return self._create_approval_notification('Team Sales') order.approval_status = 'approved' order._set_sppkp_npwp_contact() @@ -2788,14 +2798,14 @@ class SaleOrder(models.Model): return False def _requires_approval_margin_leader(self): - return self.total_percent_margin <= 15 and not self.env.user.is_leader + return self.total_percent_margin <= 40 and not self.env.user.is_leader def _requires_approval_margin_manager(self): - return 15 < self.total_percent_margin < 18 and not self.env.user.is_sales_manager and not self.env.user.id == 375 and not self.env.user.is_leader + return 40 < self.total_percent_margin < 50 and not self.env.user.is_sales_manager and not self.env.user.id == 375 and not self.env.user.is_leader def _requires_approval_team_sales(self): return ( - 18 <= self.total_percent_margin <= 24 + 60 <= self.total_percent_margin <= 70 # self.total_percent_margin >= 18 and self.env.user.id not in [11, 9, 375] # Eko, Ade, Putra and not self.env.user.is_sales_manager @@ -2803,9 +2813,14 @@ class SaleOrder(models.Model): ) def _requires_approval_by_value(self): - LIMIT_VALUE = 50000000 - return self.amount_total > LIMIT_VALUE - + # LIMIT_VALUE = 50000000 + LIMIT_VALUE = float(self.env['ir.config_parameter'].sudo().get_param('so.limit_value_approve', default='50000000')) + return ( + self.amount_total > LIMIT_VALUE + and self.env.user.id not in [11, 9, 375] # Eko, Ade, Putra + and not self.env.user.is_sales_manager + and not self.env.user.is_leader + ) def _is_request_to_own_team_leader(self): user = self.env.user |
