diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-10 11:02:31 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-10 11:02:31 +0700 |
| commit | 21d0b685e0946b5a3490629490ef80cd6c3e6816 (patch) | |
| tree | 9cf98ae9ebfe7ef930ced45fae9af2250f1052b0 | |
| parent | 423b06aaa313a1334ce7abc6d3d2c65b36019219 (diff) | |
add validation on create shipment group
| -rw-r--r-- | fixco_custom/models/stock_picking_shipment_group.py | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/fixco_custom/models/stock_picking_shipment_group.py b/fixco_custom/models/stock_picking_shipment_group.py index d317a99..55c43a7 100644 --- a/fixco_custom/models/stock_picking_shipment_group.py +++ b/fixco_custom/models/stock_picking_shipment_group.py @@ -5,22 +5,40 @@ class StockPickingShipmentGroup(models.TransientModel): _name = 'stock.picking.shipment_group' _description = 'Stock Picking Shipment Group' -class StockPickingShipmentGroup(models.TransientModel): - _name = 'stock.picking.shipment_group' - _description = 'Stock Picking Shipment Group' - def create_shipment_group(self): picking_ids = self.env.context.get('picking_ids') if not picking_ids: raise UserError("No stock picking selected.") pickings = self.env['stock.picking'].browse(picking_ids) - + + # Validasi - semua carrier harus memiliki prefix yang sama + carriers = list(set(pickings.mapped('carrier'))) # Get unique carriers + + if len(carriers) > 1: + prefixes = set() + for carrier in carriers: + if not carrier: + continue + prefix = carrier.split()[0] if ' ' in carrier else carrier + prefixes.add(prefix) + + if len(prefixes) > 1: + different_carriers = "\n".join(f"- {c}" for c in sorted(carriers)) if carriers else "None" + raise UserError( + "Cannot group shipments with different carrier providers.\n" + f"Different carrier providers found:\n{different_carriers}\n\n" + "Please make sure all pickings have the same carrier provider." + ) + shipment_group = self.env['shipment.group'].create({}) for picking in pickings: if picking.shipment_group_id: continue + if not picking.carrier or not picking.provider_name: + raise UserError("Harus hit api label ginee terlebih dahulu untuk mendapatkan ekspedisinya") + picking.shipment_group_id = shipment_group.id for move in picking.move_ids_without_package: |
