mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-11-17 11:32:07 +00:00
68 lines
2.7 KiB
Python
68 lines
2.7 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||
|
from flectra.addons.account.tests.common import AccountTestInvoicingCommon
|
||
|
from flectra.tests import tagged
|
||
|
from flectra.exceptions import ValidationError
|
||
|
|
||
|
|
||
|
@tagged('post_install', '-at_install')
|
||
|
class ISRTest(AccountTestInvoicingCommon):
|
||
|
|
||
|
@classmethod
|
||
|
def setUpClass(cls, chart_template_ref='l10n_ch.l10nch_chart_template'):
|
||
|
super().setUpClass(chart_template_ref=chart_template_ref)
|
||
|
|
||
|
def print_isr(self, invoice):
|
||
|
try:
|
||
|
invoice.isr_print()
|
||
|
return True
|
||
|
except ValidationError:
|
||
|
return False
|
||
|
|
||
|
def test_l10n_ch_postals(self):
|
||
|
|
||
|
def assertBankAccountValid(account_number, expected_account_type, expected_postal=None):
|
||
|
partner_bank = self.env['res.partner.bank'].create({
|
||
|
'acc_number': account_number,
|
||
|
'partner_id': self.partner_a.id,
|
||
|
})
|
||
|
expected_vals = {'acc_type': expected_account_type}
|
||
|
if expected_postal is not None:
|
||
|
expected_vals['l10n_ch_postal'] = expected_postal
|
||
|
|
||
|
self.assertRecordValues(partner_bank, [expected_vals])
|
||
|
|
||
|
assertBankAccountValid('010391391', 'postal', expected_postal='010391391')
|
||
|
assertBankAccountValid('010391394', 'bank')
|
||
|
assertBankAccountValid('CH6309000000250097798', 'iban', expected_postal='25-9779-8')
|
||
|
assertBankAccountValid('GR1601101250000000012300695', 'iban', expected_postal=False)
|
||
|
|
||
|
def test_isr(self):
|
||
|
isr_bank_account = self.env['res.partner.bank'].create({
|
||
|
'acc_number': "ISR {} number",
|
||
|
'partner_id': self.env.company.partner_id.id,
|
||
|
'l10n_ch_isr_subscription_chf': '01-39139-1',
|
||
|
})
|
||
|
|
||
|
invoice_chf = self.env['account.move'].create({
|
||
|
'move_type': 'out_invoice',
|
||
|
'partner_id': self.partner_a.id,
|
||
|
'partner_bank_id': isr_bank_account.id,
|
||
|
'currency_id': self.env.ref('base.CHF').id,
|
||
|
'invoice_date': '2019-01-01',
|
||
|
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id})],
|
||
|
})
|
||
|
invoice_chf.action_post()
|
||
|
self.assertTrue(self.print_isr(invoice_chf))
|
||
|
|
||
|
invoice_eur = self.env['account.move'].create({
|
||
|
'move_type': 'out_invoice',
|
||
|
'partner_id': self.partner_a.id,
|
||
|
'partner_bank_id': isr_bank_account.id,
|
||
|
'currency_id': self.env.ref('base.EUR').id,
|
||
|
'invoice_date': '2019-01-01',
|
||
|
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id})],
|
||
|
})
|
||
|
invoice_eur.action_post()
|
||
|
self.assertFalse(self.print_isr(invoice_eur))
|