From 8066cf777e7240d19f2d0e3bef2c8a4c470a5666 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Wed, 10 Jul 2024 18:06:34 -0300 Subject: [PATCH] [IMP] erpbrasil.edoc: imp cte cancel --- src/erpbrasil/edoc/cte.py | 46 ++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/erpbrasil/edoc/cte.py b/src/erpbrasil/edoc/cte.py index 8bcf6be..446806c 100644 --- a/src/erpbrasil/edoc/cte.py +++ b/src/erpbrasil/edoc/cte.py @@ -12,6 +12,7 @@ ConsSitCte, ConsStatServCte, EvCancCte, + EventoCte, RetConsSitCte, RetConsStatServCte, RetCte, @@ -310,16 +311,45 @@ def envia_documento(self, edoc): classe=RetCte, ) - def cancela_documento(self, doc_numero, justificativa): - raiz = EvCancCte( - descEvento="Cancelamento", nProt=doc_numero, xJust=justificativa - ) + def enviar_lote_evento(self, lista_eventos, numero_lote=False): + for raiz_evento in lista_eventos: + evento = EventoCte( + versao="4.00", + infEvento=raiz_evento, + ) + xml_assinado = self.assina_raiz(evento, evento.infEvento.Id) + return self._post( - raiz=raiz, - url=self._get_ws_endpoint(WS_CTE_RECEPCAO_EVENTO), - operacao="cteRecepcaoEvento", - classe=RetEventoCte, + xml_assinado, + self._get_ws_endpoint(WS_CTE_RECEPCAO_EVENTO), + "cteRecepcaoEvento", + RetEventoCte, + ) + + def cancela_documento( + self, chave, protocolo_autorizacao, justificativa, data_hora_evento=False + ): + tipo_evento = "110111" + sequencia = "1" + raiz = EventoCte.InfEvento( + Id="ID" + tipo_evento + chave + sequencia.zfill(3), + cOrgao=self.uf, + tpAmb=self.ambiente, + CNPJ=chave[6:20], + chCTe=chave, + dhEvento=data_hora_evento or self._hora_agora(), + tpEvento=tipo_evento, + nSeqEvento=sequencia, + detEvento=EventoCte.InfEvento.DetEvento( + EvCancCte( + descEvento="Cancelamento", + nProt=protocolo_autorizacao, + xJust=justificativa, + ), + versaoEvento="4.00", + ), ) + return raiz def consulta_recibo(self): pass