Звіти PDF¶
За допомогою Studio ви можете редагувати наявні PDF-звіти (наприклад, рахунки-фактури, комерційні пропозиції тощо) або створювати нові.
Типовий шаблон¶
Типовий макет звітів налаштовується поза Studio. Перейдіть до , потім у розділі Компанії на головній сторінці натисніть Налаштувати макет документа. Параметри макета є специфічними для компанії, але застосовуються до всіх звітів.
Порада
Ви можете побачити, як різні налаштування впливають на макет звіту, у попередньому перегляді звіту праворуч у вікні Налаштуйте макет документа. Під час створення або редагування звіту ви можете переглянути його, натиснувши Попередній перегляд ліворуч на екрані.
Використовуйте такі налаштування:
Макет: Доступно сім макетів:
Фон: Доступні такі фони:
Порожній: Нічого не відображається.
Демонстраційний логотип: На фоні відображається демонстраційний логотип.
Власний: Завантажте власне фонове зображення.
Текст: Доступно вісім шрифтів: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (підтримує арабське та латинське письмо) і Fira Mono. Перейдіть на веб-сайт Google Fonts, щоб переглянути їх.
Логотип компанії: Натисніть кнопку Редагувати, щоб завантажити або змінити логотип. Це додає логотип до запису компанії в моделі Компанія, до якої можна отримати доступ, перейшовши до , а потім натиснувши Оновити інформацію у розділі Компанії.
Кольори: Змініть основний і додатковий кольори, які використовуються для структурування звітів. Типові кольори автоматично генеруються на основі кольорів логотипу.
Адреса: Назва та адреса компанії відображаються в заголовку зовнішніх звітів. Ви можете додати кілька рядків тексту.
Слоган: Відображається в заголовку зовнішніх звітів, які використовують макети Light, Striped, Bubble, Wave та Folder, та в нижньому колонтитулі зовнішніх звітів, які використовують макети Boxed та Bold. Ви можете додати кілька рядків тексту.
Формат паперу: Визначає стандартний розмір паперу для звітів. Ви можете вибрати A4 (21 см × 29,7 см) та US Letter (21,59 см × 27,54 см). Це також можна визначити для окремих звітів у полі Формат паперу в Studio.
Примітка
Інші формати паперу можуть бути доступні залежно від того, які додатки або модулі ви встановили, наприклад, аркуші етикеток для додатка Склад або бейджі подій для додатка Події.
Створення нових PDF-звітів¶
Щоб створити новий звіт для моделі (наприклад, замовлення на продаж), відкрийте модель, натисніть кнопку (Перемкнути Studio), потім натисніть Звіти. Натисніть Створити і у вікні, що відкриється, виберіть тип звіту. Це використовується виключно для визначення того, що відображається в заголовку та нижньому колонтитулі:
Після створення звіту ви можете почати редагувати його.
Редагування PDF-звітів¶
Щоб отримати доступ до звітів, доступних для моделі, відкрийте модель, натисніть кнопку (Перемкнути Studio), потім натисніть Звіти. Виберіть існуючий звіт, щоб відкрити його.
Крім того, ви також можете відкрити Studio, натиснути Звіти і знайти конкретний звіт або модель.
Важливо
Наполегливо рекомендується дублювати стандартний звіт і вносити зміни в дубльовану версію. Щоб дублювати звіт, наведіть вказівник миші на верхній правий кут звіту, натисніть значок (вертикальне трикрапка), а потім виберіть Дублювати.
Опції¶
Після вибору або створення звіту ви можете використовувати параметри в лівій частині екрана, щоб:
Змінити Назву звіту: Нова назва застосовується скрізь (у Studio, в меню Друк під значком (шестерня) у вигляді форми та в імені PDF-файлу).
Змінити Формат паперу: якщо значення не вибрано, використовується формат, визначений у типовому макеті.
Показати в меню друку: щоб додати звіт до меню Друк у формі перегляду.
Перезавантажити з вкладення: щоб зберегти звіт як вкладення до запису під час першого створення та перезавантажувати оригінальну версію звіту при всіх наступних зверненнях. Це є юридичною вимогою для рахунків-фактур і використовується переважно в цьому випадку.
Обмежити видимість для груп: щоб обмежити доступність PDF-звіту для певних груп користувачів.
Редагувати джерела: щоб змінити звіт безпосередньо у файлі XML.
Скинути звіт: щоб відхилити всі зміни, внесені до звіту, та скинути його до стандартної версії.
Попередній перегляд друку: щоб створити та завантажити попередній перегляд звіту.
Редактор звітів¶
Редактор звітів дозволяє змінювати вміст та форматування звіту.
Порада
Ви можете Скасувати або Повторити зміни за допомогою відповідних кнопок або комбінацій клавіш
CTRL+ZіCTRL+Y.Зміни зберігаються автоматично, коли ви залишаєте звіт, або вручну за допомогою кнопки Зберегти.
Ви можете скинути звіт до його стандартної версії, натиснувши кнопку Скинути звіт у лівій частині екрана.
Важливо
Редагування верхнього та нижнього колонтитула звіту впливає на всі стандартні та користувацькі звіти.
Умовні блоки¶
Пунктирні прямокутники представляють умовні блоки (оператори if/else). Вони використовуються для показу/приховування вмісту на основі певних умов. Клацніть на блок, щоб переглянути умови.
Виберіть значення, щоб переглянути відповідний результат та за потреби відредагувати його.
Примітка
Умови можна редагувати лише у XML.
Інший вміст¶
Існує два типи текстового вмісту у звітах:
Статичний текст, тобто текст, який не виділений синім кольором і може бути змінений безпосередньо в редакторі.
Динамічний текст, тобто текст, який виділений синім кольором і замінюється значеннями полів під час створення звіту, наприклад, номер замовлення на продаж або дата комерційної пропозиції.
Ви можете додавати вміст (наприклад, поля, списки, таблиці, зображення, банери тощо) до звіту за допомогою команд. Введіть /, щоб відкрити панель можливостей, потім введіть назву команди або виберіть її зі списку.
Щоб додати статичний текст до звіту, введіть текст у потрібному місці.
Для більш складних змін ви можете редагувати звіт безпосередньо в XML.
Додавання поля¶
Щоб додати поле, введіть / і виберіть команду Поле. У списку, що відкриється, виберіть або знайдіть потрібне поле; натисніть стрілку праворуч від назви поля, щоб отримати доступ до списку пов’язаних полів, якщо потрібно. Потім вкажіть значення за замовчуванням, яке буде показано, якщо поле не заповнено в записі, і натисніть Enter.
Додавання або редагування таблиці¶
Існує два типи таблиць у звітах:
Статичні таблиці, які використовуються для відображення статичного тексту або полів. Для цього типу таблиці ви визначаєте кількість стовпців і рядків під час додавання таблиці.
Динамічні таблиці, які використовуються для відображення даних із реляційних полів. Для цього типу таблиці ви визначаєте лише кількість стовпців під час додавання таблиці. Кількість рядків у створеному звіті визначатиметься кількістю записів у пов’язаній моделі, які зв’язані з поточною моделлю.
Example
У звіті замовлення на продаж динамічна таблиця використовується для відображення рядків замовлення, пов’язаних із замовленням на продаж. Якщо замовлення на продаж містить 10 рядків замовлення, таблиця у створеному звіті матиме 10 рядків; якщо воно містить два рядки замовлення, таблиця матиме два рядки.
Додавання або редагування статичної таблиці¶
Щоб додати статичну таблицю, введіть / і виберіть команду Таблиця. Визначте кількість стовпців і рядків для таблиці. Після додавання таблиці ви можете почати її редагування.
Ви можете вставляти, переміщувати та видаляти стовпці та рядки за допомогою інструментів таблиці. Наведіть курсор на верхню частину стовпця або ліворуч від рядка, потім натисніть фіолетовий прямокутник і виберіть опцію.
Щоб змінити розмір стовпця, перетягніть межу стовпця до потрібного положення; скиньте всі стовпці до їх стандартного розміру, вибравши Скинути розмір з інструментів таблиці.
Додайте поле на ваш вибір в осередок або додайте статичний текст, ввівши його.
Порада
Щоб додати текст структурованим способом без використання таблиці, ви можете використовувати стовпці. Додайте стовпці, ввівши / і вибравши відповідну команду: 2 стовпці, 3 стовпці або 4 стовпці.
Додати або редагувати динамічну таблицю¶
Примітка
Тільки зв’язки типу
one2manyабоmany2manyможуть відображатися як динамічні таблиці.Існуюча динамічна таблиця в стандартному звіті має складнішу структуру, ніж динамічна таблиця, яку ви додаєте самостійно. Для таких таблиць можна вставляти або видаляти стовпці; неможливо переміщувати стовпці або вставляти, переміщувати чи видаляти рядки.
Щоб додати динамічну таблицю, введіть / і виберіть команду Dynamic Table. У списку, що відкриється, виберіть або знайдіть зв’язок, на якому базуватиметься таблиця, і натисніть Enter. Після додавання таблиці ви можете почати її редагування.
Ви можете вставляти, переміщувати та видаляти стовпці за допомогою інструментів таблиці, як для статичної таблиці. Також можна вставляти статичні рядки, які відображатимуться вище або нижче згенерованих рядків.
Щоб додати поле до комірки, видаліть будь-який текст-заповнювач, а потім додайте поле на ваш вибір. Діалогове вікно, що відкриється, показує вихідний об’єкт для поля (наприклад, модель Позиції замовлення) та список доступних полів.
Замініть мітку Column name на мітку на ваш вибір.
Примітка
Стандартний рядок автоматично перебирає вміст поля, генеруючи рядок у звіті для кожного значення поля (наприклад, один рядок на позицію замовлення).
Форматування¶
Щоб відформатувати текст у звіті, виділіть його, а потім відформатуйте за допомогою параметрів у текстовому редакторі.
Редагування XML звіту¶
Попередження
Безпосереднє зміна XML може призвести до проблем зі звітом під час оновлень. Якщо це станеться, просто скопіюйте свої зміни зі старої бази даних у оновлену базу даних.
Щоб редагувати XML звіту, натисніть Edit sources на лівій панелі.
Приклади¶
Щоб змінити спосіб представлення даних у вашому звіті, ви можете вручну змінити стандартний віджет поля. У прикладі нижче дата замовлення показує дату й час за замовчуванням, тоді як ціна за одиницю має точність два знаки після коми за замовчуванням.
<div class="oe_structure"> <span t-field="doc.date_order"/> <span t-field="doc.price_unit"/> </div>
Використовуючи t-options, у цьому випадку параметр widget, ці поля можна змінити, щоб показувати лише дату та точність чотири знаки після коми відповідно:
<div class="oe_structure"> <span t-field="doc.date_order" t-options="{'widget': 'date'}"/> <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/> </div>
Якщо ви хочете показувати/приховувати вміст на основі конкретних умов, ви можете вручну додати керуючі оператори if/else у XML звіту.
Наприклад, якщо ви хочете приховати власну таблицю даних, якщо немає міток, ви можете використовувати атрибут t-if для визначення умови, яка потім оцінюється як True або False. Таблиця не відображатиметься, якщо в пропозиції немає міток.
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
Якщо ви хочете відобразити інший блок у випадку, коли оператор t-if оцінюється як False, ви можете вказати його за допомогою оператора t-else. Блок t-else повинен безпосередньо слідувати за блоком t-if у структурі документа. Немає потреби вказувати будь-яку умову в атрибуті t-else. Як приклад, давайте покажемо коротке повідомлення, що пояснює відсутність міток у пропозиції:
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>
Використовуючи нотацію t-if/t-else, редактор звітів розпізнає, що ці розділи взаємовиключні та повинні відображатися як умовні блоки:
Ви можете перемикати умови за допомогою редактора для попереднього перегляду їх виводу:
Якщо ви бажаєте мати кілька варіантів, ви також можете використовувати директиви t-elif для додавання проміжних умов. Наприклад, ось як змінюється заголовок звітів про замовлення на продаж залежно від стану базового документа.
<h2 class="mt-4">
<span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
<span t-elif="doc.state in ['draft','sent']">Quotation # </span>
<span t-else="">Order # </span>
<span t-field="doc.name">SO0000</span>
</h2>
Заголовок Про-форма рахунок використовується залежно від деяких контекстних умов. Якщо ці умови не виконуються і стан документа є draft або sent, тоді використовується Комерційна пропозиція. Якщо жодна з цих умов не виконується, заголовок звіту — Замовлення.
Робота з зображеннями у звіті може бути складною, оскільки точний контроль над розміром і поведінкою зображення не завжди очевидний. Ви можете вставляти поля зображень за допомогою редактора звітів (використовуючи команду Field), але їх вставка в XML за допомогою директиви t-field та супутніх атрибутів t-options забезпечує кращий контроль над розміром і позиціонуванням.
Наприклад, наступний код виводить поле image_128 продукту рядка як зображення шириною 64 пікселі (з автоматичною висотою на основі співвідношення сторін зображення).
<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>
Для віджетів зображень доступні наступні опції:
width: ширина зображення, зазвичай у пікселях або одиницях довжини CSS (наприклад,rem) (залиште порожнім для автоматичної ширини).height: висота зображення, зазвичай у пікселях або одиницях довжини CSS (наприклад,rem) (залиште порожнім для автоматичної висоти).class: CSS-класи, застосовані до тегуimg; доступні класи Bootstrap.alt: альтернативний текст зображенняstyle: атрибут стилю; він дозволяє перевизначати стилі більш вільно, ніж за допомогою класів Bootstrap.
Ці атрибути повинні містити рядки, тобто текст, укладений у лапки всередині лапок, наприклад, t-options-width="'64px'" (або, як альтернатива, дійсний вираз Python).
Примітка
Віджет зображення не можна використовувати на тезі img. Натомість встановіть директиву t-field на вузлі span (для вбудованого вмісту) або div (для блокового вмісту).
Наприклад, додамо стовпець із зображенням продукту в таблицю комерційної пропозиції:
<table class="table table-sm o_main_table table-borderless mt-4">
<thead style="display: table-row-group">
<tr>
<th>Image</th>
<th name="th_description" class="text-start">Description</th>
<th>Product Category</th>
<th name="th_quantity" class="text-end">Quantity</th>
<th name="th_priceunit" class="text-end">Unit Price</th>
[...]
<t t-foreach="lines_to_report" t-as="line">
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
<tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
<t t-if="not line.display_type">
<td>
<span t-field="line.product_template_id.image_128"
t-options-widget="'image'"
t-options-width="'64px'"
t-options-class="'rounded-3 shadow img-thumbnail'"
/>
</td>
<td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
<td t-out="line.product_id.categ_id.display_name"/>
Атрибут t-options-width обмежує ширину зображення до 64 пікселів, а класи Bootstrap, використані в t-options-class, створюють рамку, подібну до мініатюри, із закругленими кутами та тінню.