Skip to content

Commit 2dbccc7

Browse files
authored
Merge pull request #67 from akretion/master-xsdata-fix-gen
Master xsdata fix gen
2 parents 62bb7d2 + b62bc23 commit 2dbccc7

28 files changed

+68
-56
lines changed

nfelib/bpe/bindings/v1_0/cons_sit_bpe_tipos_basico_v1_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
@dataclass
1414
class TconsSitBpe:
1515
"""
16-
Tipo Pedido de Consulta da Situação Atual do Bilhete de Passagem
17-
Eletrônico.
16+
Tipo Pedido de Consulta da Situação Atual do Bilhete de Passagem Eletrônico.
1817
1918
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
2019
:ivar xServ: Serviço Solicitado

nfelib/bpe/bindings/v1_0/ret_cons_stat_serv_bpe_v1_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class RetConsStatServBpe(TretConsStatServ):
99
"""
10-
Schema XML de validação do Resultado da Consulta do Status do Serviço de
11-
BP-e.
10+
Schema XML de validação do Resultado da Consulta do Status do Serviço de BP-e.
1211
"""
1312
class Meta:
1413
name = "retConsStatServBPe"

nfelib/cte/bindings/v3_0/envi_cte_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class EnviCte(TenviCte):
99
"""
10-
Schema XML de validação do Envio de Lote CT-e para concessão de
11-
autorização.
10+
Schema XML de validação do Envio de Lote CT-e para concessão de autorização.
1211
"""
1312
class Meta:
1413
name = "enviCTe"

nfelib/cte/bindings/v3_0/ev_epeccte_v3_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class EvEpeccteTpCte(Enum):
1919
@dataclass
2020
class EvEpeccte:
2121
"""
22-
Schema XML de validação do evento de emissão prévia de emissão em
23-
contingência 110113.
22+
Schema XML de validação do evento de emissão prévia de emissão em contingência
23+
110113.
2424
2525
:ivar descEvento: Descrição do Evento - “EPEC”
2626
:ivar xJust: Justificativa da Entrada em Contingencia

nfelib/cte/bindings/v3_0/inut_cte_v3_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class InutCte(TinutCte):
99
"""
10-
Schema XML de validação do Pedido de Inutilização de Numeração do
11-
Conhecimento de Transportes eletrônico.
10+
Schema XML de validação do Pedido de Inutilização de Numeração do Conhecimento
11+
de Transportes eletrônico.
1212
"""
1313
class Meta:
1414
name = "inutCTe"

nfelib/cte/bindings/v3_0/ret_cons_stat_serv_cte_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class RetConsStatServCte(TretConsStatServ):
99
"""
10-
Schema XML de validação do Resultado da Consulta do Status do Serviço de
11-
CT-e.
10+
Schema XML de validação do Resultado da Consulta do Status do Serviço de CT-e.
1211
"""
1312
class Meta:
1413
name = "retConsStatServCte"

nfelib/cte/bindings/v3_0/ret_cte_os_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class RetCteOs(TretCteOs):
99
"""
10-
Schema XML de validação do retorno do recibo de envio do CT-e OS (Modelo
11-
67)
10+
Schema XML de validação do retorno do recibo de envio do CT-e OS (Modelo 67)
1211
"""
1312
class Meta:
1413
name = "retCTeOS"

nfelib/cte/bindings/v3_0/ret_inut_cte_v3_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class RetInutCte(TretInutCte):
99
"""
10-
Schema XML de validação do retorno do Pedido de Inutilização de Numeração
11-
do CT-e.
10+
Schema XML de validação do retorno do Pedido de Inutilização de Numeração do
11+
CT-e.
1212
"""
1313
class Meta:
1414
name = "retInutCTe"

nfelib/cte/bindings/v3_0/tipos_geral_cte_v3_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class Tamb(Enum):
1212

1313

