diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-16 10:27:02 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-16 10:27:02 +0700 |
| commit | 3b1bc7642b6a5d0ac19dd74563c5b353a7f3b8ba (patch) | |
| tree | 36232d36970f8e48919228f122e0183e227d3de0 /indoteknik_custom/models/tukar_guling.py | |
| parent | 77d3bd2541a52270f03b84e38dd691630bcd82af (diff) | |
<miqdad> vals qty mapping koli tukar guling
Diffstat (limited to 'indoteknik_custom/models/tukar_guling.py')
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py index f0fe13f6..333e2c8e 100644 --- a/indoteknik_custom/models/tukar_guling.py +++ b/indoteknik_custom/models/tukar_guling.py @@ -57,6 +57,26 @@ class TukarGuling(models.Model): line_ids = fields.One2many('tukar.guling.line', 'tukar_guling_id', string='Product Lines') mapping_koli_ids = fields.One2many('tukar.guling.mapping.koli', 'tukar_guling_id', string='Mapping Koli') + @api.constrains('mapping_koli_ids') + def _check_mapping_koli(self): + for record in self: + if record.operations.picking_type_id.id == 29: # Only for BU/OUT + if not record.mapping_koli_ids: + raise UserError("❌ Mapping Koli belum diisi") + + # Calculate totals as integers + total_mapping_qty = sum(int(mapping.qty_done) for mapping in record.mapping_koli_ids) + total_line_qty = sum(int(line.product_uom_qty) for line in record.line_ids) + + # Strict integer comparison + if total_mapping_qty != total_line_qty: + raise UserError( + "❌ Total quantity mapping koli (%d) tidak sama dengan quantity retur (%d)" % + (total_mapping_qty, total_line_qty) + ) + else: + _logger.info("qty koli sesuai") + @api.onchange('operations') def _onchange_operations(self): """Auto-populate lines ketika operations dipilih""" |
