跳转到主要内容

巴西根级税务模块

项目描述

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

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

税务分类

首先,此模块引入了各种税务产品、合作伙伴或企业的登记。在发出诸如NF-e、NFS-e等税务文件时,即使是简化制度或MEI的企业也需要这些登记。而正常制度的企业需要这些登记来计算税费或发出税务文件。

产品
  • 税务类型

  • NCM(与税费有关联)

  • 税务类别

  • CEST

  • NBM

  • NBS

  • 服务类型

  • 税务单位

合作伙伴
  • CNAE

  • 税务概要

税务文件概念

Odoo原生没有税务文件概念。最相似的概念可能是account.move,甚至在10.0版本之前,位置扩展了发票以仅支持NF-e和NFS-e。在那个时代,您考虑在Odoo中做SPED是不合理的,因为Odoo的核心尚未成熟,因此当时仅支持Odoo发票中的NFe案例是合理的。

然而,在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”变得很有趣,以支持所有税务文档,即使是以模块化的方式。在“account”模块之外拥有税务文档概念的另一个原因是,当您分析此模块l10n_br_fiscal的代码时,其中大部分几乎无法通过Odoo的“account”模块来完成。因此,拥有不依赖于“account”模块的“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相比)的简单性,因此决定不使用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 拉取的字段重复。为了避免这个问题,将带有字段的基本税务方法从混合中提取出来:在模块 l10n_br_account 中分别注入到对象 account_moveaccount_move_line 中的 10n_br_fiscal.document.mixin.methods10n_br_fiscal.document.line.mixin.methods

巴西税务

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

  • 简单国家 ICMS

  • 常规 ICMS

  • IPI

  • PIS

  • COFINS

  • ISSQN

  • IRPJ

  • II

  • CSLL

  • INSS

l10n_br_fiscal 模块还处理

  • ST

  • 扣款

https://raw.githubusercontent.com/OCA/l10n-brazil/14.0/l10n_br_fiscal/static/img/fiscal_line.png https://raw.githubusercontent.com/OCA/l10n-brazil/14.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/14.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 中,我们实现了 Odoo 税务位置与该税务操作之间的集成。

目录

安装

要安装 l10n_br_fiscal 模块,您需要先安装以下 Python 软件包

  • erpbrasil.base

  • erpbrasil.assinatura

配置

为了良好的税务配置,您必须仔细审查

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

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

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

使用

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

错误追踪

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

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

致谢

作者

  • Akretion

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

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

当前维护者

renatonlima

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

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

项目详细信息


发布历史 发布通知 | RSS源

下载文件

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

源代码发行版

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

构建发行版

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面