diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 020219a7e8c..62b1598db66 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -311,6 +311,8 @@ class SaleOrder(models.Model): inv_obj = self.env['account.invoice'] precision = self.env['decimal.precision'].precision_get('Product Unit of Measure') invoices = {} + invoices_origin = {} + invoices_name = {} for order in self: group_key = order.id if grouped else (order.partner_invoice_id.id, order.currency_id.id) @@ -321,17 +323,21 @@ class SaleOrder(models.Model): inv_data = order._prepare_invoice() invoice = inv_obj.create(inv_data) invoices[group_key] = invoice + invoices_origin[group_key] = [invoice.origin] + invoices_name[group_key] = [invoice.name] elif group_key in invoices: vals = {} - if order.name not in invoices[group_key].origin.split(', '): - vals['origin'] = invoices[group_key].origin + ', ' + order.name - if order.client_order_ref and order.client_order_ref not in invoices[group_key].name.split(', '): - vals['name'] = invoices[group_key].name + ', ' + order.client_order_ref - invoices[group_key].write(vals) + if order.name not in invoices_origin[group_key]: + invoices_origin[group_key].append(order.name) + if order.client_order_ref and order.client_order_ref not in invoices_name[group_key]: + invoices_name[group_key].append(order.client_order_ref) if line.qty_to_invoice > 0: line.invoice_line_create(invoices[group_key].id, line.qty_to_invoice) elif line.qty_to_invoice < 0 and final: line.invoice_line_create(invoices[group_key].id, line.qty_to_invoice) + for group_key in invoices: + invoices[group_key].write({'name': ', '.join(invoices_name[group_key]), + 'origin': ', '.join(invoices_origin[group_key])}) if not invoices: raise UserError(_('There is no invoicable line.'))