mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
[MIG] account_banking_mandate from v12 to v14
This commit is contained in:
@@ -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).
|
||||
|
||||
{
|
||||
'name': 'Account Banking Mandate Sale',
|
||||
'version': '12.0.1.0.1',
|
||||
'version': '14.0.1.0.0',
|
||||
'category': 'Banking addons',
|
||||
'license': 'AGPL-3',
|
||||
'summary': "Adds mandates on sale orders",
|
||||
@@ -12,6 +12,7 @@
|
||||
'website': 'https://github.com/OCA/bank-payment',
|
||||
'depends': [
|
||||
'account_payment_sale',
|
||||
'sale_commercial_partner',
|
||||
'account_banking_mandate',
|
||||
],
|
||||
'data': [
|
||||
|
||||
@@ -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).
|
||||
|
||||
from odoo import models, fields, api
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
@@ -9,34 +9,36 @@ class SaleOrder(models.Model):
|
||||
|
||||
# This field commercial_partner_id should be moved
|
||||
# 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(
|
||||
'account.banking.mandate', string='Direct Debit Mandate',
|
||||
ondelete='restrict', readonly=True,
|
||||
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]})
|
||||
'account.banking.mandate',
|
||||
string='Direct Debit Mandate',
|
||||
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(
|
||||
related='payment_mode_id.payment_method_id.mandate_required',
|
||||
readonly=True,
|
||||
)
|
||||
|
||||
@api.multi
|
||||
def _prepare_invoice(self):
|
||||
"""Copy mandate from sale order to invoice"""
|
||||
vals = super(SaleOrder, self)._prepare_invoice()
|
||||
vals['mandate_id'] = self.mandate_id.id
|
||||
vals = super()._prepare_invoice()
|
||||
vals['mandate_id'] = self.mandate_id.id or False
|
||||
return vals
|
||||
|
||||
@api.onchange('payment_mode_id')
|
||||
def payment_mode_change(self):
|
||||
@api.depends("partner_id")
|
||||
def _compute_payment_mode(self):
|
||||
"""Select by default the first valid mandate of the partner"""
|
||||
self.ensure_one()
|
||||
if self.mandate_required and self.partner_id:
|
||||
mandates = self.env['account.banking.mandate'].search([
|
||||
super()._compute_payment_mode()
|
||||
abm_obj = self.env['account.banking.mandate']
|
||||
for order in self:
|
||||
if order.mandate_required and order.partner_id:
|
||||
mandate = abm_obj.search([
|
||||
('state', '=', 'valid'),
|
||||
('partner_id', '=', self.commercial_partner_id.id),
|
||||
])
|
||||
self.mandate_id = mandates[:1]
|
||||
('partner_id', '=', order.commercial_partner_id.id),
|
||||
('company_id', '=', order.company_id.id),
|
||||
], limit=1)
|
||||
order.mandate_id = mandate or False
|
||||
else:
|
||||
self.mandate_id = False
|
||||
order.mandate_id = False
|
||||
|
||||
1
account_banking_mandate_sale/oca_dependencies.txt
Normal file
1
account_banking_mandate_sale/oca_dependencies.txt
Normal file
@@ -0,0 +1 @@
|
||||
sale-workflow
|
||||
@@ -14,7 +14,6 @@
|
||||
<field name="fiscal_position_id" position="after">
|
||||
<field name="commercial_partner_id" invisible="1"/>
|
||||
<field name="mandate_id"
|
||||
domain="[('partner_id', '=', commercial_partner_id), ('state', 'in', ('draft', 'valid'))]"
|
||||
attrs="{'invisible': [('mandate_required', '=', False)]}"/>
|
||||
<field name="mandate_required" invisible="1"/>
|
||||
</field>
|
||||
|
||||
@@ -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).
|
||||
|
||||
from odoo import models, api
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class SaleAdvancePaymentInv(models.TransientModel):
|
||||
_inherit = 'sale.advance.payment.inv'
|
||||
|
||||
@api.multi
|
||||
def _create_invoice(self, order, so_line, amount):
|
||||
def _prepare_invoice_values(self, order, name, amount, so_line):
|
||||
"""Copy mandate from sale order to invoice"""
|
||||
inv = super(SaleAdvancePaymentInv, self)._create_invoice(
|
||||
order, so_line, amount)
|
||||
vals = super()._prepare_invoice_values(order, name, amount, so_line)
|
||||
if order.mandate_id:
|
||||
inv.mandate_id = order.mandate_id.id
|
||||
return inv
|
||||
vals['mandate_id'] = order.mandate_id.id
|
||||
return vals
|
||||
|
||||
Reference in New Issue
Block a user