会计本地化

警告

本教程需要了解如何在 Odoo 中构建模块(参见 服务器框架 101)。

安装过程

在安装 account 模块时,会根据公司的国家代码自动安装对应的本地化模块。如果未设置国家代码或未找到对应的本地化模块,则默认安装 l10n_generic_coa <https://github.com/odoo/odoo/blob/18.0/addons/l10n_generic_coa>`_(美国)本地化模块。有关详细信息,请查看 `post init hook

例如,如果公司国家为 Switzerland,则会安装 l10n_ch

构建本地化模块

一个基本的 l10n_XX 模块的结构可以用以下 __manifest__.py 文件来描述:

{
    "name": "COUNTRY - Accounting",
    "version": "1.0.0",
    "category": "Accounting/Localizations/Account Charts",
    "license": "LGPL-3",
    "depends": [
        "account",
    ],
    "data": [
        "data/other_data.xml",
        "views/xxxmodel_views.xml",
    ],
    "demo": [
        "demo/demo_company.xml",
    ]
}

你的工作树应该如下所示

l10n_xx
├── data
│   ├── template
│   │   ├── account.account-xx.csv
│   │   ├── account.group-xx.csv
│   │   └── account.tax.group-xx.csv
│   └── other_data.xml
├── views
│   └── xxxmodel_views.xml
├── demo
│   └── demo_company.xml
├── models
│   ├── template_xx.py
│   └── __init__.py
├── __init__.py
└── __manifest__.py

在第一个文件 models/template_xx.py 中,我们设置了会计科目表的名称以及一些基本字段。

会计科目表

账户标签

另请参见

会计标签引用

标签是一种对账户进行排序的方式。例如,假设您想要创建一个包含多行的财务报表,但您没有方法根据账户的 code 来制定分配规则。解决方案是使用标签,每个报表行对应一个标签,以便按照您的需求筛选账户。

将标签放入 data/account_account_tag_data.xml 文件中。

账户

显然,会计科目表 无法在没有 账户 的情况下存在。您需要在 data/account.account.template.csv 文件中进行指定。

警告

  • 避免使用 asset_cash account_type!实际上,银行和现金账户是在本地化模块安装时直接创建的,然后会与 account.journal 进行关联。

  • 仅需一个应付/应收账户即可满足一般情况。然而,我们还需要定义一个 POS 应收账户。(在科目表中关联)

  • 不要创建太多账户:200-300 个就足够了。但总的来说,我们努力找到一个良好的平衡点,使得会计科目表(CoA)在大多数公司之后只需进行最小的调整。

会计科目组

另请参见

会计科目引用

科目组允许描述会计科目的层次结构。需要在报表中激活筛选器,然后在展开为日记账条目时,将显示科目的父级。

它使用前缀 start/end,因此每个代码以 startend 之间的内容开头的账户都将此 account.group 作为父组。此外,账户组也可以拥有一个父账户组,以形成层级结构。

税项

另请参见

要添加税费,您首先需要指定税费组。通常,每个税率只需要一个税费组,但 0% 的情况除外,因为您经常需要区分免税、0%、不适用等税费。此模型只有两个必填字段:namecountry。创建文件 data/template/account.tax.group-xx.csv 并列出税费组。

现在您可以通过 data/template/account.tax-xx.csv 文件添加税费。您定义的第一个采购/销售税费也将成为您产品的默认采购/销售税费。

税费报表

Enterprise feature

税费报表在 开票 (account) 应用中进行申报,但该报表仅在安装 会计 (account_accountant) 时才可访问。

在上一节中,您注意到了字段 invoice_repartition_line_idsrefund_repartition_line_ids,可能对此感到完全不明白。好消息是:您并不孤单,很多人都有同样的困惑。坏消息是:您需要花点时间去理解它。这个主题比较复杂。事实上:

accounting_localization/tax_report.dot
> Graph not rendered because `dot` is not installed

简单的说法是,在税模板中,您需要在发票/退款分摊行中指定税款的基数或百分比应报告在哪一行报表中(通过 minus/plus_report_line_ids 字段)。当您在 Odoo 界面中查看税务配置时(或查阅文档 税参考税分摊参考),这一点会更加清晰。

因此,一旦您正确配置了税费,只需将 data/account_tax_report_data.xml 文件添加进去,并为您的 account.report 添加一条记录。为了使其被识别为税费报表,您需要为其提供正确的 root_report_id

<odoo>
    <record id="tax_report" model="account.report">
        <field name="name">Tax Report</field>
        <field name="root_report_id" ref="account.generic_tax_report"/>
        <field name="country_id" ref="base.XX"/>
    </record>

    ...
</odoo>

…随后是其行的声明,如 account.report.line 记录。

财政位置

data/template/account.fiscal.position-xx.csv 文件中指定财政位置。

最后步骤

最后,您可以添加一个演示公司,以便在演示模式下轻松测试本地化功能。

会计报表

Enterprise feature

另请参见

报表

会计报表应通过单独的模块 l10n_XX_reports 添加,该模块应提交到 企业仓库

此类模块的 basic __manifest__.py 文件如下所示:

{
    "name": "COUNTRY - Accounting Reports",
    "category": "Accounting/Localizations/Reporting",
    "version": "1.0.0",
    "license": "OEEL-1",
    "depends": [
        "l10n_XX", "account_reports"
    ],
    "data": [
        "data/balance_sheet.xml",
        "data/profit_and_loss.xml",
    ],
    "auto_install": True,
}

财务报表功能概览请参见:报表

一些好的示例:

你可以在这里查看字段的含义:

如果你为报表指定了 root_report_id,它现在将在其变体选择器中可用。如果没有指定,你仍然需要为其添加一个菜单项。可以通过点击 操作 ‣ 创建菜单项 从报表的表单视图中创建一个默认的菜单项。然后你需要刷新页面以查看它。另外,如果要在 报表 菜单中为一个全新的报表创建专用部分,你需要创建一个新的 ir.ui.menu 记录(通常在主 l10n_XX 模块中)和一个新的 ir.actions.client`(通常在新的报表 XML 文件中),该记录调用 `account.report 并使用新的 报表 ID。然后,在动作模型中将新菜单设置为 parent_id 字段。