mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Better handling of partner_bank_id and mandate_id on invoice: invisible/required/onchange
This commit is contained in:
committed by
Enric Tobella
parent
b9c9d10dad
commit
fa7d3e9169
@@ -15,6 +15,9 @@ class AccountInvoice(models.Model):
|
||||
'account.banking.mandate', string='Direct Debit Mandate',
|
||||
ondelete='restrict',
|
||||
readonly=True, states={'draft': [('readonly', False)]})
|
||||
mandate_required = fields.Boolean(
|
||||
related='payment_mode_id.payment_method_id.mandate_required',
|
||||
readonly=True)
|
||||
|
||||
@api.model
|
||||
def line_get_convert(self, line, part):
|
||||
@@ -41,16 +44,32 @@ class AccountInvoice(models.Model):
|
||||
vals['mandate_id'] = invoice.mandate_id.id
|
||||
return vals
|
||||
|
||||
@api.onchange('payment_mode_id')
|
||||
def payment_mode_change(self):
|
||||
@api.onchange('partner_id', 'company_id')
|
||||
def _onchange_partner_id(self):
|
||||
"""Select by default the first valid mandate of the partner"""
|
||||
super(AccountInvoice, self)._onchange_partner_id()
|
||||
if (
|
||||
self.type in ('out_invoice', 'out_refund') and
|
||||
self.payment_mode_id.payment_type == 'inbound' and
|
||||
self.payment_mode_id.payment_method_id.mandate_required and
|
||||
self.partner_id):
|
||||
self.type == 'out_invoice' and
|
||||
self.partner_id.customer_payment_mode_id.\
|
||||
payment_type == 'inbound' and
|
||||
self.partner_id.customer_payment_mode_id.payment_method_id.\
|
||||
mandate_required and
|
||||
self.commercial_partner_id):
|
||||
mandates = self.env['account.banking.mandate'].search([
|
||||
('state', '=', 'valid'),
|
||||
('partner_id', '=', self.commercial_partner_id.id),
|
||||
])
|
||||
self.mandate_id = mandates[0]
|
||||
else:
|
||||
self.mandate_id = False
|
||||
|
||||
@api.onchange('payment_mode_id')
|
||||
def payment_mode_id_change(self):
|
||||
super(AccountInvoice, self).payment_mode_id_change()
|
||||
if (
|
||||
self.payment_mode_id and
|
||||
self.payment_mode_id.payment_type == 'inbound' and
|
||||
not self.payment_mode_id.payment_method_id.mandate_required):
|
||||
self.mandate_id = False
|
||||
elif not self.payment_mode_id:
|
||||
self.mandate_id = False
|
||||
|
||||
@@ -12,9 +12,11 @@
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="inherit_id" ref="account_payment_partner.invoice_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_bank_id" position="after">
|
||||
<field name="payment_mode_id" position="after">
|
||||
<field name="mandate_id"
|
||||
domain="[('partner_id', '=', commercial_partner_id), ('state', '=', 'valid')]"/>
|
||||
domain="[('partner_id', '=', commercial_partner_id), ('state', '=', 'valid')]"
|
||||
attrs="{'required': [('mandate_required', '=', True)], 'invisible': [('mandate_required', '=', False)]}"/>
|
||||
<field name="mandate_required" invisible="1"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<record id="account_payment_method_form" model="ir.ui.view">
|
||||
<field name="name">account_banking_mandate.account.payment.method.form</field>
|
||||
<field name="model">account.payment.method</field>
|
||||
<field name="inherit_id" ref="account_payment_mode.account_payment_method_form"/>
|
||||
<field name="inherit_id" ref="account_payment_partner.account_payment_method_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="payment_type" position="after">
|
||||
<field name="mandate_required"
|
||||
|
||||
Reference in New Issue
Block a user