Формули в шаблонах
Формула рахує значення під час друку і ставить результат на своє місце в документі. Вона потрібна, коли готової змінної для потрібного числа немає: аванс у відсотках від суми, вага партії, ціна за одиницю з урахуванням знижки.
Як вставити формулу
- Поставте курсор у потрібне місце тексту або клітинки.
- У лівій панелі редактора відкрийте розділ Маркери і натисніть Формула. У текст вставиться
SKYNUM_FORMULA{ }. - Усередині дужок запишіть вираз. Змінні вставляйте з панелі, як і в звичайному тексті.
- Збережіть шаблон і надрукуйте форму з реального документа.
Приклад: аванс 50% від суми документа.
Аванс: SKYNUM_FORMULA{$DOC_AMOUNT * 0.5} грн
У рядку товарів формула рахується для кожного товару окремо:
SKYNUM_FORMULA{$DOC_ITEM_PRICE * (1 - $DOC_ITEM_DISCOUNT / 100)}
Що можна писати у виразі
Арифметика: +, -, *, / і дужки. Відсоток записують діленням на 100: $DOC_AMOUNT * 15 / 100.
Числа пишуть із крапкою: 0.5, 1.2. Текст — у лапках: "Відвантажено".
Суми, кількості, відсотки й ваги у виразі є числами. Змінні «Так» / «Ні» є логічними значеннями. Дати є датами, про них — окремий розділ нижче.
Округлення
Скільки знаків після коми буде в надрукованому результаті, визначає налаштування Знаків після коми в блоці Сторінка та формат. Докладніше: Сторінка, колонтитули і формат PDF.
Якщо в конкретному місці знаків має бути менше, округліть у самій формулі:
ROUND(x, 2)— до двох знаків,ROUND(x, 0)— до цілого;ROUNDUP(x, 0)— завжди вгору;ROUNDDOWN(x, 0)— завжди вниз.
SKYNUM_FORMULA{ROUND($DOC_AMOUNT * 0.5, 0)} аванс цілим числом
SKYNUM_FORMULA{ROUNDUP($DOC_ITEM_QUANTITY / 12, 0)} кількість ящиків по 12 штук
Правила округлення з параметрів системи стосуються сум у самих документах. На результат формули діє лише округлення, записане у формулі.
Дати
Дати у виразі є датами, а не текстом. Їх можна порівнювати між собою, додавати до них дні й віднімати одну від одної. Різниця двох дат — ціле число днів.
SKYNUM_FORMULA{$TODAY - $DOC_DATE} днів від дати документа
SKYNUM_FORMULA{$DOC_DATE + 14} дата через два тижні
SKYNUM_FORMULA{$AGREEMENT_DATE_END - $TODAY} днів до кінця договору
Сьогоднішня дата ($TODAY) — день, коли документ друкують; вона є в розділі Маркери.
Конкретний день записують через DATE у звичному форматі:
SKYNUM_FORMULA{IF($DOC_DATE < DATE("01.01.2027"), "за старою ціною", "за новою ціною")}
Дата як результат друкується у вигляді дд.мм.рррр. У змінних, де є час (наприклад, дата створення), у розрахунок іде лише день.
Якщо дата може бути не заповнена, наприклад дата завершення договору, спершу перевірте != "" через AND або IF:
SKYNUM_FORMULA{IF($AGREEMENT_DATE_END != "", $AGREEMENT_DATE_END - $TODAY, "")}
Функції
Вибір і порівняння:
IF(умова, якщо так, якщо ні)— наприкладIF($DOC_AMOUNT_VAT > 0, "з ПДВ", "без ПДВ");AND,OR,NOT— для складених умов;MIN(a, b),MAX(a, b),ABS(x).
Текст:
CONTAINS("Київ", $DELIVERY_RECIPIENT_ADDRESS)— чи є перший текст у другому; великі й малі літери різняться;LEN(текст)— довжина;LEFT(текст, 3),RIGHT(текст, 3),MID(текст, 2, 3)— частина тексту;CONCAT(текст1, текст2)— склеювання;SUBSTITUTE(текст, "що", "на що")— заміна.
Сума прописом:
WORDS(сума, код валюти)— текст як у змінній Сума прописом, але для будь-якого результату. Код валюти беріть зі змінної документа:
Аванс: SKYNUM_FORMULA{$DOC_AMOUNT * 0.5} грн
(SKYNUM_FORMULA{WORDS($DOC_AMOUNT * 0.5, $DOC_CURRENCY_CODE)})
Як виглядає результат
- Ціле число друкується цілим, дробове — з кількістю знаків із налаштування Знаків після коми (див. Округлення). Розділювачі тисяч і десяткова кома беруться з налаштування Формат чисел шаблону.
- Дата друкується як
дд.мм.рррр. - Логічний результат друкується як «Так» або «Ні».
- Текст друкується як є.
Якщо формулу не вдалося обчислити
Замість результату в документі з'являється червоне повідомлення з текстом формули. Так буває, коли у виразі є помилка в назві функції, ділення на нуль, порівняння тексту з числом або змінна, яку шаблон не знає.
Формули працюють у шаблонах формату Друк.
Коли формула не потрібна
Для суми документа, суми ПДВ, суми прописом, кількості, ціни і суми рядка є готові змінні — використовуйте їх. Формула для такого значення лише ускладнює шаблон.
Якщо компанія веде ПДВ у Skynum, у документах спирайтеся на стандартні поля ПДВ. Формула показує розрахункове значення в друці, але не замінює облік ПДВ. Докладніше: Облік ПДВ.
Перевірка
Надрукуйте форму з кількох документів: з одним рядком і з кількома, зі знижкою і без, з нулями в полях, які беруть участь у формулі. Порівняйте результат у PDF із ручним розрахунком.
Помилка у формулі потрапить у документ, який отримає клієнт. Для рахунків, актів і договорів перевіряйте формулу на реальних документах перед тим, як передати шаблон у роботу.
Підсумок
Формула — це SKYNUM_FORMULA{вираз} зі змінними, арифметикою і функціями. Результат друкується у форматі чисел шаблону, дата — як дд.мм.рррр, сума прописом — через WORDS. Якщо вираз не рахується, у документі з'являється червоне повідомлення, яке видно одразу при перевірці друку.