Власні звіти¶
Odoo постачається з потужною та простою у використанні системою звітності. Механізм дозволяє створювати нові звіти, такі як податкові звіти, баланси та звіти про прибутки та збитки зі специфічними угрупованнями та макетами.
Важливо
Активуйте режим розробника, щоб отримати доступ до інтерфейсу створення бухгалтерських звітів.
Щоб створити новий звіт, відкрийте застосунок Бухгалтерія та перейдіть до . Звідси ви можете створити або кореневий звіт, або варіант.
Кореневі звіти¶
Кореневі звіти можна розглядати як загальні, нейтральні облікові звіти. Вони служать моделями, на основі яких будуються локальні облікові версії. Якщо звіт не має кореневого звіту, він сам вважається кореневим звітом.
Example
Податковий звіт для Бельгії та США використовуватиме одну й ту саму загальну версію як основу та адаптує її до своїх внутрішніх нормативних актів.
Створюючи новий кореневий звіт, вам потрібно створити для нього пункт меню. Для цього відкрийте звіт і на цьому ж звіті натисніть значок (Дії), потім виберіть Створити пункт меню. Оновіть сторінку; звіт тепер доступний у розділі .
Примітка
Випадки, коли потрібно створювати новий кореневий звіт, трапляються рідко, наприклад, коли податкові органи країни вимагають нового та специфічного типу звіту.
Варіанти¶
Варіанти є країно-специфічними версіями кореневих звітів і, отже, завжди посилаються на кореневий звіт. Щоб створити варіант, виберіть загальний (кореневий) звіт у полі Root Report під час створення нового звіту.
Коли кореневий звіт відкривається з одного з головних меню застосунку бухгалтерії, всі його варіанти відображаються у селекторі варіантів у верхньому правому куті перегляду.
Example
На наступному зображенні Звіт ПДВ (BE) є варіантом кореневого Загального податкового звіту.
Рядки звіту¶
Після створення звіту (кореневого або варіанту) потрібно заповнити його рядками звіту. Ви можете створити новий рядок, натиснувши Додати рядок, або змінити наявний рядок звіту, клацнувши по ньому. Усі рядки звіту вимагають Назву і можуть мати додатковий необов’язковий Код (на ваш вибір), якщо ви бажаєте використовувати їхнє значення у формулах.
Вирази¶
Кожен рядок звіту може містити один або кілька виразів. Вирази можна розглядати як підзмінні, необхідні для рядка звіту. Щоб створити вираз, натисніть Додати рядок всередині рядка звіту.
Під час створення виразу необхідно вказати Мітку, яка використовується для посилання на цей вираз. Тому вона має бути унікальною серед виразів кожного рядка. Також має бути вказано Механізм обчислення та Формулу. Механізм визначає, як інтерпретуються ваші формули та підформули. За потреби можна комбінувати вирази з різними механізмами обчислення в межах одного рядка.
Примітка
Залежно від механізму, підформули також можуть бути обов’язковими.
Механізм „Odoo Domain“¶
З цим механізмом формула інтерпретується як домен Odoo, що націлений на об’єкти account.move.line.
Підформула дозволяє визначити, як рядки проводок, що відповідають домену, використовуються для обчислення значення виразу:
sumРезультатом є сума всіх балансів відповідних рядків проводок.
sum_if_posРезультатом є сума всіх балансів відповідних рядків проводок, якщо ця сума позитивна. Інакше це
0.sum_if_negРезультатом є сума всіх балансів відповідних рядків проводок, якщо ця сума негативна. Інакше це
0.count_rowsРезультатом є кількість підрядків цього виразу. Якщо рядок звіту має значення групування, це відповідатиме кількості унікальних ключів групування в відповідних рядках проводок. Інакше це буде кількість відповідних рядків проводок.
Ви також можете поставити знак - на початку підформули, щоб змінити знак результату на протилежний.
Механізм „Aggregate Other Formulas“¶
Використовуйте цей механізм, коли потрібно виконати арифметичні операції над сумами, отриманими для інших виразів. Формули тут складаються з посилань на вирази, розділені одним із чотирьох основних арифметичних операторів (додавання +, віднімання -, ділення / та множення *). Щоб посилатися на вираз, введіть код його рядка звіту, потім крапку . та мітку виразу (напр. код.мітка).
Підформули можуть бути одними з наступних:
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(xml_id | report_id)Використовується для зіставлення виразу з іншого звіту, на який вказує xml_id або сам ідентифікатор звіту.
Механізм „Prefix of Account Codes“¶
Цей механізм використовується для відповідності сум, зроблених на рахунках, використовуючи префікси кодів цих рахунків як змінні в арифметичному виразі.
Example
21Example
21 + 10 - 521 і 10, та віднімає сальдо рядків на рахунках із префіксом 5.Також можна ігнорувати вибрані підпрефікси.
Example
21 + 10\(101, 102) - 5\(57)101, 102 і 57.Ви можете застосувати «підфільтрацію» за кредитом та дебетом, використовуючи суфікси C і D. У цьому випадку рахунок буде враховуватися, лише якщо його префікс збігається і якщо загальне сальдо рядків проводок на цьому рахунку є кредитовим/дебетовим.
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)Якщо мітка, на яку ви посилаєтеся, визначена у файлі даних, можна використовувати xmlid замість id.
Example
tag(my_module.my_tag)Ви також можете використовувати арифметичні вирази з тегами, можливо, поєднуючи їх з вибором за префіксом.
Example
tag(my_module.my_tag) + tag(42) + 1010Суфікси C і D можна використовувати таким же чином з тегами.
Example
tag(my_module.my_tag)CВиключення за префіксом також працює з тегами.
Example
tag(my_module.my_tag)\(10)10.Механізм „External Value“¶
Механізм „external value“ використовується для посилання на ручні та перенесені значення. Ці значення зберігаються не за допомогою 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 стовпця вказує мітку виразів, чиє значення відображається. Якщо рядок не має виразу в цьому полі, то для нього в цьому стовпці нічого не відображається. Якщо потрібно кілька стовпців, ви повинні використовувати різні мітки виразів.
При використанні функції порівняння періодів, що знаходиться на вкладці Параметри бухгалтерського звіту, всі стовпці повторюються в кожному періоді та для кожного періоду.
Групування рядків¶
Нестандартне групування можливе шляхом додавання або використання існуючих полів моделі Елемент журналу, за умови, що поля є пов’язаними та незбереженими.
Примітка
Групування рядків вимагає, щоб звіт мав явні рядки звіту, які можна редагувати. Відкладені звіти, наприклад, не підтримують групування рядків, оскільки вони використовують динамічні рядки, що генеруються.
Створити нове поле для елемента журналу¶
Щоб створити незбережене пов’язане поле в моделі Елемент журналу, спершу перейдіть до та натисніть піктограму (помилка), потім натисніть Поля. Натисніть Створити, щоб створити нове поле, та заповніть наступні поля:
Назва поля: технічна назва для поля
Мітка поля: мітка, що відображатиметься для поля
Тип поля: тип поля, на який має вказувати це пов’язане поле
Збережено: Залиште це поле непозначеним, оскільки для групування рядків можна використовувати лише незбережені поля.
Пов’язана модель: Якщо тип поля — one2many, many2many або many2one, виберіть модель вихідного поля для групування.
Визначення пов’язаного поля: технічний шлях до поля, за яким потрібно групувати
Example
Щоб групувати за командою продажів комерційного партнера, встановіть визначення пов’язаного поля як
move_id.team_id.
Групування рядків¶
Щоб згрупувати рядки, перейдіть на вкладку Рядки потрібного звіту, клацніть на рядок, який потрібно згрупувати, і відредагуйте поле Групувати за. Введіть технічну назву (Назва поля) поля, яке буде використовуватися як ключ групування.
Порада
Щоб знайти список усіх полів моделі та їхніх технічних назв, перейдіть до і клацніть піктограму (помилка), потім клацніть Поля. Технічна назва кожного поля вказана в стовпці Назва поля.
Налаштування користувацького податкового звіту¶
Конфігурація звіту¶
Порада
Усі технічні терміни та функції механізму звітів Odoo пояснюються в попередніх розділах цієї сторінки. Ми наполегливо рекомендуємо прочитати ці розділи перед налаштуванням користувацького податкового звіту.
Щоб створити користувацький податковий звіт, відкрийте програму Бухгалтерія, перейдіть до , потім натисніть Створити:
Введіть назву для вашого звіту.
Виберіть Кореневий звіт.
У полі Доступність виберіть Відповідає країні, потім виберіть Країну, що відповідає вашій компанії.
Далі створіть рядок звіту, натиснувши Додати рядок. Після створення клацніть на цей рядок звіту, щоб налаштувати його:
Натисніть Додати рядок ще раз, щоб створити Вираз, і назвіть його.
На вкладці Визначення виберіть Механізм обчислення для цього виразу залежно від наступних сценаріїв:
У цьому сценарії ваша компанія використовує податкові сітки:
Виберіть Податкові мітки як механізм обчислення. Odoo використовує це поле для зв’язування рядка звіту з вашими податками.
У полі Формула введіть короткий ідентифікатор сітки (наприклад,
vat_sales_base). Odoo автоматично генерує варіанти+і-цієї мітки для відображення в .У полі Підформула введіть або
baseдля звітування про суму без податку, абоtaxдля звітування про фактичну суму податку, зібраного/сплаченого.
Повторіть цей процес за необхідності. Потім Зберегти та закрити.
Крім того, ви можете:
Виберіть Aggregate Other Formulas як обчислювальний механізм. Odoo використовує це поле для виконання математичних операцій над рядками, вже присутніми у звіті, замість сканування необроблених транзакцій.
У полі Formula використовуйте базову алгебру з посиланням на коди ваших рядків (наприклад,
LINE_10 - LINE_20).
Повторіть цей процес за необхідності. Потім Зберегти та закрити.
У цьому сценарії ваша компанія не використовує податкові сітки. Натомість вона відстежує все суворо через рахунки головної книги:
Виберіть Prefix of Account Codes як обчислювальний механізм: Odoo використовує це для рядків, які потребують отримання фінансових підсумків. Замість пошуку міток транзакцій Odoo отримує актуальні залишки безпосередньо з вашого плану рахунків.
У полі Formula введіть початкові цифри рахунків, які ви хочете відстежувати (наприклад,
40витягне загальну суму всіх рахунків доходів, що починаються з400000,401000тощо).
Повторіть цей процес за необхідності. Потім Зберегти та закрити.
Крім того, ви можете:
Виберіть Aggregate Other Formulas як обчислювальний механізм. Odoo використовує це для обчислення проміжних підсумків, чистого податку або загальних підсумків шляхом додавання або віднімання інших рядків звіту.
У полі Formula використовуйте базову алгебру з посиланням на коди ваших рядків (наприклад,
LINE_10 - LINE_20).
Повторіть цей процес за необхідності. Потім Зберегти та закрити.
У цьому сценарії ваша компанія потребує розширеної фільтрації, ручних коригувань користувачем або складної алгоритмічної логіки, яку стандартні мітки та префікси рахунків не можуть обробити:
Виберіть Odoo Domain як обчислювальний механізм: Odoo використовує це, щоб повністю обійти податкові мітки та фільтрувати необроблені записи журналу (
account.move.line) за допомогою стандартного синтаксису пошуку Odoo.У полі Formula введіть дійсний домен, починаючи з дужок, щоб ізолювати транзакції, звільнені від податків, для конкретних категорій партнерів.
Крім того, ви можете:
Виберіть External Value як обчислювальний механізм. Odoo використовує це для реєстрації ручних коригувань або перенесених історичних значень.
У полі Formula введіть або
sum(щоб додати всі ручні значення разом у багатоперіодних звітах), абоmost_recent(щоб відображати лише останнє значення).У полі Subformula введіть
editable, щоб відобразити піктограму редагування в активному звіті, що дозволить користувачам змінювати значення вручну. Крім того, ви можете округлювати числа, ввівшиrounding=x.
Крім того, ви можете:
Виберіть Custom Python Function як обчислювальний механізм. Odoo використовує це як механізм виконання для запуску конкретних обчислень через бекенд-кодування, коли правила включають прогресивні діапазони, цикли або багаторівневі пороги.
У полі Formula введіть точну технічну назву методу Python, визначеного у вашому спеціальному модулі локалізації.
Повторіть цей процес за необхідності. Потім Зберегти та закрити.
На вкладці Options виразу заповніть поле Carry Over To формулою, щоб завжди переносити залишки або переносити їх лише тоді, коли сума від’ємна. Залиште це поле порожнім, якщо ви не хочете використовувати цю функцію.
Example
if_below(EUR(0))Налаштування податків¶
Далі перейдіть до і натисніть New, щоб створити та configure new taxes для вашого власного звіту про податки. Створіть податки для Продажів та Закупівель і заповніть Tax Grids для всіх податків, використовуючи відповідні податкові сітки, які ви створили раніше. Нарешті, переконайтеся, що ви specify both a tax payable and tax receivable account для кожного податку.
Example
Заключний запис¶
Щоб закрити податки, tax group має бути вказана для кожного податку, що використовується у вашому власному звіті про податки. Для цього відкрийте програму Accounting, перейдіть до , відкрийте податок, який потребує податкової групи, натисніть вкладку Advanced Options і виберіть групу в полі Tax Group. Після призначення натисніть значок (right arrow) і встановіть як Tax Payable Account, так і Tax Receivable Account.
Порада
Коли все налаштовано, обов’язково протестуйте свій звіт, створивши рахунки-фактури, рахунки та кредитні ноти, використовуючи податки, специфічні для цього звіту. Нарешті, протестуйте сам заключний запис.
Якщо ви хочете приховати конкретний рахунок від відображення у заключному записі податку, перейдіть до , виберіть податок і натисніть значок (settings adjust). Звідти встановіть прапорець Tax Closing Entry, щоб налаштувати його видимість.
Див. також