summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-07-08 09:11:11 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-07-08 09:11:11 +0700
commit05879e52666f02c117aee569621556db97ef345c (patch)
tree0c5cb5443ce406d74d60bcf9bd87fb78ce58313b
parent54633b0db570e5811874f78a9515065b9cb41ad8 (diff)
add statusbar and fix bug
-rw-r--r--indoteknik_custom/models/approval_payment_term.py18
-rw-r--r--indoteknik_custom/views/approval_payment_term.xml9
2 files changed, 22 insertions, 5 deletions
diff --git a/indoteknik_custom/models/approval_payment_term.py b/indoteknik_custom/models/approval_payment_term.py
index 81eb1908..da71b7e4 100644
--- a/indoteknik_custom/models/approval_payment_term.py
+++ b/indoteknik_custom/models/approval_payment_term.py
@@ -31,6 +31,8 @@ class ApprovalPaymentTerm(models.Model):
approve_leader = fields.Boolean('Approve Pimpinan', tracking=True, copy=False)
reason = fields.Text('Reason', tracking=True)
approve_date = fields.Datetime('Approve Date')
+ state = fields.Selection([('waiting_approval', 'Waiting Approval'), ('approved', 'Approved'), ('rejected', 'Rejected')], default='waiting_approval', tracking=True)
+ reason_reject = fields.Selection([('reason1', 'Reason 1'), ('reason2', 'Reason 2'), ('reason3', 'Reason 3')], string='Reason Reject', tracking=True)
@api.constrains('partner_id')
@@ -46,20 +48,20 @@ class ApprovalPaymentTerm(models.Model):
user = self.env.user
is_it = user.has_group('indoteknik_custom.group_role_it')
- if is_it or user.id == 19:
+ if user.id == 19 or is_it:
self.approve_sales_manager = True
return
- if is_it or user.id == 688 and self.approve_sales_manager:
+ if user.id == 688 or is_it:
self.approve_finance = True
return
- if is_it or user.id == 7 and self.approve_sales_manager and self.approve_finance:
+ if (user.id == 7 and self.approve_finance) or is_it:
self.approve_leader = True
- if not is_it or not self.approve_finance:
+ if not self.approve_finance or not is_it:
raise UserError('Harus Approval Finance!!')
- if not is_it or not self.approve_leader:
+ if not self.approve_leader or not is_it:
raise UserError('Harus Approval Pimpinan!!')
if user.id == 7:
@@ -74,6 +76,12 @@ class ApprovalPaymentTerm(models.Model):
'property_payment_term_id': self.property_payment_term_id.id
})
self.approve_date = datetime.utcnow()
+ self.state = 'approved'
+
+ def button_reject(self):
+ if self.env.user.id not in [688, 7]:
+ raise UserError("Hanya Finance atau Pimpinan Yang Bisa Reject")
+ self.state = 'rejected'
@api.model
def create(self, vals):
diff --git a/indoteknik_custom/views/approval_payment_term.xml b/indoteknik_custom/views/approval_payment_term.xml
index 87c77385..44bd99f8 100644
--- a/indoteknik_custom/views/approval_payment_term.xml
+++ b/indoteknik_custom/views/approval_payment_term.xml
@@ -29,6 +29,14 @@
type="object"
attrs="{'invisible': [('approve_leader', '=', True)]}"
/>
+ <button name="button_reject"
+ string="Reject"
+ type="object"
+ attrs="{'invisible': [('approve_leader', '=', True)]}"
+ />
+ <field name="state" widget="statusbar"
+ statusbar_visible="waiting_approval,approved,rejected"
+ statusbar_colors='{"rejected":"red"}'/>
</header>
<sheet string="Approval Payment Term">
<group>
@@ -43,6 +51,7 @@
</group>
<group>
<field name="reason"/>
+ <field name="reason_reject" attrs="{'invisible': [('state', '!=', 'rejected')]}"/>
<field name="approve_date" readonly="1"/>
<field name="approve_sales_manager" readonly="1"/>
<field name="approve_finance" readonly="1"/>