summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/tukar_guling.py56
1 files changed, 34 insertions, 22 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py
index d77ea8d4..1f5e786f 100644
--- a/indoteknik_custom/models/tukar_guling.py
+++ b/indoteknik_custom/models/tukar_guling.py
@@ -300,11 +300,11 @@ class TukarGuling(models.Model):
])
if not related_pickings:
raise UserError(
- "Tidak ditemukan BU/PICK atau BU/OUT dari SO: %s" % record.origin + "Atau masih belum Done")
+ "Tidak ditemukan BU/PICK atau BU/OUT dari SO: %s" % record.origin)
# 2. Filter berdasarkan tipe picking
- bu_pick_to_return = related_pickings.filtered(lambda p: p.picking_type_id.id == 30) # BU/PICK
- bu_out_to_return = related_pickings.filtered(lambda p: p.picking_type_id.id == 29) # BU/OUT
+ bu_pick_to_return = related_pickings.filtered(lambda ktl: ktl.picking_type_id.id == 30) # BU/PICK
+ bu_out_to_return = related_pickings.filtered(lambda ktl: ktl.picking_type_id.id == 29) # BU/OUT
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.")
@@ -312,13 +312,18 @@ class TukarGuling(models.Model):
created_returns = []
# Lokasi default untuk retur
- bu_out_type = self.env['stock.picking.type'].browse(73)
- bu_stock_type = self.env['stock.picking.type'].browse(74)
+ srt_type = self.env['stock.picking.type'].browse(73)
+ ort_type = self.env['stock.picking.type'].browse(74)
- bu_out = bu_out_type.default_location_src_id.id
- bu_stock = bu_out_type.default_location_dest_id.id
+ stock_location = self.env['stock.location']
- if not bu_out or not bu_stock:
+ srt_src = stock_location.browse(5)
+ srt_dest = stock_location.browse(60)
+
+ ort_src = stock_location.browse(60)
+ ort_dest = stock_location.browse(57)
+
+ if not ort_src or not ort_dest or not srt_src or not srt_dest:
raise UserError("salahwoi")
partner_location = self.env['stock.location'].search(
@@ -329,14 +334,19 @@ class TukarGuling(models.Model):
# Fungsi membuat retur dari picking tertentu
def _create_return_from_picking(picking):
- grup = self.env['stock.picking'].search([('origin', '=', self.operations.origin)])
- # Tentukan lokasi berdasarkan jenis picking
+ grup = self.operations.group_id
+
+ PARTNER_LOCATION_ID = 5 # Partner Locations/Customers
+ BU_OUTPUT_LOCATION_ID = 60 # BU/Output (from your logs)
+ BU_STOCK_LOCATION_ID = 57 # BU/Stock (adjust to your actual ID)
+
+ # Determine locations based on picking type
if picking.picking_type_id.id == 29: # BU/OUT → BU/SRT
- default_location_id = partner_location.id
- default_location_dest_id = bu_out
+ default_location_id = PARTNER_LOCATION_ID # From: Partner Locations
+ default_location_dest_id = BU_OUTPUT_LOCATION_ID # To: BU/Output
elif picking.picking_type_id.id == 30: # BU/PICK → BU/ORT
- default_location_id = bu_out
- default_location_dest_id = bu_stock
+ default_location_id = BU_OUTPUT_LOCATION_ID # From: BU/Output
+ default_location_dest_id = BU_STOCK_LOCATION_ID # To: BU/Stock (FIXED)
else:
return None
@@ -353,7 +363,7 @@ class TukarGuling(models.Model):
'location_id': default_location_id,
})
- # Buat return lines
+ # Create return lines
return_lines = []
for move in picking.move_lines:
if move.quantity_done > 0:
@@ -370,19 +380,21 @@ class TukarGuling(models.Model):
_logger.info("Creating return for picking %s", picking.name)
_logger.info("Default location src: %s", default_location_id)
_logger.info("Default location dest: %s", default_location_dest_id)
- _logger.info("Move lines: %s", picking.move_lines)
return_vals = return_wizard.create_returns()
return_id = return_vals.get('res_id')
+ return_picking = self.env['stock.picking'].browse(return_id)
- if not return_id:
+ if not return_picking:
raise UserError("Retur gagal dibuat. Hasil create_returns: %s" % str(return_vals))
- picking_obj = self.env['stock.picking'].browse(return_id)
- for p in picking_obj:
- p.group_id = self.operations.group_id.id
- p.tukar_guling_id = record.id
+ # Force the destination location (extra safeguard)
+ return_picking.write({
+ 'location_dest_id': default_location_dest_id,
+ 'group_id': grup.id,
+ 'tukar_guling_id': record.id,
+ })
- return picking_obj.name
+ return return_picking.name
# Buat return dari BU/PICK
for picking in bu_pick_to_return: