Merge pull request #339 from Tecnativa/9.0-account_payment_partner-invoice_payment_mode_fill-imp

[IMP] account_payment_partner: Fill payment mode in invoices if none is provided
This commit is contained in:
Stéphane Bidoul (ACSONE)
2017-04-24 14:30:06 +02:00
committed by GitHub
4 changed files with 40 additions and 3 deletions

View File

@@ -7,7 +7,7 @@
{
'name': 'Account Banking Mandate',
'summary': 'Banking mandates',
'version': '9.0.1.0.0',
'version': '9.0.1.1.0',
'license': 'AGPL-3',
'author': "Compassion CH, "
"Tecnativa, "

View File

@@ -29,6 +29,24 @@ class AccountInvoice(models.Model):
res['mandate_id'] = invoice.mandate_id.id or False
return res
@api.model
def create(self, vals):
"""Fill the mandate_id from the partner if none is provided on
creation, using same method as upstream."""
onchanges = {
'_onchange_partner_id': ['mandate_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],
)
return super(AccountInvoice, self).create(vals)
# If a customer pays via direct debit, it's refunds should
# be deducted form the next debit by default. The module
# account_payment_partner copies payment_mode_id from invoice

View File

@@ -5,7 +5,7 @@
{
'name': 'Account Payment Partner',
'version': '9.0.1.0.0',
'version': '9.0.1.1.0',
'category': 'Banking addons',
'license': 'AGPL-3',
'summary': 'Adds payment mode on partners and invoices',

View File

@@ -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],
)
return super(AccountInvoice, self).create(vals)
@api.onchange('payment_mode_id')
def payment_mode_id_change(self):