Користувацькі звіти¶
Odoo постачається з потужною та простою у використанні системою звітності. Механізм дозволяє створювати нові звіти, такі як податкові звіти або баланси та звіти про прибутки та збитки з певними групуваннями та макетами.
Важливо
Активуйте режим розробника, щоб отримати доступ до інтерфейсу створення бухгалтерського звіту.
Щоб створити новий звіт, перейдіть до кореневий звіт, або варіант.
. Звідси ви можете створити або
Кореневі звіти¶
Коренні звіти можна розглядати як загальні, нейтральні бухгалтерські звіти. Вони служать моделями, на основі яких будуються локальні версії бухгалтерського обліку. Якщо звіт не має кореневого звіту, він сам вважається кореневим звітом.
Example
Податкова звітність для Бельгії та США використовуватиме ту саму загальну версію як основу та адаптуватиме її до своїх внутрішніх правил.
Під час створення нового кореневого звіту вам потрібно створити для нього пункт меню. Для цього відкрийте звіт, а потім у цьому ж звіті натисніть
. Оновіть сторінку; звіт тепер доступний у розділі .Примітка
Випадки, що вимагають створення нового кореневого звіту, трапляються рідко, наприклад, коли податкові органи країни вимагають новий та специфічний тип звіту.

Варіанти¶
Варіанти – це версії кореневих звітів, специфічні для певної країни, і тому завжди посилаються на кореневий звіт. Щоб створити варіант, виберіть загальний (кореневий) звіт у полі Кореневий звіт під час створення нового звіту.
Коли кореневий звіт відкривається з одного з головних меню бухгалтерського додатку, усі його варіанти відображаються в селекторі варіантів у верхньому правому куті вікна перегляду.
Example
На наступному зображенні Звіт з ПДВ (BE) є варіантом кореня Загальний податковий звіт.

Рядки¶
Після створення звіту (кореневого або варіантного) вам потрібно заповнити його рядками. Ви можете створити новий, натиснувши Додати рядок, або змінити існуючий рядок, натиснувши на нього. Усі рядки вимагають Назва та можуть мати додатковий Код (на ваш вибір), якщо ви хочете використовувати їхнє значення у формулах.

Вирази¶
Кожен рядок може містити один або декілька виразів. Вирази можна розглядати як підзмінні, необхідні для рядка звіту. Щоб створити вираз, натисніть Додати рядок всередині рядка звіту.
Під час створення виразу необхідно призначити мітка, яка використовується для посилання на цей вираз. Тому вона має бути унікальною серед виразів кожного рядка. Також необхідно вказати як Механіхм обчислення, так і Формула. Механізм визначає, як інтерпретуються ваші формули та підформули. За потреби можна змішувати вирази, що використовують різні обчислювальні механізми, в одному рядку.
Примітка
Залежно від механізму, також може знадобитися підформули.
Механізм „Odoo Domain“¶
У цьому движку формула інтерпретується як Odoo домен, що орієнтований на об’єкти account.move.line
.
Підформула дозволяє визначити, як лінії переміщення, що відповідають домену, використовуються для обчислення значення виразу:
sum
Результатом є сума всіх балансів збігаючихся ліній руху.
sum_if_pos
Результатом є сума всіх балансів збігаючихся ліній руху, якщо ця сума додатна. В іншому випадку вона дорівнює
0
.sum_if_neg
Результатом є сума всіх балансів збігаючихся ліній руху, якщо ця сума від’ємна. В іншому випадку вона дорівнює
0
.count_rows
Результатом є кількість підрядків цього виразу. Якщо батьківський рядок має значення групування, це відповідатиме кількості різних ключів групування у збіганих рядках переміщення. В іншому випадку це буде кількість збіганих рядків переміщення.
Ви також можете поставити знак -
на початку підформули, щоб змінити знак результату на протилежний.

