Báo cáo tùy chỉnh

Odoo đi kèm với một khung báo cáo mạnh mẽ và dễ sử dụng. Công cụ cho phép bạn tạo các báo cáo mới, chẳng hạn như báo cáo thuế, bảng cân đối và báo cáo thu nhập với các nhóm và bố cục cụ thể.

Quan trọng

Kích hoạt developer mode để truy cập cấu hình báo cáo kế toán.

Để tạo một báo cáo mới, đi tới Accounting ‣ Configuration ‣ Accounting Reports. Từ đây, tạo một root report hoặc một variant.

Mẹo

  • Cân nhắc lưu các báo cáo đã chỉnh sửa dưới dạng biến thể báo cáo để giữ nguyên báo cáo gốc.

  • Để truy cập giao diện quản lý của báo cáo hiện có từ chính báo cáo, nhấp vào biểu tượng (gears).

Báo cáo gốc

Báo cáo gốc có thể được coi là các báo cáo kế toán chung, trung lập. Chúng đóng vai trò là mô hình cho các phiên bản kế toán địa phương được xây dựng dựa trên đó. Nếu một báo cáo không có báo cáo gốc, nó được xem là một báo cáo gốc.

Example

Báo cáo thuế cho Bỉ và Mỹ sẽ sử dụng cùng một phiên bản tổng quát làm cơ sở và điều chỉnh cho các quy định nội địa của họ.

Việc tạo mục menu là cần thiết để truy cập báo cáo gốc mới. Để thực hiện, mở cấu hình báo cáo, nhấp Action, Create Menu Item, và làm mới trang. Báo cáo hiện đã có sẵn dưới Accounting ‣ Reporting.

Ghi chú

Trường hợp cần tạo một báo cáo gốc mới là hiếm, chẳng hạn khi cơ quan thuế của một quốc gia yêu cầu một loại báo cáo mới và cụ thể.

Biến thể

Biến thể là các phiên bản đặc thù cho từng quốc gia của báo cáo gốc và do đó luôn tham chiếu tới một báo cáo gốc. Để tạo một biến thể, hãy chọn một báo cáo (gốc) chung trong trường Root Report khi tạo báo cáo mới.

Khi một báo cáo gốc được mở từ menu Reporting của ứng dụng Kế toán, tất cả các biến thể của nó sẽ được hiển thị trong bộ chọn biến thể báo cáo ở góc trên bên phải của giao diện.

Example

VAT Report (BE) là một biến thể của gốc Generic Tax report.

Lựa chọn biến thể báo cáo.

Chi tiết

Sau khi tạo báo cáo (cả gốc hoặc biến thể), bước tiếp theo là điền các dòng vào. Để tạo một dòng mới, nhấp vào Add a line. Để chỉnh sửa một dòng hiện có, nhấp vào dòng đó và chỉnh sửa cửa sổ pop-up. Tất cả các dòng yêu cầu Name và có thể có tùy chọn Code cho phép sử dụng giá trị của dòng trong công thức.

Tùy chọn dòng Engine

Biểu thức

Mỗi dòng có thể chứa một hoặc nhiều biểu thức. Biểu thức có thể được xem là biến phụ cần thiết cho một dòng báo cáo. Để tạo biểu thức, nhấp vào Add a line trong cửa sổ bật lên của dòng.

Khi tạo một biểu thức, bạn phải nhập một Label dùng để tham chiếu tới biểu thức đó. Nhãn phải là duy nhất trong số các biểu thức của mỗi dòng báo cáo. Cả hai trường Computation EngineFormula cũng phải được điền đầy đủ. computation engine xác định cách formula(s)subformula(s) được diễn giải. Có thể trộn các biểu thức sử dụng các computation engine khác nhau trong cùng một dòng nếu cần.

Ghi chú

Tùy vào engine, subformulas cũng có thể được yêu cầu.

Công cụ tính toán domain Odoo

Khi sử dụng công cụ tính toán Odoo Domain, một công thức được diễn giải như một Odoo domain nhắm tới các đối tượng account.move.line.

Công thức phụ cho phép bạn xác định cách các dòng bút ghi khớp với miền được sử dụng để tính giá trị của biểu thức:

