add rests. Add better multicompany support

add tests and constrains
This commit is contained in:
Jordi Ballester
2017-11-07 11:59:47 +01:00
committed by Enric Tobella
parent 09041f1ab7
commit 0f75e914f0
20 changed files with 446 additions and 61 deletions

View File

@@ -30,16 +30,12 @@ TODO
Usage
=====
To use this module, see menu "Accounting > payment > SEPA direct debit mandates"
To use this module, see menu "Invoicing/Accounting > Payments > Debit Orders"
.. 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/11.0
Known issues / Roadmap
======================
* no known issues
Bug Tracker
===========

View File

@@ -1,3 +1,2 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -1,15 +1,13 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Tecnativa - Pedro M. Baeza
# Copyright 2015-16 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2017 Tecnativa - Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
'name': 'Account Banking Mandate',
'summary': 'Banking mandates',
'version': '11.0.1.0.0',
'version': '10.0.1.1.3',
'license': 'AGPL-3',
'author': "Compassion CH, "
"Tecnativa, "

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from . import account_banking_mandate
from . import account_payment_method

View File

@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# © 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# © 2015-2016 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Tecnativa - Pedro M. Baeza
# Copyright 2015-16 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api, _
@@ -79,6 +78,52 @@ class AccountBankingMandate(models.Model):
"before the date of signature."
) % mandate.unique_mandate_reference)
@api.constrains('company_id', 'payment_line_ids', 'partner_bank_id')
def _company_constrains(self):
for mandate in self:
if mandate.partner_bank_id.company_id and \
mandate.partner_bank_id.company_id != mandate.company_id:
raise ValidationError(
_("The company of the mandate %s differs from the "
"company of partner %s.") %
(mandate.display_name, mandate.partner_id.name))
if self.env['account.payment.line'].search(
[('mandate_id', '=', mandate.id),
('company_id', '=', mandate.company_id.id)], limit=1):
raise ValidationError(
_("You cannot change the company of mandate %s, "
"as there exists payment lines referencing it that "
"belong to another company.") %
(mandate.display_name, ))
if self.env['account.invoice'].search(
[('mandate_id', '=', mandate.id),
('company_id', '=', mandate.company_id.id)], limit=1):
raise ValidationError(
_("You cannot change the company of mandate %s, "
"as there exists invoices referencing it that belong to "
"another company.") %
(mandate.display_name, ))
if self.env['account.move.line'].search(
[('mandate_id', '=', mandate.id),
('company_id', '=', mandate.company_id.id)], limit=1):
raise ValidationError(
_("You cannot change the company of mandate %s, "
"as there exists journal items referencing it that "
"belong to another company.") %
(mandate.display_name, ))
if self.env['bank.payment.line'].search(
[('mandate_id', '=', mandate.id),
('company_id', '=', mandate.company_id.id)], limit=1):
raise ValidationError(
_("You cannot change the company of mandate %s, "
"as there exists bank payment lines referencing it that "
"belong to another company.") %
(mandate.display_name, ))
@api.multi
@api.constrains('state', 'partner_bank_id')
def _check_valid_state(self):

View File

