巴西税务模块/税务引擎
项目描述
税务分类
首先,此模块引入了各种产品、合作伙伴或公司的税务登记。在开具发票如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.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的发票及其行将自动获取所有税务字段,就像它们属于各自的表一样,而不会在数据库中重复。除此之外,如果我们向发票和发票行中注入了10n_br_fiscal.document.mixin和10n_br_fiscal.document.line.mixin混入,这些税务字段也会出现在account_move和account_move_line表中,与通过_inherits获取的字段重复。为了避免这个问题,我们在混入中提取了常见的税务方法(不含字段):10n_br_fiscal.document.mixin.methods和10n_br_fiscal.document.line.mixin.methods,这些方法分别注入到模块l10n_br_account中的account_move和account_move_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中,稍后我们将实现Odoo的税务位置与该税务操作之间的集成。
目录
安装
要安装l10n_br_fiscal模块,您需要先安装Python包
erpbrasil.base
erpbrasil.assinatura
配置
为了良好的税务配置,您需要仔细检查
在设置中:您将使用的税务操作、税务操作行和这些行上的税率定义。
您的公司税务配置(税务选项卡)
客户和供应商的税务配置(税务选项卡)以及产品(税务选项卡)。
使用
您可以直接通过税务菜单创建税务文件,但最初您将通过Odoo发票,使用l10n_br_account、l10n_br_sale、l10n_br_purchase等附加模块来试验税务文件的创建。
已知问题/路线图
变更日志
错误跟踪器
错误在GitHub问题上进行跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的,请通过提供详细和受欢迎的反馈来帮助我们解决问题。
请不要直接联系贡献者以寻求支持或技术问题帮助。
鸣谢
贡献者
-
Renato Lima <renato.lima@akretion.com.br>
Raphaël Valyi <raphael.valyi@akretion.com.br>
Magno Costa <magno.costa@akretion.com.br>
KMEE:
Luis Felipe Mileo <mileo@kmee.com.br>
Luis Otavio Malta Conceição <luis.malta@kmee.com.br>
-
Marcel Savegnago <marcel.savegnago@escodoo.com.br>
-
Antônio S. Pereira Neto <neto@engenere.one>
Felipe Motter Pereira <felipe@engenere.one>
维护者
此模块由OCA维护。
OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。
当前维护者
此模块是GitHub上的OCA/l10n-brazil项目的一部分。
欢迎您贡献力量。要了解如何贡献,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo_addon_l10n_br_fiscal-16.0.2.5.0.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 40f17369389081ff40634f92070a9e1c1f25a2ab4cf001f644c3c4b46c8ff09d |
|
MD5 | bf8328b5d9dbab1bd7d5f6039fabf34d |
|
BLAKE2b-256 | a3641bedd43d3a9752bb2e148527d441a23790528088537de5e7a6c83a6ab779 |