From dd6153400c5f1be3aaf8a98ddb0b471bd5c0c344 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 1 Dec 2025 15:56:23 +0700 Subject: push --- fixco_custom/models/shipment_group.py | 51 ++++++++++++++++++++--------------- 1 file 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' -- cgit v1.2.3