1
+ import base64
2
+ import gzip
1
3
from contextlib import suppress
2
4
3
5
from lxml import etree
4
- import gzip
5
- import base64
6
6
7
7
from erpbrasil .edoc .edoc import DocumentoEletronico
8
8
from erpbrasil .transmissao import TransmissaoSOAP
9
9
10
- from .resposta import analisar_retorno_raw
11
-
12
10
with suppress (ImportError ):
13
11
from nfelib .cte .bindings .v4_0 import (
14
- Cte ,
12
+ ConsSitCte ,
13
+ ConsStatServCte ,
15
14
EvCancCte ,
16
15
RetConsSitCte ,
17
16
RetConsStatServCte ,
18
17
RetCte ,
19
18
RetEventoCte ,
20
- ConsSitCte ,
21
- Tcte ,
22
- ConsStatServCte
23
19
)
24
20
25
21
AMBIENTE_PRODUCAO = "producao"
106
102
WS_CTE_RECEPCAO_SINC : "CTeWS/WS/CTeRecepcaoSincV4.asmx?wsdl" ,
107
103
WS_CTE_STATUS_SERVICO : "CTeWS/WS/CTeStatusServicoV4.asmx?wsdl" ,
108
104
QR_CODE_URL : "https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" ,
109
- }
105
+ },
110
106
}
111
107
112
108
SVRS = {
129
125
WS_CTE_RECEPCAO_SINC : "ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx?wsdl" ,
130
126
WS_CTE_STATUS_SERVICO : "ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx?wsdl" ,
131
127
QR_CODE_URL : "https://dfe-portal.svrs.rs.gov.br/cte/qrCode" ,
132
- }
128
+ },
133
129
}
134
130
135
131
MT = {
152
148
WS_CTE_RECEPCAO_SINC : "ctews2/services/CTeRecepcaoSincV4?wsdl" ,
153
149
WS_CTE_STATUS_SERVICO : "ctews2/services/CTeStatusServicoV4?wsdl" ,
154
150
QR_CODE_URL : "https://homologacao.sefaz.mt.gov.br/cte/qrcode" ,
155
- }
151
+ },
156
152
}
157
153
158
154
MS = {
175
171
WS_CTE_RECEPCAO_SINC : "ws/CTeRecepcaoSincV4?wsdl" ,
176
172
WS_CTE_STATUS_SERVICO : "ws/CTeStatusServicoV4?wsdl" ,
177
173
QR_CODE_URL : "http://www.dfe.ms.gov.br/cte/qrcode" ,
178
- }
174
+ },
179
175
}
180
176
181
177
MG = {
198
194
WS_CTE_RECEPCAO_SINC : "cte/services/CTeRecepcaoSincV4?wsdl" ,
199
195
WS_CTE_STATUS_SERVICO : "cte/services/CTeStatusServicoV4?wsdl" ,
200
196
QR_CODE_URL : "https://cte.fazenda.mg.gov.br/portalcte/sistema/qrcode.xhtml" ,
201
- }
197
+ },
202
198
}
203
199
204
200
PR = {
221
217
WS_CTE_RECEPCAO_SINC : "cte4/CTeRecepcaoSincV4?wsdl" ,
222
218
WS_CTE_STATUS_SERVICO : "cte4/CTeStatusServicoV4?wsdl" ,
223
219
QR_CODE_URL : "http://www.fazenda.pr.gov.br/cte/qrcode" ,
224
- }
220
+ },
225
221
}
226
222
227
223
@@ -234,7 +230,9 @@ def get_service_url(sigla_estado, service, ambiente):
234
230
state_config = sigla_estado
235
231
236
232
if not state_config :
237
- raise ValueError (f"Estado { sigla_estado } não suportado ou configuração ausente." )
233
+ raise ValueError (
234
+ f"Estado { sigla_estado } não suportado ou configuração ausente."
235
+ )
238
236
239
237
environment = AMBIENTE_PRODUCAO if ambiente == 1 else AMBIENTE_HOMOLOGACAO
240
238
if service == "QRCode" :
@@ -279,9 +277,7 @@ def _verifica_resposta_envio_sucesso(self, proc_envio):
279
277
)
280
278
281
279
def status_servico (self ):
282
- raiz = ConsStatServCte (
283
- tpAmb = self .ambiente , cUF = self .uf , versao = self .versao
284
- )
280
+ raiz = ConsStatServCte (tpAmb = self .ambiente , cUF = self .uf , versao = self .versao )
285
281
return self ._post (
286
282
raiz = raiz ,
287
283
url = self ._get_ws_endpoint (WS_CTE_STATUS_SERVICO ),
@@ -302,10 +298,10 @@ def envia_documento(self, edoc):
302
298
xml_assinado = self .assina_raiz (edoc , edoc .infCte .Id )
303
299
304
300
# Compactar o XML assinado com GZip
305
- gzipped_xml = gzip .compress (xml_assinado .encode (' utf-8' ))
301
+ gzipped_xml = gzip .compress (xml_assinado .encode (" utf-8" ))
306
302
307
303
# Codificar o XML compactado em Base64
308
- base64_gzipped_xml = base64 .b64encode (gzipped_xml ).decode (' utf-8' )
304
+ base64_gzipped_xml = base64 .b64encode (gzipped_xml ).decode (" utf-8" )
309
305
310
306
return self ._post (
311
307
raiz = base64_gzipped_xml ,
@@ -332,17 +328,18 @@ def get_documento_id(self, edoc):
332
328
return edoc .infCte .Id [:3 ], edoc .infCte .Id [3 :]
333
329
334
330
def monta_qrcode (self , chave ):
335
- return f"{ self ._get_ws_endpoint (QR_CODE_URL )} ?chCTe={ chave } &tpAmb={ self .ambiente } "
331
+ return (
332
+ f"{ self ._get_ws_endpoint (QR_CODE_URL )} ?chCTe={ chave } &tpAmb={ self .ambiente } "
333
+ )
336
334
337
335
338
336
class TransmissaoCTE (TransmissaoSOAP ):
339
-
340
337
def interpretar_mensagem (self , mensagem , ** kwargs ):
341
338
if isinstance (mensagem , str ):
342
339
try :
343
- return etree .fromstring (mensagem , parser = etree . XMLParser (
344
- remove_blank_text = True
345
- ))
340
+ return etree .fromstring (
341
+ mensagem , parser = etree . XMLParser ( remove_blank_text = True )
342
+ )
346
343
except (etree .XMLSyntaxError , ValueError ):
347
344
# Retorna a string original se houver um erro na conversão
348
345
return mensagem
0 commit comments