--- sale.py.old 2011-07-01 13:25:12.748837652 +0200 +++ sale.py 2011-07-01 13:20:11.652846124 +0200 @@ -461,6 +461,8 @@ res = False invoices = {} invoice_ids = [] + #group the pricelist of different sales order for the same partner + partner_pricelist_group={} picking_obj = self.pool.get('stock.picking') invoice = self.pool.get('account.invoice') obj_sale_order_line = self.pool.get('sale.order.line') @@ -477,6 +479,11 @@ continue elif (line.state in states): lines.append(line.id) + if o.partner_id.id in partner_pricelist_group: + if o.pricelist_id.id not in partner_pricelist_group[o.partner_id.id]: + partner_pricelist_group[o.partner_id.id].append(o.pricelist_id.id) + else: + partner_pricelist_group[o.partner_id.id]=[o.pricelist_id.id] created_lines = obj_sale_order_line.invoice_line_create(cr, uid, lines) if created_lines: invoices.setdefault(o.partner_id.id, []).append((o, created_lines)) @@ -487,6 +494,10 @@ return i.id for val in invoices.values(): if grouped: + if len([ s for s in partner_pricelist_group.values() if len(s)!=1]) !=0: + raise osv.except_osv(_('Could not group these sales order in a same invoice!'), + _('You are trying to group sales order with different pricelist in a same invoice!')) + res = self._make_invoice(cr, uid, val[0][0], reduce(lambda x, y: x + y, [l for o, l in val], []), context=context) invoice_ref = '' for o, l in val: