diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-12-01 15:56:23 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-12-01 15:56:23 +0700 |
| commit | dd6153400c5f1be3aaf8a98ddb0b471bd5c0c344 (patch) | |
| tree | 924fda5a6e9de3fd63c96ac9b8ad744c630e5285 | |
| parent | 13502092c296951810b251a6a7277eecd0cade12 (diff) | |
push
| -rw-r--r-- | fixco_custom/models/shipment_group.py | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/fixco_custom/models/shipment_group.py b/fixco_custom/models/shipment_group.py index b6ffbda..e58b8c5 100644 --- a/fixco_custom/models/shipment_group.py +++ b/fixco_custom/models/shipment_group.py @@ -193,29 +193,38 @@ class PickingLine(models.Model): @api.onchange('scan_receipt') def _onchange_scan_receipt(self): for line in self: - if line.scan_receipt: - lines = line.shipment_id.picking_lines.filtered( - lambda p_lines: p_lines.scan_receipt == line.scan_receipt + if not line.scan_receipt: + continue + + lines = line.shipment_id.picking_lines.filtered( + lambda r: r.id and r.id != line.id and r.scan_receipt == line.scan_receipt and not self + ) + + if lines: + raise UserError("Receipt '%s' already exists." % line.scan_receipt) + + exist = self.search([ + ('scan_receipt', '=', line.scan_receipt) + ], limit=1) + + if exist: + raise UserError( + f"Receipt '{line.scan_receipt}' already exists in {exist.shipment_id.number}." ) - if lines: - raise UserError(( - "Receipt '%s' already exists. " - ) % line.scan_receipt) - - picking = self.env['stock.picking'].search([ - ('tracking_number', '=', line.scan_receipt) - ], limit=1) - - if not picking: - raise UserError(( - "Receipt '%s' not found. " - ) % line.scan_receipt) - - line.picking_id = picking - line.carrier = picking.carrier - line.order_reference = picking.order_reference - line.invoice_marketplace = picking.invoice_mp + + picking = self.env['stock.picking'].search([ + ('tracking_number', '=', line.scan_receipt) + ], limit=1) + + if not picking: + raise UserError("Receipt '%s' not found." % line.scan_receipt) + + line.picking_id = picking + line.carrier = picking.carrier + line.order_reference = picking.order_reference + line.invoice_marketplace = picking.invoice_mp + class ProductShipmentLine(models.Model): _name = 'product.shipment.line' |
