Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
|
receipts [2020/07/27 12:58] |
receipts [2024/05/31 13:06] (поточний) nightfly |
||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== Друк квитанцій ====== | ||
| + | Починаючи з релізу 0.9.8 з' | ||
| + | Вмикається модуль опцією **PRINT_RECEIPTS_ENABLED** в [[alteriniconf|alter.ini]]. За допомогою опції alter.ini **PRINT_RECEIPTS_IN_PROFILE** можна ввімкнути друк квитанцій особисто для кожного користувача прямо з його профілю \\. | ||
| + | Виглядає це приблизно так: | ||
| + | {{ : | ||
| + | На наш погляд, | ||
| + | |||
| + | |||
| + | Починаючи з релізу 1.0.9 стало можливим зберігати кожну зі згенерованих квитанцій у БД. Для цього просто відмітьте відповідний чекбокс на формі безпосередньо перед генерацією. Для використання цієї можливості потрібно всього лише додати в [[alteriniconf|alter.ini]] опцію // | ||
| + | ==== Шаблон ==== | ||
| + | ---- | ||
| + | Приклад шаблону квитанції ви знайдете за цим шляхом: | ||
| + | **content/ | ||
| + | |||
| + | Нескладно помітити, | ||
| + | |||
| + | * **heading** - " | ||
| + | |||
| + | * **body** - основна і, власне, | ||
| + | |||
| + | * **footer** - те саме що й " | ||
| + | |||
| + | |||
| + | Починаючи з релізу 1.0.9 стало можливим мати необмежену кількість шаблонів, | ||
| + | ==== Підтримувані змінні та макроси ==== | ||
| + | ---- | ||
| + | **{CURDATE}** - поточна дата \\ | ||
| + | **{CURTIME}** - поточний час \\ | ||
| + | **{CURDATENODELIMS}** - поточна дата без роздільників \\ | ||
| + | **{CURDATETIMENODELIMS}** - поточний час без роздільників \\ | ||
| + | **{INVOICE_NUM}** - номер квитанції. Генерується як наступний ID у таблиці //' | ||
| + | **{MONTH_COUNT}** - кількість місяців зазначених для оплати \\ | ||
| + | **{PAYFORPERIODSTR}** - оплата за період(місяці), | ||
| + | **{PAYTILLMONTHYEAR}** - буде замінено на поточний рік + наступний місяць (згідно з форматом дати, зазначеним у шаблоні) \\ | ||
| + | **{PAYTILLDATE}** - оплатити до зазначеної дати \\ | ||
| + | **{SERVICENAME}** - найменування оплачуваної послуги \\ | ||
| + | **{CONTRACT}** - номер договору користувача \\ | ||
| + | **{CONTRACTDATE}** - дата договору користувача \\ | ||
| + | **{REALNAME}** - ПІБ користувача \\ | ||
| + | **{CITY}** - місто проживання користувача \\ | ||
| + | **{STREET}** - вулиця проживання користувача \\ | ||
| + | **{BUILD}** - будинок \\ | ||
| + | **{APT}** - квартира \\ | ||
| + | **{EXTADDR_POSTALCODE}** - поштовий індекс з додаткових полів адреси. Вимагає ввімкненої alter.ini опції ADDRESS_EXTENDED_ENABLED. \\ | ||
| + | **{EXTADDR_TOWNDISTR}** - район/ | ||
| + | **{EXTADDR_ADDREXT}** - додаткова інфо за адресою з додаткових полів адреси. Потребує ввімкненої alter.ini опції ADDRESS_EXTENDED_ENABLED. \\ | ||
| + | **{PHONE}** - телефон користувача \\ | ||
| + | **{MOBILE}** - мобільний користувача \\ | ||
| + | **{TARIFF}** - тариф користувача \\ | ||
| + | **{TARIFFPRICE}** - вартість тарифу користувача \\ | ||
| + | **{TARIFFPRICECOINS}** - вартість тарифу користувача виражена в копійках \\ | ||
| + | **{TARIFFPRICEDECIMALS}** - вартість тарифу користувача з двома знаками після коми \\ | ||
| + | **{SUMM}** - сума до сплати \\ | ||
| + | **{SUMMCOINS}** - сума до сплати виражена в копійках \\\ | ||
| + | **{SUMMDECIMALS}** - сума до сплати з двома знаками після коми \\ | ||
| + | \\ | ||
| + | |||
| + | ==== QR-коди спеціальні змінні та макроси ==== | ||
| + | ---- | ||
| + | Для генерації QR-кодів передбачається використання JS-бібліотеки **jquery.qrcode** і відповідної мінімальної " | ||
| + | |||
| + | Для коректної генерації та розташування QR-кодів використовуються такі макроси: | ||
| + | |||
| + | **{QR_CODES_CNT}** - кількість QR-кодів, | ||
| + | |||
| + | **{QR_CODE_CONTENT}** - дані, які потрібно " | ||
| + | |||
| + | **{QR_INDEX}** - індекс або порядковий номер QR-коду, | ||
| + | |||
| + | **{QR_EMBED}** - наявність цього макросу вказує, | ||
| + | <code html> | ||
| + | <input id=" | ||
| + | </ | ||
| + | зі значенням //" | ||
| + | |||
| + | Якщо коротко - логіка процесу генерації QR-коду така: | ||
| + | У циклі від i == 1 до {QR_CODES_CNT} по черзі шукаємо DOM-елементи, | ||
| + | " | ||
| + | З чого випливає, | ||
| + | ---- | ||
| + | \\ | ||
| + | Окремо варто сказати про спеціальні макроси, | ||
| + | * Блок даних, які потрібно " | ||
| + | < | ||
| + | {QR_EXT_START} | ||
| + | here goes your info to pack into QR-code | ||
| + | {MACRO_IS_ALLOWED_HERE} | ||
| + | {QR_EXT_END} | ||
| + | </ | ||
| + | * Формат дати, який ми хочемо використовувати для наших квитанцій. За замовчуванням встановлено стандартний для наших широт \\ | ||
| + | формат: | ||
| + | < | ||
| + | {DATES_FORMAT_START}Y-m-d{DATES_FORMAT_END} | ||
| + | </ | ||
| + | * Формат місяць-рік (так-так, | ||
| + | формат: | ||
| + | < | ||
| + | {MONTHYEAR_FORMAT_START}m-Y{MONTHYEAR_FORMAT_END} | ||
| + | </ | ||
| + | * Номери квитанцій будуть генеруватись за принципом {CURDATENODELIMS} + {CURDATETIMENODELIMS}, | ||
| + | < | ||
| + | {INV_NUM_CURDATETIME} | ||
| + | </ | ||