odoo-addon-l10n-br-fiscal


Nameodoo-addon-l10n-br-fiscal JSON
Version 16.0.8.0.2 PyPI version JSON
download
home_pagehttps://github.com/OCA/l10n-brazil
SummaryFiscal module/tax engine for Brazil
upload_time2025-07-09 22:37:15
maintainerNone
docs_urlNone
authorAkretion, Odoo Community Association (OCA)
requires_python>=3.10
licenseAGPL-3
keywords
VCS
bugtrack_url
requirements brazilcep brazilfiscalreport email-validator erpbrasil.assinatura erpbrasil.base erpbrasil.edoc erpbrasil.transmissao nfelib num2words phonenumbers pyyaml unidecode workalendar
Travis-CI No Travis.
coveralls test coverage
            .. image:: https://odoo-community.org/readme-banner-image
   :target: https://odoo-community.org/get-involved?utm_source=readme
   :alt: Odoo Community Association

========================
Módulo fiscal brasileiro
========================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:cf48b3dc8a30c761b96bdff67361a3a6a6f6c8ef94813acb868ad483db2c7a59
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
    :target: https://odoo-community.org/page/development-status
    :alt: Production/Stable
.. |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_fiscal
    :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_fiscal
    :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|

|image|

Classificações fiscais
----------------------

Primeramente, este módulo traz uma variedade de cadastros fiscais para
produtos, parceiros ou empresas. Na hora de emitir documentos fiscais
como NF-e, NFS-e etc... até empresas do regime simplificado ou MEI
precisam de vários desses cadastros. E empresas do regime normal
precisam deles para calcular os impostos ou emitir documentos fiscais.

Produtos:

- tipo fiscal
- NCM (com ligações com os impostos)
- genêro fiscal
- CEST
- NBM
- NBS
- tipo de serviço
- unidades fiscais

Parceiros:

- CNAE
- perfil fiscal

Conceito de documento fiscal
----------------------------

O Odoo nativo não tem o conceito de documento fiscal. O conceito mais
parecido seria o ``account.move`` e até a versão 10.0 a localização
estendia o invoice para suportar as NF-e e NFS-e apenas. Naquela época
não era razoável você cogitar fazer o SPED no Odoo, o próprio core do
Odoo não tinha maturidade para isso então era válido a abordagem
empírica de ir suportando mais casos de NFe dentro do invoice Odoo
apenas.

Porém, na v12, amadurecemos o framework XML/SOAP de forma que se torna
razoável suportar vários documentos fiscais (NF-e, NFS-e, MDF-e, CT-e,
EFD-Reinf, e-Social, GNRE, BP-e...) com a qualidade OCA dentro do Odoo.
Também, apesar de complexo, o core do Odoo finalmente tem suporte
suficiente para as operações de uma empresa que faria o SPED.

Nisso se torna interessante ter o conceito de documento fiscal
``l10n_br_fiscal.document`` independente do invoice Odoo para suportar
todos os documentos fiscais mesmo, de forma modular. Um outro motivo
para ter o conceito de documento fiscal fora do módulo account é que
quando você analisa o código deste módulo ``l10n_br_fiscal``, quase nada
dele poderia ser feito pelo módulo account do Odoo. Então ter esse
módulo l10n_br_fiscal que não depende do módulo account também é uma
forma de modularizar a localização para facilitar a manutenção dela,
especialmente quando se trata de migrar e que o módulo pode ter mudado
bastante como foi o caso entre a v8.0 e a v9.0 ou a v12.0 e v13.0 por
exemplo. Facilita também a governança do projeto possibilitando que
pessoas sejam responsáveis por diferentes partes. O módulo
l10n_br_fiscal foi principalmente extraído do módulo
l10n_br_l10n_br_account_product das v7.0 as v.10.0.

Esse módulo ``l10n_br_fiscal`` é agnóstico de qualquer tecnologia XML ou
SOAP. Ele contém apenas o que há de comum entre os documentos fiscais
mas esses últimos são implementados em outros módulos. Para um
determinado documento fiscal como a Nf-e, você tem então por exemplo:

- ``nfelib``: um pacote de data bindings puro Python (que não depende do
  Odoo). Em geral usamos um gerador de código para gerar esses bindings
  a partir dos esquemas XSD da fazenda.