sum

Kết quả là tổng số dư của tất cả các dòng bút toán khớp.

sum_if_pos

Kết quả là tổng của tất cả số dư của các dòng bút toán khớp, nếu số tiền này là dương. Nếu không, nó là 0.

sum_if_neg

Kết quả là tổng của tất cả số dư các dòng bút toán khớp nếu số tiền này là số âm. Nếu không, nó là 0.

count_rows

Kết quả là số lượng các dòng phụ của biểu thức này. Nếu dòng cha có giá trị group-by, sẽ tương ứng với số lượng các khóa nhóm khác nhau trong các bút toán khớp. Nếu không, sẽ là số lượng các bút toán khớp.

Mẹo

Để đảo ngược dấu của kết quả, đặt dấu - ở đầu công thức con.

Dòng biểu thức trong báo cáo dạng dòng

Công cụ tính toán Nhãn thuế

Khi sử dụng công cụ tính toán Tax Tags, nội dung của trường Formula sẽ được so khớp với các thẻ thuế. Nếu các thẻ như vậy không tồn tại khi tạo biểu thức, chúng sẽ được tạo.

Khi đánh giá biểu thức, việc tính toán biểu thức có thể được diễn đạt gần như: (số tiền của các dòng bút toán có nhãn + ) - (số tiền của các dòng bút toán có nhãn - ).

Example

Nếu Formula được đặt thành tag_name, công cụ sẽ khớp các thẻ thuế +tag_name-tag_name, tạo chúng nếu cần. Để minh họa thêm: công thức sẽ khớp hai thẻ. Nếu công thức là A, nó sẽ yêu cầu (và tạo, nếu cần) các thẻ +A-A.

Công cụ tính toán Tổng hợp các công thức khác

Công cụ tính toán Aggregate Other Formulas thực hiện các phép toán số học trên các khoản tiền thu được từ các biểu thức khác. Các công thức ở đây được cấu tạo từ các tham chiếu tới các biểu thức, được ngăn cách bằng một trong bốn toán tử số học cơ bản (cộng +, trừ -, chia / và nhân *). Để tham chiếu tới một biểu thức, nhập code của dòng cha, sau đó đặt dấu chấm .label của biểu thức (ví dụ code.label)

Subformulas có thể là một trong các trường hợp sau:

if_above(CUR(amount))

Giá trị của biểu thức số học sẽ được trả về chỉ khi nó lớn hơn giới hạn đã cung cấp. Nếu không, kết quả sẽ là 0.

if_below(CUR(amount))

Giá trị của biểu thức số học sẽ được trả về chỉ khi nó thấp hơn giới hạn đã cung cấp. Nếu không, kết quả sẽ là 0.

if_between(CUR1(amount1), CUR2(amount2))

Giá trị của biểu thức số học sẽ được trả về chỉ khi nó nằm nghiêm ngặt giữa các giới hạn đã cung cấp. Nếu không, nó sẽ được đưa trở lại giới hạn gần nhất.

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

Giá trị của biểu thức số học sẽ được trả về chỉ khi giá trị của biểu thức được chỉ định bởi dòng mã và nhãn biểu thức đã cung cấp lớn hơn giới hạn đã cung cấp. Nếu không, kết quả sẽ là 0.

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

Giá trị của biểu thức số học sẽ được trả về chỉ khi giá trị của biểu thức được chỉ định bởi mã dòng và nhãn biểu thức đã cung cấp thấp hơn giới hạn đã đặt. Nếu không, kết quả sẽ là 0.

CUR là mã tiền tệ viết hoa, và amount là số tiền được ràng buộc tính bằng đồng tiền đó.

cross_report(xml_id | report_id)

Được sử dụng để khớp một biểu thức từ báo cáo khác được chỉ định bởi xml_id hoặc chính report ID

Công cụ tính toán tiền tố mã tài khoản

Công cụ tính toán Prefix of Account Codes được sử dụng để khớp các số tiền được ghi nhận trên các tài khoản bằng cách sử dụng tiền tố của mã các tài khoản này làm biến trong một biểu thức toán học.

Example

