summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-18 00:27:15 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-18 00:27:15 +0700
commit82c1a95f447d191018bed2f3a3c93831f6d398cc (patch)
tree55caaca0d51db9b78c369ada4bd310bfc005af34
parent08f599f8a96fb445bebc7ab2eaa53f1972caa563 (diff)
<miqdad> try po
-rw-r--r--indoteknik_custom/models/tukar_guling_po.py45
1 files changed, 30 insertions, 15 deletions
diff --git a/indoteknik_custom/models/tukar_guling_po.py b/indoteknik_custom/models/tukar_guling_po.py
index 88c4722a..997e1963 100644
--- a/indoteknik_custom/models/tukar_guling_po.py
+++ b/indoteknik_custom/models/tukar_guling_po.py
@@ -93,8 +93,27 @@ class TukarGulingPO(models.Model):
self.origin = self.operations.origin
return
- # Clear existing lines hanya jika tidak dari return picking
- self.line_ids = [(5, 0, 0)]
+ if from_return_picking:
+ # Gunakan qty dari context (stock return wizard)
+ default_lines = self.env.context.get('default_line_ids', [])
+ parsed_lines = []
+ sequence = 10
+ for line_data in default_lines:
+ if isinstance(line_data, (list, tuple)) and len(line_data) == 3:
+ vals = line_data[2]
+ parsed_lines.append((0, 0, {
+ 'sequence': sequence,
+ 'product_id': vals.get('product_id'),
+ 'product_uom_qty': vals.get('quantity'),
+ 'product_uom': self.env['product.product'].browse(vals.get('product_id')).uom_id.id,
+ 'name': self.env['product.product'].browse(vals.get('product_id')).display_name,
+ }))
+ sequence += 10
+
+ self.line_ids = parsed_lines
+ return
+ else:
+ self.line_ids = [(5, 0, 0)]
# Set origin dari operations
if self.operations.origin:
@@ -445,19 +464,15 @@ class TukarGulingPO(models.Model):
})
return_lines = []
- for line in record.line_ids:
- move = picking.move_lines.filtered(lambda m: m.product_id == line.product_id)
- if move:
- return_lines.append((0, 0, {
- 'product_id': line.product_id.id,
- 'quantity': line.product_uom_qty,
- 'move_id': move[0].id,
- }))
- else:
- raise UserError(
- _("Tidak ditemukan move line di picking %s untuk produk %s") %
- (picking.name, line.product_id.display_name)
- )
+
+ for move in picking.move_lines:
+ line = record.line_ids.filtered(lambda l: l.product_id == move.product_id)
+ qty = line.product_uom_qty if line else 0.0
+ return_lines.append((0, 0, {
+ 'product_id': move.product_id.id,
+ 'quantity': qty,
+ 'move_id': move.id,
+ }))
if not return_lines:
raise UserError(_("Tidak ada product line valid untuk retur picking %s") % picking.name)