跳转到主要内容

巴西财政核心模块。

项目描述

Production/Stable License: AGPL-3 OCA/l10n-brazil Translate me on Weblate Try me on Runboat

https://raw.githubusercontent.com/OCA/l10n-brazil/12.0/l10n_br_fiscal/static/img/fiscal_dashboard.png

税务分类

首先,此模块为产品、合作伙伴或公司带来了各种税务登记。在开具NF-e、NFS-e等税务文件时,即使是简易计税制度或个体工商户也需要这些登记。而正常纳税企业的税务计算或税务文件开具也需要它们。

产品
  • 税务类型

  • NCM(与税务相关联)

  • 税务分类

  • CEST

  • NBM

  • NBS

  • 服务类型

  • 税务单位

合作伙伴
  • CNAE

  • 税务概况

税务文件概念

Odoo原生没有税务文件的概念。最相似的概念可能是account.invoice,甚至到10.0版本,本地化扩展了invoice以仅支持NF-e和NFS-e。在那个时代,在Odoo中考虑SPED是不合理的,因为Odoo核心本身还没有达到那个成熟度,因此当时的方法是经验性地在Odoo的invoice中支持更多的NFe案例。

然而,在v12中,我们使XML/SOAP框架更加成熟,使其在Odoo内部支持多种税务文件(NF-e、NFS-e、MDF-e、CT-e、EFD-Reinf、e-Social、GNRE、BP-e...)成为可能,具有OCA的质量。此外,尽管复杂,Odoo核心最终也足够支持进行SPED操作的企业。

因此,拥有独立于Odoo发票的 l10n_br_fiscal.document 文档概念变得很有趣,以便以模块化的方式支持所有税务文档。在会计模块之外拥有税务文档概念的另一个原因是,当您分析 l10n_br_fiscal 模块的代码时,几乎没有内容可以通过Odoo的会计模块来实现。因此,拥有不依赖于会计模块的 l10n_br_fiscal 模块也是一种模块化本地化的方式,这有助于简化其维护,尤其是在需要迁移时,模块可能发生了很大的变化,例如从v8.0到v9.0或从v12.0到v13.0。这也有助于项目的治理,使得人们可以负责不同的部分。模块 l10n_br_fiscal 主要是从v7.0到v.10.0的 l10n_br_l10n_br_account_product 模块中提取出来的。

该模块 l10n_br_fiscal 对任何XML或SOAP技术都是中立的。它仅包含税务文档之间的共同点,但后者是在其他模块中实现的。对于特定税务文档,例如Nf-e,例如:

  • nfelib:一个纯Python数据绑定包(不依赖于Odoo)。通常,我们使用代码生成器从农场的XSD方案生成这些绑定。

  • l10n_br_nfe_spec:一个Odoo混入模块,也由XSD管理。这些混入只是规范在注入到现有Odoo对象(如res.partner或l10n_br_fiscal.document)之前或成为具体对象的结构数据(如果Odoo或OCA中不存在这些对象)。

  • l10n_br_nfe:一个Odoo模块,用于将这些税务映射注入到Odoo对象中,并实现逻辑,例如用于传输的向导。

传输是通过传输库(如基于Python Zeep的 erpbrasil.doc)实现的。重要提示:在NFS-e的情况下,由于目前缺乏国家标准以及与NFe相比模型简单,因此决定不使用Odoo管理的税务混入模块,映射是通过绑定库手动完成的,按NFS-e家族进行。

此外,大多数 l10n_br_fiscal.document 和其 l10n_br_fiscal.document.line 的代码实际上是在 10n_br_fiscal.document.mixin10n_br_fiscal.document.line.mixin 混入中实现的。因此,这些混入可以注入到其他Odoo对象中,这些对象先于税务文档,并可以存储相同类型的信息:sale.orderpurchase.orderstock.picking等。这在扩展此模块的模块中非常明显。

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

然而,在 l10n_br_account 模块中Odoo发票的情况仍然不同。因为已经有一个独立于税务文档的表,其中大多数数十个甚至数百个税务字段(在许多税务文档类型的情况下)与Odoo发票中的字段不重复。如果我们将这些混入注入到发票中,那么这些数百个字段将在发票和税务文档之间重复。因此,在 l10n_br_account 模块中采用的方法是,Odoo发票现在具有一个 _inherits = "l10n_br_fiscal.document",这样就可以通过发票来控制税务文档,提供与之前相同类型的集成。同样的机制也发生在税务文档行上。

