diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-06-27 22:03:37 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-06-27 22:03:37 +0700 |
| commit | 3c4f2eff3035f423d3bf0dc19d5aad457854e43a (patch) | |
| tree | 37d678fd43a0e4b66d4a8fab2ddbcf7aa82f2475 | |
| parent | 0e2fe03295f96560500c53ee61104a0a9f563576 (diff) | |
<miqdad> done aman
| -rw-r--r-- | indoteknik_custom/models/stock_picking_return.py | 10 | ||||
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 84 |
2 files changed, 45 insertions, 49 deletions
diff --git a/indoteknik_custom/models/stock_picking_return.py b/indoteknik_custom/models/stock_picking_return.py index f7900a27..3442496d 100644 --- a/indoteknik_custom/models/stock_picking_return.py +++ b/indoteknik_custom/models/stock_picking_return.py @@ -19,8 +19,8 @@ class StockReturnPicking(models.TransientModel): # raise UserError("BU ini sudah pernah diretur oleh dokumen lain.") # if self._is_already_returned(picking): # raise UserError("BU ini sudah pernah diretur oleh dokumen lain.") - if picking.picking_type_id.id == 30 and picking.linked_manual_bu_out.state == 'done': - raise UserError("❌ BU/PICK tidak dapat di retur karena BU/OUT Sudah Done") + # if picking.picking_type_id.id == 30 and picking.linked_manual_bu_out.state == 'done': + # raise UserError("❌ BU/PICK tidak dapat di retur karena BU/OUT Sudah Done") if self._context.get('from_ui', True): return self._redirect_to_tukar_guling() @@ -31,8 +31,8 @@ class StockReturnPicking(models.TransientModel): self.ensure_one() picking = self.picking_id - if picking.picking_type_id.id == 30 and picking.linked_manual_bu_out.state == 'done': - raise UserError("❌ BU/PICK tidak dapat di retur karena BU/OUT Sudah Done") + # if picking.picking_type_id.id == 30 and picking.linked_manual_bu_out.state == 'done': + # raise UserError("❌ BU/PICK tidak dapat di retur karena BU/OUT Sudah Done") # Get valid return lines with better error handling valid_lines = [] @@ -79,7 +79,7 @@ class StockReturnPicking(models.TransientModel): # 'default_return_type': 'tukar_guling', 'default_date': fields.Datetime.now(), 'default_state': 'draft', - 'default_ba_num': _('Retur dari %s') % picking.name, + 'default_notes': _('Retur dari %s') % picking.name, 'from_return_picking': True, # Flag to prevent onchange from overriding lines } diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py index df501261..42646fbf 100644 --- a/indoteknik_custom/models/tukar_guling.py +++ b/indoteknik_custom/models/tukar_guling.py @@ -234,8 +234,9 @@ class TukarGuling(models.Model): return new_record def write(self, vals): - 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: + 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: @@ -271,12 +272,10 @@ class TukarGuling(models.Model): elif picking.picking_type_id.id == 30: linked_bu_out = picking.linked_manual_bu_out if linked_bu_out and linked_bu_out.state == 'done': - raise UserError("Tidak bisa retur BU/PICK karena BU/OUT suda Done!") - else: - raise UserError("Dokumen Mungkin sudah done") - - if self._is_already_returned(self.operations): - raise UserError("BU ini sudah pernah diretur oleh dokumen lain.") + raise UserError("❌ Tidak bisa retur BU/PICK karena BU/OUT suda Done!") + 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.") self._validate_product_lines() @@ -371,34 +370,24 @@ class TukarGuling(models.Model): BU_STOCK_LOCATION_ID = 57 # Determine locations based on picking type - if picking.picking_type_id.id == 30: # -> ngeretur bu pick + if picking.picking_type_id.id == 30: return_type = ort_type default_location_id = BU_OUTPUT_LOCATION_ID default_location_dest_id = BU_STOCK_LOCATION_ID - if not default_location_id or not default_location_dest_id: - raise UserError("Lokasi Origin atau Destination salah.") - elif picking.picking_type_id.id == 29: # -> ngeretur bu out + elif picking.picking_type_id.id == 29: return_type = srt_type default_location_id = PARTNER_LOCATION_ID default_location_dest_id = BU_OUTPUT_LOCATION_ID - if not default_location_id or not default_location_dest_id: - raise UserError("Lokasi Origin atau Destination salah.") - elif picking.picking_type_id.id == 74: # -> ngeretur srt - return_type = bu_pick_type - default_location_id = BU_STOCK_LOCATION_ID - default_location_dest_id = BU_OUTPUT_LOCATION_ID - if not default_location_id or not default_location_dest_id: - raise UserError("Lokasi Origin atau Destination salah.") - elif picking.picking_type_id.id == 73: # -> ngeretur ort + elif picking.picking_type_id.id == 74: return_type = bu_out_type default_location_id = BU_OUTPUT_LOCATION_ID default_location_dest_id = PARTNER_LOCATION_ID - if not default_location_id or not default_location_dest_id: - raise UserError("Lokasi Origin atau Destination salah.") + elif picking.picking_type_id.id == 73: + return_type = bu_pick_type + default_location_id = BU_STOCK_LOCATION_ID + default_location_dest_id = BU_OUTPUT_LOCATION_ID else: - raise UserError("Hayo") return None - return_context = dict(self.env.context) return_context.update({ 'active_id': picking.id, @@ -450,25 +439,32 @@ class TukarGuling(models.Model): return return_picking - # Buat return dari BU/OUT - for picking in bu_out_to_return: - name = _create_return_from_picking(picking) - if name: - created_returns.append(name) - - # Buat return dari BU/PICK - for picking in bu_pick_to_return: - name = _create_return_from_picking(picking) - if name: - created_returns.append(name) - - # Buat return dari SRT dan ort - if record.return_type == 'tukar_guling': - target = [woi for woi in created_returns if woi.picking_type_id.id in (74, 73)] - for picking in target: - retur = _create_return_from_picking(picking) - if retur: - created_returns.append(retur) + if record.operations.picking_type_id.id == 30: + ort = _create_return_from_picking(record.operations) + if ort: + created_returns.append(ort) + else: + # CASE: Retur dari BU/OUT + srt = _create_return_from_picking(bu_out_to_return) + if srt: + created_returns.append(srt) + + ort = None + if bu_pick_to_return: + ort = _create_return_from_picking(bu_pick_to_return) + if ort: + created_returns.append(ort) + + if record.return_type == 'tukar_guling': + if srt: + bu_pick = _create_return_from_picking(srt) + if bu_pick: + created_returns.append(bu_pick) + + if ort: + bu_out = _create_return_from_picking(ort) + if bu_out: + created_returns.append(bu_out) if not created_returns: raise UserError("wkwkwk") |
