summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py4
-rw-r--r--indoteknik_api/models/sale_order.py2
-rwxr-xr-xindoteknik_custom/models/sale_order.py23
-rwxr-xr-xindoteknik_custom/views/sale_order.xml2
4 files changed, 24 insertions, 7 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index cff1921d..f4a2a9d4 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -154,13 +154,13 @@ class SaleOrder(controller.Controller):
elif status == 'belum_bayar':
domain += [
('state', '=', 'draft'),
- ('approval_status', 'in', ['pengajuan1', 'pengajuan2']),
+ ('approval_status', 'in', ['pengajuan0','pengajuan1', 'pengajuan2']),
('payment_status', 'in', [False, None, '', 'pending', 'expire'])
]
elif status == 'diproses':
domain += [
('state', '=', 'draft'),
- ('approval_status', 'in', ['pengajuan1', 'pengajuan2']),
+ ('approval_status', 'in', ['pengajuan0','pengajuan1', 'pengajuan2']),
('payment_status', '!=', False),
('payment_status', 'not in', ['', 'pending', 'expire']),
]
diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py
index 23be358a..7951de45 100644
--- a/indoteknik_api/models/sale_order.py
+++ b/indoteknik_api/models/sale_order.py
@@ -66,7 +66,7 @@ class SaleOrder(models.Model):
elif sale_order.state == 'draft':
if not sale_order.approval_status:
data['status'] = 'draft'
- elif sale_order.approval_status in ('pengajuan1', 'pengajuan2'):
+ elif sale_order.approval_status in ('pengajuan0', 'pengajuan1', 'pengajuan2'):
if sale_order.payment_status in ('', 'pending', False, None, 'expire'):
data['status'] = 'belum_bayar'
elif sale_order.payment_status not in ['', 'pending', False, None, 'expire']:
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index e6fc4732..fd0d6bdd 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -156,6 +156,7 @@ class SaleOrder(models.Model):
total_margin_excl_third_party = fields.Float('Before Margin', help="Before Margin in Sales Order Header")
approval_status = fields.Selection([
+ ('pengajuan0', 'Approval Team Sales'),
('pengajuan1', 'Approval Manager'),
('pengajuan2', 'Approval Pimpinan'),
('approved', 'Approved'),
@@ -2384,7 +2385,8 @@ class SaleOrder(models.Model):
# 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')
-
+ value_trigger = order._requires_approval_by_value()
+
if order._requires_approval_margin_leader():
order.approval_status = 'pengajuan2'
order.message_post(body="Mengajukan approval ke Pimpinan")
@@ -2400,9 +2402,16 @@ class SaleOrder(models.Model):
self.check_product_bom()
self.check_credit_limit()
self.check_limit_so_to_invoice()
- order.approval_status = 'pengajuan1'
+ 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')
if not order.with_context(ask_approval=True)._is_request_to_own_team_leader():
return self._create_notification_action(
@@ -2657,6 +2666,7 @@ class SaleOrder(models.Model):
'Warning',
'Hanya bisa konfirmasi SO tim Anda.'
)
+ value_trigger = order._requires_approval_by_value()
if order._requires_approval_margin_leader():
order.approval_status = 'pengajuan2'
return self._create_approval_notification('Pimpinan')
@@ -2667,6 +2677,10 @@ class SaleOrder(models.Model):
order.approval_status = 'pengajuan1'
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')
order.approval_status = 'approved'
order._set_sppkp_npwp_contact()
@@ -2778,6 +2792,9 @@ class SaleOrder(models.Model):
and not self.env.user.is_leader
)
+ def _requires_approval_by_value(self):
+ LIMIT_VALUE = 50000000
+ return self.amount_total > LIMIT_VALUE
def _is_request_to_own_team_leader(self):
user = self.env.user
@@ -3397,7 +3414,7 @@ class SaleOrder(models.Model):
#payment term vals
if 'payment_term_id' in vals and any(
- order.approval_status in ['pengajuan1', 'pengajuan2', 'approved'] for order in self):
+ order.approval_status in ['pengajuan0','pengajuan1', 'pengajuan2', 'approved'] for order in self):
raise UserError(
"Payment Term tidak dapat diubah karena Sales Order sedang dalam proses approval atau sudah diapprove.")
diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml
index c3df92ec..2d4488ab 100755
--- a/indoteknik_custom/views/sale_order.xml
+++ b/indoteknik_custom/views/sale_order.xml
@@ -385,7 +385,7 @@
{
'readonly': [
'|',
- ('approval_status', 'in', ['pengajuan1', 'pengajuan2', 'approved']),
+ ('approval_status', 'in', ['pengajuan0','pengajuan1', 'pengajuan2', 'approved']),
('state', 'not in', ['cancel', 'draft'])
]
}