From f5596bb8fe6998083194dd54027ae6adff802f14 Mon Sep 17 00:00:00 2001 From: MaxLarue Date: Mon, 2 Sep 2019 13:40:09 +0000 Subject: [PATCH] [IMP] sale: fix action_view_invoice in batch action_view_invoice is made to work on empty/single/multi records, but there are context keys used to provide defaults when creating invoices in the next view. However when those fields are different among the origin sale orders, we get an error, because the record set's values is accessed like in a single record. In this record we add the default_* context keys only if the recordset is of length 1, so it keep working as before for single/no records. And it doesn't crash when coming from multiple sale orders with different fields. related task 2047389 --- addons/sale/models/sale.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index e747801a68f..d26af3a50a3 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -490,14 +490,19 @@ class SaleOrder(models.Model): action['res_id'] = invoices.id else: action = {'type': 'ir.actions.act_window_close'} - action['context'] = { + + context = { 'default_type': 'out_invoice', - 'default_partner_id': self.partner_id.id, - 'default_partner_shipping_id': self.partner_shipping_id.id, - 'default_invoice_payment_term_id': self.payment_term_id.id, - 'default_invoice_origin': self.name, - 'default_user_id': self.user_id.id, } + if len(self) == 1: + context.update({ + 'default_partner_id': self.partner_id.id, + 'default_partner_shipping_id': self.partner_shipping_id.id, + 'default_invoice_payment_term_id': self.payment_term_id.id, + 'default_invoice_origin': self.mapped('name'), + 'default_user_id': self.user_id.id, + }) + action['context'] = context return action def _create_invoices(self, grouped=False, final=False): @@ -696,7 +701,7 @@ class SaleOrder(models.Model): def _get_forbidden_state_confirm(self): return {'done', 'cancel'} - + def _prepare_analytic_account_data(self, prefix=None): """ Prepare method for analytic account data