Счет своими руками

  • by loginov - чт, 26/04/2018 - 09:49

В этом документе рассмотрим создание шаблона документа "с нуля". Для работы будем использовать OpenOffice http://ru.openoffice.org/ или MSWord https://www.microsoft.com/en-us/download/office.aspx и XMLPad http://wmhelp.com/

В качестве примера сделаем два варианта детализации услуг за месяц в xml и html вариантах.

В редакторе рисуем форму шаблона, при этом строки вида "%имя%" используются в качестве идентификаторов переменных, которые будут заменены на реальные значения из БД при генерации счета. Для печати в документе штрих-кода используем шрифт code39h.zip, при этом нужно учесть, что согласно спецификации Code 39 символы "старт" и "стоп" равны "*". В качестве уникального идентификатора документа выступает значение orders.order_id, дополненное слева нулями до десяти символов. Сохраняем форму как Microsoft Word 2003 XML и как Документ HTML. В результате получаем два файла: testOrder0.xml и testOrder0.html

XML файл открываем с помощью xmlpad, форматируем и добавляем тэги <!-- start_row --> и <!-- end_row -->. Кроме того, нужно проследить, что идентификаторы переменных не "разъехались", т.е. вместо <w:t>%serv%</w:t> не должно быть совокупности тэгов типа <w:t>%</w:t><w:t>serv</w:t><w:t>%</w:t>.



Важно заметить, что при повторном редактировании шаблона с помощью OpenOffice или MSWord поставленные вручную тэги сохранены не будут, и процесс их внедрения следует повторить.

В результате получаем готовый шаблон XML testOrder.xml

HTML файл редактируем при помощи любого текстового редактора. Добавляем тэги <!-- start_row --> и <!-- end_row -->, заменяем ссылку на локально созданное изображение (testOrder0_html_m4276a87.gif) на внешнюю ссылку (http://lanbilling.ru/logo.gif ), проверяем, что в заголовке установлена кодировка utf8 (тэг <META http-equiv="content-type" content="text/html; charset=utf-8>), сохраняем файл в кодировке utf8. В результате получаем шаблон testOrder.html .

Далее создаем общий файл testOrder.sql, в котором производится выборка значений из базы в переменные шаблона. На вход sql-файла подается @ORDER_ID, который соответствут значению orders.order_id из БД.

Для вывода в счете или отчете данных о менеджере, запустившего генерацию документа, в шаблоне можно использовать переменную @logged_person_id.

Например, так:

  %man%:select fio from managers where person_id = @logged_person_id

Замечание:sql-файл должен быть создан в кодировке utf8.

Копируем полученные файлы (testOrder.*) в директорию с шаблонами и регистрируем их в системе через меню "опции-настройки документов" в web-интерфейсе.

После этого документы будут доступны для генерации через меню "действия-генерировать счета".

Примеры сгенерированных документов example.xml и example.html