Власні звіти

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

Важливо

Активуйте режим розробника, щоб отримати доступ до інтерфейсу створення бухгалтерських звітів.

Щоб створити новий звіт, відкрийте застосунок Бухгалтерія та перейдіть до Налаштування ‣ Бухгалтерські звіти. Звідси ви можете створити або кореневий звіт, або варіант.

Кореневі звіти

Кореневі звіти можна розглядати як загальні, нейтральні облікові звіти. Вони служать моделями, на основі яких будуються локальні облікові версії. Якщо звіт не має кореневого звіту, він сам вважається кореневим звітом.

Example

Податковий звіт для Бельгії та США використовуватиме одну й ту саму загальну версію як основу та адаптує її до своїх внутрішніх нормативних актів.

Створюючи новий кореневий звіт, вам потрібно створити для нього пункт меню. Для цього відкрийте звіт і на цьому ж звіті натисніть значок (Дії), потім виберіть Створити пункт меню. Оновіть сторінку; звіт тепер доступний у розділі Бухгалтерія ‣ Звітність.

Примітка

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

Варіанти

Варіанти є країно-специфічними версіями кореневих звітів і, отже, завжди посилаються на кореневий звіт. Щоб створити варіант, виберіть загальний (кореневий) звіт у полі Root Report під час створення нового звіту.

Коли кореневий звіт відкривається з одного з головних меню застосунку бухгалтерії, всі його варіанти відображаються у селекторі варіантів у верхньому правому куті перегляду.

Example

На наступному зображенні Звіт ПДВ (BE) є варіантом кореневого Загального податкового звіту.

Рядки звіту

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

Параметри рядків механізму.

Вирази

Кожен рядок звіту може містити один або кілька виразів. Вирази можна розглядати як підзмінні, необхідні для рядка звіту. Щоб створити вираз, натисніть Додати рядок всередині рядка звіту.

Під час створення виразу необхідно вказати Мітку, яка використовується для посилання на цей вираз. Тому вона має бути унікальною серед виразів кожного рядка. Також має бути вказано Механізм обчислення та Формулу. Механізм визначає, як інтерпретуються ваші формули та підформули. За потреби можна комбінувати вирази з різними механізмами обчислення в межах одного рядка.

Примітка

Залежно від механізму, підформули також можуть бути обов’язковими.

Механізм „Odoo Domain“

З цим механізмом формула інтерпретується як домен Odoo, що націлений на об’єкти account.move.line.

Підформула дозволяє визначити, як рядки проводок, що відповідають домену, використовуються для обчислення значення виразу:

sum

Результатом є сума всіх балансів відповідних рядків проводок.

sum_if_pos

Результатом є сума всіх балансів відповідних рядків проводок, якщо ця сума позитивна. Інакше це 0.

sum_if_neg

Результатом є сума всіх балансів відповідних рядків проводок, якщо ця сума негативна. Інакше це 0.

count_rows

Результатом є кількість підрядків цього виразу. Якщо рядок звіту має значення групування, це відповідатиме кількості унікальних ключів групування в відповідних рядках проводок. Інакше це буде кількість відповідних рядків проводок.

Ви також можете поставити знак - на початку підформули, щоб змінити знак результату на протилежний.

Рядок виразу всередині рядка звіту

Механізм „Tax Tags“

Формула для цього механізму складається з імені, яке використовується для відповідності податковим мітками. Якщо такі мітки не існують під час створення виразу, вони будуть створені.

При обчисленні виразу обчислення виразу можна приблизно виразити як: (сума рядків проводок з міткою +`**)** `- (сума рядків проводок з міткою `-`).

Example

Якщо формула має вигляд tag_name, механізм відповідає податковим міткам +tag_name та -tag_name, створюючи їх за потреби. Для прикладу: формулою відповідають дві мітки. Якщо формула має вигляд A, вона вимагатиме (і створить за потреби) мітки +A та -A.

Механізм „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

21
Арифметичні вирази також можуть бути одним префіксом, як тут.

Example

21 + 10 - 5
Ця формула додає сальдо рядків проводок на рахунках, коди яких починаються з 21 і 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)
Ця формула відповідає рахункам, чиї пов’язані мітки містять мітку з id 25.

Якщо мітка, на яку ви посилаєтеся, визначена у файлі даних, можна використовувати xmlid замість id.

Example

tag(my_module.my_tag)
Ця формула відповідає рахункам, пов’язані теги яких містять тег, позначений як my_module.my_tag.

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

Example

tag(my_module.my_tag) + tag(42) + 10
Залишки рахунків, позначених як my_module.my_tag, будуть підсумовані із залишками рахунків, пов’язаних з тегом з ID 42, та рахунків з префіксом коду 10

Суфікси C і D можна використовувати таким же чином з тегами.

Example

tag(my_module.my_tag)C
Ця формула відповідає рахункам з тегом my_module.my_tag та кредитовим залишком.

Виключення за префіксом також працює з тегами.

Example

tag(my_module.my_tag)\(10)
Ця формула відповідає рахункам з тегом my_module.my_tag та кодом, що не починається з 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).

Повторіть цей процес за необхідності. Потім Зберегти та закрити.

На вкладці Options виразу заповніть поле Carry Over To формулою, щоб завжди переносити залишки або переносити їх лише тоді, коли сума від’ємна. Залиште це поле порожнім, якщо ви не хочете використовувати цю функцію.

Example

if_below(EUR(0))
Ця формула перенесе лише суми нижче 0,00 EUR.

Налаштування податків

Далі перейдіть до Configuration ‣ Taxes і натисніть New, щоб створити та configure new taxes для вашого власного звіту про податки. Створіть податки для Продажів та Закупівель і заповніть Tax Grids для всіх податків, використовуючи відповідні податкові сітки, які ви створили раніше. Нарешті, переконайтеся, що ви specify both a tax payable and tax receivable account для кожного податку.

Example

Налаштування податкових сіток.

Заключний запис

Щоб закрити податки, tax group має бути вказана для кожного податку, що використовується у вашому власному звіті про податки. Для цього відкрийте програму Accounting, перейдіть до Configuration ‣ Taxes, відкрийте податок, який потребує податкової групи, натисніть вкладку Advanced Options і виберіть групу в полі Tax Group. Після призначення натисніть значок (right arrow) і встановіть як Tax Payable Account, так і Tax Receivable Account.

Порада

  • Коли все налаштовано, обов’язково протестуйте свій звіт, створивши рахунки-фактури, рахунки та кредитні ноти, використовуючи податки, специфічні для цього звіту. Нарешті, протестуйте сам заключний запис.

  • Якщо ви хочете приховати конкретний рахунок від відображення у заключному записі податку, перейдіть до Configuration ‣ Taxes, виберіть податок і натисніть значок (settings adjust). Звідти встановіть прапорець Tax Closing Entry, щоб налаштувати його видимість.

Див. також

Tax closing