diff --git a/account_banking_mandate/README.rst b/account_banking_mandate/README.rst index 48d7f74f7..2366bc8c8 100644 --- a/account_banking_mandate/README.rst +++ b/account_banking_mandate/README.rst @@ -31,22 +31,26 @@ Usage To use this module, see menu "Accounting > payment > SEPA direct debit mandates" -For further information, please visit: - - * https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 Known issues / Roadmap ====================== * no known issues - + Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed `feedback +`_. Credits ======= @@ -54,11 +58,11 @@ Credits Contributors ------------ -* Alexis de Lattre +* Alexis de Lattre * Pedro M. Baeza * Alexandre Fayolle -* Stéphane Bidoul -* Sergio Teruel (Incaser) +* Stéphane Bidoul +* Sergio Teruel (Incaser) Maintainer ---------- diff --git a/account_banking_mandate/__openerp__.py b/account_banking_mandate/__openerp__.py index 1fff79f66..a53d4e75b 100644 --- a/account_banking_mandate/__openerp__.py +++ b/account_banking_mandate/__openerp__.py @@ -20,6 +20,7 @@ ], 'data': [ 'views/account_banking_mandate_view.xml', + 'views/account_payment_mode.xml', 'views/account_invoice_view.xml', 'views/account_payment_line.xml', 'views/res_partner_bank_view.xml', diff --git a/account_banking_mandate/models/__init__.py b/account_banking_mandate/models/__init__.py index 646eec280..50af22b59 100644 --- a/account_banking_mandate/models/__init__.py +++ b/account_banking_mandate/models/__init__.py @@ -4,6 +4,8 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import account_banking_mandate +from . import account_payment_mode +from . import account_payment_order from . import account_invoice from . import res_partner_bank from . import account_payment_line diff --git a/account_banking_mandate/models/account_invoice.py b/account_banking_mandate/models/account_invoice.py index e1152569c..12afdc33e 100644 --- a/account_banking_mandate/models/account_invoice.py +++ b/account_banking_mandate/models/account_invoice.py @@ -40,3 +40,17 @@ class AccountInvoice(models.Model): if invoice.type == 'out_invoice': vals['mandate_id'] = invoice.mandate_id.id return vals + + @api.onchange('payment_mode_id') + def payment_mode_change(self): + """Select by default the first valid mandate of the partner""" + if ( + self.type in ('out_invoice', 'out_refund') and + self.payment_mode_id.payment_type == 'inbound' and + self.payment_mode_id.mandate_required and + self.partner_id): + mandates = self.env['account.banking.mandate'].search([ + ('state', '=', 'valid'), + ('partner_id', '=', self.commercial_partner_id.id), + ]) + self.mandate_id = mandates[0] diff --git a/account_banking_mandate/models/account_payment_mode.py b/account_banking_mandate/models/account_payment_mode.py new file mode 100644 index 000000000..6f46ab430 --- /dev/null +++ b/account_banking_mandate/models/account_payment_mode.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountPaymentMode(models.Model): + _inherit = "account.payment.mode" + + mandate_required = fields.Boolean( + string='Mandate Required', + help="Activate this option is this payment mode requires your " + "customer to sign a direct debit mandate with your company.") diff --git a/account_banking_mandate/models/account_payment_order.py b/account_banking_mandate/models/account_payment_order.py new file mode 100644 index 000000000..c9f762c95 --- /dev/null +++ b/account_banking_mandate/models/account_payment_order.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre - alexis.delattre@akretion.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, _ +from openerp.exceptions import UserError + + +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' + + @api.multi + def draft2open(self): + for order in self: + if order.payment_mode_id.mandate_required: + for line in order.payment_line_ids: + if not line.mandate_id: + raise UserError(_( + "Missing mandate in payment line %s") % line.name) + return super(AccountPaymentOrder, self).draft2open() diff --git a/account_banking_mandate/views/account_payment_mode.xml b/account_banking_mandate/views/account_payment_mode.xml new file mode 100644 index 000000000..488251185 --- /dev/null +++ b/account_banking_mandate/views/account_payment_mode.xml @@ -0,0 +1,20 @@ + + + + + + + account_banking_mandate.account.payment.mode.form + account.payment.mode + + + + + + + + + + +