21
Các biểu thức số học cũng có thể chỉ là một tiền tố duy nhất, như ở đây.

Example

21 + 10 - 5
Công thức này cộng số dư của các dòng bút toán trên các tài khoản có mã bắt đầu bằng 2110, và trừ số dư của các dòng trên các tài khoản có tiền tố 5.

Cũng có thể bỏ qua một tập hợp các tiền tố phụ.

Example

21 + 10\(101, 102) - 5\(57)
Công thức này hoạt động giống như ví dụ trước nhưng bỏ qua các tiền tố 101, 10257.

Bạn có thể áp dụng 'sub-filtering' trên các khoản có và nợ bằng cách sử dụng các hậu tố CD. Trong trường hợp này, một tài khoản sẽ chỉ được xem xét nếu tiền tố của nó khớp, nếu tổng số dư của các dòng bút toán trên tài khoản đó là có/nợ.

Example

Tài khoản 210001 có số dư -42 và tài khoản 210002 có số dư 25. Công thức 21D chỉ khớp với tài khoản 210002, do đó trả về 25. 210001 không khớp, vì số dư của nó là credit.

Các loại trừ tiền tố có thể trộn lẫn với hậu tố CD.

Example

21D + 10\(101, 102)C - 5\(57)
Công thức này cộng số dư của các dòng bút toán được tạo trên các tài khoản có mã bắt đầu bằng 21 nếu nó là ghi nợ (D) và 10 nếu nó là ghi có (C), nhưng bỏ qua các tiền tố 101, 102, và trừ số dư của các tài khoản có tiền tố 5, bỏ qua tiền tố 57.

Để khớp ký tự C hoặc D trong tiền tố và không dùng chúng làm hậu tố, hãy dùng một loại loại trừ rỗng ().

Example

21D\()
Công thức này khớp các tài khoản có mã bắt đầu bằng 21D, bất kể dấu của số dư.

Ngoài việc sử dụng tiền tố mã để bao gồm các tài khoản, bạn cũng có thể ghép chúng với account tags. Điều này đặc biệt hữu ích, ví dụ, nếu quốc gia của bạn thiếu biểu đồ tài khoản chuẩn, nơi cùng một tiền tố có thể được dùng cho các mục đích khác nhau trong các công ty.

Example

tag(25)
Công thức này khớp với các tài khoản mà các thẻ liên quan chứa thẻ có ID 25

Nếu thẻ bạn tham chiếu được định nghĩa trong một tệp dữ liệu, bạn có thể sử dụng XMLID thay vì ID.

Example

tag(my_module.my_tag)
Công thức này khớp các tài khoản có thẻ liên quan bao gồm thẻ được biểu thị bởi my_module.my_tag

Bạn cũng có thể sử dụng các biểu thức số học với thẻ, có thể kết hợp chúng với các lựa chọn tiền tố.

Example

tag(my_module.my_tag) + tag(42) + 10
Số dư của các tài khoản được gắn thẻ my_module.my_tag sẽ được cộng lại với các tài khoản liên kết tới thẻ có ID 42 và các tài khoản có tiền tố mã 10

Các hậu tố CD có thể được sử dụng theo cùng cách với các thẻ.

Example

tag(my_module.my_tag)C
Công thức này khớp các tài khoản có thẻ my_module.my_tag và số dư có.

Loại trừ tiền tố cũng hoạt động với thẻ.

Example

tag(my_module.my_tag)\(10)
Công thức này khớp các tài khoản có thẻ my_module.my_tag và mã không bắt đầu bằng 10

Công cụ tính giá trị bên ngoài

Công cụ tính toán External Value được dùng để tham chiếu đến thủ cônggiá trị chuyển tiếp. Những giá trị này không được lưu bằng account.move.line, mà bằng account.report.external.value. Mỗi đối tượng này trực tiếp trỏ tới biểu thức nó ảnh hưởng, vì vậy rất ít công việc cần thực hiện về việc lựa chọn chúng ở đây.

Công thức có thể là một trong các loại sau:

sum

Nếu kết quả phải là tổng của tất cả các giá trị bên ngoài trong kỳ.

most_recent

