Giter VIP home page Giter VIP logo

ctelib's Introduction

ctelib Python library

A ctelib é uma biblioteca para ler e gerir documentos de Conhecimento de Transporte Eletrônico brasileiros (CT-e). Ja existem varias outras bibliotecas, porem na Akretion queriamos algo que fosse simples de manter para usar com o ERP open source Odoo. A cteelib nao tem a pretençao de solucionar toda burocracia do SPED sozinha, mas apenas a questao da geraçao dos documentos de CT-e. Tambem criamos outras bibliotecas semelhantes para os outros documentos electronicos do SPED.

A ctelib permite de:

  • Gerir os XMLs dos documentos fiscais.
  • Validar os dados com as mesmas validaçoes dos XSDs ao montar os objetos, o que evita detetar os erros apenas ao transmitir o XML.
  • Importar XMLs e transfoma-los em objetos Python. Usando um sistema de sub-classes, fica facil mapear esses objetos em outros objetos ou adicionar qualquer metodo customizado.

A ctelib é:

  • Simples e confiavel. O codigo é gerido pelo generateDS a partir dos XSD's da Fazenda usando o script generate de menos de 70 linhas de codigo apenas.
  • Compativel com Python 2 e Python 3.

* Capaz de carregar varias versoes dos esquemas. Isso pode ser bem util ao receber uma nota fiscal com um layout antigo. As tecnologias XML (XSD, WSDL, SOAP...) usadas pelo site da Fazenda foram criadas inicialmente para Java e .Net. Durante um bom tempo essas tecnologias ficaram para tras no mundo do Python. Por isso varias pessoas foram criar bibliotecas manualmente com milhares de linhas e poucos testes para montar os XMLs dos documentos electronicos. Mas hoje é um absurdo usar biblitecas escritas manualmente e depender do autor inicial a cada atualizaçao dos esquemas ou quando seu programa deve migrar para Python 3. Veja o conceito do 'Truck Factor' <https://en.wikipedia.org/wiki/Bus_factor>

É debativel qual é a melhor forma de transmitir esses documentos electronicos para o site da Fazenda (talvez com essas bibliotecas que ja existem, talvez com outras bibilotecas em Java especializadas em transmitir os documentos electronicos). Porem na questao de montar os XML e poder efetuar validaçoes dos dados o mais cedo possivel (perto do momento em qual o usuario preenchou os dados), dificilmente uma biblioteca de milhares de linhas escrita manualmente fica mais confiavel do que codigo gerido a partir dos XSD da Fazenda apenas. As classes da ctelib sao geridas usando a ferramenta generateDS. A funcionalidade de sub-classes do generateDS tambem ajuda na questao dos mapeamentos entre o modelo de dados dos esquemas da fazenda e o modelo de dados do seu software (ERP por examplo). Finalmente ficou possivel fazer com Python o que o pessoal do Java ja fazia ha muito tempo com as tecnologias do tipo JAXB.

Voce pode aprender mais sobre o generateDS.py aqui: <http://www.davekuhlman.org/generateDS.html>

como instalar

pip install -e git+https://github.com/akretion/ctelib.git#egg=ctelib

como usar

>>> from ctelib.v3_00 import cte as cte3
# TODO documentar melhor

ctelib's People

Contributors

rvalyi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

pedrohakial

ctelib's Issues

Tem instrução de uso?

Olá, está parado esse projeto ou está em andamento? Está atualizado com a versão de layout 3.0 CTe?
Grato.

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.