summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fixco_custom/models/shipment_group.py51
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'