Báo cáo tùy chỉnh¶
Odoo đi kèm với một khuôn khổ báo cáo mạnh mẽ và dễ sử dụng. Công cụ này 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ế hoặc bảng cân đối kế toán và báo cáo thu nhập với nhóm cụ thể và bố cục.
Quan trọng
Kích hoạt chế độ :ref:`developer<developer-mode> ` để truy cập vào giao diện tạo báo cáo kế toán.
Để tạo báo cáo mới, hãy vào `báo cáo gốc<customize-reports/root> ` hoặc một biến thể :ref:`<customize-reports/variants> `.
. Từ đây, bạn có thể tạo :ref:
Báo cáo gốc¶
Báo cáo gốc có thể được coi là báo cáo kế toán chung, trung lập. Chúng đóng vai trò là mô hình mà các phiên bản kế toán cục bộ được xây dựng. Nếu một báo cáo không có báo cáo gốc, thì nó được coi là báo cáo gốc.
Example
Báo cáo thuế của Bỉ và Hoa Kỳ đều sẽ sử dụng cùng một phiên bản chung làm cơ sở và điều chỉnh cho phù hợp với quy định trong nước.
Khi tạo báo cáo gốc mới, bạn cần tạo mục menu cho báo cáo đó. Để thực hiện, hãy mở báo cáo và sau đó, trên cùng báo cáo đó, nhấp vào
. Làm mới trang; báo cáo hiện có sẵn trong .Ghi chú
Những trường hợp cần tạo báo cáo gốc mới rất hiếm, chẳng hạn như 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ể¶
Các biến thể là phiên bản báo cáo gốc dành riêng cho từng quốc gia và do đó, luôn tham chiếu đến báo cáo gốc. Để tạo biến thể, hãy chọn báo cáo chung (gốc) trong trường Báo cáo gốc khi tạo báo cáo mới.
Khi mở báo cáo gốc từ một trong các menu chính của ứng dụng kế toán, tất cả các biến thể của báo cáo đó sẽ được hiển thị trong trình chọn biến thể ở góc trên bên phải của chế độ xem.
Example
Trong hình ảnh sau, Báo cáo VAT (BE) là biến thể của gốc Báo cáo thuế chung.