- ``l10n_br_nfe_spec``: um modulo de mixins Odoo geridos também a partir
  dos XSD. Esses mixins são apenas as estruturas de dados das
  especificações antes de ser injectados em objetos Odoo existantes
  (como res.partner ou l10n_br_fiscal.document) ou até tornados
  concretos caso não exite objetos na Odoo ou na OCA para eles já.
- ``l10n_br_nfe``: um módulo Odoo que trata de injectar esses mappings
  fiscais nos objetos Odoo e que implementa a lógica como os wizards
  para a transmissão.

A transmissão é realizada usando uma lib de transmissão como
``erpbrasil.doc`` (baseada em Python Zeep). Importante: no caso da
``NFS-e``, a ausência de padrão nacional hoje e a simplicidade do modelo
(comparado com a NFe) faz que foi decidido de não usar um módulo de
mixins fiscais Odoo geridos, o mapping é com a lib de binding é feito
manualmente, família de NFS-e por família.

Alem disso a maioria do codigo do ``l10n_br_fiscal.document`` e das
linhas dele ``l10n_br_fiscal.document.line`` é na verdade feito dentro
de mixins ``10n_br_fiscal.document.mixin`` e
``10n_br_fiscal.document.line.mixin`` respectivamente. Esses mixins
podem assim ser injectados em outros objetos Odoo que precedem os
documentos fiscais e podem armazenar então o mesmo tipo de informação:
``sale.order``, ``purchase.order``, ``stock.picking``... Isso é bem
visível nos módulos que estendem esse módulo:

.. code:: text

   |-- l10n_br_fiscal
       |-- l10n_br_sale
       |-- l10n_br_purchase
       |-- l10n_br_account
       |-- ...

Porem o caso do invoice Odoo no modulo ``l10n_br_account`` é diferente
ainda. Pois já se tem a tabela independente do documento fiscal cuja
grande maioria das dezenas e até centenas de campos fiscais (no caso de
muitos tipos de documentos fiscais) não são redundante com os do invoice
Odoo. Se a gente injetasse esses mixins dentro do invoice, aí sim essas
centenas de campos seriam duplicados entre o invoice e o documento
fiscal. Por isso, o sistema que foi adotado no modulo
``l10n_br_account`` é que um invoice Odoo passa a ter um
``_inherits = "l10n_br_fiscal.document"`` de forma que se pilota o
documento fiscal através do invoice, oferecendo o mesmo tipo de
integração como antes. O mesmo tipo de mecanismo acontece com a linha do
documento fiscal.

Sendo assim, já pelos \_inherits, o invoice Odoo e as linhas dele já vão
puxar todos campos fiscais como se eles fossem das suas respectivas
tabelas sem duplicar eles no banco. Se alem disso a gente injetasse os
mixins ``10n_br_fiscal.document.mixin`` e
``10n_br_fiscal.document.line.mixin`` no invoice e invoice.line, esses
campos fiscais apareceriam também nas tabelas ``account_move`` e
``account_move_line`` de forma redundantes com os campos puxados pelos
\_inherits. Para não ter esse problema, os métodos fiscais comuns (sem
os campos) foram ainda extraidos nos mixins:
``10n_br_fiscal.document.mixin.methods`` e
``10n_br_fiscal.document.line.mixin.methods`` que são injectados nos
objetos ``account_move`` e ``account_move_line`` respectivamente dentro
do modulo ``l10n_br_account``.

Impostos brasileiros
--------------------

O módulo l10n_br_fiscal lida com os principais impostos brasileiros
como:

- ICMS do Simples Nacional
- ICMS do Regime normal
- IPI
- PIS
- COFINS
- ISSQN
- IRPJ
- II
- CSLL
- INSS

O módulo l10n_br_fiscal também lida com:

- ST
- retenções

|image1|

|image2|

É notório que o cálculo dos impostos no Brasil é muito especial e muito
trabalhoso. Geralmente é o motivo pelo qual os ERPs internacionais não
tem grande fatia de mercado brasileiro.