因此,通过 _inherits,Odoo 的发票及其行将自动拉取所有税务字段,就像它们属于各自的表一样,而不会在数据库中重复它们。除此之外,如果我们向 invoice 和 invoice.line 注入 mixin 10n_br_fiscal.document.mixin10n_br_fiscal.document.line.mixin,这些税务字段也会以冗余的方式出现在 account_invoiceaccount_invoice_line 表中,与通过 _inherits 拉取的字段重复。为了避免这个问题,我们在 mixin 中还提取了常用的税务方法(不含字段):10n_br_fiscal.document.mixin.methods10n_br_fiscal.document.line.mixin.methods,这些方法分别注入到模块 l10n_br_account 中的 account_invoiceaccount_invoice_line 对象中。

巴西税收

l10n_br_fiscal 模块处理巴西的主要税收,如

  • 简易国家 ICMS

  • 普通 ICMS

  • IPI

  • PIS

  • COFINS

  • ISSQN

  • IRPJ

  • II

  • CSLL

  • INSS

l10n_br_fiscal 模块还处理

  • ST

  • 扣款

https://raw.githubusercontent.com/OCA/l10n-brazil/12.0/l10n_br_fiscal/static/img/fiscal_line.png https://raw.githubusercontent.com/OCA/l10n-brazil/12.0/l10n_br_fiscal/static/img/fiscal_total.png

显然,巴西的税收计算非常特殊且繁琐。这通常是国际 ERP 系统在巴西市场占比较小的原因。

在 10.0 版本之前,我们尝试使用和扩展 Odoo 的 account.tax 对象。Akretion 甚至创建了 OCA/account-fiscal-rule 项目,以根据税收操作的参数确定每个税收的税率。然而,我们几乎未使用原生的 account.fiscal.position 部分进行税务处理,相反,这迫使我们为每个税率创建一个 account.tax 记录,并迫使我们维护数百个税率和数十万个规则来选择 Odoo 应应用的正确“税务位置”。而且,您还需要管理这些数十万个规则以适应特定公司的普通制度。结论:在小型项目中尝试适应 Odoo 的逻辑来计算巴西税收是不可行的。

因此,在这个模块中,我们创建了代表巴西税收功能的税率模型。除了计算外,这些模型还帮助我们加载税收表。此外,在 l10n_br_account 模块中,我们将原生的 account.tax 对象与巴西税收的税率相连接。

当然,这些税收模型适用于普通制度的公司,但值得一提的是,即使是简易制度的公司也必须使用这些模型来执行 ST(税收替代)操作...

税收操作

https://raw.githubusercontent.com/OCA/l10n-brazil/12.0/l10n_br_fiscal/static/img/fiscal_operation.png

在 Odoo 原生中,与税收操作最相似的概念是 “account.fiscal.position”。直到 10.0 版本,我们一直在使用它。然而,Odoo 的税务位置无法很好地解决我们的问题,因为

  • 在巴西,每个税务文件行都有一个税务操作

  • Odoo 的税务位置不了解巴西税收参数的逻辑

  • 由于我们在 l10n_br_fiscal 模块中(而不是 account 模块)外拉取了税务登记,因此在此模块中还没有 account.fiscal.position 对象。

因此,我们选择创建一个 l10n_br_fiscal.operation 对象,它正好符合我们在巴西所需的操作。在 l10n_br_account 模块中,我们稍后会进行税务位置和税收操作之间的集成。

目录

安装

要安装此模块,您需要

  • 执行此操作...

配置

要配置此模块,您需要

  • 转到...

使用

要使用此模块,您需要

  • 转到...

已知问题/路线图

  • 待办事项!

错误跟踪器

错误将在GitHub Issues上跟踪。如果在那里找不到您的问题报告,请检查一下。如果您是第一个发现它的人,请提供详细且受欢迎的反馈来帮助我们将其解决。

请不要直接联系贡献者寻求支持或帮助解决技术问题。

致谢

作者

  • Akretion

贡献者

维护者

本模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo特性的协作开发并推广其广泛应用。

当前维护者

renatonlima

本模块是GitHub上的OCA/l10n-brazil项目的组成部分。

欢迎您贡献力量。了解更多信息,请访问https://odoo-community.org/page/Contribute

项目详情


发行历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅有关 生成分发存档 的教程。

构建分发

由以下机构支持