巴西财政核心模块。
项目描述
税务分类
首先,此模块为产品、合作伙伴或公司带来了各种税务登记。在开具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.mixin 和 10n_br_fiscal.document.line.mixin 混入中实现的。因此,这些混入可以注入到其他Odoo对象中,这些对象先于税务文档,并可以存储相同类型的信息:sale.order、purchase.order、stock.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.mixin 和 10n_br_fiscal.document.line.mixin,这些税务字段也会以冗余的方式出现在 account_invoice 和 account_invoice_line 表中,与通过 _inherits 拉取的字段重复。为了避免这个问题,我们在 mixin 中还提取了常用的税务方法(不含字段):10n_br_fiscal.document.mixin.methods 和 10n_br_fiscal.document.line.mixin.methods,这些方法分别注入到模块 l10n_br_account 中的 account_invoice 和 account_invoice_line 对象中。
巴西税收
l10n_br_fiscal 模块处理巴西的主要税收,如
简易国家 ICMS
普通 ICMS
IPI
PIS
COFINS
ISSQN
IRPJ
II
CSLL
INSS
l10n_br_fiscal 模块还处理
ST
扣款
显然,巴西的税收计算非常特殊且繁琐。这通常是国际 ERP 系统在巴西市场占比较小的原因。
在 10.0 版本之前,我们尝试使用和扩展 Odoo 的 account.tax 对象。Akretion 甚至创建了 OCA/account-fiscal-rule 项目,以根据税收操作的参数确定每个税收的税率。然而,我们几乎未使用原生的 account.fiscal.position 部分进行税务处理,相反,这迫使我们为每个税率创建一个 account.tax 记录,并迫使我们维护数百个税率和数十万个规则来选择 Odoo 应应用的正确“税务位置”。而且,您还需要管理这些数十万个规则以适应特定公司的普通制度。结论:在小型项目中尝试适应 Odoo 的逻辑来计算巴西税收是不可行的。
因此,在这个模块中,我们创建了代表巴西税收功能的税率模型。除了计算外,这些模型还帮助我们加载税收表。此外,在 l10n_br_account 模块中,我们将原生的 account.tax 对象与巴西税收的税率相连接。
当然,这些税收模型适用于普通制度的公司,但值得一提的是,即使是简易制度的公司也必须使用这些模型来执行 ST(税收替代)操作...
税收操作
在 Odoo 原生中,与税收操作最相似的概念是 “account.fiscal.position”。直到 10.0 版本,我们一直在使用它。然而,Odoo 的税务位置无法很好地解决我们的问题,因为
在巴西,每个税务文件行都有一个税务操作
Odoo 的税务位置不了解巴西税收参数的逻辑
由于我们在 l10n_br_fiscal 模块中(而不是 account 模块)外拉取了税务登记,因此在此模块中还没有 account.fiscal.position 对象。
因此,我们选择创建一个 l10n_br_fiscal.operation 对象,它正好符合我们在巴西所需的操作。在 l10n_br_account 模块中,我们稍后会进行税务位置和税收操作之间的集成。
目录
安装
要安装此模块,您需要
执行此操作...
配置
要配置此模块,您需要
转到...
使用
要使用此模块,您需要
转到...
已知问题/路线图
待办事项!
错误跟踪器
错误将在GitHub Issues上跟踪。如果在那里找不到您的问题报告,请检查一下。如果您是第一个发现它的人,请提供详细且受欢迎的反馈来帮助我们将其解决。
请不要直接联系贡献者寻求支持或帮助解决技术问题。
致谢
贡献者
Renato Lima <renato.lima@akretion.com.br>
Raphaël Valyi <raphael.valyi@akretion.com.br>
Magno Costa <magno.costa@akretion.com.br>
Luis Felipe Mileo <mileo@kmee.com.br>
Marcel Savegnago <marcel.savegnago@escodoo.com.br>
Luis Otavio Malta Conceição <luis.malta@kmee.com.br>
维护者
本模块由OCA维护。
OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo特性的协作开发并推广其广泛应用。
当前维护者
本模块是GitHub上的OCA/l10n-brazil项目的组成部分。
欢迎您贡献力量。了解更多信息,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo12_addon_l10n_br_fiscal-12.0.35.7.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae8c0302cbd85aed9a826bd030c482840af7e22ea7c28ac91df8f84c3730ddd6 |
|
MD5 | bb3a06958841d8b7ef570289a3d65044 |
|
BLAKE2b-256 | 0b3a7f36ed9694787dffb3ef6706543e8a5786ba2cb6e89751d83b6a81168e29 |