From 21d0b685e0946b5a3490629490ef80cd6c3e6816 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 10 Jun 2025 11:02:31 +0700 Subject: add validation on create shipment group --- .../models/stock_picking_shipment_group.py | 28 ++++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'fixco_custom/models') 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 @@ -1,10 +1,6 @@ from odoo import models, fields, api, _ from odoo.exceptions import UserError -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' @@ -15,12 +11,34 @@ class StockPickingShipmentGroup(models.TransientModel): 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: -- cgit v1.2.3