Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Попередня ревізія Наступна ревізія По сторонах наступні версії | ||
receipts [2019/04/23 17:06] |
receipts [2023/06/15 21:00] bobr |
||
---|---|---|---|
Рядок 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} | ||
+ | </ |