Skip to content

Commit 79856ad

Browse files
[IMP] l10n_br_ie_search: add wizard for IE
1 parent 1a5f730 commit 79856ad

File tree

6 files changed

+26
-47
lines changed

6 files changed

+26
-47
lines changed

l10n_br_ie_search/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
22

33
from . import models
4+
from . import wizard

l10n_br_ie_search/models/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@
33
from . import sefaz_webservice
44
from . import sintegra_webservice
55
from . import res_config_settings
6-
from . import l10n_br_base_party_mixin

l10n_br_ie_search/tests/test_sefaz.py

-13
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,3 @@ def _switch_user_company(self, user, company):
102102
}
103103
)
104104

105-
def test_sefaz(self):
106-
dummy = self.model.create(
107-
{
108-
"name": "Dummy",
109-
"cnpj_cpf": "88.570.377/0001-27",
110-
"certificate_ecnpj_id": self.cert.id,
111-
}
112-
)
113-
time.sleep(1) # to avoid too many requests
114-
dummy._onchange_cnpj_cpf()
115-
dummy.ie_search(self.retorno)
116-
117-
self.assertEqual(dummy.inscr_est, "528388258640")

l10n_br_ie_search/tests/test_sintegra.py

-8
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,3 @@ def set_param(self, param_name, param_value):
7474
.set_param("l10n_br_ie_search." + param_name, param_value)
7575
)
7676

77-
def test_sintegra(self):
78-
dummy = self.model.create({"name": "Dummy", "cnpj_cpf": "06990590000123"})
79-
80-
time.sleep(2) # to avoid too many requests
81-
dummy._onchange_cnpj_cpf()
82-
dummy.ie_search(self.retorno)
83-
84-
self.assertEqual(dummy.inscr_est, "149848403115")

l10n_br_ie_search/wizard/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import extend_partner_cnpj_search_wizard
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# Copyright 2023 KMEE - Breno Oliveira Dias
2-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3-
41
from erpbrasil.assinatura import certificado as cert
52
from erpbrasil.edoc.nfe import NFe as edoc_nfe
63
from erpbrasil.transmissao import TransmissaoSOAP
@@ -12,44 +9,35 @@
129
SINTEGRA_URL = "https://www.sintegraws.com.br/api/v1/execute-api.php"
1310

1411

15-
class PartyMixin(models.AbstractModel):
16-
_inherit = "l10n_br_base.party.mixin"
17-
18-
def search_cnpj(self):
19-
"""Search state subscription"""
12+
class ExtendPartnerCnpjSearchWizard(models.TransientModel):
13+
_inherit = "partner.search.wizard"
2014

21-
super().search_cnpj()
22-
self.ie_search()
23-
24-
@api.model
25-
def ie_search(self, mockresponse=False):
15+
def _get_partner_ie(self, state_code, cnpj, mockresponse=False):
2616
webservice = self.env["l10n_br_cnpj_search.webservice.abstract"]
2717
if self._provider() == "sefaz":
2818
processo = self._processador()
2919
response = (
30-
webservice.sefaz_search(self.state_id.code, self.cnpj_cpf, processo)
20+
webservice.sefaz_search(state_code, cnpj, processo)
3121
if not mockresponse
3222
else mockresponse
3323
)
3424
data = webservice.sefaz_validate(response)
3525
values = webservice._sefaz_import_data(data)
36-
self.write(values)
26+
return values
3727
elif self._provider() == "sintegraws":
3828
response = (
3929
get(
4030
SINTEGRA_URL,
4131
data="",
42-
params=webservice._get_query(
43-
self.cnpj_cpf, webservice._get_token()
44-
),
32+
params=webservice._get_query(cnpj, webservice._get_token()),
4533
)
4634
if not mockresponse
4735
else mockresponse
4836
)
4937

5038
data = webservice.sintegra_validate(response)
5139
values = webservice._sintegra_import_data(data)
52-
self.write(values)
40+
return values
5341

5442
@api.model
5543
def _provider(self):
@@ -59,21 +47,32 @@ def _provider(self):
5947
.get_param("l10n_br_ie_search.ie_search")
6048
)
6149

50+
@api.model
51+
def _get_partner_values(self, cnpj_cpf):
52+
values = super()._get_partner_values(cnpj_cpf)
53+
state_id = self.env["res.country.state"].browse(values["state_id"])
54+
ie_values = self._get_partner_ie(state_code=state_id.code, cnpj=cnpj_cpf)
55+
values.update(ie_values)
56+
return values
57+
6258
@api.model
6359
def _processador(self):
64-
if not self.certificate_ecnpj_id:
60+
company = self.env.company
61+
if not company.certificate_ecnpj_id:
6562
raise UserError(_("Certificate not found"))
6663

6764
certificado = cert.Certificado(
68-
arquivo=self.certificate_ecnpj_id.file,
69-
senha=self.certificate_ecnpj_id.password,
65+
arquivo=company.certificate_ecnpj_id.file,
66+
senha=company.certificate_ecnpj_id.password,
7067
)
7168
session = Session()
7269
session.verify = False
7370
transmissao = TransmissaoSOAP(certificado, session)
7471
return edoc_nfe(
7572
transmissao,
76-
self.state_id.ibge_code,
77-
versao=self.nfe_version,
78-
ambiente=self.nfe_environment,
73+
company.state_id.ibge_code,
74+
versao=company.nfe_version,
75+
ambiente=company.nfe_environment,
7976
)
77+
78+

0 commit comments

Comments
 (0)