82 lines
3.1 KiB
Python
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'))
|