summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/tukar_guling.py
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-06-27 22:03:37 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-06-27 22:03:37 +0700
commit3c4f2eff3035f423d3bf0dc19d5aad457854e43a (patch)
tree37d678fd43a0e4b66d4a8fab2ddbcf7aa82f2475 /indoteknik_custom/models/tukar_guling.py
parent0e2fe03295f96560500c53ee61104a0a9f563576 (diff)
<miqdad> done aman
Diffstat (limited to 'indoteknik_custom/models/tukar_guling.py')
-rw-r--r--indoteknik_custom/models/tukar_guling.py84
1 files changed, 40 insertions, 44 deletions
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")