跳转到主要内容

巴西税务模块/税务引擎

项目描述

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

image

税务分类

首先,此模块引入了各种产品、合作伙伴或公司的税务登记。在开具发票如NF-e、NFS-e等文档时,即使是简化制度或MEI的企业也需要这些登记。正常制度的企业需要它们来计算税收或开具税务文档。

产品

  • 税务类型

  • NCM(与税收相关联)

  • 税务分类

  • CEST

  • NBM

  • NBS

  • 服务类型

  • 税务单位

合作伙伴

  • CNAE

  • 税务档案

税务文档概念

Odoo原版没有税务文档的概念。最相似的概念可能是account.move,直到10.0版本,本地化扩展了发票以支持NF-e和NFS-e。在那个时代,在Odoo中考虑SPED并不合理,因为Odoo的核心还没有成熟到那个程度,所以只支持NFe在Odoo发票中的案例是合理的。

然而,在v12中,我们使XML/SOAP框架成熟,使其能够支持多种税务文档(NF-e、NFS-e、MDF-e、CT-e、EFD-Reinf、e-Social、GNRE、BP-e...)在Odoo中达到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到v10.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对象中,并实现逻辑,例如用于传输的向导。

传输使用传输库如erpbrasil.doc(基于Python Zeep)进行。重要:在NFS-e的情况下,由于目前缺乏国家标准和国家NFe模型(与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的发票及其行将自动获取所有税务字段,就像它们属于各自的表一样,而不会在数据库中重复。除此之外,如果我们向发票和发票行中注入了10n_br_fiscal.document.mixin10n_br_fiscal.document.line.mixin混入,这些税务字段也会出现在account_moveaccount_move_line表中,与通过_inherits获取的字段重复。为了避免这个问题,我们在混入中提取了常见的税务方法(不含字段):10n_br_fiscal.document.mixin.methods10n_br_fiscal.document.line.mixin.methods,这些方法分别注入到模块l10n_br_account中的account_moveaccount_move_line对象中。

巴西税种

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

  • 简易征收系统中的ICMS

  • 常规征收系统中的ICMS

  • IPI

  • PIS

  • COFINS

  • ISSQN

  • IRPJ

  • II

  • CSLL

  • INSS

l10n_br_fiscal模块还处理

  • ST

  • 扣税

image1

image2

显然,巴西的税务计算非常特别且复杂。这通常也是为什么国际ERP系统在巴西市场份额较小的原因。

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

因此,在此模块中,我们创建了代表巴西税务运作的税率模型。除了计算外,这些模型还用于加载税务表。此外,在模块l10n_br_account中,我们将原生account.tax对象与巴西税率的税率相连接。

当然,这些税务模型适用于常规征收系统的公司,但值得一提的是,即使是简易征收系统的公司也需要这些模型来执行ST(税替)操作...

税务操作

image3

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

  • 在巴西,每个税务单据行都有一个税务操作

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

  • 由于我们在模块l10n_br_fiscal中从模块account外部拉取了税务登记(不依赖于它),因此在这个模块中还没有account.fiscal.position对象。

总之,我们决定创建一个l10n_br_fiscal.operation对象,它恰好满足巴西的需求。在模块l10n_br_account中,稍后我们将实现Odoo的税务位置与该税务操作之间的集成。

目录

安装

要安装l10n_br_fiscal模块,您需要先安装Python包

  • erpbrasil.base

  • erpbrasil.assinatura

配置

为了良好的税务配置,您需要仔细检查

  • 在设置中:您将使用的税务操作、税务操作行和这些行上的税率定义。

  • 您的公司税务配置(税务选项卡)

  • 客户和供应商的税务配置(税务选项卡)以及产品(税务选项卡)。

使用

您可以直接通过税务菜单创建税务文件,但最初您将通过Odoo发票,使用l10n_br_account、l10n_br_sale、l10n_br_purchase等附加模块来试验税务文件的创建。

已知问题/路线图

变更日志

错误跟踪器

错误在GitHub问题上进行跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的,请通过提供详细和受欢迎的反馈来帮助我们解决问题。

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

鸣谢

作者

  • Akretion

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。

当前维护者

renatonlima

此模块是GitHub上的OCA/l10n-brazil项目的一部分。

欢迎您贡献力量。要了解如何贡献,请访问https://odoo-community.org/page/Contribute

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源代码分发

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

构建分发

odoo_addon_l10n_br_fiscal-16.0.2.5.0.1-py3-none-any.whl (1.6 MB 查看哈希值)

上传时间 Python 3

由以下支持