Comments (10)
Ola @mandala21 sejja bem vindo. A lib ainda eh um pouco nova, mas segure ai que estamos atualizando ela rapidamente e ela ja esta operacional como vc pode ver pelos testes. Na vdd, a nfelib vai checar a validade de cada tag a medida que vc monta eles pelo construtor de cada tag.
Veja por examplo o construtor do Emitente e todos metodos validade_* que ele chama:
class emitType(GeneratedsSuper):
"""Identificação do emitenteGrupo de informações de interesse da
Prefeitura"""
subclass = None
superclass = None
def __init__(self, CNPJ=None, CPF=None, xNome=None, xFant=None, enderEmit=None, IE=None, IEST=None, IM=None, CNAE=None, CRT=None, **kwargs_):
self.original_tagname_ = None
self.parent_object_ = kwargs_.get('parent_object_')
self.CNPJ = CNPJ
self.validate_TCnpj(self.CNPJ)
self.CPF = CPF
self.validate_TCpf(self.CPF)
self.xNome = xNome
self.validate_xNomeType(self.xNome)
self.xFant = xFant
self.validate_xFantType(self.xFant)
self.enderEmit = enderEmit
self.IE = IE
self.validate_TIe(self.IE)
self.IEST = IEST
self.validate_TIeST(self.IEST)
self.IM = IM
self.validate_IMType(self.IM)
self.CNAE = CNAE
self.validate_CNAEType(self.CNAE)
self.CRT = CRT
self.validate_CRTType(self.CRT)
Isso alias eh uma grande vantagem do nfelib: poder detetar a inconsistência dos dados desde cedo. Por examplo na Akretion comecamos a usar a nfelib no ERP open source Odoo com esse modulo: https://github.com/OCA/l10n-brazil/pull/658/files
Basicamente a gente injeta esses mixins no modelo de dado Odoo (por examplo cliente, fatura etc...) e podemos assim validar os campos na hora que o usuario esta preenchendo os dados.
Mas eu concordo com vc, seria bom um metodo global que faz a validação pelo XSD, ate porque o generateDS poderia nao implementar alguma validação. Isso deveria ser implementado na subclass aqui https://github.com/akretion/nfelib/blob/master_gen_v4_00/nfelib/v4_00/leiauteNFe_sub.py
Outro ponto, a gente deveria mexer na superclass dos tags para que a validação seja traduzida em Portugues. Isso deveria ser feito interceptando os warnings https://docs.python.org/3/library/warnings.html em metodos da superclass https://www.davekuhlman.org/generateDS.html#overridable-methods-generatedssuper-py
Seria uma contribuicao que ajudaria.
Tb, estamos vendo com @mbcosta uma forma de ter algumas facilidades nas subclasses de impostos para criar as tags dinamicamente automaticamente em vez de ter que especificar as classes das tags exactas como ICMS10Type, ICMS20Type etc...
Por fim pensamos em algumas ferramentas de conversao de formato de dados dentro do generatedssuper.py
cc @renatonlima
from nfelib.
Obrigado, estou pensando em analisar o código e ver se consigo implementar pq estou precisando de um método que faça isso.
Ja tentei usar o lxml para a validação do xml, mas da erro nos includes na hora de carregar o arquivo de schema
from nfelib.
@mandala21talvez isso tb nao ficou claro, mas hoje se vc tenta importar uma nota usando o metodo parse como no examplo https://github.com/akretion/nfelib#como-usar (iremos melhorar a documentação tb)
ele ja vai chamar os construtores de todas as classes e portanto ele ja vai realizar uma validação bem proxima daquela que faria o XSD. Mas eu concordo, uma validação adicional pelo XSD seria boa tb.
from nfelib.
irei tentar
from nfelib.
o tipo do parametro é qual?
tentei passar o string da xml e recebi o seguinte erro:
Error reading file '<NFe xmlns='http://www.portalfiscal.inf.br/nfe'><infNFe versao='4.00' Id='NFe22190315443409000150650010000001111115552197'><ide><cUF>22</cUF><cNF>11555219</cNF><natOp>VENDA</natOp><mod>65</mod><serie>1</serie><nNF>111</nNF><dhEmi>2019-03-21T10:10:18-03:00</dhEmi><tpNF>1</tpNF><idDest>1</idDest>...
from nfelib.
@mandala21 Eh string mesmo, so que eh o caminho ate o arquivo. Veja no test aqui:
https://github.com/akretion/nfelib/blob/master_gen_v4_00/tests/nfe/test_nfelib.py#L23
from nfelib.
na vdd, eu acho que pode ser isso que o etree.parse supporta:
The parse() function supports any of the following sources:
an open file object (make sure to open it in binary mode)
a file-like object that has a .read(byte_count) method returning a byte string on each call
a filename string
an HTTP or FTP URL string
https://lxml.de/tutorial.html#the-parse-function
from nfelib.
Usei StringIO e deu certo, agora queria saber como capturar o erro usando o parser
from nfelib.
Pode ver esses links ai sobre isso:
https://docs.python.org/3/library/logging.html#logging.captureWarnings
https://stackoverflow.com/a/5645133
https://stackoverflow.com/a/7207340
from nfelib.
deu certo, vlw amigo
from nfelib.
Related Issues (20)
- Erro de módulo não encontrado HOT 7
- Pegar o id
- xsdata and --compound-field HOT 2
- Validação de CNPJs
- Validações de Inscrições Estaduais
- Validações da Tag de Documento Fiscal Referenciado
- Validações da Tag de Identificação do Emitente
- Validações de Tags de Identificação do Destinatário
- Validações da Tag de Local da Retirada
- status de retorno autorização de NFe
- note: use class nesting in xsdata branch or not?
- Esse pacote foi depreciado HOT 6
- migração 1.x / generateDS -> 2.x xsdata - WORK IN PROGRESS HOT 1
- nfelib 1.x: instalação dos schemas e XML de tests/examplos fora da pasta da nfelib HOT 1
- simplificação dos bindings de DF-e?
- Gerar danfe HOT 4
- Como gerar NFse
- Inconpatibilidade com AWS Lambda HOT 3
- Missing tags in NFS-e HOT 4
- ALERT/ALERTA: DEPRECATION NOTICE!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nfelib.