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' 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) shipment_group = self.env['shipment.group'].create({}) for picking in pickings: if picking.shipment_group_id: continue picking.shipment_group_id = shipment_group.id for move in picking.move_ids_without_package: self.env['shipment.group.line'].create({ 'shipment_id': shipment_group.id, 'product_id': move.product_id.id, 'carrier': picking.carrier, 'invoice_marketplace': picking.invoice_mp, 'picking_id': picking.id, }) return { 'type': 'ir.actions.act_window', 'res_model': 'shipment.group', 'view_mode': 'form', 'res_id': shipment_group.id, 'target': 'current', }