Até a versão 10.0, tentamos usar e estender o objeto Odoo
``account.tax``. A Akretion até criou o projeto
``OCA/account-fiscal-rule`` para determinar as alíquotas de cada imposto
de accordo com os parâmetros da operação fiscal. Porém, a gente acabava
usando quase nada do ``account.fiscal.position`` nativo na parte fiscal
e pelo contrário, isso nos obrigava a ter um registro ``account.tax``
para cada aliquota e nos obrigava a manter centenas de taxas e dezenas
de milhares de regras para selecionar a "posição fiscal" Odoo que
aplicaria as taxas corretas. E você ainda tinha que gerir essas dezenas
de milhares de regras para uma determinada empresa do regime normal.
Conclusão: era inviável nos projetos menores de tentar se encaixa na
lógica do Odoo para calcular os impostos brasileiros.

Nisso criamos neste módulo os modelos de taxas que representam
exatamente o funcionamentos dos impostos brasileiros. Além dos cálculos,
esses modelos também nos servem a carregar as tabelas dos impostos. E
mais adiante, no módulo ``l10n_br_account``, ligamos os objetos nativos
``account.tax`` as alíquotas dos impostos brasileiros.

Claro esses modelos dos impostos atendem as empresas do regime normal,
mas é bom lembrar que até empresas do regime simplificado precisam
desses modelos para realizar as operações com ST (Substituição
Tributária)...

Operações fiscais
-----------------

   |image3|

No Odoo nativo, o conceito mais parecido com a operação fiscal e o
``account.fiscal.position``. E ate a versão 10.0, era o que a gente
usava. Porém, a posição fiscal do Odoo não resolve muito os nossos
problemas pois:

- no Brasil se tem uma operação fiscal por linha de documento fiscal
- a posição fiscal do Odoo desconhece a lógica da parametrização fiscal
  brasileira
- já que puxamos o cadastro dos impostos no módulo l10n_br_fiscal fora
  do módulo account (sem depender dele), não temos ainda o objeto
  ``account.fiscal.position`` neste módulo.

Com tudo, optamos por criar um objeto ``l10n_br_fiscal.operation`` que
faz exactamente o que precisamos para o Brasil. Mais adiante, no módulo
``l10n_br_account`` é realizado a integração entre a posição fiscal do
Odoo e essa operação fiscal.

.. |image| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_dashboard.png
.. |image1| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_line.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_total.png
.. |image3| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_operation.png

**Table of contents**

.. contents::
   :local:

Installation
============

Para instalar o módulo l10n_br_fiscal, você precisa de instalar primeiro
os pacotes Python

- erpbrasil.base
- erpbrasil.assinatura

Configuration
=============

Para uma boa configuração fiscal, você tem que revisar bem:

- em Configurações: as operaçoes fiscais que você vai usar, as linhas de
  operação fiscal e as definições das taxas nessas linhas.
- a configuração fiscal da sua empresa (aba fiscal)
- a configuração fiscal dos clientes e fornecedores (aba fiscal) e dos
  produtos (aba fiscal).

Usage
=====

Você pode criar documentos fiscais direitamente pelo menu fiscal, mas a
princípio você vai pilotar a criação de documentos fiscais a partir dos
invoices Odoo, usando módulos adicionais como l10n_br_account,
l10n_br_sale, l10n_br_purchase...

Known issues / Roadmap
======================



Changelog
=========



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_fiscal%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://www.akretion.com/pt-BR>`__:

  - Renato Lima <renato.lima@akretion.com.br>
  - Raphaël Valyi <raphael.valyi@akretion.com.br>
  - Magno Costa <magno.costa@akretion.com.br>

- `KMEE <https://www.kmee.com.br>`__:

  - Luis Felipe Mileo <mileo@kmee.com.br>
  - Luis Otavio Malta Conceição <luis.malta@kmee.com.br>

- `Escodoo <https://www.escodoo.com.br>`__:

  - Marcel Savegnago <marcel.savegnago@escodoo.com.br>

- `Engenere <https://engenere.one>`__:

  - Antônio S. Pereira Neto <neto@engenere.one>
  - Felipe Motter Pereira <felipe@engenere.one>

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-renatonlima| image:: https://github.com/renatonlima.png?size=40px
    :target: https://github.com/renatonlima
    :alt: renatonlima
.. |maintainer-rvalyi| image:: https://github.com/rvalyi.png?size=40px
    :target: https://github.com/rvalyi
    :alt: rvalyi

Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-renatonlima| |maintainer-rvalyi| 