Chi tiết¶
Sau khi tạo báo cáo (gốc hoặc biến thể), bạn cần điền các dòng vào báo cáo. Bạn có thể tạo báo cáo mới bằng cách nhấp vào Thêm một dòng hoặc sửa đổi một dòng hiện có bằng cách nhấp vào nó. Tất cả các dòng yêu cầu Tên và có thể có thêm tùy chọn Mã (tùy bạn chọn) nếu bạn muốn sử dụng giá trị của chúng trong công thức.

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 như biến phụ cần thiết cho một dòng báo cáo. Để tạo một biểu thức, hãy nhấp vào Thêm một dòng trong một dòng báo cáo.
Khi tạo một biểu thức, bạn phải gán nhãn label được sử dụng để tham chiếu đến biểu thức đó. Do đó, nó phải là duy nhất trong số các biểu thức của mỗi dòng. Cả Computation Engine và Formula cũng phải được chỉ định. engine xác định cách công thức và công thức con của bạn được diễn giải. Bạn có thể kết hợp các biểu thức bằng các công cụ tính toán khác nhau dưới cùng một dòng nếu cần.
Ghi chú
Tùy thuộc vào công cụ, subformulas cũng có thể được yêu cầu.
Công cụ 'Odoo Domain'¶
Với công cụ này, một công thức được diễn giải như một miền Odoo<reference/orm/domains> ` nhắm mục tiêu vào 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 đường di chuyển 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 của tất cả số dư của các dòng di chuyển khớp nhau.
sum_if_pos
Kết quả là tổng của tất cả số dư của các dòng di chuyển khớp nếu số tiền này là số dương. Nếu không, kết quả là
0
.sum_if_neg
Kết quả là tổng của tất cả số dư của các dòng di chuyển khớp nếu số tiền này là số âm. Nếu không, kết quả là
0
.count_rows
Kết quả là số dòng con của biểu thức này. Nếu dòng cha có giá trị nhóm theo, giá trị này sẽ tương ứng với số khóa nhóm riêng biệt trong các dòng di chuyển khớp. Nếu không, giá trị này sẽ là số dòng di chuyển khớp.
Bạn cũng có thể thêm dấu -
vào đầu công thức phụ để đảo ngược dấu của kết quả.

Công cụ 'Tổng hợp các công thức khác'¶
Sử dụng công cụ này khi bạn cần thực hiện các phép toán số học trên các số tiền thu được cho các biểu thức khác. Các công thức ở đây bao gồm các tham chiếu đến các biểu thức được phân tá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 đến một biểu thức, hãy nhập code của dòng cha theo sau là dấu chấm .
và label của biểu thức (ví dụ: code.label).
Công thức phụ có thể là một trong những công thức sau:
if_above(CUR(amount))
Giá trị của biểu thức số học sẽ chỉ được trả về nếu nó lớn hơn giới hạn được 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ẽ chỉ được trả về nếu nó thấp hơn giới hạn được 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ẽ chỉ được trả về nếu nó nằm trong giới hạn được 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ẽ chỉ được trả về nếu giá trị của biểu thức được biểu thị bằng mã dòng và nhãn biểu thức được cung cấp lớn hơn giới hạn được 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ẽ chỉ được trả về nếu giá trị của biểu thức được biểu thị bằng mã dòng và nhãn biểu thức được cung cấp thấp hơn giới hạn được cung cấp. 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 ràng buộc được thể hiện bằng loại tiền tệ đó.
Bạn cũng có thể sử dụng công thức phụ cross_report
để so khớp với biểu thức tìm thấy trong báo cáo khác.
Công cụ 'Tiền tố của Mã tài khoản'¶
Công cụ này được sử dụng để khớp số tiền được thực hiện trên các tài khoản bằng cách sử dụng tiền tố của mã tài khoản này làm biến trong biểu thức số học.
Example
21
Example
21 + 10 - 5
21
và 10
, và trừ số dư của các tài khoản có tiền tố 5
.Bạn cũng có thể bỏ qua một số tiền tố phụ.
Example
21 + 10\(101, 102) - 5\(57)
101
, 102
và 57
.Bạn có thể áp dụng 'lọc phụ' trên tín dụng và ghi nợ bằng cách sử dụng hậu tố C
và D
. 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, và nếu tổng số dư của các dòng di chuyển được thực hiện trên tài khoản này là tín dụng/ghi nợ.
Example
Tài khoản 210001
có số dư là -42 và tài khoản 210002
có số dư là 25. Công thức 21D
chỉ khớp với tài khoản 210002
và do đó trả về 25. 210001
không khớp vì số dư của nó là tín dụng.
Loại trừ tiền tố có thể được kết hợp với hậu tố C
và D
.
Example
21D + 10\(101, 102)C - 5\(57)
21
nếu là ghi nợ (D
) và 10
nếu 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 với chữ cái C
hoặc D
trong tiền tố và không sử dụng nó làm hậu tố, hãy sử dụng lệnh loại trừ rỗng ()
.
Example
21D\()
21D
, bất kể ký hiệu số dư của chúng.Ngoài việc sử dụng tiền tố mã để bao gồm tài khoản, bạn cũng có thể khớp chúng với thẻ tài khoản. Điều này đặc biệt hữu ích, ví dụ, nếu quốc gia của bạn không có biểu đồ tài khoản chuẩn hóa, trong đó cùng một tiền tố có thể được sử dụng cho các mục đích khác nhau giữa các công ty.
Example
tag(25)
Nếu thẻ bạn tham chiếu được định nghĩa trong tệp dữ liệu, bạn có thể sử dụng xmlid thay cho id.
Example
tag(my_module.my_tag)
Bạn cũng có thể sử dụng 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
10
Hậu tố C
và D
có thể được sử dụng theo cùng một cách với thẻ.
Example
tag(my_module.my_tag)C
Loại trừ tiền tố cũng có tác dụng với thẻ.
Example
tag(my_module.my_tag)\(10)
10
.Động cơ 'Giá trị bên ngoài'¶
Công cụ 'giá trị bên ngoài' được sử dụng để tham chiếu đến giá trị thủ công và giá trị chuyển tiếp. Các giá trị đó không được lưu trữ bằng account.move.line
, mà bằng account.report.external.value
. Mỗi đối tượng này trỏ trực tiếp đến biểu thức mà nó tác động, do đó rất ít cần phải thực hiện về việc lựa chọn chúng ở đây.
Công thức có thể là một trong những công thức 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 chu kỳ.
most_recent
Nếu kết quả phải là giá trị bên ngoài mới nhất trong kỳ.
Ngoài ra, công thức con có thể được sử dụng theo hai cách:
rounding=X
Thay thế
X
bằng một số sẽ hướng dẫn làm tròn số tiền thành X chữ số thập phân.có thể chỉnh sửa
Biểu thị 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ị 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ú
Các giá trị thủ công được tạo tại date_to
hiện được chọn trong báo cáo.
Cả hai công thức con 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 cụ 'Chức năng Python tùy chỉnh'¶
Công cụ này là phương tiện để các nhà phát triển giới thiệu tính toán tùy chỉnh của các biểu thức theo từng trường hợp cụ thể. Công thức là tên của hàm python để gọi và công thức phụ là khóa để lấy trong từ điển do hàm này trả về. Chỉ sử dụng nếu bạn đang tạo một mô-đun tùy chỉnh của riêng mình.
Cột¶
Báo cáo có thể có số lượng không xác định các cột để hiển thị. Mỗi cột lấy giá trị của nó từ biểu thức được khai báo trên các dòng. Trường expression_label của cột cung cấp nhãn của 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 dòng đó 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.

Khi sử dụng tính năng so sánh kỳ nằm trong tab Tùy chọn của báo cáo kế toán, tất cả các cột sẽ được lặp lại trong và cho từng kỳ.