summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-06-10 11:02:31 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-06-10 11:02:31 +0700
commit21d0b685e0946b5a3490629490ef80cd6c3e6816 (patch)
tree9cf98ae9ebfe7ef930ced45fae9af2250f1052b0
parent423b06aaa313a1334ce7abc6d3d2c65b36019219 (diff)
add validation on create shipment group
-rw-r--r--fixco_custom/models/stock_picking_shipment_group.py28
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: