OdooWiki OCA HUB

SPED Base

l10n_br_sped_base folder_open OCA/l10n-brazil open_in_new
Uncategorised License: AGPL-3

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

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Adds a SPED menu and a shared framework for Brazilian SPED tax/accounting files, letting users create a SPED declaration, pull the related fiscal data from Odoo, and generate the SPED text file as an attachment.

This module is a technical foundation: it does not produce a SPED file on its own, but it provides the screens and buttons used by the specific SPED modules (ECD, ECF, EFD ICMS/IPI, EFD PIS/COFINS).

It adds a new SPED menu for fiscal users and managers. In it, users create a SPED declaration with a company, a start date and an end date (defaulting to last year and next year). The declaration automatically gathers the fiscal documents of that company and period (authorized, cancelled, denied or unused), together with their partners, lines, products, fiscal operations, comments and units of measure.

On the declaration screen, buttons let users: - Pull Registers from Odoo: fills the SPED registers from Odoo data and posts a summary in the chatter. - Flush Registers: deletes the registers of the declaration. - Set to Done / Reset to Draft: locks or unlocks the declaration. - Generate SPED File: creates the text file as an attachment, optionally split by block.

A debug option pulls draft documents and a wider sample to help developers. The module also adds accountant fields (Is accountant?, CRC Code, CRC State) to the contact form. All registers carry a company, a bookkeeping currency (BRL), an imported flag and a link back to the Odoo record they came from.

Depends on

Menus it adds

SPED
Models and fields (3)
  • res.partner · extends an existing modelcrc_code (CRC Code), crc_state_id (CRC State), is_accountant (Is accountant?)
  • l10n_br_sped.mixin · new modelres_id (Record ID), reference (Odoo Reference), res_model (Odoo Model), company_id, is_imported, brl_currency_id (Bookkeeping Currency), is_generated_from_odoo
  • l10n_br_sped.declaration · new modeldebug, state, DT_FIN (End Date), DT_INI (Start Date), company_id (Company), fiscal_uom_ids, fiscal_comment_ids, fiscal_product_ids, fiscal_document_ids, split_sped_by_bloco, fiscal_operation_ids, fiscal_document_line_ids, fiscal_document_partner_ids

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 4 confirmed, 5 with no information of 9 versions.

Sources · Odoo 14.0

Confirmed on 2026-11-03 in branch 14.0 of OCA/l10n-brazil.

terminal Installation and usage

No verified information

Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.