diff options
| -rw-r--r-- | fixco_custom/models/shipment_group.py | 32 |
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 |
