Skip to content

Commit

Permalink
Merge pull request #67 from akretion/master-xsdata-fix-gen
Browse files Browse the repository at this point in the history
Master xsdata fix gen
  • Loading branch information
rvalyi authored Apr 23, 2023
2 parents 62bb7d2 + b62bc23 commit 2dbccc7
Show file tree
Hide file tree
Showing 28 changed files with 68 additions and 56 deletions.
3 changes: 1 addition & 2 deletions nfelib/bpe/bindings/v1_0/cons_sit_bpe_tipos_basico_v1_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
@dataclass
class TconsSitBpe:
"""
Tipo Pedido de Consulta da Situação Atual do Bilhete de Passagem
Eletrônico.
Tipo Pedido de Consulta da Situação Atual do Bilhete de Passagem Eletrônico.
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
:ivar xServ: Serviço Solicitado
Expand Down
3 changes: 1 addition & 2 deletions nfelib/bpe/bindings/v1_0/ret_cons_stat_serv_bpe_v1_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class RetConsStatServBpe(TretConsStatServ):
"""
Schema XML de validação do Resultado da Consulta do Status do Serviço de
BP-e.
Schema XML de validação do Resultado da Consulta do Status do Serviço de BP-e.
"""
class Meta:
name = "retConsStatServBPe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/cte/bindings/v3_0/envi_cte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class EnviCte(TenviCte):
"""
Schema XML de validação do Envio de Lote CT-e para concessão de
autorização.
Schema XML de validação do Envio de Lote CT-e para concessão de autorização.
"""
class Meta:
name = "enviCTe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/cte/bindings/v3_0/ev_epeccte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ class EvEpeccteTpCte(Enum):
@dataclass
class EvEpeccte:
"""
Schema XML de validação do evento de emissão prévia de emissão em
contingência 110113.
Schema XML de validação do evento de emissão prévia de emissão em contingência
110113.
:ivar descEvento: Descrição do Evento - “EPEC”
:ivar xJust: Justificativa da Entrada em Contingencia
Expand Down
4 changes: 2 additions & 2 deletions nfelib/cte/bindings/v3_0/inut_cte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class InutCte(TinutCte):
"""
Schema XML de validação do Pedido de Inutilização de Numeração do
Conhecimento de Transportes eletrônico.
Schema XML de validação do Pedido de Inutilização de Numeração do Conhecimento
de Transportes eletrônico.
"""
class Meta:
name = "inutCTe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/cte/bindings/v3_0/ret_cons_stat_serv_cte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class RetConsStatServCte(TretConsStatServ):
"""
Schema XML de validação do Resultado da Consulta do Status do Serviço de
CT-e.
Schema XML de validação do Resultado da Consulta do Status do Serviço de CT-e.
"""
class Meta:
name = "retConsStatServCte"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/cte/bindings/v3_0/ret_cte_os_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class RetCteOs(TretCteOs):
"""
Schema XML de validação do retorno do recibo de envio do CT-e OS (Modelo
67)
Schema XML de validação do retorno do recibo de envio do CT-e OS (Modelo 67)
"""
class Meta:
name = "retCTeOS"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/cte/bindings/v3_0/ret_inut_cte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class RetInutCte(TretInutCte):
"""
Schema XML de validação do retorno do Pedido de Inutilização de Numeração
do CT-e.
Schema XML de validação do retorno do Pedido de Inutilização de Numeração do
CT-e.
"""
class Meta:
name = "retInutCTe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/cte/bindings/v3_0/tipos_geral_cte_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class Tamb(Enum):


