diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-08 09:31:01 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-08 09:31:01 +0700 |
| commit | 1ed9ce9ab59c12fa378cfab02f8919e08f424853 (patch) | |
| tree | a651d0ed73b5e9612cb1152021da682fe67ce496 | |
| parent | d51133889b2bfbc7fa2848382f233f5ce268d4d0 (diff) | |
<miqdad> rev 77
| -rw-r--r-- | indoteknik_custom/models/stock_picking_return.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 34 | ||||
| -rw-r--r-- | indoteknik_custom/views/tukar_guling.xml | 2 |
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" |