This module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_fiscal>`_ 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-fiscal",
    "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========================\nM\u00f3dulo fiscal brasileiro\n========================\n\n.. \n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n   !! This file is generated by oca-gen-addon-readme !!\n   !! changes will be overwritten.                   !!\n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n   !! source digest: sha256:cf48b3dc8a30c761b96bdff67361a3a6a6f6c8ef94813acb868ad483db2c7a59\n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png\n    :target: https://odoo-community.org/page/development-status\n    :alt: Production/Stable\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_fiscal\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_fiscal\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\n|image|\n\nClassifica\u00e7\u00f5es fiscais\n----------------------\n\nPrimeramente, este m\u00f3dulo traz uma variedade de cadastros fiscais para\nprodutos, parceiros ou empresas. Na hora de emitir documentos fiscais\ncomo NF-e, NFS-e etc... at\u00e9 empresas do regime simplificado ou MEI\nprecisam de v\u00e1rios desses cadastros. E empresas do regime normal\nprecisam deles para calcular os impostos ou emitir documentos fiscais.\n\nProdutos:\n\n- tipo fiscal\n- NCM (com liga\u00e7\u00f5es com os impostos)\n- gen\u00earo fiscal\n- CEST\n- NBM\n- NBS\n- tipo de servi\u00e7o\n- unidades fiscais\n\nParceiros:\n\n- CNAE\n- perfil fiscal\n\nConceito de documento fiscal\n----------------------------\n\nO Odoo nativo n\u00e3o tem o conceito de documento fiscal. O conceito mais\nparecido seria o ``account.move`` e at\u00e9 a vers\u00e3o 10.0 a localiza\u00e7\u00e3o\nestendia o invoice para suportar as NF-e e NFS-e apenas. Naquela \u00e9poca\nn\u00e3o era razo\u00e1vel voc\u00ea cogitar fazer o SPED no Odoo, o pr\u00f3prio core do\nOdoo n\u00e3o tinha maturidade para isso ent\u00e3o era v\u00e1lido a abordagem\nemp\u00edrica de ir suportando mais casos de NFe dentro do invoice Odoo\napenas.\n\nPor\u00e9m, na v12, amadurecemos o framework XML/SOAP de forma que se torna\nrazo\u00e1vel suportar v\u00e1rios documentos fiscais (NF-e, NFS-e, MDF-e, CT-e,\nEFD-Reinf, e-Social, GNRE, BP-e...) com a qualidade OCA dentro do Odoo.\nTamb\u00e9m, apesar de complexo, o core do Odoo finalmente tem suporte\nsuficiente para as opera\u00e7\u00f5es de uma empresa que faria o SPED.\n\nNisso se torna interessante ter o conceito de documento fiscal\n``l10n_br_fiscal.document`` independente do invoice Odoo para suportar\ntodos os documentos fiscais mesmo, de forma modular. Um outro motivo\npara ter o conceito de documento fiscal fora do m\u00f3dulo account \u00e9 que\nquando voc\u00ea analisa o c\u00f3digo deste m\u00f3dulo ``l10n_br_fiscal``, quase nada\ndele poderia ser feito pelo m\u00f3dulo account do Odoo. Ent\u00e3o ter esse\nm\u00f3dulo l10n_br_fiscal que n\u00e3o depende do m\u00f3dulo account tamb\u00e9m \u00e9 uma\nforma de modularizar a localiza\u00e7\u00e3o para facilitar a manuten\u00e7\u00e3o dela,\nespecialmente quando se trata de migrar e que o m\u00f3dulo pode ter mudado\nbastante como foi o caso entre a v8.0 e a v9.0 ou a v12.0 e v13.0 por\nexemplo. Facilita tamb\u00e9m a governan\u00e7a do projeto possibilitando que\npessoas sejam respons\u00e1veis por diferentes partes. O m\u00f3dulo\nl10n_br_fiscal foi principalmente extra\u00eddo do m\u00f3dulo\nl10n_br_l10n_br_account_product das v7.0 as v.10.0.\n\nEsse m\u00f3dulo ``l10n_br_fiscal`` \u00e9 agn\u00f3stico de qualquer tecnologia XML ou\nSOAP. Ele cont\u00e9m apenas o que h\u00e1 de comum entre os documentos fiscais\nmas esses \u00faltimos s\u00e3o implementados em outros m\u00f3dulos. Para um\ndeterminado documento fiscal como a Nf-e, voc\u00ea tem ent\u00e3o por exemplo:\n\n- ``nfelib``: um pacote de data bindings puro Python (que n\u00e3o depende do\n  Odoo). Em geral usamos um gerador de c\u00f3digo para gerar esses bindings\n  a partir dos esquemas XSD da fazenda.\n- ``l10n_br_nfe_spec``: um modulo de mixins Odoo geridos tamb\u00e9m a partir\n  dos XSD. Esses mixins s\u00e3o apenas as estruturas de dados das\n  especifica\u00e7\u00f5es antes de ser injectados em objetos Odoo existantes\n  (como res.partner ou l10n_br_fiscal.document) ou at\u00e9 tornados\n  concretos caso n\u00e3o exite objetos na Odoo ou na OCA para eles j\u00e1.\n- ``l10n_br_nfe``: um m\u00f3dulo Odoo que trata de injectar esses mappings\n  fiscais nos objetos Odoo e que implementa a l\u00f3gica como os wizards\n  para a transmiss\u00e3o.\n\nA transmiss\u00e3o \u00e9 realizada usando uma lib de transmiss\u00e3o como\n``erpbrasil.doc`` (baseada em Python Zeep). Importante: no caso da\n``NFS-e``, a aus\u00eancia de padr\u00e3o nacional hoje e a simplicidade do modelo\n(comparado com a NFe) faz que foi decidido de n\u00e3o usar um m\u00f3dulo de\nmixins fiscais Odoo geridos, o mapping \u00e9 com a lib de binding \u00e9 feito\nmanualmente, fam\u00edlia de NFS-e por fam\u00edlia.\n\nAlem disso a maioria do codigo do ``l10n_br_fiscal.document`` e das\nlinhas dele ``l10n_br_fiscal.document.line`` \u00e9 na verdade feito dentro\nde mixins ``10n_br_fiscal.document.mixin`` e\n``10n_br_fiscal.document.line.mixin`` respectivamente. Esses mixins\npodem assim ser injectados em outros objetos Odoo que precedem os\ndocumentos fiscais e podem armazenar ent\u00e3o o mesmo tipo de informa\u00e7\u00e3o:\n``sale.order``, ``purchase.order``, ``stock.picking``... Isso \u00e9 bem\nvis\u00edvel nos m\u00f3dulos que estendem esse m\u00f3dulo:\n\n.. code:: text\n\n   |-- l10n_br_fiscal\n       |-- l10n_br_sale\n       |-- l10n_br_purchase\n       |-- l10n_br_account\n       |-- ...\n\nPorem o caso do invoice Odoo no modulo ``l10n_br_account`` \u00e9 diferente\nainda. Pois j\u00e1 se tem a tabela independente do documento fiscal cuja\ngrande maioria das dezenas e at\u00e9 centenas de campos fiscais (no caso de\nmuitos tipos de documentos fiscais) n\u00e3o s\u00e3o redundante com os do invoice\nOdoo. Se a gente injetasse esses mixins dentro do invoice, a\u00ed sim essas\ncentenas de campos seriam duplicados entre o invoice e o documento\nfiscal. Por isso, o sistema que foi adotado no modulo\n``l10n_br_account`` \u00e9 que um invoice Odoo passa a ter um\n``_inherits = \"l10n_br_fiscal.document\"`` de forma que se pilota o\ndocumento fiscal atrav\u00e9s do invoice, oferecendo o mesmo tipo de\nintegra\u00e7\u00e3o como antes. O mesmo tipo de mecanismo acontece com a linha do\ndocumento fiscal.\n\nSendo assim, j\u00e1 pelos \\_inherits, o invoice Odoo e as linhas dele j\u00e1 v\u00e3o\npuxar todos campos fiscais como se eles fossem das suas respectivas\ntabelas sem duplicar eles no banco. Se alem disso a gente injetasse os\nmixins ``10n_br_fiscal.document.mixin`` e\n``10n_br_fiscal.document.line.mixin`` no invoice e invoice.line, esses\ncampos fiscais apareceriam tamb\u00e9m nas tabelas ``account_move`` e\n``account_move_line`` de forma redundantes com os campos puxados pelos\n\\_inherits. Para n\u00e3o ter esse problema, os m\u00e9todos fiscais comuns (sem\nos campos) foram ainda extraidos nos mixins:\n``10n_br_fiscal.document.mixin.methods`` e\n``10n_br_fiscal.document.line.mixin.methods`` que s\u00e3o injectados nos\nobjetos ``account_move`` e ``account_move_line`` respectivamente dentro\ndo modulo ``l10n_br_account``.\n\nImpostos brasileiros\n--------------------\n\nO m\u00f3dulo l10n_br_fiscal lida com os principais impostos brasileiros\ncomo:\n\n- ICMS do Simples Nacional\n- ICMS do Regime normal\n- IPI\n- PIS\n- COFINS\n- ISSQN\n- IRPJ\n- II\n- CSLL\n- INSS\n\nO m\u00f3dulo l10n_br_fiscal tamb\u00e9m lida com:\n\n- ST\n- reten\u00e7\u00f5es\n\n|image1|\n\n|image2|\n\n\u00c9 not\u00f3rio que o c\u00e1lculo dos impostos no Brasil \u00e9 muito especial e muito\ntrabalhoso. Geralmente \u00e9 o motivo pelo qual os ERPs internacionais n\u00e3o\ntem grande fatia de mercado brasileiro.\n\nAt\u00e9 a vers\u00e3o 10.0, tentamos usar e estender o objeto Odoo\n``account.tax``. A Akretion at\u00e9 criou o projeto\n``OCA/account-fiscal-rule`` para determinar as al\u00edquotas de cada imposto\nde accordo com os par\u00e2metros da opera\u00e7\u00e3o fiscal. Por\u00e9m, a gente acabava\nusando quase nada do ``account.fiscal.position`` nativo na parte fiscal\ne pelo contr\u00e1rio, isso nos obrigava a ter um registro ``account.tax``\npara cada aliquota e nos obrigava a manter centenas de taxas e dezenas\nde milhares de regras para selecionar a \"posi\u00e7\u00e3o fiscal\" Odoo que\naplicaria as taxas corretas. E voc\u00ea ainda tinha que gerir essas dezenas\nde milhares de regras para uma determinada empresa do regime normal.\nConclus\u00e3o: era invi\u00e1vel nos projetos menores de tentar se encaixa na\nl\u00f3gica do Odoo para calcular os impostos brasileiros.\n\nNisso criamos neste m\u00f3dulo os modelos de taxas que representam\nexatamente o funcionamentos dos impostos brasileiros. Al\u00e9m dos c\u00e1lculos,\nesses modelos tamb\u00e9m nos servem a carregar as tabelas dos impostos. E\nmais adiante, no m\u00f3dulo ``l10n_br_account``, ligamos os objetos nativos\n``account.tax`` as al\u00edquotas dos impostos brasileiros.\n\nClaro esses modelos dos impostos atendem as empresas do regime normal,\nmas \u00e9 bom lembrar que at\u00e9 empresas do regime simplificado precisam\ndesses modelos para realizar as opera\u00e7\u00f5es com ST (Substitui\u00e7\u00e3o\nTribut\u00e1ria)...\n\nOpera\u00e7\u00f5es fiscais\n-----------------\n\n   |image3|\n\nNo Odoo nativo, o conceito mais parecido com a opera\u00e7\u00e3o fiscal e o\n``account.fiscal.position``. E ate a vers\u00e3o 10.0, era o que a gente\nusava. Por\u00e9m, a posi\u00e7\u00e3o fiscal do Odoo n\u00e3o resolve muito os nossos\nproblemas pois:\n\n- no Brasil se tem uma opera\u00e7\u00e3o fiscal por linha de documento fiscal\n- a posi\u00e7\u00e3o fiscal do Odoo desconhece a l\u00f3gica da parametriza\u00e7\u00e3o fiscal\n  brasileira\n- j\u00e1 que puxamos o cadastro dos impostos no m\u00f3dulo l10n_br_fiscal fora\n  do m\u00f3dulo account (sem depender dele), n\u00e3o temos ainda o objeto\n  ``account.fiscal.position`` neste m\u00f3dulo.\n\nCom tudo, optamos por criar um objeto ``l10n_br_fiscal.operation`` que\nfaz exactamente o que precisamos para o Brasil. Mais adiante, no m\u00f3dulo\n``l10n_br_account`` \u00e9 realizado a integra\u00e7\u00e3o entre a posi\u00e7\u00e3o fiscal do\nOdoo e essa opera\u00e7\u00e3o fiscal.\n\n.. |image| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_dashboard.png\n.. |image1| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_line.png\n.. |image2| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_total.png\n.. |image3| image:: https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_operation.png\n\n**Table of contents**\n\n.. contents::\n   :local:\n\nInstallation\n============\n\nPara instalar o m\u00f3dulo l10n_br_fiscal, voc\u00ea precisa de instalar primeiro\nos pacotes Python\n\n- erpbrasil.base\n- erpbrasil.assinatura\n\nConfiguration\n=============\n\nPara uma boa configura\u00e7\u00e3o fiscal, voc\u00ea tem que revisar bem:\n\n- em Configura\u00e7\u00f5es: as opera\u00e7oes fiscais que voc\u00ea vai usar, as linhas de\n  opera\u00e7\u00e3o fiscal e as defini\u00e7\u00f5es das taxas nessas linhas.\n- a configura\u00e7\u00e3o fiscal da sua empresa (aba fiscal)\n- a configura\u00e7\u00e3o fiscal dos clientes e fornecedores (aba fiscal) e dos\n  produtos (aba fiscal).\n\nUsage\n=====\n\nVoc\u00ea pode criar documentos fiscais direitamente pelo menu fiscal, mas a\nprinc\u00edpio voc\u00ea vai pilotar a cria\u00e7\u00e3o de documentos fiscais a partir dos\ninvoices Odoo, usando m\u00f3dulos adicionais como l10n_br_account,\nl10n_br_sale, l10n_br_purchase...\n\nKnown issues / Roadmap\n======================\n\n\n\nChangelog\n=========\n\n\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_fiscal%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://www.akretion.com/pt-BR>`__:\n\n  - Renato Lima <renato.lima@akretion.com.br>\n  - Rapha\u00ebl Valyi <raphael.valyi@akretion.com.br>\n  - Magno Costa <magno.costa@akretion.com.br>\n\n- `KMEE <https://www.kmee.com.br>`__:\n\n  - Luis Felipe Mileo <mileo@kmee.com.br>\n  - Luis Otavio Malta Concei\u00e7\u00e3o <luis.malta@kmee.com.br>\n\n- `Escodoo <https://www.escodoo.com.br>`__:\n\n  - Marcel Savegnago <marcel.savegnago@escodoo.com.br>\n\n- `Engenere <https://engenere.one>`__:\n\n  - Ant\u00f4nio S. Pereira Neto <neto@engenere.one>\n  - Felipe Motter Pereira <felipe@engenere.one>\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-renatonlima| image:: https://github.com/renatonlima.png?size=40px\n    :target: https://github.com/renatonlima\n    :alt: renatonlima\n.. |maintainer-rvalyi| image:: https://github.com/rvalyi.png?size=40px\n    :target: https://github.com/rvalyi\n    :alt: rvalyi\n\nCurrent `maintainers <https://odoo-community.org/page/maintainer-role>`__:\n\n|maintainer-renatonlima| |maintainer-rvalyi| \n\nThis module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_fiscal>`_ 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": "Fiscal module/tax engine for Brazil",
    "version": "16.0.8.0.2",
    "project_urls": {
        "Homepage": "https://github.com/OCA/l10n-brazil"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "31cca72459aab1859f4f8e3c3c767479751bedb5857fe405df97b79bdad2d583",
                "md5": "493acc6bfe5a73019b9fb600af5e8b56",
                "sha256": "53bdd8f94d3175f77db6a4c68d5ae5bda5c069727938060ca3c10391a4bb7b2d"
            },
            "downloads": -1,
            "filename": "odoo_addon_l10n_br_fiscal-16.0.8.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "493acc6bfe5a73019b9fb600af5e8b56",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 1555529,
            "upload_time": "2025-07-09T22:37:15",
            "upload_time_iso_8601": "2025-07-09T22:37:15.881979Z",
            "url": "https://files.pythonhosted.org/packages/31/cc/a72459aab1859f4f8e3c3c767479751bedb5857fe405df97b79bdad2d583/odoo_addon_l10n_br_fiscal-16.0.8.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-09 22:37:15",
    "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-fiscal"
}
        
Elapsed time: 0.75311s