[MIG] account_banking_mandate from v12 to v14

This commit is contained in:
Alexis de Lattre
2020-12-24 10:38:19 +01:00
parent 04c4bca5bc
commit a052dcf1a3
5 changed files with 35 additions and 34 deletions

View File

@@ -1,9 +1,9 @@
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>) # Copyright 2016-2020 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'Account Banking Mandate Sale', 'name': 'Account Banking Mandate Sale',
'version': '12.0.1.0.1', 'version': '14.0.1.0.0',
'category': 'Banking addons', 'category': 'Banking addons',
'license': 'AGPL-3', 'license': 'AGPL-3',
'summary': "Adds mandates on sale orders", 'summary': "Adds mandates on sale orders",
@@ -12,6 +12,7 @@
'website': 'https://github.com/OCA/bank-payment', 'website': 'https://github.com/OCA/bank-payment',
'depends': [ 'depends': [
'account_payment_sale', 'account_payment_sale',
'sale_commercial_partner',
'account_banking_mandate', 'account_banking_mandate',
], ],
'data': [ 'data': [

View File

@@ -1,7 +1,7 @@
# © 2014-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>) # Copyright 2014-2020 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields, api from odoo import api, fields, models
class SaleOrder(models.Model): class SaleOrder(models.Model):
@@ -9,34 +9,36 @@ class SaleOrder(models.Model):
# This field commercial_partner_id should be moved # This field commercial_partner_id should be moved
# in an OCA base module named for example sale_commercial_partner # in an OCA base module named for example sale_commercial_partner
commercial_partner_id = fields.Many2one(
related='partner_id.commercial_partner_id', string='Commercial Entity',
store=True, readonly=True)
mandate_id = fields.Many2one( mandate_id = fields.Many2one(
'account.banking.mandate', string='Direct Debit Mandate', 'account.banking.mandate',
ondelete='restrict', readonly=True, string='Direct Debit Mandate',
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) ondelete='restrict',
check_company=True,
readonly=False,
domain="[('partner_id', '=', commercial_partner_id), ('state', 'in', ('draft', 'valid')), ('company_id', '=', company_id)]",
)
mandate_required = fields.Boolean( mandate_required = fields.Boolean(
related='payment_mode_id.payment_method_id.mandate_required', related='payment_mode_id.payment_method_id.mandate_required',
readonly=True,
) )
@api.multi
def _prepare_invoice(self): def _prepare_invoice(self):
"""Copy mandate from sale order to invoice""" """Copy mandate from sale order to invoice"""
vals = super(SaleOrder, self)._prepare_invoice() vals = super()._prepare_invoice()
vals['mandate_id'] = self.mandate_id.id vals['mandate_id'] = self.mandate_id.id or False
return vals return vals
@api.onchange('payment_mode_id') @api.depends("partner_id")
def payment_mode_change(self): def _compute_payment_mode(self):
"""Select by default the first valid mandate of the partner""" """Select by default the first valid mandate of the partner"""
self.ensure_one() super()._compute_payment_mode()
if self.mandate_required and self.partner_id: abm_obj = self.env['account.banking.mandate']
mandates = self.env['account.banking.mandate'].search([ for order in self:
if order.mandate_required and order.partner_id:
mandate = abm_obj.search([
('state', '=', 'valid'), ('state', '=', 'valid'),
('partner_id', '=', self.commercial_partner_id.id), ('partner_id', '=', order.commercial_partner_id.id),
]) ('company_id', '=', order.company_id.id),
self.mandate_id = mandates[:1] ], limit=1)
order.mandate_id = mandate or False
else: else:
self.mandate_id = False order.mandate_id = False

View File

@@ -0,0 +1 @@
sale-workflow

View File

@@ -14,7 +14,6 @@
<field name="fiscal_position_id" position="after"> <field name="fiscal_position_id" position="after">
<field name="commercial_partner_id" invisible="1"/> <field name="commercial_partner_id" invisible="1"/>
<field name="mandate_id" <field name="mandate_id"
domain="[('partner_id', '=', commercial_partner_id), ('state', 'in', ('draft', 'valid'))]"
attrs="{'invisible': [('mandate_required', '=', False)]}"/> attrs="{'invisible': [('mandate_required', '=', False)]}"/>
<field name="mandate_required" invisible="1"/> <field name="mandate_required" invisible="1"/>
</field> </field>

View File

@@ -1,17 +1,15 @@
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>) # Copyright 2016-2020 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, api from odoo import api, models
class SaleAdvancePaymentInv(models.TransientModel): class SaleAdvancePaymentInv(models.TransientModel):
_inherit = 'sale.advance.payment.inv' _inherit = 'sale.advance.payment.inv'
@api.multi def _prepare_invoice_values(self, order, name, amount, so_line):
def _create_invoice(self, order, so_line, amount):
"""Copy mandate from sale order to invoice""" """Copy mandate from sale order to invoice"""
inv = super(SaleAdvancePaymentInv, self)._create_invoice( vals = super()._prepare_invoice_values(order, name, amount, so_line)
order, so_line, amount)
if order.mandate_id: if order.mandate_id:
inv.mandate_id = order.mandate_id.id vals['mandate_id'] = order.mandate_id.id
return inv return vals