diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-06-21 11:21:52 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-06-21 11:21:52 +0700 |
| commit | c1fa178a6afb9ef4a914dc617d2fb69da50af673 (patch) | |
| tree | 0e399fbfcfdb019fac6a23c03bd1fc5e6feb451d | |
| parent | 87bd344baa9b40cde21256bd1e3680d0d2396e2e (diff) | |
<miqdad> fix from and to return
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 56 |
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: |
