[IMP] account_banking_mandate: Fill mandate in invoices if none is provided

Using same method as in upstream, mandate is filled on invoice creation if no
one is provided. This way, we don't need to install account_banking_mandate_sale
if we don't want to handle several mandates at sales level.
This commit is contained in:
Pedro M. Baeza
2017-04-02 22:14:57 +02:00
parent 04ed0f3aa4
commit bf6126ceef
2 changed files with 19 additions and 1 deletions

View File

@@ -7,7 +7,7 @@
{
'name': 'Account Banking Mandate',
'summary': 'Banking mandates',
'version': '10.0.1.0.0',
'version': '10.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], invoice,
)
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