会计本地化

警告

本教程要求具备如何在 Odoo 中构建模块的知识(参见 服务器框架基础)。

安装过程

在安装 account 模块时,与公司国家代码对应的本地化模块会自动安装。如果未设置国家代码或未找到本地化模块,默认会安装 l10n_generic_coa (美国)本地化模块。详情请查看 post init hook

例如,如果公司的国家设置为 瑞士,那么 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

  • 一般情况下,只需要一个应付/应收账户。但是我们还需要定义一个点 of Sale 应收账户(在 CoA 中链接)。

  • 不要创建太多账户:200-300个足够了。但是,我们主要是要找到一个良好的平衡点,使大多数公司在之后使用时,会对会计科目表进行最小限度的调整。

账户组

账户组允许描述账户表的分层结构。需要在报告中激活过滤器,然后当您展开成日志条目时,它将显示账户的父级。

它通过前缀 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界面中检查税务配置时(或查看文档 Tax ReferencesTax Repartition References ),这也变得清晰明了。

因此,一旦你正确配置了税项,只需添加 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 添加,该模块应放入 企业仓库

基本 __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 文件中),该文件使用新的 **报告 id** 调用 `account.report。然后,在操作模型中将新菜单设置为 parent_id 字段。