diff options
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 4 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 2 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 23 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 2 |
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']) ] } |
