mirror of
https://gitlab.com/flectra-community/bank-payment.git
synced 2024-11-26 07:32:05 +00:00
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 flectra.tests.common import TransactionCase
|
||
|
from flectra.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
|
||
|
]))
|