summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-12-01 16:25:20 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-12-01 16:25:20 +0700
commit643ea3d6e49e4a2b26fc76cd3a2de61f27d616f5 (patch)
tree37957e2614a7525ec29312ee8eca6954ee3e8b51
parentdd6153400c5f1be3aaf8a98ddb0b471bd5c0c344 (diff)
push
-rw-r--r--fixco_custom/models/shipment_group.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/fixco_custom/models/shipment_group.py b/fixco_custom/models/shipment_group.py
index e58b8c5..2c36ee0 100644
--- a/fixco_custom/models/shipment_group.py
+++ b/fixco_custom/models/shipment_group.py
@@ -190,29 +190,32 @@ class PickingLine(models.Model):
order_reference = fields.Char(string='Order Reference')
status = fields.Char(string='Status')
- @api.onchange('scan_receipt')
- def _onchange_scan_receipt(self):
+ @api.constrains('scan_receipt')
+ def _check_duplicate_scan(self):
for line in self:
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)
+ # Cari record lain selain dirinya
+ dup = self.search([
+ ('scan_receipt', '=', line.scan_receipt),
+ ('id', '!=', line.id)
], limit=1)
- if exist:
- raise UserError(
- f"Receipt '{line.scan_receipt}' already exists in {exist.shipment_id.number}."
+ if dup:
+ raise ValidationError(
+ "Receipt '%s' already exists in Shipment %s." %
+ (line.scan_receipt, dup.shipment_id.number or '-')
)
+ @api.onchange('scan_receipt')
+ def _onchange_scan_receipt(self):
+ for line in self:
+ if not line.scan_receipt:
+ continue
+
+ # Cari picking
picking = self.env['stock.picking'].search([
('tracking_number', '=', line.scan_receipt)
], limit=1)
@@ -220,6 +223,7 @@ class PickingLine(models.Model):
if not picking:
raise UserError("Receipt '%s' not found." % line.scan_receipt)
+ # Isi field otomatis
line.picking_id = picking
line.carrier = picking.carrier
line.order_reference = picking.order_reference