1414
class TcorgaoIbge(Enum):
15-
"""Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94
16-
SVC-RS + 95 SVC-SP + 96 Sinc.
15+
"""Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94 SVC-
16+
RS + 95 SVC-SP + 96 Sinc.
1717
1818
Chaves do RS para SVSP
1919
"""

nfelib/mdfe/bindings/v3_0/dist_mdfe_v3_00.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@dataclass
88
class DistMdfe(TdistDfe):
99
"""
10-
solicitação de distribuição de MDF-e para o Ambiente Autorizador.
10+
Solicitação de distribuição de MDF-e para o Ambiente Autorizador.
1111
"""
1212
class Meta:
1313
name = "distMDFe"

nfelib/mdfe/bindings/v3_0/envi_mdfe_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class EnviMdfe(TenviMdfe):
99
"""
10-
Schema XML de validação do Envio de Lote MDF-e para concessão de
11-
autorização.
10+
Schema XML de validação do Envio de Lote MDF-e para concessão de autorização.
1211
"""
1312
class Meta:
1413
name = "enviMDFe"

nfelib/mdfe/bindings/v3_0/leiaute_dist_mdfe_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,7 @@ class Meta:
171171
@dataclass
172172
class TretDistDfe:
173173
"""
174-
Schema XML de validação do lote de retorno de documentos ficais
175-
eletronicos.
174+
Schema XML de validação do lote de retorno de documentos ficais eletronicos.
176175
177176
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 -
178177
Homologação

nfelib/mdfe/bindings/v3_0/ret_cons_stat_serv_mdfe_v3_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class RetConsStatServMdfe(TretConsStatServ):
99
"""
10-
Schema XML de validação do Resultado da Consulta do Status do Serviço de
11-
MDF-e.
10+
Schema XML de validação do Resultado da Consulta do Status do Serviço de MDF-e.
1211
"""
1312
class Meta:
1413
name = "retConsStatServMDFe"

nfelib/nfe/bindings/v4_0/cons_sit_nfe_v4_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class ConsSitNfe(TconsSitNfe):
99
"""
10-
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota
11-
Fiscal Eletrônica.
10+
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal
11+
Eletrônica.
1212
"""
1313
class Meta:
1414
name = "consSitNFe"

nfelib/nfe/bindings/v4_0/envi_nfe_v4_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class EnviNfe(TenviNfe):
99
"""
10-
Schema XML de validação do Pedido de Concessão de Autorização da Nota
11-
Fiscal Eletrônica.
10+
Schema XML de validação do Pedido de Concessão de Autorização da Nota Fiscal
11+
Eletrônica.
1212
"""
1313
class Meta:
1414
name = "enviNFe"

nfelib/nfe/bindings/v4_0/inut_nfe_v4_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class InutNfe(TinutNfe):
99
"""
10-
Schema XML de validação do Pedido de Inutilização de Numeração da Nota
11-
Fiscal Eletrônica.
10+
Schema XML de validação do Pedido de Inutilização de Numeração da Nota Fiscal
11+
Eletrônica.
1212
"""
1313
class Meta:
1414
name = "inutNFe"

nfelib/nfe/bindings/v4_0/leiaute_cons_sit_nfe_v4_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -795,8 +795,7 @@ class Meta:
795795
@dataclass
796796
class TretConsSitNfe:
797797
"""
798-
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal
799-
Eletrônica.
798+
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica.
800799
801800
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
802801
:ivar verAplic: Versão do Aplicativo que processou a NF-e

nfelib/nfe/bindings/v4_0/leiaute_inut_nfe_v4_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,7 @@ class InfInut:
178178
@dataclass
179179
class TretInutNfe:
180180
"""
181-
Tipo retorno do Pedido de Inutilização de Numeração da Nota Fiscal
182-
Eletrônica.
181+
Tipo retorno do Pedido de Inutilização de Numeração da Nota Fiscal Eletrônica.
183182
184183
:ivar infInut: Dados do Retorno do Pedido de Inutilização de
185184
Numeração da Nota Fiscal Eletrônica

