diff options
| author | Mqdd <ahmadmiqdad27@gmail.com> | 2026-02-10 15:06:17 +0700 |
|---|---|---|
| committer | Mqdd <ahmadmiqdad27@gmail.com> | 2026-02-10 15:06:17 +0700 |
| commit | 7aadac577c7bdacf1fab54c23fe50b04fba08393 (patch) | |
| tree | 56fc6feff537ecee64d842f94e2d38a0bfe49f53 | |
| parent | b6d2feb969d38e1991e5afa129813da89e8a51fb (diff) | |
<Miqdad> fix state
| -rw-r--r-- | indoteknik_custom/models/gudang_service.py | 37 | ||||
| -rw-r--r-- | indoteknik_custom/views/gudang_service.xml | 8 |
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> |
