Giter Club home page Giter Club logo

Comments (10)

rvalyi avatar rvalyi commented on May 31, 2024

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.

lucasres avatar lucasres commented on May 31, 2024

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.

rvalyi avatar rvalyi commented on May 31, 2024

@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.

lucasres avatar lucasres commented on May 31, 2024

irei tentar

from nfelib.

lucasres avatar lucasres commented on May 31, 2024

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.

rvalyi avatar rvalyi commented on May 31, 2024

@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.

rvalyi avatar rvalyi commented on May 31, 2024

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.

lucasres avatar lucasres commented on May 31, 2024

Usei StringIO e deu certo, agora queria saber como capturar o erro usando o parser

from nfelib.

rvalyi avatar rvalyi commented on May 31, 2024

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.

lucasres avatar lucasres commented on May 31, 2024

deu certo, vlw amigo

from nfelib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.