summaryrefslogtreecommitdiff
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
parentd51133889b2bfbc7fa2848382f233f5ce268d4d0 (diff)
<miqdad> rev 77
-rw-r--r--indoteknik_custom/models/stock_picking_return.py2
-rw-r--r--indoteknik_custom/models/tukar_guling.py34
-rw-r--r--indoteknik_custom/views/tukar_guling.xml2
3 files changed, 33 insertions, 5 deletions
diff --git a/indoteknik_custom/models/stock_picking_return.py b/indoteknik_custom/models/stock_picking_return.py
index 40cc30c9..a9781d3c 100644
--- a/indoteknik_custom/models/stock_picking_return.py
+++ b/indoteknik_custom/models/stock_picking_return.py
@@ -5,7 +5,7 @@ import logging
_logger = logging.getLogger(__name__)
-class ReturnPicking(models.TransientModel):
+class StockReturnPicking(models.TransientModel):
_inherit = 'stock.return.picking'
# return_type = fields.Selection([
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.")
diff --git a/indoteknik_custom/views/tukar_guling.xml b/indoteknik_custom/views/tukar_guling.xml
index 01721b43..dc5abec7 100644
--- a/indoteknik_custom/views/tukar_guling.xml
+++ b/indoteknik_custom/views/tukar_guling.xml
@@ -50,7 +50,7 @@
attrs="{'invisible': [('state', 'not in', ['approval_sales', 'approval_logistic', 'approval_finance'])]}"/>
<button name="action_cancel" string="Cancel" type="object"
class="btn-secondary"
- attrs="{'invisible': [('state', '=', 'draft')]}"
+ attrs="{'invisible': [('state', 'in', ['draft', 'cancel'])]}"
confirm="Are you sure you want to cancel this record?"/>
<button name="action_draft" string="Set to Draft" type="object"
class="btn-secondary"