Skip to content

Commit

Permalink
apply xsdata 1 line patch for NFe gen
Browse files Browse the repository at this point in the history
  • Loading branch information
rvalyi committed Apr 23, 2023
1 parent 806afa8 commit 35502ec
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 3 deletions.
5 changes: 2 additions & 3 deletions nfelib/nfe/bindings/v4_0/leiaute_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -4729,12 +4729,11 @@ class Imposto:
"namespace": "http://www.portalfiscal.inf.br/nfe",
}
)
IPI: List[Tipi] = field(
default_factory=list,
IPI: Optional[Tipi] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe",
"max_occurs": 2,
}
)
II: Optional["Tnfe.InfNfe.Det.Imposto.Ii"] = field(
Expand Down
6 changes: 6 additions & 0 deletions script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ if [$DOWNLOAD_SCHEMAS]; then
fi
xsdata generate nfelib/nfe/schemas/v4_0 --package nfelib.nfe.bindings.v4_0

# patch o campo IPI caso o patch no xsdata não foi aplicado
# ver detalhes aqui https://github.com/akretion/nfelib/issues/40
# sed -e 's/IPI: List\[Tipi\] = field(/IPI: Optional\[Tipi\] = field(/' -i nfelib/nfe/bindings/v4_0/leiaute_nfe_v4_00.py
# infelizmente teria que trocar a outra linha depois tb default_factory=List por default=None para funcionar.
# vou deixar essa tentativa de patch com sed desativada por enquanto.

# Pacote de Liberação Distribuição de DF-e v1.02 (Atualizado em 25/10/16)
if [$DOWNLOAD_SCHEMAS]; then
erpbrasil-edoc-gen-download-schema -n nfe_dist_dfe -v v1_0 -u https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=n3Kn9%20YZNak=
Expand Down
16 changes: 16 additions & 0 deletions tests/nfe/test_nfe.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from pathlib import Path

from nfelib.nfe.bindings.v4_0 import leiaute_nfe_v4_00
from nfelib.nfe.bindings.v4_0.leiaute_nfe_v4_00 import Tnfe
from nfelib.nfe.bindings.v4_0.leiaute_cons_stat_serv_v4_00 import TconsStatServ
from nfelib.nfe.bindings.v4_0.leiaute_cons_sit_nfe_v4_00 import TconsSitNfe

Expand All @@ -17,6 +18,21 @@
from nfelib.nfe_evento_generico.bindings.v1_0.leiaute_evento_v1_00 import TenvEvento


def test_patched_xsdata_for_ipi():
# o xsdata precisa de uma linha de patch para funcionar legal para a NFe
# (de forma simples/backward compatible no Odoo)
# uma alternativa seria usar a opção --compound-fields do xsdata mas
# deixaria o uso mais complexo no Odoo de forma desnecessaria. A gestão dos campos
# compostos/compound esta sendo retrabalhada no xsdata de qualquer forma.
# Enfim hoje o mais simples é aplicar um patch de uma linha no xsdata.
# Se vc instalar o pacote xsdata-odoo e fizer export XSD_SCHEMA=nfe,
# o xsdata-odoo aplica esse monkey patch para você.
# ver detalhes aqui: https://github.com/akretion/nfelib/issues/40
assert str(Tnfe.InfNfe.Det.Imposto().__annotations__["IPI"]).startswith(
"typing.Optional"
)


def test_in_out_leiauteNFe():
path = os.path.join("nfelib", "nfe", "samples", "v4_0", "leiauteNFe")
for filename in os.listdir(path):
Expand Down

0 comments on commit 35502ec

Please sign in to comment.