会计本地化

警告

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

安装流程

安装 account 模块时,会自动安装与公司国家/地区代码相对应的本地化模块。如果未设置国家/地区代码或未找到本地化模块,则默认安装 l10n_generic_coa <https://github.com/odoo/odoo/blob/19.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 文件中。

账户

显然,如果没有 AccountsChart of Accounts 就不可能存在。您需要在 data/account.account.template.csv 中指定它们。

警告

  • 避免使用 asset_cash account_type! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an account.journal

  • 对于一般情况,只有一个应付/应收帐类型的帐户就足够了。 然而,我们还需要定义一个 PoS 应收账款账户。 (在 CoA 中链接)

  • 不要创建太多帐户: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

税务报告在 Invoicing (account) 应用中申报,但只有在安装 Accounting (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 添加,该模块应转到 enterprise repository

该模块的基本 __manifest__.py 文件如下所示:

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

财务报告的功能概述位于:报表

一些很好的例子:

您可以在此处检查字段的含义:

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