summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2026-02-10 15:06:17 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2026-02-10 15:06:17 +0700
commit7aadac577c7bdacf1fab54c23fe50b04fba08393 (patch)
tree56fc6feff537ecee64d842f94e2d38a0bfe49f53
parentb6d2feb969d38e1991e5afa129813da89e8a51fb (diff)
<Miqdad> fix state
-rw-r--r--indoteknik_custom/models/gudang_service.py37
-rw-r--r--indoteknik_custom/views/gudang_service.xml8
2 files changed, 26 insertions, 19 deletions
diff --git a/indoteknik_custom/models/gudang_service.py b/indoteknik_custom/models/gudang_service.py
index 3f483a56..4e3b2c34 100644
--- a/indoteknik_custom/models/gudang_service.py
+++ b/indoteknik_custom/models/gudang_service.py
@@ -41,7 +41,7 @@ class GudangService(models.Model):
('received_from_cust', 'Received From Customer'),
('sent_to_vendor', 'Sent to Service Vendor'),
('received_from_vendor', 'Received From Service Vendor'),
- ('delived_to_cust', 'Delivered to Customer'),
+ ('delivered_to_cust', 'Delivered to Customer'),
('cancel', 'Cancel')], default='draft', tracking=True)
cancel_reason = fields.Text('Cancel Reason', tracking=True)
@@ -88,7 +88,7 @@ class GudangService(models.Model):
@api.model
def cron_notify_onprogress_gudang_service(self):
records = self.search([
- ('state', '=', 'draft')
+ ('state', 'in', ['draft', 'received_from_customer']),
])
if records:
@@ -118,21 +118,28 @@ class GudangService(models.Model):
def action_submit(self):
for rec in self:
- rec.state = 'onprogress'
- rec.start_date = fields.Datetime.now()
- # rec.date = fields.Datetime.now()
+ if rec.state == 'draft':
+ rec.state = 'received_from_cust'
+ elif rec.state == 'received_from_cust':
+ rec.state = 'sent_to_vendor'
+ rec.start_date = fields.Datetime.now()
+ elif rec.state == 'sent_to_vendor':
+ rec.state = 'received_from_vendor'
def action_done(self):
- for rec in self:
- activities = self.env['mail.activity'].search([
- ('res_id', '=', rec.id),
- ('res_model', '=', 'gudang.service'),
- ('state', '=', 'done')
- ])
- activities.unlink()
- rec.state = 'done'
- if not rec.done_date:
- rec.done_date = fields.Datetime.now()
+ if self.state != 'received_from_vendor':
+ raise UserError("Only 'Received From Vendor' state can be set to Done")
+ else:
+ for rec in self:
+ activities = self.env['mail.activity'].search([
+ ('res_id', '=', rec.id),
+ ('res_model', '=', 'gudang.service'),
+ ('state', '=', 'delivered_to_cust'),
+ ])
+ activities.unlink()
+ rec.state = 'delivered_to_cust'
+ if not rec.done_date:
+ rec.done_date = fields.Datetime.now()
def action_draft(self):
"""Reset to draft state"""
diff --git a/indoteknik_custom/views/gudang_service.xml b/indoteknik_custom/views/gudang_service.xml
index 68e2428c..6abdcc8b 100644
--- a/indoteknik_custom/views/gudang_service.xml
+++ b/indoteknik_custom/views/gudang_service.xml
@@ -31,16 +31,16 @@
<header>
<button name="action_submit" string="Proceed" type="object"
class="btn-primary"
- attrs="{'invisible': [('state', 'in', ['cancel', 'done', 'onprogress'])]}"/>
+ attrs="{'invisible': [('state', 'in', ['cancel', 'done', 'received_from_vendor', 'delivered_to_cust'])]}"/>
<button name="action_done" string="Set Done" type="object"
class="btn-primary"
- attrs="{'invisible': [('state', 'not in', ['onprogress'])]}"/>
+ attrs="{'invisible': [('state', 'not in', ['received_from_vendor'])]}"/>
<button name="action_cancel" string="Cancel" type="object"
class="btn-secondary"
- attrs="{'invisible': [('state', 'in', ['cancel', 'done', 'draft'])]}"/>
+ attrs="{'invisible': [('state', 'in', ['cancel', 'delivered_to_cust'])]}"/>
<button name="action_draft" string="Set to Backlog" type="object"
class="btn-secondary"
- attrs="{'invisible': [('state', 'in', ['draft', 'done', 'onprogress'])]}"/>
+ attrs="{'invisible': [('state', 'not in', ['cancel'])]}"/>
<field name="state" widget="statusbar" readonly="1"/>
</header>
<sheet>