Механізм „Агрегація інших формул“¶
Використовуйте цей механізм, коли вам потрібно виконувати арифметичні операції над сумами, отриманими для інших виразів. Формули тут складаються з посилань на вирази, розділених одним із чотирьох основних арифметичних операторів (додавання +
, віднімання -
, ділення /
та множення *
). Щоб звернутися до виразу, введіть код його батьківського рядка, потім крапку .
та мітку виразу (наприклад, код.мітка).
Підформули можуть бути одними з наведених нижче:
if_above(CUR(amount))
Значення арифметичного виразу буде повернуто лише тоді, коли воно більше за задану межу. В іншому випадку результатом буде
0
.if_below(CUR(amount))
Значення арифметичного виразу буде повернуто, лише якщо воно менше за задану межу. В іншому випадку результатом буде
0
.if_between(CUR1(amount1), CUR2(amount2))
Значення арифметичного виразу буде повернуто лише тоді, коли воно знаходиться строго в межах заданих меж. В іншому випадку воно буде повернуто до найближчої межі.
if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))
Значення арифметичного виразу буде повернуто лише тоді, коли значення виразу, позначеного наданим кодом рядка та міткою виразу, більше за надану межу. В іншому випадку результатом буде
0
.if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))
Значення арифметичного виразу буде повернуто лише тоді, коли значення виразу, позначеного наданим кодом рядка та міткою виразу, менше за надану межу. В іншому випадку результатом буде
0
.
CUR
– це код валюти великими літерами, а amount
– це сума зобов’язання, виражена в цій валюті.
Ви також можете використовувати підформулу cross_report
для зіставлення з виразом, знайденим в іншому звіті.
Механізм „Префікс кодів облікових записів“¶
Цей механізм використовується для зіставлення сум, внесених на рахунки, з використанням префіксів кодів цих рахунків як змінних в арифметичному виразі.
Example
21
Example
21 + 10 - 5
21
та 10
, та віднімає залишки за рахунками з префіксом 5
.Також можна ігнорувати вибірку підпрефіксів.
Example
21 + 10\(101, 102) - 5\(57)
101
, 102
та 57
.Ви можете застосувати „підфільтрацію“ до кредитів та дебетів, використовуючи суфікси C
та D
. У цьому випадку рахунок буде розглянуто лише за умови збігу його префікса, та якщо загальний баланс рядків переміщення, здійснених за цим рахунком, становить credit/debit.
Example
Рахунок 210001
має сальдо -42, а рахунок 210002
має сальдо 25. Формула 21D
відповідає лише рахунку 210002
, і тому повертає 25. 210001
не відповідає, оскільки його сальдо кредит.
Виключення префіксів можна змішувати з суфіксами C
та D
.
Example
21D + 10\(101, 102)C - 5\(57)
21
якщо це дебет (D
) та 10
якщо це кредит (C
), але ігнорує префікси 101
, 102
та віднімає залишки одиниць за рахунками з префіксом 5
, ігноруючи префікс 57
.Щоб знайти літеру C
або D
у префіксі та не використовувати її як суфікс, використовуйте порожній виняток ()
.
Example
21D\()
21D
, незалежно від знака їхнього балансу.Окрім використання префіксів кодів для включення рахунків, ви також можете зіставити їх за допомогою тегів рахунків. Це особливо корисно, наприклад, якщо у вашій країні немає стандартизованого плану рахунків, де один і той самий префікс може використовуватися для різних цілей у різних компаніях.
Example
tag(25)
Якщо тег, на який ви посилаєтесь, визначено у файлі даних, замість id можна використовувати xmlid.
Example
tag(my_module.my_tag)
Ви також можете використовувати арифметичні вирази з тегами, можливо, поєднуючи їх з префіксним вибором.
Example
tag(my_module.my_tag) + tag(42) + 10
10
.Суфікси C
та D
можна використовувати так само з тегами.
Example
tag(my_module.my_tag)C
Виключення префіксів також працює з тегами.
Example
tag(my_module.my_tag)\(10)
10
.Механізм „Зовнішнє значення“¶
Механізм „зовнішнє значення“ використовується для посилання на ручні та перенесені значення. Ці значення зберігаються не за допомогою account.move.line
, а за допомогою account.report.external.value
. Кожен із цих об’єктів безпосередньо вказує на вираз, на який він впливає, тому тут потрібно дуже мало робити з їх вибором.
Формули можуть бути одними з наведених нижче:
sum
Якщо результат має бути сумою всіх зовнішніх значень за період.
most_recent
Якщо результат має бути значенням останнього зовнішнього значення за період.
Крім того, підформули можна використовувати двома способами:
rounding=X
Заміна
X
числом вказує на округлення суми до X знаків після коми.editable
Вказує на те, що цей вираз можна редагувати вручну, що призводить до відображення піктограми у звіті, що дозволяє користувачеві виконати цю дію.
Примітка
Ручні значення створюються для значення date_to
, вибраного наразі у звіті.
Обидві підформули можна змішувати, розділяючи їх знаком ;
.
Example
editable;rounding=2
Рушій „Налаштування функцій Python“¶
Цей механізм надає розробникам можливість впроваджувати власні обчислення виразів у кожному окремому випадку. Формула – це назва функції Python, яку потрібно викликати, а підформула – це ключ, який потрібно вибрати у словнику, що повертається цією функцією. Використовуйте його, лише якщо ви створюєте власний власний модуль.
Стовпці¶
Звіти можуть мати невизначену кількість стовпців для відображення. Кожен стовпець отримує свої значення з виразів, оголошених у рядках. Поле expression_label стовпця містить позначку виразів, значення яких відображається. Якщо рядок не має виразу у цьому полі, то для нього в цьому стовпці нічого не відображається. Якщо потрібно кілька стовпців, необхідно використовувати різні позначки виразів.

Під час використання функції порівняння періодів, яка знаходиться на вкладці Параметри бухгалтерського звіту, усі стовпці повторюються в кожному періоді та для кожного періоду.