Skip to content

Commit 9607950

Browse files
committed
multiplos detalhes por consulta de cnpj
1 parent b0ce50d commit 9607950

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

abstra_notas/nfse/sp/sao_paulo/consulta_cnpj.py

+19-5
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,40 @@
11
from .pedido import Pedido
22
from .retorno import Retorno
33
from dataclasses import dataclass
4-
from lxml.etree import Element, fromstring, ElementBase
4+
from lxml.etree import Element, fromstring, ElementBase, tostring
55
from abstra_notas.assinatura import Assinador
6-
from typing import Literal
6+
from typing import Literal, List
77
from abstra_notas.validacoes.cpfcnpj import cpf_ou_cnpj, normalizar_cpf_ou_cnpj
88
from .remessa import Remessa
99
from .erro import Erro
1010

1111

1212
@dataclass
13-
class RetornoConsultaCNPJ(Retorno):
13+
class RetornoConsultaCNPJDetalhe:
1414
inscricao_municipal: str
1515
emite_nfe: bool
1616

17+
@staticmethod
18+
def ler_xml(xml: ElementBase) -> "RetornoConsultaCNPJDetalhe":
19+
return RetornoConsultaCNPJDetalhe(
20+
inscricao_municipal=xml.find(".//InscricaoMunicipal").text,
21+
emite_nfe=xml.find(".//EmiteNFe").text == "true",
22+
)
23+
24+
25+
@dataclass
26+
class RetornoConsultaCNPJ(Retorno):
27+
detalhes: List[RetornoConsultaCNPJDetalhe]
28+
1729
@staticmethod
1830
def ler_xml(xml: ElementBase) -> "RetornoConsultaCNPJ":
1931
sucesso = xml.find(".//Sucesso").text == "true"
2032
if sucesso:
2133
return RetornoConsultaCNPJ(
22-
inscricao_municipal=xml.find(".//InscricaoMunicipal").text,
23-
emite_nfe=xml.find(".//EmiteNFe").text == "true",
34+
detalhes=[
35+
RetornoConsultaCNPJDetalhe.ler_xml(detalhe)
36+
for detalhe in xml.findall(".//Detalhe")
37+
]
2438
)
2539
else:
2640
raise ErroConsultaCNPJ(

abstra_notas/nfse/sp/sao_paulo/consulta_cnpj_test.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from unittest import TestCase
2-
from .consulta_cnpj import ConsultaCNPJ, RetornoConsultaCNPJ
2+
from .consulta_cnpj import ConsultaCNPJ, RetornoConsultaCNPJ, RetornoConsultaCNPJDetalhe
33
from pathlib import Path
44
from lxml.etree import fromstring
55
from .cliente import ClienteMock
@@ -30,7 +30,11 @@ def test_exemplo(self):
3030
self.assertEqual(
3131
resultado,
3232
RetornoConsultaCNPJ(
33-
emite_nfe=True,
34-
inscricao_municipal="39616924",
33+
detalhes=[
34+
RetornoConsultaCNPJDetalhe(
35+
emite_nfe=True,
36+
inscricao_municipal="39616924",
37+
)
38+
]
3539
),
3640
)

abstra_notas/nfse/sp/sao_paulo/envio_rps.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,9 @@ def __post_init__(self):
241241
if self.endereco_cep is not None:
242242
self.endereco_cep = normalizar_cep(self.endereco_cep)
243243

244-
assert self.endereco_bairro is None or len(
245-
self.endereco_bairro
246-
) <= 30, "O bairro deve ter no máximo 30 caracteres"
244+
assert (
245+
self.endereco_bairro is None or len(self.endereco_bairro) <= 30
246+
), "O bairro deve ter no máximo 30 caracteres"
247247

248248
if self.endereco_uf is not None:
249249
if isinstance(self.endereco_uf, str):

abstra_notas/nfse/sp/sao_paulo/exemplos/consulta_cnpj.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
retorno = cliente.consultar_cnpj(pedido)
1818

1919
try:
20-
print(f"Inscrição Municipal: {retorno.inscricao_municipal}")
21-
print(f"Emite NFe: {retorno.emite_nfe}")
20+
for detalhe in retorno.detalhes:
21+
print(f"Inscrição Municipal: {detalhe.inscricao_municipal}")
22+
print(f"Emite NFe: {detalhe.emite_nfe}")
2223
except Erro as e:
2324
print(f"Código: {e.codigo}")
2425
print(f"Descrição: {e.descricao}")

0 commit comments

Comments
 (0)