From e9f2133e76f358b92726127a9abf1c1a68047e57 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sun, 2 Apr 2017 04:04:55 +0200 Subject: [PATCH] [IMP] account_payment_partner: Several things: * Change copyright and author after company merging * Fill payment mode in invoices if none is provided Using same method as in upstream, payment mode is filled on invoice creation if no payment method is provided. This way, we don't need to install account_payment_sale if we don't want to handle several payment modes at sales level. Even more, if we install the module later and we have already existing sales orders without payment mode filled, those orders will be invoiced with the customer payment mode. * Signature changed in convert_to_write --- account_payment_partner/__manifest__.py | 4 ++-- .../models/account_invoice.py | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/account_payment_partner/__manifest__.py b/account_payment_partner/__manifest__.py index 59484804b..c38f46c9c 100644 --- a/account_payment_partner/__manifest__.py +++ b/account_payment_partner/__manifest__.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # © 2014 Akretion - Alexis de Lattre -# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2014 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { 'name': 'Account Payment Partner', - 'version': '10.0.1.0.0', + 'version': '10.0.1.1.0', 'category': 'Banking addons', 'license': 'AGPL-3', 'summary': 'Adds payment mode on partners and invoices', diff --git a/account_payment_partner/models/account_invoice.py b/account_payment_partner/models/account_invoice.py index 6f33546e3..cc50ce9b5 100644 --- a/account_payment_partner/models/account_invoice.py +++ b/account_payment_partner/models/account_invoice.py @@ -19,7 +19,7 @@ class AccountInvoice(models.Model): @api.onchange('partner_id', 'company_id') def _onchange_partner_id(self): - super(AccountInvoice, self)._onchange_partner_id() + res = super(AccountInvoice, self)._onchange_partner_id() if self.partner_id: if self.type == 'in_invoice': pay_mode = self.partner_id.supplier_payment_mode_id @@ -41,6 +41,25 @@ class AccountInvoice(models.Model): self.payment_mode_id = False if self.type == 'in_invoice': self.partner_bank_id = False + return res + + @api.model + def create(self, vals): + """Fill the payment_mode_id from the partner if none is provided on + creation, using same method as upstream.""" + onchanges = { + '_onchange_partner_id': ['payment_mode_id'], + } + for onchange_method, changed_fields in onchanges.items(): + if any(f not in vals for f in changed_fields): + invoice = self.new(vals) + getattr(invoice, onchange_method)() + for field in changed_fields: + if field not in vals and invoice[field]: + vals[field] = invoice._fields[field].convert_to_write( + invoice[field], invoice, + ) + return super(AccountInvoice, self).create(vals) @api.onchange('payment_mode_id') def payment_mode_id_change(self):