summaryrefslogtreecommitdiff
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
parent0e2fe03295f96560500c53ee61104a0a9f563576 (diff)
<miqdad> done aman
-rw-r--r--indoteknik_custom/models/stock_picking_return.py10
-rw-r--r--indoteknik_custom/models/tukar_guling.py84
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")