@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# Copyright 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# Copyright 2017 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class AccountInvoice(models.Model):
@@ -36,7 +36,7 @@ class AccountInvoice(models.Model):
creation, using same method as upstream."""
onchanges = {
'_onchange_partner_id': ['mandate_id'],
'payment_mode_id_change': ['mandate_id'],
'_onchange_payment_mode_id': ['mandate_id'],
}
for onchange_method, changed_fields in list(onchanges.items()):
if any(f not in vals for f in changed_fields):
@@ -45,7 +45,7 @@ class AccountInvoice(models.Model):
for field in changed_fields:
if field not in vals and invoice[field]:
vals[field] = invoice._fields[field].convert_to_write(
invoice[field],
invoice[field], invoice,
)
return super(AccountInvoice, self).create(vals)
@@ -80,3 +80,13 @@ class AccountInvoice(models.Model):
def _onchange_payment_mode_id(self):
super(AccountInvoice, self)._onchange_payment_mode_id()
self.set_mandate()
@api.constrains('mandate_id', 'company_id')
def _check_company_constrains(self):
for inv in self:
if inv.mandate_id.company_id and inv.mandate_id.company_id != \
inv.company_id:
raise ValidationError(_(
"The invoice %s has a different company than "
"that of the linked mandate %s).") %
(inv.name, inv.mandate_id.display_name))

View File

@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright Akretion (http://www.akretion.com/)
# Copyright 2017 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class AccountMoveLine(models.Model):
@@ -36,3 +36,14 @@ class AccountMoveLine(models.Model):
'partner_bank_id': mandate.partner_bank_id.id or partner_bank_id,
})
return vals
@api.multi
@api.constrains('mandate_id', 'company_id')
def _check_company_constrains(self):
for ml in self:
mandate = ml.mandate_id
if mandate.company_id and mandate.company_id != ml.company_id:
raise ValidationError(_(
"The item %s of journal %s has a different company than "
"that of the linked mandate %s).") %
(ml.name, ml.move_id.name, ml.mandate_id.display_name))

View File

@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# © 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# © 2015-2016 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Tecnativa - Pedro M. Baeza
# Copyright 2015-16 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api, _
@@ -33,6 +32,18 @@ class AccountPaymentLine(models.Model):
pline.mandate_id.unique_mandate_reference,
pline.mandate_id.partner_bank_id.acc_number))
@api.multi
@api.constrains('mandate_id', 'company_id')
def _check_company_constrains(self):
for pline in self:
if pline.mandate_id.company_id and pline.mandate_id.company_id != \
pline.company_id:
raise ValidationError(_(
"The payment line number %s a different company than "
"that of the linked mandate %s).") %
(pline.name,
pline.mandate_id.display_name))
@api.multi
def draft2open_payment_line_check(self):
res = super(AccountPaymentLine, self).draft2open_payment_line_check()

View File

@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# Copyright 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields

View File

@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
# © 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# © 2015-2016 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# Copyright 2015-16 Akretion - Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class BankPaymentLine(models.Model):
@@ -20,3 +20,13 @@ class BankPaymentLine(models.Model):
same_fields_payment_line_and_bank_payment_line()
res.append('mandate_id')
return res
@api.constrains('mandate_id', 'company_id')
def _check_company_constrains(self):
for line in self:
if line.mandate_id.company_id and line.mandate_id.company_id != \
line.company_id:
raise ValidationError(_(
"The bank payment line %s has a different company than "
"that of the linked mandate %s).") %
(line.name, line.mandate_id.display_name))

View File

@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# Copyright 2017 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
@@ -14,7 +13,7 @@ class ResPartner(models.Model):
readonly=True)
valid_mandate_id = fields.Many2one(
comodel_name='account.banking.mandate',
compute='compute_valid_mandate_id',
compute='_compute_valid_mandate_id',
string='First Valid Mandate')
@api.multi
@@ -28,8 +27,15 @@ class ResPartner(models.Model):
partner.mandate_count = mapped_data.get(partner.id, 0)
@api.multi
def compute_valid_mandate_id(self):
def _compute_valid_mandate_id(self):
# Dict for reducing the duplicated searches on parent/child partners
company_id = self.env.context.get('force_company', False)
if company_id:
company = self.env['res.company'].browse(company_id)
else:
company = self.env['res.company']._company_default_get(
'account.banking.mandate')
mandates_dic = {}
for partner in self:
commercial_partner_id = partner.commercial_partner_id.id
@@ -37,7 +43,8 @@ class ResPartner(models.Model):
partner.valid_mandate_id = mandates_dic[commercial_partner_id]
else:
mandates = partner.commercial_partner_id.bank_ids.mapped(
'mandate_ids').filtered(lambda x: x.state == 'valid')
'mandate_ids').filtered(
lambda x: x.state == 'valid' and x.company_id == company)
first_valid_mandate_id = mandates[:1].id
partner.valid_mandate_id = first_valid_mandate_id
mandates_dic[commercial_partner_id] = first_valid_mandate_id

View File

@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
# © 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
# Copyright 2014 Compassion CH - Cyril Sester <csester@compassion.ch>
# Copyright 2014 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class ResPartnerBank(models.Model):
@@ -14,3 +14,15 @@ class ResPartnerBank(models.Model):
string='Direct Debit Mandates',
help='Banking mandates represent an authorization that the bank '
'account owner gives to a company for a specific operation.')
@api.constrains('company_id', 'mandate_ids')
def _company_constrains(self):
for rpb in self:
if self.env['account.banking.mandate'].search(
[('partner_bank_id', '=', rpb.id),
('company_id', '=', rpb.company_id.id)], limit=1):
raise ValidationError(
_("You cannot change the company of Partner Bank %s, "
"as there exists mandates referencing it that "
"belong to another company.") %
(rpb.name,))

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
© 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
Copyright 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from . import test_mandate
from . import test_invoice_mandate

View File

@@ -1,15 +1,25 @@
# -*- coding: utf-8 -*-
# © 2017 Creu Blanca
# Copyright 2017 Creu Blanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
from odoo.exceptions import ValidationError
class TestInvoiceMandate(TransactionCase):
def test_post_invoice_and_refund(self):
def test_post_invoice_01(self):
self.invoice._onchange_partner_id()
self.assertEqual(self.invoice.mandate_id, self.mandate)
self.invoice.action_invoice_open()
payable_move_lines = self.invoice.move_id.line_ids.filtered(
lambda s: s.account_id == self.invoice_account)
if payable_move_lines:
self.assertEqual(payable_move_lines[0].mandate_id, self.mandate)
self.env['account.invoice.payment.line.multi'].with_context(
active_model='account.invoice',
active_ids=self.invoice.ids
@@ -17,41 +27,198 @@ class TestInvoiceMandate(TransactionCase):
payment_order = self.env['account.payment.order'].search([])
self.assertEqual(len(payment_order.ids), 1)
payment_order.payment_mode_id_change()
payment_order.draft2open()
payment_order.open2generated()
payment_order.generated2uploaded()
def test_post_invoice_and_refund(self):
def test_post_invoice_02(self):
partner_2 = self._create_res_partner('Jane with ACME Bank')
partner_2.customer_payment_mode_id = self.mode_inbound_acme
bank_account = self.env['res.partner.bank'].create({
'acc_number': '0023032234211',
'partner_id': partner_2.id,
'bank_id': self.acme_bank.id,
'company_id': self.company_2.id
})
mandate_2 = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company_2.id,
})
mandate_2.validate()
self.invoice._onchange_partner_id()
self.assertEqual(self.invoice.mandate_id, self.mandate)
self.invoice.action_invoice_open()
payable_move_lines = self.invoice.move_id.line_ids.filtered(
lambda s: s.account_id == self.invoice_account)
if payable_move_lines:
with self.assertRaises(ValidationError):
payable_move_lines[0].mandate_id = mandate_2
def test_post_invoice_and_refund_02(self):
self.invoice._onchange_partner_id()
self.invoice.action_invoice_open()
self.assertEqual(self.invoice.mandate_id, self.mandate)
self.invoice.refund()
def test_onchange_partner(self):
partner_2 = self._create_res_partner('Jane with ACME Bank')
partner_2.customer_payment_mode_id = self.mode_inbound_acme
bank_account = self.env['res.partner.bank'].create({
'acc_number': '0023032234211',
'partner_id': partner_2.id,
'bank_id': self.acme_bank.id,
'company_id': self.company.id
})
mandate_2 = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
mandate_2.validate()
invoice = self.env['account.invoice'].new({
'partner_id': self.partner.id,
'account_id': self.invoice_account.id,
'type': 'out_invoice',
'company_id': self.company.id,
})
invoice.partner_id = partner_2
invoice._onchange_partner_id()
self.assertEqual(invoice.mandate_id, mandate_2)
def test_onchange_payment_mode(self):
invoice = self.env['account.invoice'].new({
'partner_id': self.partner.id,
'account_id': self.invoice_account.id,
'type': 'out_invoice',
'company_id': self.company.id,
})
invoice._onchange_partner_id()
pay_method_test = self.env['account.payment.method'].create({
'name': 'Test',
'code': 'test',
'payment_type': 'inbound',
'mandate_required': False
})
mode_inbound_acme_2 = self.env['account.payment.mode'].create({
'name': 'Inbound Credit ACME Bank 2',
'company_id': self.company.id,
'bank_account_link': 'variable',
'payment_method_id': pay_method_test.id,
})
invoice.payment_mode_id = mode_inbound_acme_2
invoice._onchange_payment_mode_id()
self.assertEqual(invoice.mandate_id, self.env[
'account.banking.mandate'])
def test_invoice_constrains(self):
partner_2 = self._create_res_partner('Jane with ACME Bank')
partner_2.customer_payment_mode_id = self.mode_inbound_acme
bank_account = self.env['res.partner.bank'].create({
'acc_number': '0023032234211',
'partner_id': partner_2.id,
'bank_id': self.acme_bank.id,
'company_id': self.company_2.id
})
mandate_2 = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company_2.id,
})
mandate_2.validate()
invoice = self.env['account.invoice'].create({
'partner_id': self.partner.id,
'account_id': self.invoice_account.id,
'type': 'out_invoice',
'company_id': self.company.id,
})
with self.assertRaises(ValidationError):
invoice.mandate_id = mandate_2
def _create_res_partner(self, name):
return self.env['res.partner'].create({
'name': name
})
def _create_res_bank(self, name, bic, city, country):
return self.env['res.bank'].create({
'name': name,
'bic': bic,
'city': city,
'country': country.id,
})
def setUp(self):
res = super(TestInvoiceMandate, self).setUp()
self.partner = self.env.ref('base.res_partner_12')
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
self.company = self.env.ref('base.main_company')
self.partner = self._create_res_partner('Peter with ACME Bank')
self.acme_bank = self._create_res_bank('ACME Bank', 'GEBABEBB03B',
'Charleroi',
self.env.ref('base.be'))
bank_account = self.env['res.partner.bank'].create({
'acc_number': '0023032234211123',
'partner_id': self.partner.id,
'bank_id': self.acme_bank.id,
'company_id': self.company.id
})
self.company_2 = self.env['res.company'].create({
'name': 'Company 2',
})
self.mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
self.mandate.validate()
mode = self.env.ref('account_payment_mode.payment_mode_inbound_ct1')
self.partner.customer_payment_mode_id = mode
mode.payment_method_id.mandate_required = True
invoice_account = self.env['account.account'].search(
self.mode_inbound_acme = self.env['account.payment.mode'].create({
'name': 'Inbound Credit ACME Bank',
'company_id': self.company.id,
'bank_account_link': 'variable',
'payment_method_id':
self.env.ref('account.account_payment_method_manual_in').id,
})
bank_journal = self.env['account.journal'].search(
[('type', '=', 'bank')], limit=1)
self.mode_inbound_acme.variable_journal_ids = bank_journal
self.mode_inbound_acme.payment_method_id.mandate_required = True
self.mode_inbound_acme.payment_order_ok = True
self.partner.customer_payment_mode_id = self.mode_inbound_acme
self.invoice_account = self.env['account.account'].search(
[('user_type_id', '=', self.env.ref(
'account.data_account_type_payable').id)],
limit=1).id
'account.data_account_type_receivable').id),
('company_id', '=', self.company.id)],
limit=1)
invoice_line_account = self.env['account.account'].search(
[('user_type_id', '=', self.env.ref(
'account.data_account_type_expenses').id)],
'account.data_account_type_expenses').id),
('company_id', '=', self.company.id)],
limit=1).id
self.invoice = self.env['account.invoice'].create({
'partner_id': self.partner.id,
'account_id': invoice_account,
'type': 'out_invoice'
'account_id': self.invoice_account.id,
'type': 'out_invoice',
'company_id': self.company.id,
})
self.env['account.invoice.line'].create({

View File

@@ -1,17 +1,20 @@
# -*- coding: utf-8 -*-
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
from odoo import fields
from odoo.exceptions import UserError, ValidationError
from datetime import timedelta
class TestMandate(TransactionCase):
def test_mandate(self):
def test_mandate_01(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
self.assertEqual(mandate.state, 'draft')
mandate.validate()
@@ -21,3 +24,113 @@ class TestMandate(TransactionCase):
self.assertEqual(mandate.state, 'cancel')
mandate.back2draft()
self.assertEqual(mandate.state, 'draft')
def test_mandate_02(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
with self.assertRaises(UserError):
mandate.back2draft()
def test_mandate_03(self):
bank_account = self.env.ref(
'account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
mandate.validate()
with self.assertRaises(UserError):
mandate.validate()
def test_mandate_04(self):
bank_account = self.env.ref(
'account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
mandate.validate()
mandate.cancel()
with self.assertRaises(UserError):
mandate.cancel()
def test_onchange_methods(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].new({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
bank_account_2 = self.env.ref(
'account_payment_mode.res_partner_2_iban')
mandate.partner_bank_id = bank_account_2
mandate.mandate_partner_bank_change()
self.assertEquals(mandate.partner_id, bank_account_2.partner_id)
def test_constrains_01(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
mandate.validate()
with self.assertRaises(ValidationError):
mandate.signature_date = fields.Date.to_string(
fields.Date.from_string(
fields.Date.context_today(mandate)) + timedelta(days=1))
def test_constrains_02(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
with self.assertRaises(ValidationError):
mandate.company_id = self.company_2
def test_constrains_03(self):
bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')
mandate = self.env['account.banking.mandate'].create({
'partner_bank_id': bank_account.id,
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
bank_account_2 = self.env.ref(
'account_payment_mode.res_partner_2_iban')
bank_account_2.company_id = self.company_2
with self.assertRaises(ValidationError):
mandate.partner_bank_id = bank_account_2
def test_constrains_04(self):
mandate = self.env['account.banking.mandate'].create({
'signature_date': '2015-01-01',
'company_id': self.company.id,
})
bank_account_2 = self.env.ref(
'account_payment_mode.res_partner_2_iban')
bank_account_2.company_id = self.company_2
with self.assertRaises(ValidationError):
bank_account_2.mandate_ids += mandate
def setUp(self):
res = super(TestMandate, self).setUp()
# Company
self.company = self.env.ref('base.main_company')
# Company 2
self.company_2 = self.env['res.company'].create({
'name': 'Company 2',
})
return res

View File

@@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)

View File

@@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)

View File

@@ -0,0 +1 @@
../../../../account_banking_mandate

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)