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 . 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 .
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.
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.
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 Engine và Formula cũng phải được điền đầy đủ. computation engine xác định cách formula(s) và 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:
sumKết quả là tổng số dư của tất cả các dòng bút toán khớp.
sum_if_posKế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_negKế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_rowsKế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.
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 . và 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
21Example
21 + 10 - 521 và 10, 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)101, 102 và 57.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ố 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 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ố C và D.
Example
21D + 10\(101, 102)C - 5\(57)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\()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)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)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) + 1010Các hậu tố C và D có thể được sử dụng theo cùng cách với các thẻ.
Example
tag(my_module.my_tag)CLoại trừ tiền tố cũng hoạt động với thẻ.
Example
tag(my_module.my_tag)\(10)10Cô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ông và giá 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:
sumNế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_recentNế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=XThay thế
Xbằng một số sẽ chỉ định làm tròn số tiền tới X chữ số thập phân.có thể chỉnh sửaCho 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=2Cô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à Subformula là khó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.
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 , 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 , 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.