mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
@@ -32,7 +32,7 @@ This module extends base_vat module features allowing to know if VIES
|
|||||||
validation was passed or not.
|
validation was passed or not.
|
||||||
|
|
||||||
Then you can use "VIES validation passed" field in order to show VAT ID with
|
Then you can use "VIES validation passed" field in order to show VAT ID with
|
||||||
or without country preffix in invoices, for instance.
|
or without country prefix in invoices, for instance.
|
||||||
|
|
||||||
*NOTE*: Although VIES validation is set in your company, this validation
|
*NOTE*: Although VIES validation is set in your company, this validation
|
||||||
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
||||||
@@ -97,6 +97,7 @@ Contributors
|
|||||||
* Harald Panten <harald.panten@sygel.es>
|
* Harald Panten <harald.panten@sygel.es>
|
||||||
* Eduardo de Miguel <edu@moduon.team>
|
* Eduardo de Miguel <edu@moduon.team>
|
||||||
* Emilio Pascual <emilio@moduon.team>
|
* Emilio Pascual <emilio@moduon.team>
|
||||||
|
* Jairo Llopis (`Moduon <https://www.moduon.team/>`__)
|
||||||
|
|
||||||
Maintainers
|
Maintainers
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
@@ -111,6 +112,17 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
|
|||||||
mission is to support the collaborative development of Odoo features and
|
mission is to support the collaborative development of Odoo features and
|
||||||
promote its widespread use.
|
promote its widespread use.
|
||||||
|
|
||||||
|
.. |maintainer-yajo| image:: https://github.com/yajo.png?size=40px
|
||||||
|
:target: https://github.com/yajo
|
||||||
|
:alt: yajo
|
||||||
|
.. |maintainer-rafaelbn| image:: https://github.com/rafaelbn.png?size=40px
|
||||||
|
:target: https://github.com/rafaelbn
|
||||||
|
:alt: rafaelbn
|
||||||
|
|
||||||
|
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|
||||||
|
|
||||||
|
|maintainer-yajo| |maintainer-rafaelbn|
|
||||||
|
|
||||||
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/16.0/base_vat_optional_vies>`_ project on GitHub.
|
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/16.0/base_vat_optional_vies>`_ project on GitHub.
|
||||||
|
|
||||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||||
|
|||||||
@@ -17,5 +17,6 @@
|
|||||||
"author": "Tecnativa," "Odoo Community Association (OCA)",
|
"author": "Tecnativa," "Odoo Community Association (OCA)",
|
||||||
"website": "https://github.com/OCA/account-financial-tools",
|
"website": "https://github.com/OCA/account-financial-tools",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
|
"maintainers": ["yajo", "rafaelbn"],
|
||||||
"installable": True,
|
"installable": True,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,41 @@
|
|||||||
# Copyright 2022-2023 Moduon Team S.L. <info@moduon.team>
|
# Copyright 2022-2023 Moduon Team S.L. <info@moduon.team>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
from logging import getLogger
|
||||||
|
|
||||||
from odoo import _, models
|
from odoo import _, models
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
_logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ResConfigSettings(models.TransientModel):
|
class ResConfigSettings(models.TransientModel):
|
||||||
_inherit = "res.config.settings"
|
_inherit = "res.config.settings"
|
||||||
|
|
||||||
def execute_update_check_vies(self):
|
def execute_update_check_vies(self):
|
||||||
# Only parent partners, children are synced from parent
|
"""Bulk VAT check on company partners."""
|
||||||
count_partners = self.env["res.partner"].search_count([])
|
partners = self.env["res.partner"].search(
|
||||||
self.env["res.partner"].search([]).check_vat()
|
[
|
||||||
|
("is_company", "=", True),
|
||||||
|
("parent_id", "=", False),
|
||||||
|
("vat", "!=", False),
|
||||||
|
("vies_passed", "=", False),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
failures = 0
|
||||||
|
for partner in partners:
|
||||||
|
try:
|
||||||
|
partner.check_vat()
|
||||||
|
except ValidationError:
|
||||||
|
_logger.warning("VAT check failed for %r", partner, exc_info=True)
|
||||||
|
failures += 1
|
||||||
return {
|
return {
|
||||||
"effect": {
|
"effect": {
|
||||||
"fadeout": "slow",
|
"fadeout": "slow",
|
||||||
"message": _("Vies passed calculated in %s partners") % count_partners,
|
"message": _(
|
||||||
|
"Vies passed calculated in %(partners)d partners (%(failures)d failures)",
|
||||||
|
partners=len(partners),
|
||||||
|
failures=failures,
|
||||||
|
),
|
||||||
"img_url": "/web/static/img/smile.svg",
|
"img_url": "/web/static/img/smile.svg",
|
||||||
"type": "rainbow_man",
|
"type": "rainbow_man",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,7 @@
|
|||||||
# Copyright 2022 Moduon - Eduardo de Miguel
|
# Copyright 2022 Moduon - Eduardo de Miguel
|
||||||
# Copyright 2023 Moduon - Emilio Pascual
|
# Copyright 2023 Moduon - Emilio Pascual
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
from odoo import _, api, fields, models
|
from odoo import api, fields, models
|
||||||
|
|
||||||
from odoo.addons.base_vat.models.res_partner import _ref_vat
|
|
||||||
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
class ResPartner(models.Model):
|
||||||
@@ -61,15 +59,3 @@ class ResPartner(models.Model):
|
|||||||
return super(
|
return super(
|
||||||
ResPartner, self.with_context(vat_partner=self)
|
ResPartner, self.with_context(vat_partner=self)
|
||||||
)._onchange_check_vies()
|
)._onchange_check_vies()
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _build_vat_error_message(self, country_code, wrong_vat, record_label):
|
|
||||||
return "\n" + _(
|
|
||||||
"The VAT number [%(wrong_vat)s] for %(record_label)s does not seem to be valid. "
|
|
||||||
"\nNote: the expected format is %(expected_format)s",
|
|
||||||
wrong_vat=wrong_vat,
|
|
||||||
record_label=record_label,
|
|
||||||
expected_format=_ref_vat.get(
|
|
||||||
country_code, "'CC##' (CC=Country Code, ##=VAT Number)"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -7,3 +7,4 @@
|
|||||||
* Harald Panten <harald.panten@sygel.es>
|
* Harald Panten <harald.panten@sygel.es>
|
||||||
* Eduardo de Miguel <edu@moduon.team>
|
* Eduardo de Miguel <edu@moduon.team>
|
||||||
* Emilio Pascual <emilio@moduon.team>
|
* Emilio Pascual <emilio@moduon.team>
|
||||||
|
* Jairo Llopis (`Moduon <https://www.moduon.team/>`__)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ This module extends base_vat module features allowing to know if VIES
|
|||||||
validation was passed or not.
|
validation was passed or not.
|
||||||
|
|
||||||
Then you can use "VIES validation passed" field in order to show VAT ID with
|
Then you can use "VIES validation passed" field in order to show VAT ID with
|
||||||
or without country preffix in invoices, for instance.
|
or without country prefix in invoices, for instance.
|
||||||
|
|
||||||
*NOTE*: Although VIES validation is set in your company, this validation
|
*NOTE*: Although VIES validation is set in your company, this validation
|
||||||
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
<head>
|
<head>
|
||||||
@@ -9,10 +8,11 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
:Author: David Goodger (goodger@python.org)
|
:Author: David Goodger (goodger@python.org)
|
||||||
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
||||||
:Copyright: This stylesheet has been placed in the public domain.
|
:Copyright: This stylesheet has been placed in the public domain.
|
||||||
|
|
||||||
Default cascading style sheet for the HTML output of Docutils.
|
Default cascading style sheet for the HTML output of Docutils.
|
||||||
|
Despite the name, some widely supported CSS2 features are used.
|
||||||
|
|
||||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||||
customize this style sheet.
|
customize this style sheet.
|
||||||
@@ -275,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
|||||||
margin-left: 2em ;
|
margin-left: 2em ;
|
||||||
margin-right: 2em }
|
margin-right: 2em }
|
||||||
|
|
||||||
pre.code .ln { color: grey; } /* line numbers */
|
pre.code .ln { color: gray; } /* line numbers */
|
||||||
pre.code, code { background-color: #eeeeee }
|
pre.code, code { background-color: #eeeeee }
|
||||||
pre.code .comment, code .comment { color: #5C6576 }
|
pre.code .comment, code .comment { color: #5C6576 }
|
||||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||||
@@ -301,7 +301,7 @@ span.option {
|
|||||||
span.pre {
|
span.pre {
|
||||||
white-space: pre }
|
white-space: pre }
|
||||||
|
|
||||||
span.problematic {
|
span.problematic, pre.problematic {
|
||||||
color: red }
|
color: red }
|
||||||
|
|
||||||
span.section-subtitle {
|
span.section-subtitle {
|
||||||
@@ -373,7 +373,7 @@ ul.auto-toc {
|
|||||||
<p>This module extends base_vat module features allowing to know if VIES
|
<p>This module extends base_vat module features allowing to know if VIES
|
||||||
validation was passed or not.</p>
|
validation was passed or not.</p>
|
||||||
<p>Then you can use “VIES validation passed” field in order to show VAT ID with
|
<p>Then you can use “VIES validation passed” field in order to show VAT ID with
|
||||||
or without country preffix in invoices, for instance.</p>
|
or without country prefix in invoices, for instance.</p>
|
||||||
<p><em>NOTE</em>: Although VIES validation is set in your company, this validation
|
<p><em>NOTE</em>: Although VIES validation is set in your company, this validation
|
||||||
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
will not block VAT ID write (main difference to Odoo standard behavior) if this
|
||||||
VAT ID is valid in its country.</p>
|
VAT ID is valid in its country.</p>
|
||||||
@@ -441,15 +441,20 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|||||||
<li>Harald Panten <<a class="reference external" href="mailto:harald.panten@sygel.es">harald.panten@sygel.es</a>></li>
|
<li>Harald Panten <<a class="reference external" href="mailto:harald.panten@sygel.es">harald.panten@sygel.es</a>></li>
|
||||||
<li>Eduardo de Miguel <<a class="reference external" href="mailto:edu@moduon.team">edu@moduon.team</a>></li>
|
<li>Eduardo de Miguel <<a class="reference external" href="mailto:edu@moduon.team">edu@moduon.team</a>></li>
|
||||||
<li>Emilio Pascual <<a class="reference external" href="mailto:emilio@moduon.team">emilio@moduon.team</a>></li>
|
<li>Emilio Pascual <<a class="reference external" href="mailto:emilio@moduon.team">emilio@moduon.team</a>></li>
|
||||||
|
<li>Jairo Llopis (<a class="reference external" href="https://www.moduon.team/">Moduon</a>)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="maintainers">
|
<div class="section" id="maintainers">
|
||||||
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
|
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
|
||||||
<p>This module is maintained by the OCA.</p>
|
<p>This module is maintained by the OCA.</p>
|
||||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
<a class="reference external image-reference" href="https://odoo-community.org">
|
||||||
|
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
||||||
|
</a>
|
||||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||||
mission is to support the collaborative development of Odoo features and
|
mission is to support the collaborative development of Odoo features and
|
||||||
promote its widespread use.</p>
|
promote its widespread use.</p>
|
||||||
|
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
|
||||||
|
<p><a class="reference external image-reference" href="https://github.com/yajo"><img alt="yajo" src="https://github.com/yajo.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/rafaelbn"><img alt="rafaelbn" src="https://github.com/rafaelbn.png?size=40px" /></a></p>
|
||||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/16.0/base_vat_optional_vies">OCA/account-financial-tools</a> project on GitHub.</p>
|
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/16.0/base_vat_optional_vies">OCA/account-financial-tools</a> project on GitHub.</p>
|
||||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
from . import test_config_settings
|
||||||
from . import test_res_partner
|
from . import test_res_partner
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
# Copyright 2022-2023 Moduon Team S.L. <info@moduon.team>
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
from odoo.tests import common
|
|
||||||
|
|
||||||
|
|
||||||
class TestConfigSettings(common.TransactionCase):
|
|
||||||
def setUp(self):
|
|
||||||
super(TestConfigSettings, self).setUp()
|
|
||||||
self.company = self.env.user.company_id
|
|
||||||
self.partner1_test = self.env["res.partner"].create(
|
|
||||||
{
|
|
||||||
"name": "Test partner",
|
|
||||||
"is_company": True,
|
|
||||||
"vat": "ESB87530432",
|
|
||||||
"country_id": self.env.ref("base.be").id,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
self.partner2_test = self.env["res.partner"].create(
|
|
||||||
{
|
|
||||||
"name": "Test partner2",
|
|
||||||
"is_company": True,
|
|
||||||
"vat": "ESB87530432",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
self.vatnumber_path = "odoo.addons.base_vat.models.res_partner.check_vies"
|
|
||||||
|
|
||||||
def test_execute_update_check_vies_validate(self):
|
|
||||||
with mock.patch(self.vatnumber_path) as mock_vatnumber:
|
|
||||||
self.company.vat_check_vies = True
|
|
||||||
mock_vatnumber.check_vies.return_value = True
|
|
||||||
self.env["res.config.settings"].execute_update_check_vies()
|
|
||||||
self.assertTrue(self.partner1_test.vies_passed)
|
|
||||||
self.assertFalse(self.partner2_test.vies_passed)
|
|
||||||
|
|
||||||
def test_execute_update_check_vies_no_validate(self):
|
|
||||||
with mock.patch(self.vatnumber_path) as mock_vatnumber:
|
|
||||||
self.company.vat_check_vies = False
|
|
||||||
mock_vatnumber.check_vies.return_value = False
|
|
||||||
self.env["res.config.settings"].execute_update_check_vies()
|
|
||||||
self.assertFalse(self.partner1_test.vies_passed)
|
|
||||||
self.assertFalse(self.partner2_test.vies_passed)
|
|
||||||
54
base_vat_optional_vies/tests/test_config_settings.py
Normal file
54
base_vat_optional_vies/tests/test_config_settings.py
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Copyright 2024 Moduon Team S.L.
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
|
from odoo.tests import common
|
||||||
|
from odoo.tools import mute_logger
|
||||||
|
|
||||||
|
|
||||||
|
class TestConfigSettings(common.TransactionCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
cls.partner1, cls.partner2 = (
|
||||||
|
cls.env["res.partner"]
|
||||||
|
.with_context(no_vat_validation=True)
|
||||||
|
.create(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Test partner",
|
||||||
|
"is_company": True,
|
||||||
|
"vat": "ESB87530432",
|
||||||
|
"country_id": cls.env.ref("base.es").id,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Test partner2",
|
||||||
|
"is_company": True,
|
||||||
|
"vat": "ES00000000T",
|
||||||
|
"country_id": cls.env.ref("base.es").id,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
cls.config = cls.env["res.config.settings"].create({"vat_check_vies": True})
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
self.mock_check_vies = self.startPatcher(
|
||||||
|
mock.patch(
|
||||||
|
"odoo.addons.base_vat.models.res_partner.check_vies",
|
||||||
|
side_effect=(lambda vat: {"valid": vat == "ESB87530432"}),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@mute_logger(
|
||||||
|
"odoo.addons.base_vat_optional_vies.models.res_config_settings",
|
||||||
|
"odoo.addons.base_vat.models.res_partner",
|
||||||
|
)
|
||||||
|
def test_batch_checking(self):
|
||||||
|
self.config.execute_update_check_vies()
|
||||||
|
self.mock_check_vies.assert_any_call("ESB87530432")
|
||||||
|
self.mock_check_vies.assert_any_call("ES00000000T")
|
||||||
|
self.assertTrue(self.partner1.vies_passed)
|
||||||
|
self.assertFalse(self.partner2.vies_passed)
|
||||||
@@ -8,6 +8,7 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from odoo.tests import common
|
from odoo.tests import common
|
||||||
|
from odoo.tools import mute_logger
|
||||||
|
|
||||||
|
|
||||||
class TestResPartner(common.TransactionCase):
|
class TestResPartner(common.TransactionCase):
|
||||||
@@ -26,6 +27,7 @@ class TestResPartner(common.TransactionCase):
|
|||||||
|
|
||||||
cls._vies_check_func = check_vies
|
cls._vies_check_func = check_vies
|
||||||
|
|
||||||
|
@mute_logger("odoo.addons.base_vat.models.res_partner")
|
||||||
def test_validate_vat_vies(self):
|
def test_validate_vat_vies(self):
|
||||||
with patch(self.vatnumber_path, type(self)._vies_check_func):
|
with patch(self.vatnumber_path, type(self)._vies_check_func):
|
||||||
values = {"vat": "ESB87530432", "country_id": self.env.ref("base.be").id}
|
values = {"vat": "ESB87530432", "country_id": self.env.ref("base.be").id}
|
||||||
@@ -40,6 +42,7 @@ class TestResPartner(common.TransactionCase):
|
|||||||
self.partner.write(values)
|
self.partner.write(values)
|
||||||
self.assertEqual(self.partner.vies_passed, True)
|
self.assertEqual(self.partner.vies_passed, True)
|
||||||
|
|
||||||
|
@mute_logger("odoo.addons.base_vat.models.res_partner")
|
||||||
def test_exception_vat_vies(self):
|
def test_exception_vat_vies(self):
|
||||||
with patch(self.vatnumber_path, side_effect=Exception()):
|
with patch(self.vatnumber_path, side_effect=Exception()):
|
||||||
values = {"vat": "87530432", "country_id": self.env.ref("base.es").id}
|
values = {"vat": "87530432", "country_id": self.env.ref("base.es").id}
|
||||||
@@ -69,6 +72,7 @@ class TestResPartner(common.TransactionCase):
|
|||||||
self.partner.country_id = self.env.ref("base.mx")
|
self.partner.country_id = self.env.ref("base.mx")
|
||||||
self.assertEqual(self.partner.vies_passed, False)
|
self.assertEqual(self.partner.vies_passed, False)
|
||||||
|
|
||||||
|
@mute_logger("odoo.addons.base_vat.models.res_partner")
|
||||||
def test_validate_vies_passed_false_when_vat_set_to_false(self):
|
def test_validate_vies_passed_false_when_vat_set_to_false(self):
|
||||||
with patch(self.vatnumber_path) as mock_vatnumber:
|
with patch(self.vatnumber_path) as mock_vatnumber:
|
||||||
mock_vatnumber.check_vies.return_value = True
|
mock_vatnumber.check_vies.return_value = True
|
||||||
|
|||||||
Reference in New Issue
Block a user