Địa phương hóa kế toán

Cảnh báo

This tutorial requires knowledge about how to build a module in Odoo (see Server framework 101).

Quy trình cài đặt

Khi cài đặt mô-đun account, mô-đun địa phương hóa tương ứng với mã quốc gia của công ty sẽ được cài đặt tự động. Trong trường hợp không có mã quốc gia hoặc không tìm thấy mô-đun địa phương hóa, mô-đun địa phương hóa l10n_generic_coa (Mỹ) sẽ được cài đặt theo mặc định. Xem post init hook để biết chi tiết.

Ví dụ, l10n_ch sẽ được cài đặt nếu công ty có Thụy là quốc gia.

Xây dựng mô-đun địa phương hóa

Cấu trúc của một mô-đun l10n_XX cơ bản có thể được mô tả với tệp __manifest__.py sau đây:

{
    "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",
    ]
}

Cây làm việc của bạn nên trông như thế này

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

Trong tệp đầu tiên models/template_xx.py, chúng tôi đặt tên cho biểu đồ tài khoản cùng với một số trường cơ bản.

Biểu đồ tài khoản

Thẻ tài khoản

Thẻ là cách để phân loại các tài khoản. Ví dụ, giả sử bạn muốn tạo một báo cáo tài chính có nhiều dòng nhưng bạn không có cách nào để tìm quy tắc phân phối các tài khoản theo code của chúng. Giải pháp là sử dụng thẻ, một thẻ cho mỗi dòng báo cáo, để lọc các tài khoản theo ý muốn của bạn.

Đặt các thẻ vào tệp data/account_account_tag_data.xml.

Tài khoản

Rõ ràng là, Biểu đồ tài khoản không thể tồn tại mà không có Tài khoản. Bạn cần chỉ định chúng trong data/account.account.template.csv.

Cảnh báo

  • Tránh việc sử dụng account_type asset_cash! Thực tế, các tài khoản ngân hàng & tiền mặt được tạo trực tiếp khi cài đặt mô-đun địa phương hóa và sau đó, được liên kết với một account.journal.

  • Chỉ cần một tài khoản loại phải trả/phải thu là đủ cho trường hợp chung. Tuy nhiên, chúng ta cũng cần định nghĩa một tài khoản phải thu PoS. (liên kết trong Biểu đồ tài khoản)

  • Đừng tạo quá nhiều tài khoản: 200-300 là đủ. Nhưng chủ yếu, chúng tôi cố gắng tìm một sự cân bằng tốt, nơi Biểu đồ tài khoản cần ít thay đổi nhất cho hầu hết các công ty sau này.

Nhóm tài khoản

Nhóm tài khoản cho phép mô tả cấu trúc phân cấp của biểu đồ tài khoản. Bộ lọc cần được kích hoạt trong báo cáo và sau đó, khi bạn mở rộng vào các mục nhật ký, nó sẽ hiển thị các nhóm cha của tài khoản.

Nó hoạt động với tiền tố start/end, vì vậy mọi tài khoản có mã bắt đầu với một cái gì đó giữa startend sẽ có account.group này làm nhóm cha. Hơn nữa, các nhóm tài khoản có thể có một nhóm tài khoản cha để tạo thành cấu trúc phân cấp.

Thuế

Để thêm thuế, trước tiên bạn cần xác định các nhóm thuế. Thông thường bạn chỉ cần một nhóm thuế cho mỗi tỷ lệ thuế, trừ thuế 0% vì bạn thường cần phân biệt giữa miễn thuế, 0%, không áp dụng, ... thuế. Mô hình này chỉ có hai trường bắt buộc: namecountry. Tạo file data/template/account.tax.group-xx.csv và liệt kê các nhóm.

Bây giờ bạn có thể thêm các loại thuế qua file data/template/account.tax-xx.csv. Loại thuế đầu tiên bạn định nghĩa là mua/bán cũng sẽ trở thành thuế mặc định cho sản phẩm của bạn.

Báo cáo thuế

Enterprise feature

Báo cáo thuế được khai báo trong ứng dụng Invoicing (account), nhưng báo cáo chỉ có thể truy cập khi Accounting (account_accountant) được cài đặt.

Trong phần trước, bạn đã thấy các trường invoice_repartition_line_ids hoặc refund_repartition_line_ids và có thể không hiểu gì về chúng. Tin tốt: bạn không phải là người duy nhất không hiểu điều này. Tin xấu: bạn phải tìm hiểu một chút. Chủ đề này khá phức tạp.

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

Phiên bản đơn giản là, trong mẫu thuế, bạn chỉ định trong các dòng phân bổ hóa đơn/hoàn trả xem cơ sở hoặc tỷ lệ phần trăm của thuế cần được báo cáo ở dòng báo cáo nào (thông qua các trường minus/plus_report_line_ids). Nó cũng trở nên rõ ràng khi bạn kiểm tra cấu hình thuế trong giao diện SoOn (hoặc kiểm tra tài liệu Tham khảo Thuế, Tham khảo Phân bổ Thuế).

Vì vậy, khi bạn đã cấu hình thuế đúng cách, bạn chỉ cần thêm file data/account_tax_report_data.xml với một bản ghi cho account.report. Để nó được coi là một báo cáo thuế, bạn cần cung cấp cho nó root_report_id đúng.

<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>

... theo sau là khai báo các dòng của nó, dưới dạng các bản ghi account.report.line.

Vị trí tài chính

Xác định các vị trí tài chính trong tệp data/template/account.fiscal.position-xx.csv.

Các bước cuối cùng

Cuối cùng, bạn có thể thêm một công ty demo để việc địa phương hóa có thể được kiểm tra dễ dàng trong chế độ demo.

Báo cáo kế toán

Enterprise feature

Xem thêm

Báo cáo

Các báo cáo kế toán nên được thêm thông qua một mô-đun riêng biệt l10n_XX_reports và phải được đưa vào kho lưu trữ enterprise.

Tệp __manifest__.py cơ bản cho một mô-đun như vậy trông như sau:

{
    "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,
}

Tổng quan chức năng về các báo cáo tài chính ở đây: Báo cáo.

Một số ví dụ tốt:

Bạn có thể kiểm tra ý nghĩa của các trường ở đây:

Nếu bạn đã cung cấp root_report_id cho báo cáo của bạn, nó sẽ có sẵn trong trình chọn biến thể của nó. Nếu không, bạn vẫn cần phải thêm một mục menu cho nó. Một mục menu mặc định có thể được tạo từ chế độ xem biểu mẫu của báo cáo bằng cách nhấp vào Actions ‣ Create Menu Item. Sau đó, bạn cần phải làm mới trang để thấy nó. Ngoài ra, để tạo một phần dành riêng cho một báo cáo hoàn toàn mới trong menu Reporting, bạn cần tạo một bản ghi ir.ui.menu mới (thường trong mô-đun chính l10n_XX) và một ir.actions.client mới (thường trong tệp XML báo cáo mới) gọi account.report với report id mới. Sau đó, đặt menu mới làm trường parent_id trong mô hình hành động.