From f5fc52453c0f7e52b6c87fa57d2de5120c3041e0 Mon Sep 17 00:00:00 2001 From: Miqdad Date: Sat, 14 Jun 2025 10:05:15 +0700 Subject: check validation --- indoteknik_custom/models/tukar_guling.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py index e214e268..36819ad4 100644 --- a/indoteknik_custom/models/tukar_guling.py +++ b/indoteknik_custom/models/tukar_guling.py @@ -22,7 +22,6 @@ class TukarGuling(models.Model): ('debit_memo', 'Debit Memo'), ('lain_lain', 'Lain-lain')]) - # ✅ PERBAIKAN: Ganti 'states' dengan 'state' state = fields.Selection(string='Status', selection=[ ('draft', 'Draft'), ('waiting', 'Waiting for Approval'), @@ -30,7 +29,6 @@ class TukarGuling(models.Model): ('cancel', 'Canceled') ], default='draft', tracking=True, required=True) - # ✅ NEW: Line items line_ids = fields.One2many('tukar.guling.line', 'tukar_guling_id', string='Product Lines') @api.constrains('line_ids', 'state') @@ -44,6 +42,7 @@ class TukarGuling(models.Model): """Helper method untuk validasi product lines""" self.ensure_one() + # Check ada product lines if not self.line_ids: raise UserError("Belum ada product lines yang ditambahkan!") @@ -74,16 +73,15 @@ class TukarGuling(models.Model): # Reset fields penting saat duplicate default.update({ - 'name': 'New', # Akan auto-generate sequence baru + 'name': 'New', 'state': 'draft', 'date': fields.Datetime.now(), - # ba_num dan out_num tidak di-reset, user bisa edit manual }) # Copy record dengan default values new_record = super(TukarGuling, self).copy(default) - # Re-sequence line items untuk record baru + # Re-sequence line items record baru if new_record.line_ids: for i, line in enumerate(new_record.line_ids): line.sequence = (i + 1) * 10 @@ -100,12 +98,29 @@ class TukarGuling(models.Model): def action_submit(self): self.ensure_one() + # cek bu out sudah diisi atau blm + if not self.out_num: + raise UserError("BU/Out harus diisi!") + + # cek return type + # if not self.return_type: + # raise UserError("Return Type harus diisi!") + if self.state != 'draft': raise UserError("Hanya status Draft saja yang bisa di submit") self.state = 'waiting' def action_approve(self): self.ensure_one() + + # cek bu out sudah diisi atau blm + if not self.out_num: + raise UserError("BU/Out harus diisi!") + + # cek return type + if not self.return_type: + raise UserError("Return Type harus diisi!") + if self.state != 'waiting': raise UserError("Hanya status Waiting saja yang bisa di approve") self.state = 'done' -- cgit v1.2.3