.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
=========
SPED Base
=========
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fefb010ebb0b0d2ad18d22fb0b83c759275541a9f106cd44fcd5c6009d1fc21d
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
:target: https://odoo-community.org/page/development-status
:alt: Alpha
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--brazil-lightgray.png?logo=github
:target: https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_sped_base
:alt: OCA/l10n-brazil
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/l10n-brazil-16-0/l10n-brazil-16-0-l10n_br_sped_base
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-brazil&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
Este módulo contém algumas abstrações utilizadas pelos módulos de SPED
Ele não faz nada sozinho, mas serve dentro dos 4 módulos:
- l10n_br_sped_ecd
- l10n_br_sped_efd_icms_ipi
- l10n_br_sped_efd_pis_cofins
- l10n_br_sped_ecf
Em especial, cada registro dos módulos de SPED herda do objeto abstrato
l10n_br_sped.mixin que conta com visões automáticas e metodos para
importar ou escrever registros dos SPED de forma recursiva.
Para cada tipo de arquivo SPED, o registro de abertura 0000 herda também
do objeto abstrato l10n_br_sped.declaration que conta com métodos para
popular os registros do SPED a partir das transações do Odoo entre as
datas DT_INI e DT_FIN e permite assim gerir os arquivos do SPED.
Para gerir o SPED, basta criar uma declaração do SPED no menu
apropriado. Depois clicar em Puxar os Dados do Odoo. Isso vai percorrer
a arvore dos registros do SPED e para cada registro vai usar
``_odoo_domain`` ou ``_odoo_query`` para ver se tem records Odoo para
mapear. Caso tiver vai chamar o método ``_map_from_odoo`` do registro.
Depois vai repetir a operação com os registros filhos. Na declaração é
possível escolher se você quer um único arquivo SPED ou se você quer
quebrar o arquivo bloco por bloco.
Em cada módulo de SPED, existe 2 arquivos principais:
- um arquivo com o número do leiaute que contém **os modelos abstratos
de todos os registros do SPED com todos os campos**. Este arquivo é
gerido gerido pela ferramenta
`spedextractor <https://github.com/akretion/sped-extractor>`__ a
partir dos pdf das especificações e **não deve ser editado
manualmente**.
- um segundo arquivo que contém a **lista de todos registros concretos**
que herdam desses primeiros modelos abstratos e contém assim todos os
campos. Como o mixin de cada registro contém a versão do leiaute
dentro do nome dele, temos uma forma de suportar várias versões dos
leiautes. Esse arquivo dos registros concretos deve sim ser editado
manualmente para completar os mappings. Para mapear um registro, deve
se implementar o override desses 3 métodos:
- ``def _odoo_domain(self, parent_record, declaration):`` deve
retornar um domain que permite a seleção dos records Odoo a serem
mapeados de acordo com o record parente e os dados da declaração
(onde tem as datas e a empresa por exemplo). Para usar esse método
``_odoo_domain``, deve se definir também o atributo ``_odoo_model``
- ``def _odoo_query(self, parent_record, declaration):`` caso a
seleção dos records a serem mapeados não pode ser obtida por um
domain, pode ser implementado esse override para retornar a query
SQL para selecionar um result set a mapear. Neste caso, o record do
método ``_map_from_odoo`` é um result set do query Postgres. Se você
não implementar nem ``_odoo_domain`` nem ``_odoo_query`` e
implementar o método ``_map_from_odoo``, o registro vai ter uma
instância gerida para cada declaração. É o caso do registro I010 da
ECD por exemplo.
- ``_map_from_odoo(self, record, parent_record, declaration, index=0)``
para facilitar, os overrides dos metodos ``_map_from_odoo`` de todos
os registros, esse já vem geridos de forma comentada com todos os
campos do registro. Assim basta descomentar or método e implementar
como é mapeado cada campo a partir do record, parent_record e dos
dados da declaração.
.. IMPORTANT::
This is an alpha version, the data model and design can change at any time without warning.
Only for development or testing purpose, do not use in production.
`More details on development status <https://odoo-community.org/page/development-status>`_
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-brazil/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/l10n-brazil/issues/new?body=module:%20l10n_br_sped_base%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Akretion
Contributors
------------
- `AKRETION <https://akretion.com/pt-BR/>`__:
- Raphaël Valyi <raphael.valyi@akretion.com.br>
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-rvalyi| image:: https://github.com/rvalyi.png?size=40px
:target: https://github.com/rvalyi
:alt: rvalyi
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-rvalyi|
This module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_sped_base>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Raw data
{
"_id": null,
"home_page": "https://github.com/OCA/l10n-brazil",
"name": "odoo-addon-l10n-br-sped-base",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Akretion, Odoo Community Association (OCA)",
"author_email": "support@odoo-community.org",
"download_url": null,
"platform": null,
"description": ".. image:: https://odoo-community.org/readme-banner-image\n :target: https://odoo-community.org/get-involved?utm_source=readme\n :alt: Odoo Community Association\n\n=========\nSPED Base\n=========\n\n.. \n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n !! This file is generated by oca-gen-addon-readme !!\n !! changes will be overwritten. !!\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n !! source digest: sha256:fefb010ebb0b0d2ad18d22fb0b83c759275541a9f106cd44fcd5c6009d1fc21d\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png\n :target: https://odoo-community.org/page/development-status\n :alt: Alpha\n.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png\n :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html\n :alt: License: AGPL-3\n.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--brazil-lightgray.png?logo=github\n :target: https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_sped_base\n :alt: OCA/l10n-brazil\n.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png\n :target: https://translation.odoo-community.org/projects/l10n-brazil-16-0/l10n-brazil-16-0-l10n_br_sped_base\n :alt: Translate me on Weblate\n.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png\n :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-brazil&target_branch=16.0\n :alt: Try me on Runboat\n\n|badge1| |badge2| |badge3| |badge4| |badge5|\n\nEste m\u00f3dulo cont\u00e9m algumas abstra\u00e7\u00f5es utilizadas pelos m\u00f3dulos de SPED\n\nEle n\u00e3o faz nada sozinho, mas serve dentro dos 4 m\u00f3dulos:\n\n- l10n_br_sped_ecd\n- l10n_br_sped_efd_icms_ipi\n- l10n_br_sped_efd_pis_cofins\n- l10n_br_sped_ecf\n\nEm especial, cada registro dos m\u00f3dulos de SPED herda do objeto abstrato\nl10n_br_sped.mixin que conta com vis\u00f5es autom\u00e1ticas e metodos para\nimportar ou escrever registros dos SPED de forma recursiva.\n\nPara cada tipo de arquivo SPED, o registro de abertura 0000 herda tamb\u00e9m\ndo objeto abstrato l10n_br_sped.declaration que conta com m\u00e9todos para\npopular os registros do SPED a partir das transa\u00e7\u00f5es do Odoo entre as\ndatas DT_INI e DT_FIN e permite assim gerir os arquivos do SPED.\n\nPara gerir o SPED, basta criar uma declara\u00e7\u00e3o do SPED no menu\napropriado. Depois clicar em Puxar os Dados do Odoo. Isso vai percorrer\na arvore dos registros do SPED e para cada registro vai usar\n``_odoo_domain`` ou ``_odoo_query`` para ver se tem records Odoo para\nmapear. Caso tiver vai chamar o m\u00e9todo ``_map_from_odoo`` do registro.\nDepois vai repetir a opera\u00e7\u00e3o com os registros filhos. Na declara\u00e7\u00e3o \u00e9\nposs\u00edvel escolher se voc\u00ea quer um \u00fanico arquivo SPED ou se voc\u00ea quer\nquebrar o arquivo bloco por bloco.\n\nEm cada m\u00f3dulo de SPED, existe 2 arquivos principais:\n\n- um arquivo com o n\u00famero do leiaute que cont\u00e9m **os modelos abstratos\n de todos os registros do SPED com todos os campos**. Este arquivo \u00e9\n gerido gerido pela ferramenta\n `spedextractor <https://github.com/akretion/sped-extractor>`__ a\n partir dos pdf das especifica\u00e7\u00f5es e **n\u00e3o deve ser editado\n manualmente**.\n- um segundo arquivo que cont\u00e9m a **lista de todos registros concretos**\n que herdam desses primeiros modelos abstratos e cont\u00e9m assim todos os\n campos. Como o mixin de cada registro cont\u00e9m a vers\u00e3o do leiaute\n dentro do nome dele, temos uma forma de suportar v\u00e1rias\u00a0vers\u00f5es dos\n leiautes. Esse arquivo dos registros concretos deve sim ser editado\n manualmente para completar os mappings. Para mapear um registro, deve\n se implementar o override desses 3 m\u00e9todos:\n\n - ``def _odoo_domain(self, parent_record, declaration):`` deve\n retornar um domain que permite a sele\u00e7\u00e3o dos records Odoo a serem\n mapeados de acordo com o record parente e os dados da declara\u00e7\u00e3o\n (onde tem as datas e a empresa por exemplo). Para usar esse m\u00e9todo\n ``_odoo_domain``, deve se definir tamb\u00e9m o atributo ``_odoo_model``\n - ``def _odoo_query(self, parent_record, declaration):`` caso a\n sele\u00e7\u00e3o dos records a serem mapeados n\u00e3o pode ser obtida por um\n domain, pode ser implementado esse override para retornar a query\n SQL para selecionar um result set a mapear. Neste caso, o record do\n m\u00e9todo ``_map_from_odoo`` \u00e9 um result set do query Postgres. Se voc\u00ea\n n\u00e3o implementar nem ``_odoo_domain`` nem ``_odoo_query`` e\n implementar o m\u00e9todo ``_map_from_odoo``, o registro vai ter uma\n inst\u00e2ncia gerida para cada declara\u00e7\u00e3o. \u00c9 o caso do registro I010 da\n ECD por exemplo.\n - ``_map_from_odoo(self, record, parent_record, declaration, index=0)``\n para facilitar, os overrides dos metodos ``_map_from_odoo`` de todos\n os registros, esse j\u00e1 vem geridos de forma comentada com todos os\n campos do registro. Assim basta descomentar or m\u00e9todo e implementar\n como \u00e9 mapeado cada campo a partir do record, parent_record e dos\n dados da declara\u00e7\u00e3o.\n\n.. IMPORTANT::\n This is an alpha version, the data model and design can change at any time without warning.\n Only for development or testing purpose, do not use in production.\n `More details on development status <https://odoo-community.org/page/development-status>`_\n\n**Table of contents**\n\n.. contents::\n :local:\n\nBug Tracker\n===========\n\nBugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-brazil/issues>`_.\nIn case of trouble, please check there if your issue has already been reported.\nIf you spotted it first, help us to smash it by providing a detailed and welcomed\n`feedback <https://github.com/OCA/l10n-brazil/issues/new?body=module:%20l10n_br_sped_base%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.\n\nDo not contact contributors directly about support or help with technical issues.\n\nCredits\n=======\n\nAuthors\n-------\n\n* Akretion\n\nContributors\n------------\n\n- `AKRETION <https://akretion.com/pt-BR/>`__:\n\n - Rapha\u00ebl Valyi <raphael.valyi@akretion.com.br>\n\nMaintainers\n-----------\n\nThis module is maintained by the OCA.\n\n.. image:: https://odoo-community.org/logo.png\n :alt: Odoo Community Association\n :target: https://odoo-community.org\n\nOCA, or the Odoo Community Association, is a nonprofit organization whose\nmission is to support the collaborative development of Odoo features and\npromote its widespread use.\n\n.. |maintainer-rvalyi| image:: https://github.com/rvalyi.png?size=40px\n :target: https://github.com/rvalyi\n :alt: rvalyi\n\nCurrent `maintainer <https://odoo-community.org/page/maintainer-role>`__:\n\n|maintainer-rvalyi| \n\nThis module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_sped_base>`_ project on GitHub.\n\nYou are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.\n",
"bugtrack_url": null,
"license": "AGPL-3",
"summary": "Framework abstrato pro SPED",
"version": "16.0.1.0.1",
"project_urls": {
"Homepage": "https://github.com/OCA/l10n-brazil"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3e092ef5f7927f5f8bc4e5bb408e9609ff443945983a6afcc2402bc54dc31ce2",
"md5": "3255bada8ee8b5e41c53c217d60bd8d5",
"sha256": "f302fcd76083f59d99efefc6434cd149c14c0a85bdd97347b91c129f9a66bf1f"
},
"downloads": -1,
"filename": "odoo_addon_l10n_br_sped_base-16.0.1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3255bada8ee8b5e41c53c217d60bd8d5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 67732,
"upload_time": "2025-07-21T18:31:19",
"upload_time_iso_8601": "2025-07-21T18:31:19.756813Z",
"url": "https://files.pythonhosted.org/packages/3e/09/2ef5f7927f5f8bc4e5bb408e9609ff443945983a6afcc2402bc54dc31ce2/odoo_addon_l10n_br_sped_base-16.0.1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-21 18:31:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "OCA",
"github_project": "l10n-brazil",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [
{
"name": "brazilcep",
"specs": []
},
{
"name": "brazilfiscalreport",
"specs": []
},
{
"name": "email-validator",
"specs": []
},
{
"name": "erpbrasil.assinatura",
"specs": [
[
">=",
"1.7.0"
]
]
},
{
"name": "erpbrasil.base",
"specs": [
[
">=",
"2.3.0"
]
]
},
{
"name": "erpbrasil.edoc",
"specs": [
[
">=",
"2.5.2"
]
]
},
{
"name": "erpbrasil.transmissao",
"specs": [
[
">=",
"1.1.0"
]
]
},
{
"name": "nfelib",
"specs": [
[
"<=",
"2.0.7"
]
]
},
{
"name": "num2words",
"specs": []
},
{
"name": "phonenumbers",
"specs": []
},
{
"name": "pyyaml",
"specs": []
},
{
"name": "unidecode",
"specs": []
},
{
"name": "workalendar",
"specs": []
}
],
"lcname": "odoo-addon-l10n-br-sped-base"
}