nfelib/nfe/bindings/v4_0/leiaute_nfe_v4_00.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -688,8 +688,7 @@ class TfinNfe(Enum):
688688
@dataclass
689689
class TinfRespTec:
690690
"""
691-
Grupo de informações do responsável técnico pelo sistema de emissão de
692-
DF-e.
691+
Grupo de informações do responsável técnico pelo sistema de emissão de DF-e.
693692
694693
:ivar CNPJ: CNPJ
695694
:ivar xContato: Informar o nome da pessoa a ser contatada na empresa
@@ -785,8 +784,8 @@ class TprocEmi(Enum):
785784

786785

787786
class Torig(Enum):
788-
"""Tipo Origem da mercadoria CST ICMS origem da mercadoria: 0-Nacional
789-
exceto as indicadas nos códigos 3, 4, 5 e 8;
787+
"""Tipo Origem da mercadoria CST ICMS origem da mercadoria: 0-Nacional exceto
788+
as indicadas nos códigos 3, 4, 5 e 8;
790789
791790
1-Estrangeira - Importação direta; 2-Estrangeira - Adquirida no mercado interno; 3-Nacional, conteudo superior 40% e inferior ou igual a 70%; 4-Nacional, processos produtivos básicos; 5-Nacional, conteudo inferior 40%; 6-Estrangeira - Importação direta, com similar nacional, lista CAMEX; 7-Estrangeira - mercado interno, sem simular,lista CAMEX;8-Nacional, Conteúdo de Importação superior a 70%.
792791
"""
@@ -4730,12 +4729,11 @@ class Imposto:
47304729
"namespace": "http://www.portalfiscal.inf.br/nfe",
47314730
}
47324731
)
4733-
IPI: List[Tipi] = field(
4734-
default_factory=list,
4732+
IPI: Optional[Tipi] = field(
4733+
default=None,
47354734
metadata={
47364735
"type": "Element",
47374736
"namespace": "http://www.portalfiscal.inf.br/nfe",
4738-
"max_occurs": 2,
47394737
}
47404738
)
47414739
II: Optional["Tnfe.InfNfe.Det.Imposto.Ii"] = field(

nfelib/nfe/bindings/v4_0/ret_cons_reci_nfe_v4_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class RetConsReciNfe(TretConsReciNfe):
99
"""
10-
Schema XML de validação do retorno do Pedido de Consulta do Recido do Lote
11-
de Notas Fiscais Eletrônicas.
10+
Schema XML de validação do retorno do Pedido de Consulta do Recido do Lote de
11+
Notas Fiscais Eletrônicas.
1212
"""
1313
class Meta:
1414
name = "retConsReciNFe"

nfelib/nfe/bindings/v4_0/ret_inut_nfe_v4_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class RetInutNfe(TretInutNfe):
99
"""
10-
Schema XML de validação do retorno do Pedido de Inutilização de Numeração
11-
da Nota Fiscal Eletrônica.
10+
Schema XML de validação do retorno do Pedido de Inutilização de Numeração da
11+
Nota Fiscal Eletrônica.
1212
"""
1313
class Meta:
1414
name = "retInutNFe"

nfelib/nfe_ator_interessado/bindings/v1_0/env_evento_ator_interessado_v1_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class EnvEvento(TenvEvento):
99
"""
10-
Schema XML de validação do lote de envio do evento de Ator Interessado na
11-
NF-e.
10+
Schema XML de validação do lote de envio do evento de Ator Interessado na NF-e.
1211
"""
1312
class Meta:
1413
name = "envEvento"

nfelib/nfe_cons/bindings/v2_0/cons_sit_nfe_v2_01.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class ConsSitNfe(TconsSitNfe):
99
"""
10-
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota
11-
Fiscal Eletrônica.
10+
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal
11+
Eletrônica.
1212
"""
1313
class Meta:
1414
name = "consSitNFe"

nfelib/nfe_cons/bindings/v2_0/leiaute_cons_sit_nfe_v2_01.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -826,8 +826,7 @@ class Meta:
826826
@dataclass
827827
class TretConsSitNfe:
828828
"""
829-
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal
830-
Eletrônica.
829+
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica.
831830
832831
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
833832
:ivar verAplic: Versão do Aplicativo que processou a NF-e

nfelib/nfe_entrega/bindings/v1_0/env_evento_entrega_nfe_v1_00.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
@dataclass
88
class EnvEvento(TenvEvento):
99
"""
10-
Schema XML de validação do lote de envio do evento de Comprovante de
11-
Entrega da NFe.
10+
Schema XML de validação do lote de envio do evento de Comprovante de Entrega da
11+
NFe.
1212
"""
1313
class Meta:
1414
name = "envEvento"

nfelib/nfe_evento_mde/bindings/v1_0/env_conf_recebto_v1_00.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
@dataclass
88
class EnvEvento(TenvEvento):
99
"""
10-
Schema XML de validação do lote de envio do evento confirmação de
11-
recebimento.
10+
Schema XML de validação do lote de envio do evento confirmação de recebimento.
1211
"""
1312
class Meta:
1413
name = "envEvento"

script.sh

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ if [$DOWNLOAD_SCHEMAS]; then
1010
fi
1111
xsdata generate nfelib/nfe/schemas/v4_0 --package nfelib.nfe.bindings.v4_0
1212

13+
# patch o campo IPI caso o patch no xsdata não foi aplicado
14+
# ver detalhes aqui https://github.com/akretion/nfelib/issues/40
15+
# sed -e 's/IPI: List\[Tipi\] = field(/IPI: Optional\[Tipi\] = field(/' -i nfelib/nfe/bindings/v4_0/leiaute_nfe_v4_00.py
16+
# infelizmente teria que trocar a outra linha depois tb default_factory=List por default=None para funcionar.
17+
# vou deixar essa tentativa de patch com sed desativada por enquanto.
18+
1319
# Pacote de Liberação Distribuição de DF-e v1.02 (Atualizado em 25/10/16)
1420
if [$DOWNLOAD_SCHEMAS]; then
1521
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=

tests/nfe/test_nfe.py

+21
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pathlib import Path
1010

1111
from nfelib.nfe.bindings.v4_0 import leiaute_nfe_v4_00
12+
from nfelib.nfe.bindings.v4_0.leiaute_nfe_v4_00 import Tnfe
1213
from nfelib.nfe.bindings.v4_0.leiaute_cons_stat_serv_v4_00 import TconsStatServ
1314
from nfelib.nfe.bindings.v4_0.leiaute_cons_sit_nfe_v4_00 import TconsSitNfe
1415

@@ -17,6 +18,26 @@
1718
from nfelib.nfe_evento_generico.bindings.v1_0.leiaute_evento_v1_00 import TenvEvento
1819

1920

21+
def test_patched_xsdata_for_ipi():
22+
# o xsdata precisa de uma linha de patch para funcionar legal para a NFe
23+
# (de forma simples/backward compatible no Odoo)
24+
# uma alternativa seria usar a opção --compound-fields do xsdata mas
25+
# deixaria o uso mais complexo no Odoo de forma desnecessaria. A gestão dos campos
26+
# compostos/compound esta sendo retrabalhada no xsdata de qualquer forma.
27+
# Enfim hoje o mais simples é aplicar um patch de uma linha no xsdata.
28+
# Se vc instalar o pacote xsdata-odoo e fizer export XSD_SCHEMA=nfe,
29+
# o xsdata-odoo aplica esse monkey patch para você.
30+
# ver detalhes aqui: https://github.com/akretion/nfelib/issues/40
31+
assert (
32+
str(Tnfe.InfNfe.Det.Imposto().__annotations__["IPI"]).startswith(
33+
"typing.Optional"
34+
)
35+
# Python < 3.9:
36+
or str(Tnfe.InfNfe.Det.Imposto().__annotations__["IPI"])
37+
== "typing.Union[nfelib.nfe.bindings.v4_0.leiaute_nfe_v4_00.Tipi, NoneType]"
38+
)
39+
40+
2041
def test_in_out_leiauteNFe():
2142
path = os.path.join("nfelib", "nfe", "samples", "v4_0", "leiauteNFe")
2243
for filename in os.listdir(path):

0 commit comments

Comments
 (0)