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

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

В этом документе рассмотрим создание шаблона документа "с нуля". Для работы будем использовать:

  • OpenOffice или MSWord
  • XMLPad

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

    В редакторе рисуем форму шаблона, при этом строки вида "%имя%" используются в качестве идентификаторов переменных, которые будут заменены на реальные значения из БД при генерации счета. Для печати в документе штрих-кода используем шрифт code39h, при этом нужно учесть, что согласно спецификации 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