1
- # Copyright 2023 KMEE - Breno Oliveira Dias
2
- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
-
4
1
from erpbrasil .assinatura import certificado as cert
5
2
from erpbrasil .edoc .nfe import NFe as edoc_nfe
6
3
from erpbrasil .transmissao import TransmissaoSOAP
12
9
SINTEGRA_URL = "https://www.sintegraws.com.br/api/v1/execute-api.php"
13
10
14
11
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"
20
14
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 ):
26
16
webservice = self .env ["l10n_br_cnpj_search.webservice.abstract" ]
27
17
if self ._provider () == "sefaz" :
28
18
processo = self ._processador ()
29
19
response = (
30
- webservice .sefaz_search (self . state_id . code , self . cnpj_cpf , processo )
20
+ webservice .sefaz_search (state_code , cnpj , processo )
31
21
if not mockresponse
32
22
else mockresponse
33
23
)
34
24
data = webservice .sefaz_validate (response )
35
25
values = webservice ._sefaz_import_data (data )
36
- self . write ( values )
26
+ return values
37
27
elif self ._provider () == "sintegraws" :
38
28
response = (
39
29
get (
40
30
SINTEGRA_URL ,
41
31
data = "" ,
42
- params = webservice ._get_query (
43
- self .cnpj_cpf , webservice ._get_token ()
44
- ),
32
+ params = webservice ._get_query (cnpj , webservice ._get_token ()),
45
33
)
46
34
if not mockresponse
47
35
else mockresponse
48
36
)
49
37
50
38
data = webservice .sintegra_validate (response )
51
39
values = webservice ._sintegra_import_data (data )
52
- self . write ( values )
40
+ return values
53
41
54
42
@api .model
55
43
def _provider (self ):
@@ -59,21 +47,32 @@ def _provider(self):
59
47
.get_param ("l10n_br_ie_search.ie_search" )
60
48
)
61
49
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
+
62
58
@api .model
63
59
def _processador (self ):
64
- if not self .certificate_ecnpj_id :
60
+ company = self .env .company
61
+ if not company .certificate_ecnpj_id :
65
62
raise UserError (_ ("Certificate not found" ))
66
63
67
64
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 ,
70
67
)
71
68
session = Session ()
72
69
session .verify = False
73
70
transmissao = TransmissaoSOAP (certificado , session )
74
71
return edoc_nfe (
75
72
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 ,
79
76
)
77
+
78
+
0 commit comments