Печать квитанций

Начиная с релиза 0.9.8 появилась возможность, которая никому не нужна печати квитанций на оплату услуг(для последующего вручения абонентам или рассылки любыми возможными средствами связи) для абонентов Интернет и UKV. Так же в квитанцию может быть внедрен QR-код с необходимой информацией или пожеланием всего наилучшего тому, кто его отсканирует. Включается модуль опцией PRINT_RECEIPTS_ENABLED в alter.ini. С помощью опции alter.ini PRINT_RECEIPTS_IN_PROFILE можно включить печать квитанций лично для каждого юзера прямо из его профиля Онлайн/UKV.

Выглядит это примерно так: На наш взгляд в каких-либо пояснениях интерфейс модуля не нуждается, а вот про шаблон для него и генерацию QR-кодов стоит упомянуть отдельно.

Шаблон


Пример шаблона квитанции вы найдете по этому пути:
content/documents/receipt_template/

Как несложно заметить - это обычный HTML-документ, разделенный на 3 секции(части): heading, body, footer.

  • heading - «шапка» документа, добавляемая к нему единожды в самом начале. Кроме того, именно здесь должны быть описаны форматы дат/лет/месяцев а так же содержимое внедряемого QR-кода. Если оно вам в квитанции нужно, конечно.
  • body - основная и, собственно, «повторяющаяся» для каждого абонента часть документа. Здесь должна содержаться вся информация, которую мы хотим донести до абонента.
  • footer - то же что и «шапка», только в самом конце. Не предполагает наличия какой-либо полезной инфы(кроме закрывающих тегов </body></html>) в принципе. Но если вам, например, очень хочется напомнить сотруднику, занимающемуся квитанциями, о чем-то очень-очень важном, когда он закончит разбор пачки отпечатанной бумаги - это именно то самое место.

Поддерживаемые переменные и макросы



{CURDATE} - текущая дата
{PAYFORPERIODSTR} - оплата за период(месяцы), например: март 2019, апрель 2019
{PAYTILLMONTHYEAR} - будет заменено на текущий год + следующий месяц(согласно формату даты, указанному в шаблоне)
{PAYTILLDATE} - оплатить до указанной даты
{SERVICENAME} - наименование оплачиваемой услуги
{CONTRACT} - номер договора пользователя
{REALNAME} - ФИО пользователя
{CITY} - город проживания пользователя
{STREET} - улица проживания пользователя
{BUILD} - дом
{APT} - квартира
{PHONE} - телефон пользователя
{MOBILE} - мобильный пользователя
{TARIFF} - тариф пользователя
{TARIFFPRICE} - стоимость тарифа пользователя
{TARIFFPRICECOINS} - стоимость тарифа пользователя выраженная в копейках
{TARIFFPRICEDECIMALS} - стоимость тарифа пользователя с двумя знаками после запятой
{SUMM} - сумма к оплате
{SUMMCOINS} - сумма к оплате выраженная в копейках
{SUMMDECIMALS} - сумма к оплате с двумя знаками после запятой

QR-коды и специальные переменные и макросы


Для генерация QR-кодов предполагается использование JS-библиотеки jquery.qrcode и соответствующей минимальной «обвязки» для нее. В шаблоне-примере уже имеются все минимально необходимые для этого скрипты.

Для корректной генерации и расположения QR-кодов используются следующие макросы:

{QR_CODES_CNT} - количество QR-кодов, по сути равное количеству абонентов. Используется JS-скриптом для обхода элементов DOM с соответствующими индексами.

{QR_CODE_CONTENT} - данные, которые нужно «упаковать» в QR-код

{QR_INDEX} - индекс или порядковый номер QR-кода, по которому JS-скрипт будет находить элемент DOM, который будет содержать сам QR-код или же содержит данные, которые нужно «упаковать» в QR-код

Вкратце, логика процесса генерации QR-кода следующая:

В цикле от i == 1 до {QR_CODES_CNT} поочередно ищем DOM-элементы, например, с id="qr_content_" + i, берем их содержимое, 
"упаковываем" в QR-код, а QR-код в свою очередь пихаем в DOM-элементы с id="qr" + i. 

Из чего следует, что сами QR-коды нигде не хранятся и генерируются на лету при открытии страницы в браузере. Таким образом, хранение собранного модулем HTML-документа требует в разы меньше дискового пространства, а так же документ становится гораздо легче для пересылки.



Отдельно стоит сказать о специальных макросах, которые должны располагаться исключительно в единственном экземпляре и исключительно в heading-секции внутри HTML-комментария(<!– –>):

  • Блок данных которые нужно «упаковать» в QR-код
    {QR_EXT_START}
      here goes your info to pack into QR-code
      {MACRO_IS_ALLOWED_HERE}
    {QR_EXT_END}
  • Формат даты, который мы хотим использовать для наших квитанций. По умолчанию установлен стандартный для наших широт

формат: дд.мм.гггг. Но в этом макросе вы можете указать любой валидный формат для PHP функции date().

    {DATES_FORMAT_START}Y-m-d{DATES_FORMAT_END}
  • Формат месяц-год(да-да, для макроса {PAYTILLMONTHYEAR}). По умолчанию так же установлен стандартный для наших широт

формат: мм.гггг. Но в этом макросе вы можете указать любой валидный формат для PHP функции date().

    {MONTHYEAR_FORMAT_START}m-Y{MONTHYEAR_FORMAT_END}
receipts.txt · Последние изменения: 2019/04/23 17:07 — bobr
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki