From 9b47eeef16249db9ba0950e54398c0c0373e350d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 7 Jul 2025 10:03:04 +0700 Subject: fix validation duplicate receipt and receipt not found --- fixco_custom/models/shipment_group.py | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) (limited to 'fixco_custom/models') diff --git a/fixco_custom/models/shipment_group.py b/fixco_custom/models/shipment_group.py index 019c995..75a0f2d 100644 --- a/fixco_custom/models/shipment_group.py +++ b/fixco_custom/models/shipment_group.py @@ -193,32 +193,23 @@ class PickingLine(models.Model): def _onchange_scan_receipt(self): for line in self: if line.scan_receipt: - duplicate_receipt = self.search([ - ('scan_receipt', '=', line.scan_receipt) - ], limit=1) - if len(duplicate_receipt) > 0: - line.scan_receipt = False - raise UserError(f'Scan Receipt sudah digunakan di {duplicate_receipt.mapped("shipment_id").number} lain!') + lines = line.shipment_id.picking_lines.filtered( + lambda p_lines: p_lines.scan_receipt == line.scan_receipt + ) + 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: - line.scan_receipt = False - return { - 'warning': { - 'title': "Data Tidak Ditemukan", - 'message': "Tidak ditemukan Picking dengan Tracking Number tersebut!" - } - } - - duplicate_picking = self.search([ - ('picking_id', '=', picking.id) - ]) - if len(duplicate_picking) > 0: - line.scan_receipt = False - raise UserError(f'Picking ini sudah digunakan di {duplicate_picking.mapped("shipment_id").number} lain!') + raise UserError(( + "Receipt '%s' not found. " + ) % line.scan_receipt) line.picking_id = picking line.carrier = picking.carrier -- cgit v1.2.3