diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-18 00:27:15 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-18 00:27:15 +0700 |
| commit | 82c1a95f447d191018bed2f3a3c93831f6d398cc (patch) | |
| tree | 55caaca0d51db9b78c369ada4bd310bfc005af34 | |
| parent | 08f599f8a96fb445bebc7ab2eaa53f1972caa563 (diff) | |
<miqdad> try po
| -rw-r--r-- | indoteknik_custom/models/tukar_guling_po.py | 45 |
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) |
