account_edi_ubl_cii/tests/test_partner_peppol_fields.py

82 lines
3.1 KiB
Python

# -*- coding: utf-8 -*-
from contextlib import contextmanager
from unittest.mock import patch
from odoo.tests import tagged
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.addons.account_edi_ubl_cii.models.account_edi_common import EAS_MAPPING
@tagged('post_install', '-at_install')
class TestAccountUblCii(AccountTestInvoicingCommon):
@contextmanager
def check_peppol_vals(self, partner, expected, reset=True):
if reset:
partner.write({
'country_id': False,
'peppol_eas': False,
'peppol_endpoint': False,
})
yield
partner.country_id = self.env.ref('base.ba')
self.assertEqual((partner.peppol_eas, partner.peppol_endpoint), expected)
def _build_error_peppol_endpoint(self, eas, endpoint):
""" Mock _build_error_peppol_endpoint"""
if eas == "0184" and endpoint != "12345674":
return f"(0184, {endpoint}) is not a valid peppol couple."
@patch(
'odoo.addons.account_edi_ubl_cii.models.res_partner.ResPartner._build_error_peppol_endpoint',
_build_error_peppol_endpoint,
)
@patch.dict(EAS_MAPPING, {'BA': {'0184': 'company_registry', '0198': 'vat'}})
def test_peppol_eas_endpoint(self):
partner = self.company_data['company'].partner_id
partner.company_registry = "12345674"
partner.vat = "BA12345674"
# Base case -> (0184, company_registry)
with self.check_peppol_vals(partner, expected=("0184", partner.company_registry)):
pass
# No company_registry -> (0198, vat)
with self.check_peppol_vals(partner, expected=("0198", partner.vat)):
partner.company_registry = False
# Invalid company_registry -> (0198, vat)
with self.check_peppol_vals(partner, expected=("0198", partner.vat)):
partner.company_registry = "turlututu"
# No company_registry nor vat -> (0184, False)
with self.check_peppol_vals(partner, expected=("0184", False)):
partner.write({
'company_registry': False,
'vat': False,
})
# Create a partner, fill the peppol fields, then set the country
partner_1 = self.env['res.partner'].create({
'name': "A new partner",
'peppol_eas': '0184',
'peppol_endpoint': '12345674'
})
with self.check_peppol_vals(partner_1, expected=("0184", '12345674'), reset=False):
pass
# Create a partner, set the country, then fill the peppol fields
partner_2 = self.env['res.partner'].create({
'name': "A new partner",
'country_id': self.env.ref('base.ba').id,
})
with self.check_peppol_vals(partner_2, expected=("0184", '12345674'), reset=False):
partner_2.peppol_eas = '0184'
partner_2.peppol_endpoint = '12345674'
# Change the country, the EAS changes but we do not overwrite the existing endpoint
partner_2.country_id = self.env.ref('base.be')
self.assertEqual((partner_2.peppol_eas, partner_2.peppol_endpoint), ('0208', '12345674'))