diff --git a/abstra_notas/nfse/sp/sao_paulo/cancelamento_nfe.py b/abstra_notas/nfse/sp/sao_paulo/cancelamento_nfe.py index 3942510..86d6677 100644 --- a/abstra_notas/nfse/sp/sao_paulo/cancelamento_nfe.py +++ b/abstra_notas/nfse/sp/sao_paulo/cancelamento_nfe.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from typing import Literal from lxml.etree import Element, fromstring -from abstra_notas.validacoes.cpfcnpj import cpf_ou_cnpj +from abstra_notas.validacoes.cpfcnpj import cpf_ou_cnpj, normalizar_cpf_ou_cnpj from abstra_notas.assinatura import Assinador import base64 @@ -16,7 +16,26 @@ class RetornoCancelamentoNFe(Retorno): def ler_xml(xml: str): xml = fromstring(xml.encode("utf-8")) sucesso = xml.find(".//Sucesso").text - return RetornoCancelamentoNFe(sucesso=sucesso == "true") + if sucesso == "true": + return RetornoCancelamentoNFeSucesso( + sucesso=True + ) + else: + return RetornoCancelamentoNFeErro( + sucesso=False, + codigo=int(xml.find(".//Codigo").text), + descricao=xml.find(".//Descricao").text, + ) + +@dataclass +class RetornoCancelamentoNFeSucesso: + sucesso: bool + +@dataclass +class RetornoCancelamentoNFeErro: + sucesso: bool + codigo: int + descricao: str @dataclass @@ -26,6 +45,9 @@ class CancelamentoNFe(Pedido): inscricao_prestador: str numero_nfe: int + def __post_init__(self): + self.remetente = normalizar_cpf_ou_cnpj(self.remetente) + @property def remetente_tipo(self) -> Literal["CPF", "CNPJ"]: return cpf_ou_cnpj(self.remetente) diff --git a/abstra_notas/nfse/sp/sao_paulo/templates/CancelamentoNFe.xml b/abstra_notas/nfse/sp/sao_paulo/templates/CancelamentoNFe.xml index 553c344..48c367f 100644 --- a/abstra_notas/nfse/sp/sao_paulo/templates/CancelamentoNFe.xml +++ b/abstra_notas/nfse/sp/sao_paulo/templates/CancelamentoNFe.xml @@ -2,7 +2,7 @@ - <{{remetente_tipo}}>{{remetente_cnpj}} + <{{remetente_tipo}}>{{remetente}} {{ transacao }}