summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/tukar_guling.py
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-09 09:54:13 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-09 09:54:13 +0700
commit21128e0f165045558c2c8ef6faf199d4379614b1 (patch)
tree4441fe9c8d4464424505524d6ae097dfff557145 /indoteknik_custom/models/tukar_guling.py
parentaa217ff1809015908d7aa16683de9b9ca34e1910 (diff)
<miqdad> rev 77 vals
Diffstat (limited to 'indoteknik_custom/models/tukar_guling.py')
-rw-r--r--indoteknik_custom/models/tukar_guling.py50
1 files changed, 43 insertions, 7 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py
index 9fe7527c..e2f68e6c 100644
--- a/indoteknik_custom/models/tukar_guling.py
+++ b/indoteknik_custom/models/tukar_guling.py
@@ -251,9 +251,25 @@ class TukarGuling(models.Model):
return new_record
def write(self, vals):
+ self.ensure_one()
self._check_invoice_on_revisi_so()
- if self.operations.picking_type_id.id == 30 and self.return_type == 'tukar_guling':
- raise UserError ("BU/PICK tidak boleh retur tukar guling")
+ operasi = self.operations.picking_type_id.id
+ tipe = self.return_type
+ pp = vals.get('return_type', tipe)
+
+ if not self.operations:
+ raise UserError("Operations harus diisi!")
+
+ if not self.return_type:
+ raise UserError("Return Type harus diisi!")
+
+ if operasi == 30 and self.operations.linked_manual_bu_out.state == 'done':
+ raise UserError("❌ Tidak bisa retur BU/PICK karena BU/OUT sudah done")
+ if operasi == 30 and pp == 'tukar_guling':
+ raise UserError("❌ BU/PICK tidak boleh di retur tukar guling")
+ else:
+ _logger.info("hehhe")
+
# if self.operations.picking_type_id.id != 30:
# if self._is_already_returned(self.operations):
# raise UserError("BU ini sudah pernah diretur oleh dokumen lain.")
@@ -267,7 +283,11 @@ class TukarGuling(models.Model):
def unlink(self):
for record in self:
if record.state == 'done':
- raise UserError("Tidak bisa hapus pengajuan jika sudah done, set ke draft terlebih dahulu")
+ raise UserError(
+ "Tidak bisa hapus pengajuan jika sudah done, set ke draft terlebih dahulu jika ingin menghapus")
+ ongoing_bu = self.picking_ids.filtered(lambda p: p.state != 'done')
+ for picking in ongoing_bu:
+ picking.action_cancel()
return super(TukarGuling, self).unlink()
def action_view_picking(self):
@@ -291,6 +311,15 @@ class TukarGuling(models.Model):
def action_submit(self):
self.ensure_one()
+
+ existing_tukar_guling = self.env['tukar.guling'].search([
+ ('operations', '=', self.operations.id),
+ ('id', '!=', self.id),
+ ('state', '!=', 'cancel'),
+ ], limit=1)
+
+ if existing_tukar_guling:
+ raise UserError("BU ini sudah pernah diretur oleh dokumen %s." % existing_tukar_guling.name)
picking = self.operations
if picking.picking_type_id.id == 30 and self.return_type == 'tukar_guling':
raise UserError("❌ BU/PICK tidak boleh di retur tukar guling")
@@ -307,7 +336,6 @@ class TukarGuling(models.Model):
self._check_invoice_on_revisi_so()
self._validate_product_lines()
-
if self.state != 'draft':
raise UserError("Submit hanya bisa dilakukan dari Draft.")
self.state = 'approval_sales'
@@ -317,8 +345,16 @@ class TukarGuling(models.Model):
self._validate_product_lines()
self._check_invoice_on_revisi_so()
- if self.operations.picking_type_id.id == 30 and self.return_type == 'tukar_guling':
- raise UserError ("BU/PICK tidak boleh retur tukar guling")
+ operasi = self.operations.picking_type_id.id
+ tipe = self.return_type
+ pp = vals.get('return_type', tipe)
+
+ if operasi == 30 and self.operations.linked_manual_bu_out.state == 'done':
+ raise UserError("❌ Tidak bisa retur BU/PICK karena BU/OUT sudah done")
+ if operasi == 30 and pp == 'tukar_guling':
+ raise UserError("❌ BU/PICK tidak boleh di retur tukar guling")
+ else:
+ _logger.info("hehhe")
if not self.operations:
raise UserError("Operations harus diisi!")
@@ -351,7 +387,7 @@ class TukarGuling(models.Model):
# picking = self.env['stock.picking']
bu_done = self.picking_ids.filtered(lambda p: p.state == 'done')
if bu_done:
- raise UserError("Dokuemn BU sudah Done, tidak bisa di cancel")
+ raise UserError("Dokuemen BU sudah Done, tidak bisa di cancel")
ongoing_bu = self.picking_ids.filtered(lambda p: p.state != 'done')
for picking in ongoing_bu:
picking.action_cancel()