summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-08-08 14:37:10 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-08-08 14:37:10 +0700
commit678f0a55a4e340ed8fb448a528cb738e10ed84bd (patch)
treec589842e86bfd4b7a31688fc4905db3ca881e6f8
parentcad72ba8d36cff00190143a655c18765e93851fe (diff)
(andri) fix
-rwxr-xr-xindoteknik_custom/models/sale_order.py53
1 files changed, 35 insertions, 18 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index a2817ea6..5e3f8965 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -2161,7 +2161,10 @@ class SaleOrder(models.Model):
# 'Terdapat invoice yang telah melewati batas waktu, mohon perbarui pada dokumen Due Extension')
if not order._is_request_to_own_team_leader():
- raise UserError("Anda hanya dapat mengonfirmasi SO dari anggota tim Anda sendiri.")
+ return self._create_notification_action(
+ 'Peringatan',
+ 'Hanya bisa konfirmasi SO tim Anda.'
+ )
if order._requires_approval_margin_leader():
order.approval_status = 'pengajuan2'
return self._create_approval_notification('Pimpinan')
@@ -2171,6 +2174,12 @@ class SaleOrder(models.Model):
self.check_limit_so_to_invoice()
order.approval_status = 'pengajuan1'
return self._create_approval_notification('Sales Manager')
+ elif order._requires_approval_team_sales():
+ self.check_product_bom()
+ self.check_credit_limit()
+ self.check_limit_so_to_invoice()
+ order.approval_status = 'pengajuan1'
+ return self._create_approval_notification('Team Sales')
raise UserError("Bisa langsung Confirm")
@@ -2387,12 +2396,20 @@ class SaleOrder(models.Model):
return self._create_notification_action('Notification',
'Terdapat invoice yang telah melewati batas waktu, mohon perbarui pada dokumen Due Extension')
+ if not order._is_request_to_own_team_leader():
+ return self._create_notification_action(
+ 'Warning',
+ 'Hanya bisa konfirmasi SO tim Anda.'
+ )
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')
+ elif order._requires_approval_team_sales():
+ order.approval_status = 'pengajuan1'
+ return self._create_approval_notification('Team Sales')
order.approval_status = 'approved'
order._set_sppkp_npwp_contact()
@@ -2492,34 +2509,34 @@ class SaleOrder(models.Model):
def _requires_approval_margin_leader(self):
return self.total_percent_margin <= 15 and not self.env.user.is_leader
- # def _requires_approval_margin_manager(self):
- # return 15 < self.total_percent_margin <= 24 and not self.env.user.is_sales_manager and not self.env.user.id == 375 and not self.env.user.is_leader
- # return self.total_percent_margin >= 15 and not self.env.user.is_leader and not self.env.user.is_sales_manager
-
def _requires_approval_margin_manager(self):
- margin = self.total_percent_margin
- user = self.env.user
- user_id = user.id
+ 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
+
+ def _requires_approval_team_sales(self):
+ return (
+ 18 <= self.total_percent_margin <= 24
+ 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
+ )
- if margin <= 15 or margin > 24: # Di luar range margin manager approval
- return False
- if (user.is_leader or (margin >= 17 and user.is_sales_manager) or (margin >= 18 and user_id in [11, 9, 375])):
- return False
-
- return True # Butuh approval manager
def _is_request_to_own_team_leader(self):
+ user = self.env.user
+
+ # Pengecualian Pak Akbar & Darren
+ if user.is_leader or user.is_sales_manager:
+ return True
+
if not self.team_id or not self.team_id.user_id:
return True
salesperson_id = self.user_id.id
- approver_id = self.env.user.id
+ approver_id = user.id
team_leader_id = self.team_id.user_id.id
- if salesperson_id != approver_id and approver_id != team_leader_id:
- return False
+ return salesperson_id == approver_id or approver_id == team_leader_id
- return True
def _create_approval_notification(self, approval_role):
title = 'Warning'