mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
context of payment orders, she should ocus on the amount that is due to be paid. In this method we are forcing to display both the amount due in company and in the invoice currency. We then hide the fields debit and credit, because they add no value.
103 lines
3.7 KiB
Python
103 lines
3.7 KiB
Python
# © 2017 Creu Blanca
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class TestPaymentMode(TransactionCase):
|
|
|
|
def setUp(self):
|
|
super(TestPaymentMode, self).setUp()
|
|
|
|
# Company
|
|
self.company = self.env.ref('base.main_company')
|
|
|
|
self.journal_c1 = self.env['account.journal'].create({
|
|
'name': 'Journal 1',
|
|
'code': 'J1',
|
|
'type': 'bank',
|
|
'company_id': self.company.id,
|
|
})
|
|
|
|
self.account = self.env['account.account'].search([
|
|
('reconcile', '=', True),
|
|
('company_id', '=', self.company.id)
|
|
], limit=1)
|
|
|
|
self.manual_out = self.env.ref(
|
|
'account.account_payment_method_manual_out')
|
|
|
|
self.manual_in = self.env.ref(
|
|
'account.account_payment_method_manual_in')
|
|
|
|
self.electronic_out = self.env['account.payment.method'].create({
|
|
'name': 'Electronic Out',
|
|
'code': 'electronic_out',
|
|
'payment_type': 'outbound',
|
|
})
|
|
|
|
self.payment_mode_c1 = self.env['account.payment.mode'].create({
|
|
'name': 'Direct Debit of suppliers from Bank 1',
|
|
'bank_account_link': 'variable',
|
|
'payment_method_id': self.manual_out.id,
|
|
'company_id': self.company.id,
|
|
'fixed_journal_id': self.journal_c1.id,
|
|
'variable_journal_ids': [(6, 0, [self.journal_c1.id])]
|
|
})
|
|
|
|
def test_constrains(self):
|
|
with self.assertRaises(ValidationError):
|
|
self.payment_mode_c1.write({
|
|
'generate_move': True,
|
|
'offsetting_account': False
|
|
})
|
|
with self.assertRaises(ValidationError):
|
|
self.payment_mode_c1.write({
|
|
'generate_move': True,
|
|
'offsetting_account': 'bank_account',
|
|
'move_option': False
|
|
})
|
|
with self.assertRaises(ValidationError):
|
|
self.payment_mode_c1.write({
|
|
'generate_move': True,
|
|
'offsetting_account': 'transfer_account',
|
|
'transfer_account_id': False
|
|
})
|
|
with self.assertRaises(ValidationError):
|
|
self.payment_mode_c1.write({
|
|
'generate_move': True,
|
|
'offsetting_account': 'transfer_account',
|
|
'transfer_account_id': self.account.id,
|
|
'transfer_journal_id': False
|
|
})
|
|
|
|
def test_onchange_generate_move(self):
|
|
self.payment_mode_c1.generate_move = True
|
|
self.payment_mode_c1.generate_move_change()
|
|
self.assertEqual(self.payment_mode_c1.move_option, 'date')
|
|
self.payment_mode_c1.generate_move = False
|
|
self.payment_mode_c1.generate_move_change()
|
|
self.assertFalse(self.payment_mode_c1.move_option)
|
|
|
|
def test_onchange_offsetting_account(self):
|
|
self.payment_mode_c1.offsetting = 'bank_account'
|
|
self.payment_mode_c1.offsetting_account_change()
|
|
self.assertFalse(self.payment_mode_c1.transfer_account_id)
|
|
|
|
def test_onchange_payment_type(self):
|
|
self.payment_mode_c1.payment_method_id = self.manual_in
|
|
self.payment_mode_c1.payment_method_id_change()
|
|
self.assertTrue(all([
|
|
journal.type in [
|
|
'sale_refund', 'sale'
|
|
] for journal in self.payment_mode_c1.default_journal_ids
|
|
]))
|
|
self.payment_mode_c1.payment_method_id = self.manual_out
|
|
self.payment_mode_c1.payment_method_id_change()
|
|
self.assertTrue(all([
|
|
journal.type in [
|
|
'purchase_refund', 'purchase'
|
|
] for journal in self.payment_mode_c1.default_journal_ids
|
|
]))
|