summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFIN-IT_AndriFP <andrifebriyadiputra@gmail.com>2026-02-27 16:47:17 +0700
committerFIN-IT_AndriFP <andrifebriyadiputra@gmail.com>2026-02-27 16:47:17 +0700
commitf1a0f0edb52a0d68bb711cf96ef6be8904e3faa3 (patch)
treed5f2221df5547adc91889f21adbe75463990a368
parent2bb66cc9ac20dc68b0a2480bf29c8b4ee661ed08 (diff)
approve 2 layer dengan penambahan ketentuan cek amount baru cek margin
-rwxr-xr-xindoteknik_custom/models/sale_order.py59
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