Nếu kết quả phải là giá trị mới nhất của giá trị bên ngoài trong kỳ.

Ngoài ra, subformulas có thể được sử dụng theo hai cách:

rounding=X

Thay thế X bằng một số sẽ chỉ định làm tròn số tiền tới X chữ số thập phân.

thể chỉnh sửa

Cho biết biểu thức này có thể được chỉnh sửa thủ công, kích hoạt việc hiển thị một biểu tượng trong báo cáo, cho phép người dùng thực hiện hành động này.

Ghi chú

Giá trị thủ công được tạo tại date_to hiện đang được chọn trong báo cáo.

Cả hai công thức phụ có thể được trộn lẫn bằng cách phân tách chúng bằng dấu ;

Example

editable;rounding=2
Công thức phụ này cho thấy cách đúng để kết hợp cả hai hành vi.

Công cụ tính toán hàm Python tùy chỉnh

Động cơ tính toán Custom Python Function là một cách cho các nhà phát triển giới thiệu tính toán tùy chỉnh cho các biểu thức theo từng trường hợp. Formula là tên của hàm python để gọi, và Subformulakhóa để lấy trong từ điển được hàm này trả về. Chỉ sử dụng động cơ tính toán này nếu tạo một mô-đun tùy chỉnh.

Cột

Báo cáo có thể có số lượng cột không giới hạn để hiển thị. Mỗi cột nhận giá trị từ các biểu thức được khai báo trên dòng. Trường expression_label của cột cung cấp nhãn cho các biểu thức có giá trị được hiển thị. Nếu một dòng không có biểu thức trong trường đó, thì không có gì được hiển thị cho nó trong cột này. Nếu cần nhiều cột, bạn phải sử dụng các nhãn biểu thức khác nhau.

Cột của báo cáo.

Khi sử dụng tính năng so sánh kỳ được tìm thấy dưới thẻ Options của một báo cáo kế toán, tất cả các cột sẽ được lặp lại trong và cho mỗi kỳ.

Nhóm dòng

Việc nhóm không chuẩn là khả thi bằng cách thêm hoặc sử dụng các trường hiện có trên mô hình Journal Item, với điều kiện các trường đó phải liên quan và không được lưu trữ.

Ghi chú

Việc nhóm các dòng yêu cầu báo cáo phải có các dòng báo cáo rõ ràng có thể chỉnh sửa. Các báo cáo hoãn, chẳng hạn, không hỗ trợ nhóm các dòng vì chúng sử dụng các dòng động được tạo ra.

Tạo trường mới trên mục bút toán

Để tạo một trường liên quan không lưu trữ trong mô hình Journal Item, đầu tiên chuyển đến Accounting ‣ Journal Items, và nhấp vào biểu tượng (bug), sau đó nhấp vào Fields. Nhấp vào New để tạo một trường mới, và hoàn thiện các trường sau:

  • Field Name: một tên kỹ thuật cho trường

  • Field Label: nhãn sẽ được hiển thị cho trường

  • Field Type: loại trường mà trường liên quan này nên trỏ tới

  • Stored: Để trường này không được chọn vì chỉ các trường không lưu trữ mới có thể dùng để nhóm các dòng.

  • Related Model: Nếu kiểu trường là one2many, many2many hoặc many2one, chọn mô hình của trường gốc để nhóm lại.

  • Related Field Definition: đường dẫn kỹ thuật tới trường bạn muốn nhóm theo

    Example

    Để nhóm theo đội ngũ bán hàng của đối tác thương mại, đặt định nghĩa trường liên quan thành move_id.team_id

Nhóm dòng

Để nhóm các dòng, vào tab Lines của báo cáo mong muốn, nhấp vào dòng bạn muốn nhóm và chỉnh sửa trường Group by. Nhập tên kỹ thuật (Field Name) của trường sẽ dùng làm khóa nhóm.

Mẹo

Để tìm danh sách tất cả các trường của mô hình và tên kỹ thuật của chúng, hãy vào Accounting ‣ Journal Items, và nhấn biểu tượng (bug), sau đó nhấp vào Fields. Tên kỹ thuật của mỗi trường được liệt kê trong cột Field Name.