Инструменты пользователя

Инструменты сайта


Боковая панель

Разделы

Общее описание
История изменений
Рекомендации к обновлению
Планы на будущее
Известные проблемы
Онлайн демо
Случайная статья
Видео
Помощь проекту
Люди

FAQ



Редактировать сайдбар

receipts

Это старая версия документа!


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

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

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

Начиная с релиза 1.0.9 стало возможным сохранять каждую из сгенерированных квитанций в БД. Для этого просто отметьте соответствующий флажок на форме перед, непосредственно, генерацией. Для использования этой возможности нужно всего лишь добавить в alter.ini опцию PRINT_RECEIPTS_HISTORY_ENABLED=1.

Шаблон


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

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

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

Начиная с релиза 1.0.9 стало возможным иметь неограниченное количество шаблонов, которые можно указывать прямо на форме печати квитанций. Например, если для разных предпренимателей должны быть разные бланки квитанций. Или если вы хотите печатать и не квитанции вовсе, а, скажем - уведомления(никто же вас не обязывает к тому, чтобы в шаблоне фигурировали суммы и оплаты). Просто разместите каталог с наименованием шаблона в content/documents/receipt_template/, а уже в этот каталог положите файлы heading, body, footer - и ваш шаблон станет доступным в соответствующем выпадающем списке на форме модуля.

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



{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.1595837313.txt.gz · Последние изменения: 2020/07/27 11:08 — bobr