summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/tukar_guling.py
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-08 09:31:01 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-08 09:31:01 +0700
commit1ed9ce9ab59c12fa378cfab02f8919e08f424853 (patch)
treea651d0ed73b5e9612cb1152021da682fe67ce496 /indoteknik_custom/models/tukar_guling.py
parentd51133889b2bfbc7fa2848382f233f5ce268d4d0 (diff)
<miqdad> rev 77
Diffstat (limited to 'indoteknik_custom/models/tukar_guling.py')
-rw-r--r--indoteknik_custom/models/tukar_guling.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py
index db82ce1b..339a1ff1 100644
--- a/indoteknik_custom/models/tukar_guling.py
+++ b/indoteknik_custom/models/tukar_guling.py
@@ -59,6 +59,10 @@ class TukarGuling(models.Model):
@api.onchange('operations')
def _onchange_operations(self):
"""Auto-populate lines ketika operations dipilih"""
+ for rec in self:
+ if rec.operations and rec.operations.picking_type_id.id == 30:
+ rec.return_type = 'revisi_so'
+
if self.operations:
from_return_picking = self.env.context.get('from_return_picking', False) or \
self.env.context.get('default_line_ids', False)
@@ -234,9 +238,11 @@ class TukarGuling(models.Model):
return new_record
def write(self, vals):
- 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.")
+ if self.operations.picking_type_id.id == 30 and self.return_type == 'tukar_guling':
+ raise UserError ("BU/PICK tidak boleh retur tukar guling")
+ # 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.")
if 'operations' in vals and not vals.get('origin'):
picking = self.env['stock.picking'].browse(vals['operations'])
if picking.origin:
@@ -244,6 +250,12 @@ class TukarGuling(models.Model):
return super(TukarGuling, self).write(vals)
+ 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")
+ return super(TukarGuling, self).unlink()
+
def action_view_picking(self):
self.ensure_one()
action = self.env.ref('stock.action_picking_tree_all').read()[0]
@@ -266,6 +278,8 @@ class TukarGuling(models.Model):
def action_submit(self):
self.ensure_one()
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")
if picking.picking_type_id.id == 29:
if picking.state != 'done':
raise UserError("BU/OUT belum Done!")
@@ -287,6 +301,9 @@ class TukarGuling(models.Model):
self.ensure_one()
self._validate_product_lines()
+ if self.operations.picking_type_id.id == 30 and self.return_type == 'tukar_guling':
+ raise UserError ("BU/PICK tidak boleh retur tukar guling")
+
if not self.operations:
raise UserError("Operations harus diisi!")
@@ -315,6 +332,14 @@ class TukarGuling(models.Model):
def action_cancel(self):
self.ensure_one()
+ # 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")
+ ongoing_bu = self.picking_ids.filtered(lambda p: p.state != 'done')
+ for picking in ongoing_bu:
+ picking.action_cancel()
+
# if self.state == 'done':
# raise UserError("Tidak bisa cancel jika sudah done")
self.state = 'cancel'
@@ -339,6 +364,9 @@ class TukarGuling(models.Model):
bu_pick_to_return = record.operations.konfirm_koli_lines.pick_id
bu_out_to_return = record.operations
+ # if bu_pick_to_return and self.return_type == 'tukar_guling':
+ # raise UserError("BU/PICK tidak boleh di retur tukar guling")
+
if not bu_pick_to_return and not bu_out_to_return:
raise UserError("Tidak ada BU/PICK atau BU/OUT yang selesai untuk diretur.")