From 29762514ae590f4853f804cd44359ce1dd2c75ec Mon Sep 17 00:00:00 2001
From: Toufik Ben Jaa <tbe@odoo.com>
Date: Wed, 29 May 2019 16:16:18 +0000
Subject: [PATCH] [FIX] sale: singleton error when validating payments

- When validating a payment an "expected singleton" exception is
raised due to the fact that we are using a recordset with multiple
record instead of a recordset with a single record.

OPW-1981632

closes odoo/odoo#33767

Signed-off-by: Christophe Simonis <chs@odoo.com>
---
 addons/sale/models/payment.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/sale/models/payment.py b/addons/sale/models/payment.py
index 3d650c647fe9..66a37260ef75 100644
--- a/addons/sale/models/payment.py
+++ b/addons/sale/models/payment.py
@@ -96,11 +96,11 @@ class PaymentTransaction(models.Model):
         if self.env['ir.config_parameter'].sudo().get_param('sale.automatic_invoice'):
             default_template = self.env['ir.config_parameter'].sudo().get_param('sale.default_email_template')
             if default_template:
-                ctx_company = {'company_id': self.acquirer_id.company_id.id,
-                               'force_company': self.acquirer_id.company_id.id,
-                               'mark_invoice_as_sent': True,
-                               }
                 for trans in self.filtered(lambda t: t.sale_order_ids):
+                    ctx_company = {'company_id': trans.acquirer_id.company_id.id,
+                                   'force_company': trans.acquirer_id.company_id.id,
+                                   'mark_invoice_as_sent': True,
+                                   }
                     trans = trans.with_context(ctx_company)
                     for invoice in trans.invoice_ids:
                         invoice.message_post_with_template(int(default_template), notif_layout="mail.mail_notification_paynow")
@@ -109,9 +109,9 @@ class PaymentTransaction(models.Model):
     @api.multi
     def _invoice_sale_orders(self):
         if self.env['ir.config_parameter'].sudo().get_param('sale.automatic_invoice'):
-            ctx_company = {'company_id': self.acquirer_id.company_id.id,
-                           'force_company': self.acquirer_id.company_id.id}
             for trans in self.filtered(lambda t: t.sale_order_ids):
+                ctx_company = {'company_id': trans.acquirer_id.company_id.id,
+                               'force_company': trans.acquirer_id.company_id.id}
                 trans = trans.with_context(**ctx_company)
                 trans.sale_order_ids._force_lines_to_invoice_policy_order()
                 invoices = trans.sale_order_ids.action_invoice_create()
-- 
GitLab