Skip to content

Commit

Permalink
fix formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
brunovcosta committed Nov 7, 2024
1 parent ef8b978 commit 9249056
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 30 deletions.
103 changes: 80 additions & 23 deletions abstra_notas/nfse/sp/sao_paulo/envio_rps.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,32 +12,59 @@
from .retorno import Retorno
from abstra_notas.assinatura import Assinador


@dataclass
class RetornoEnvioRPS(Retorno):
sucesso: bool
chave_nfe_inscricao_prestador: str
chave_nfe_numero_nfe: str
chave_nfe_codigo_verificacao: str
chave_rps_inscricao_prestador: str
chave_rps_serie_rps: str
chave_rps_numero_rps: str
@dataclass
class RetornoEnvioRpsSucesso:
chave_nfe_inscricao_prestador: str
chave_nfe_numero_nfe: str
chave_nfe_codigo_verificacao: str
chave_rps_inscricao_prestador: str
chave_rps_serie_rps: str
chave_rps_numero_rps: str

@property
def sucesso(self):
return True

@staticmethod
def ler_xml(xml: Element):
return RetornoEnvioRPS.RetornoEnvioRpsSucesso(
chave_nfe_inscricao_prestador=xml.find(".//InscricaoPrestador").text,
chave_nfe_codigo_verificacao=xml.find(".//CodigoVerificacao").text,
chave_nfe_numero_nfe=xml.find(".//NumeroNFe").text,
chave_rps_inscricao_prestador=xml.find(".//InscricaoPrestador").text,
chave_rps_numero_rps=xml.find(".//NumeroRPS").text,
chave_rps_serie_rps=xml.find(".//SerieRPS").text,
)

@dataclass
class RetornoEnvioRpsErro:
codigo: int
descricao: str
chave_rps_inscricao_prestador: str

@property
def sucesso(self):
return False

@staticmethod
def ler_xml(xml: Element):
return RetornoEnvioRPS.RetornoEnvioRpsErro(
codigo=int(xml.find(".//Codigo").text),
descricao=xml.find(".//Descricao").text,
chave_rps_inscricao_prestador=xml.find(".//InscricaoPrestador").text,
)


@staticmethod
def ler_xml(xml: str) -> "RetornoEnvioRPS":
print(xml)
def ler_xml(xml):
xml = xml.encode("utf-8")
xml = fromstring(xml)
return RetornoEnvioRPS(
sucesso=xml.find(".//Sucesso").text == "true",
chave_nfe_inscricao_prestador=xml.find(".//InscricaoPrestador").text,
chave_nfe_codigo_verificacao=xml.find(".//CodigoVerificacao").text,
chave_nfe_numero_nfe=xml.find(".//NumeroNFe").text,
chave_rps_inscricao_prestador=xml.find(".//InscricaoPrestador").text,
chave_rps_numero_rps=xml.find(".//NumeroRPS").text,
chave_rps_serie_rps=xml.find(".//SerieRPS").text,
)

sucesso = xml.find(".//Sucesso").text == "true"
if sucesso:
return RetornoEnvioRPS.RetornoEnvioRpsSucesso.ler_xml(xml)
else:
return RetornoEnvioRPS.RetornoEnvioRpsErro.ler_xml(xml)

@dataclass
class PedidoEnvioRPS(Pedido):
Expand Down Expand Up @@ -145,7 +172,37 @@ def __post_init__(self):

def gerar_xml(self, assinador: Assinador) -> Element:
xml = self.template.render(
**self.__dict__, assinatura=self.assinatura(assinador)
remetente=self.remetente,
inscricao_prestador=self.inscricao_prestador,
serie_rps=self.serie_rps,
numero_rps=self.numero_rps,
tipo_rps=self.tipo_rps,
data_emissao=self.data_emissao,
status_rps=self.status_rps,
tributacao_rps=self.tributacao_rps,
valor_servicos=f"{self.valor_servicos_centavos / 100:.2f}",
valor_deducoes=f"{self.valor_deducoes_centavos / 100:.2f}",
valor_pis=f"{self.valor_pis_centavos / 100:.2f}",
valor_cofins=f"{self.valor_cofins_centavos / 100:.2f}",
valor_inss=f"{self.valor_inss_centavos / 100:.2f}",
valor_ir=f"{self.valor_ir_centavos / 100:.2f}",
valor_csll=f"{self.valor_csll_centavos / 100:.2f}",
codigo_servico=self.codigo_servico,
aliquota_servicos=self.aliquota_servicos,
iss_retido=self.iss_retido,
tomador=self.tomador,
razao_social_tomador=self.razao_social_tomador,
endereco_tipo_logradouro=self.endereco_tipo_logradouro,
endereco_logradouro=self.endereco_logradouro,
endereco_numero=self.endereco_numero,
endereco_complemento=self.endereco_complemento,
endereco_bairro=self.endereco_bairro,
endereco_cidade=self.endereco_cidade,
endereco_uf=self.endereco_uf,
endereco_cep=self.endereco_cep,
email_tomador=self.email_tomador,
discriminacao=self.discriminacao,
assinatura=self.assinatura(assinador),
)

return fromstring(xml)
Expand All @@ -156,7 +213,7 @@ def nome_metodo(self):

def assinatura(self, assinador: Assinador) -> str:
template = ""
template += str(self.inscricao_prestador)
template += self.inscricao_prestador
template += self.serie_rps.upper()
template += str(self.numero_rps).zfill(12)
template += self.data_emissao.strftime("%Y%m%d").upper()
Expand Down
14 changes: 7 additions & 7 deletions abstra_notas/nfse/sp/sao_paulo/templates/PedidoEnvioRPS.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
<DataEmissao>{{ data_emissao }}</DataEmissao>
<StatusRPS>{{ status_rps }}</StatusRPS>
<TributacaoRPS>{{ tributacao_rps }}</TributacaoRPS>
<ValorServicos>{{ valor_servicos_centavos }}</ValorServicos>
<ValorDeducoes>{{ valor_deducoes_centavos }}</ValorDeducoes>
<ValorPIS>{{ valor_pis_centavos }}</ValorPIS>
<ValorCOFINS>{{ valor_cofins_centavos }}</ValorCOFINS>
<ValorINSS>{{ valor_inss_centavos }}</ValorINSS>
<ValorIR>{{ valor_ir_centavos }}</ValorIR>
<ValorCSLL>{{ valor_csll_centavos }}</ValorCSLL>
<ValorServicos>{{ valor_servicos }}</ValorServicos>
<ValorDeducoes>{{ valor_deducoes }}</ValorDeducoes>
<ValorPIS>{{ valor_pis }}</ValorPIS>
<ValorCOFINS>{{ valor_cofins }}</ValorCOFINS>
<ValorINSS>{{ valor_inss }}</ValorINSS>
<ValorIR>{{ valor_ir }}</ValorIR>
<ValorCSLL>{{ valor_csll }}</ValorCSLL>
<CodigoServico>{{ codigo_servico }}</CodigoServico>
<AliquotaServicos>{{ aliquota_servicos }}</AliquotaServicos>
<ISSRetido>{{ iss_retido }}</ISSRetido>
Expand Down

0 comments on commit 9249056

Please sign in to comment.