https://github.com/akretion/mdfelib
biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-e)
https://github.com/akretion/mdfelib
brasil erp mdf-e sped
Last synced: 11 months ago
JSON representation
biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-e)
- Host: GitHub
- URL: https://github.com/akretion/mdfelib
- Owner: akretion
- License: mit
- Created: 2017-10-09T15:59:32.000Z (over 8 years ago)
- Default Branch: generated
- Last Pushed: 2023-09-19T21:50:18.000Z (over 2 years ago)
- Last Synced: 2025-06-06T03:13:39.312Z (about 1 year ago)
- Topics: brasil, erp, mdf-e, sped
- Language: Python
- Homepage:
- Size: 1.03 MB
- Stars: 3
- Watchers: 7
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- License: MIT-LICENSE
Awesome Lists containing this project
README
mdfelib Python library
=====================
A mdfelib é uma biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-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 mdfeelib nao tem a pretençao de solucionar toda burocracia do SPED sozinha, mas apenas a questao da geraçao dos documentos de MDF-e. Tambem criamos outras bibliotecas semelhantes para os outros documentos electronicos do SPED.
A mdfelib 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 mdfelib é:
* **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 um documento 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'
É 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 mdfelib 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:
como instalar
=============
.. code::
pip install -e git+https://github.com/akretion/mdfelib.git#egg=mdfelib
como usar
=========
.. code::
:
>>> from mdfelib.v3_00 import mdfe as mdfe3
# TODO documentar melhor