mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-11-17 11:32:07 +00:00
109 lines
4.4 KiB
Python
109 lines
4.4 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 common, Form
|
||
|
|
||
|
QR_IBAN = 'CH21 3080 8001 2345 6782 7'
|
||
|
ISR_SUBS_NUMBER = "01-162-8"
|
||
|
|
||
|
|
||
|
class TestGenISRReference(AccountTestInvoicingCommon):
|
||
|
"""Check condition of generation of and content of the structured ref"""
|
||
|
|
||
|
@classmethod
|
||
|
def setUpClass(cls, chart_template_ref="l10n_ch.l10nch_chart_template"):
|
||
|
super().setUpClass(chart_template_ref=chart_template_ref)
|
||
|
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
|
||
|
cls.bank = cls.env["res.bank"].create(
|
||
|
{
|
||
|
"name": "Alternative Bank Schweiz AG",
|
||
|
"bic": "ALSWCH21XXX",
|
||
|
}
|
||
|
)
|
||
|
cls.bank_acc_isr = cls.env["res.partner.bank"].create(
|
||
|
{
|
||
|
"acc_number": "ISR",
|
||
|
"l10n_ch_isr_subscription_chf": "01-162-8",
|
||
|
"bank_id": cls.bank.id,
|
||
|
"partner_id": cls.partner_a.id,
|
||
|
}
|
||
|
)
|
||
|
cls.bank_acc_qriban = cls.env["res.partner.bank"].create(
|
||
|
{
|
||
|
"acc_number": QR_IBAN,
|
||
|
"bank_id": cls.bank.id,
|
||
|
"partner_id": cls.partner_a.id,
|
||
|
}
|
||
|
)
|
||
|
cls.invoice = cls.init_invoice("out_invoice", products=cls.product_a+cls.product_b)
|
||
|
|
||
|
def test_isr(self):
|
||
|
|
||
|
self.invoice.partner_bank_id = self.bank_acc_isr
|
||
|
self.invoice.name = "INV/01234567890"
|
||
|
|
||
|
expected_isr = "000000000000000012345678903"
|
||
|
expected_isr_spaced = "00 00000 00000 00001 23456 78903"
|
||
|
expected_optical_line = "0100001307807>000000000000000012345678903+ 010001628>"
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number, expected_isr)
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number_spaced, expected_isr_spaced)
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_optical_line, expected_optical_line)
|
||
|
|
||
|
def test_qrr(self):
|
||
|
self.invoice.partner_bank_id = self.bank_acc_qriban
|
||
|
|
||
|
self.invoice.name = "INV/01234567890"
|
||
|
|
||
|
expected_isr = "000000000000000012345678903"
|
||
|
expected_isr_spaced = "00 00000 00000 00001 23456 78903"
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number, expected_isr)
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number_spaced, expected_isr_spaced)
|
||
|
# No need to check optical line, we have no use for it with QR-bill
|
||
|
|
||
|
def test_isr_long_reference(self):
|
||
|
self.invoice.partner_bank_id = self.bank_acc_isr
|
||
|
|
||
|
self.invoice.name = "INV/123456789012345678901234567890"
|
||
|
|
||
|
expected_isr = "567890123456789012345678901"
|
||
|
expected_isr_spaced = "56 78901 23456 78901 23456 78901"
|
||
|
expected_optical_line = "0100001307807>567890123456789012345678901+ 010001628>"
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number, expected_isr)
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_number_spaced, expected_isr_spaced)
|
||
|
self.assertEqual(self.invoice.l10n_ch_isr_optical_line, expected_optical_line)
|
||
|
|
||
|
def test_missing_isr_subscription_num(self):
|
||
|
self.bank_acc_isr.l10n_ch_isr_subscription_chf = False
|
||
|
|
||
|
self.invoice.partner_bank_id = self.bank_acc_isr
|
||
|
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number_spaced)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_optical_line)
|
||
|
|
||
|
def test_missing_isr_subscription_num_in_wrong_field(self):
|
||
|
self.bank_acc_isr.l10n_ch_isr_subscription_chf = False
|
||
|
self.bank_acc_isr.l10n_ch_postal = ISR_SUBS_NUMBER
|
||
|
|
||
|
self.invoice.partner_bank_id = self.bank_acc_isr
|
||
|
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number_spaced)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_optical_line)
|
||
|
|
||
|
def test_no_bank_account(self):
|
||
|
self.invoice.partner_bank_id = False
|
||
|
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number_spaced)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_optical_line)
|
||
|
|
||
|
def test_wrong_currency(self):
|
||
|
self.invoice.partner_bank_id = self.bank_acc_isr
|
||
|
self.invoice.currency_id = self.env.ref("base.BTN")
|
||
|
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_number_spaced)
|
||
|
self.assertFalse(self.invoice.l10n_ch_isr_optical_line)
|