class TcorgaoIbge(Enum):
"""Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94
SVC-RS + 95 SVC-SP + 96 Sinc.
"""Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94 SVC-
RS + 95 SVC-SP + 96 Sinc.
Chaves do RS para SVSP
"""
Expand Down
2 changes: 1 addition & 1 deletion nfelib/mdfe/bindings/v3_0/dist_mdfe_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
@dataclass
class DistMdfe(TdistDfe):
"""
solicitação de distribuição de MDF-e para o Ambiente Autorizador.
Solicitação de distribuição de MDF-e para o Ambiente Autorizador.
"""
class Meta:
name = "distMDFe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/mdfe/bindings/v3_0/envi_mdfe_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class EnviMdfe(TenviMdfe):
"""
Schema XML de validação do Envio de Lote MDF-e para concessão de
autorização.
Schema XML de validação do Envio de Lote MDF-e para concessão de autorização.
"""
class Meta:
name = "enviMDFe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/mdfe/bindings/v3_0/leiaute_dist_mdfe_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,7 @@ class Meta:
@dataclass
class TretDistDfe:
"""
Schema XML de validação do lote de retorno de documentos ficais
eletronicos.
Schema XML de validação do lote de retorno de documentos ficais eletronicos.
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 -
Homologação
Expand Down
3 changes: 1 addition & 2 deletions nfelib/mdfe/bindings/v3_0/ret_cons_stat_serv_mdfe_v3_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class RetConsStatServMdfe(TretConsStatServ):
"""
Schema XML de validação do Resultado da Consulta do Status do Serviço de
MDF-e.
Schema XML de validação do Resultado da Consulta do Status do Serviço de MDF-e.
"""
class Meta:
name = "retConsStatServMDFe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/nfe/bindings/v4_0/cons_sit_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class ConsSitNfe(TconsSitNfe):
"""
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota
Fiscal Eletrônica.
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal
Eletrônica.
"""
class Meta:
name = "consSitNFe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/nfe/bindings/v4_0/envi_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class EnviNfe(TenviNfe):
"""
Schema XML de validação do Pedido de Concessão de Autorização da Nota
Fiscal Eletrônica.
Schema XML de validação do Pedido de Concessão de Autorização da Nota Fiscal
Eletrônica.
"""
class Meta:
name = "enviNFe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/nfe/bindings/v4_0/inut_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class InutNfe(TinutNfe):
"""
Schema XML de validação do Pedido de Inutilização de Numeração da Nota
Fiscal Eletrônica.
Schema XML de validação do Pedido de Inutilização de Numeração da Nota Fiscal
Eletrônica.
"""
class Meta:
name = "inutNFe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/nfe/bindings/v4_0/leiaute_cons_sit_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -795,8 +795,7 @@ class Meta:
@dataclass
class TretConsSitNfe:
"""
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal
Eletrônica.
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica.
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
:ivar verAplic: Versão do Aplicativo que processou a NF-e
Expand Down
3 changes: 1 addition & 2 deletions nfelib/nfe/bindings/v4_0/leiaute_inut_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,7 @@ class InfInut:
@dataclass
class TretInutNfe:
"""
Tipo retorno do Pedido de Inutilização de Numeração da Nota Fiscal
Eletrônica.
Tipo retorno do Pedido de Inutilização de Numeração da Nota Fiscal Eletrônica.
:ivar infInut: Dados do Retorno do Pedido de Inutilização de
Numeração da Nota Fiscal Eletrônica
Expand Down
12 changes: 5 additions & 7 deletions nfelib/nfe/bindings/v4_0/leiaute_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -688,8 +688,7 @@ class TfinNfe(Enum):
@dataclass
class TinfRespTec:
"""
Grupo de informações do responsável técnico pelo sistema de emissão de
DF-e.
Grupo de informações do responsável técnico pelo sistema de emissão de DF-e.
:ivar CNPJ: CNPJ
:ivar xContato: Informar o nome da pessoa a ser contatada na empresa
Expand Down Expand Up @@ -785,8 +784,8 @@ class TprocEmi(Enum):


class Torig(Enum):
"""Tipo Origem da mercadoria CST ICMS origem da mercadoria: 0-Nacional
exceto as indicadas nos códigos 3, 4, 5 e 8;
"""Tipo Origem da mercadoria CST ICMS origem da mercadoria: 0-Nacional exceto
as indicadas nos códigos 3, 4, 5 e 8;
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%.
"""
Expand Down Expand Up @@ -4730,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
4 changes: 2 additions & 2 deletions nfelib/nfe/bindings/v4_0/ret_cons_reci_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class RetConsReciNfe(TretConsReciNfe):
"""
Schema XML de validação do retorno do Pedido de Consulta do Recido do Lote
de Notas Fiscais Eletrônicas.
Schema XML de validação do retorno do Pedido de Consulta do Recido do Lote de
Notas Fiscais Eletrônicas.
"""
class Meta:
name = "retConsReciNFe"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/nfe/bindings/v4_0/ret_inut_nfe_v4_00.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class RetInutNfe(TretInutNfe):
"""
Schema XML de validação do retorno do Pedido de Inutilização de Numeração
da Nota Fiscal Eletrônica.
Schema XML de validação do retorno do Pedido de Inutilização de Numeração da
Nota Fiscal Eletrônica.
"""
class Meta:
name = "retInutNFe"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class EnvEvento(TenvEvento):
"""
Schema XML de validação do lote de envio do evento de Ator Interessado na
NF-e.
Schema XML de validação do lote de envio do evento de Ator Interessado na NF-e.
"""
class Meta:
name = "envEvento"
Expand Down
4 changes: 2 additions & 2 deletions nfelib/nfe_cons/bindings/v2_0/cons_sit_nfe_v2_01.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class ConsSitNfe(TconsSitNfe):
"""
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota
Fiscal Eletrônica.
Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal
Eletrônica.
"""
class Meta:
name = "consSitNFe"
Expand Down
3 changes: 1 addition & 2 deletions nfelib/nfe_cons/bindings/v2_0/leiaute_cons_sit_nfe_v2_01.py
Original file line number Diff line number Diff line change
Expand Up @@ -826,8 +826,7 @@ class Meta:
@dataclass
class TretConsSitNfe:
"""
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal
Eletrônica.
Tipo Retorno de Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica.
:ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
:ivar verAplic: Versão do Aplicativo que processou a NF-e
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
@dataclass
class EnvEvento(TenvEvento):
"""
Schema XML de validação do lote de envio do evento de Comprovante de
Entrega da NFe.
Schema XML de validação do lote de envio do evento de Comprovante de Entrega da
NFe.
"""
class Meta:
name = "envEvento"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
@dataclass
class EnvEvento(TenvEvento):
"""
Schema XML de validação do lote de envio do evento confirmação de
recebimento.
Schema XML de validação do lote de envio do evento confirmação de recebimento.
"""
class Meta:
name = "envEvento"
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
21 changes: 21 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,26 @@
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"
)
# Python < 3.9:
or str(Tnfe.InfNfe.Det.Imposto().__annotations__["IPI"])
== "typing.Union[nfelib.nfe.bindings.v4_0.leiaute_nfe_v4_00.Tipi, NoneType]"
)


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 2dbccc7

Please sign in to comment.