Отчёты для NORD POS. Часть 1
Берём данные, JasperReports и заполняем шаблон в iReport

Эта статья посвящена не столько, как это сделать красиво с точки зрения дизайна, а как с помощью имеющихся средств JasperReports сделать отчёты чёткими для восприятия пользователем и удобными для дальнейшего использования интегратором. Так как JasperReports, это в первую очередь не самостоятельное приложение, а библиотека расширения для программ написанных на Java, то в качестве источника информации для построения отчётов будем использовать базу данных от NORD POS (подробнее об этом моём проекте в отдельной статье). При этом изложенный «под катом» материал, я надеюсь, будет интересен не только пользователям моей POS, но и всем тем, кто хочет больше узнать о мощном инструменте формирования отчётов для своего приложения, а на русском языке материалов посвящённых JasperReports не так и много.
Загружаем основу Основой построения любого отчёта средствами JasperReports является шаблон с расширением jrxml. Этот файл XML-формата можно создать с нуля, как в текстовом редакторе, так и скомпоновать из элементов (а по сути XML-тегов) в визуальной оболочке iReport. Приложение iReport есть в виде плагина для NetBeans или в виде самостоятельной программы. Для данной статьи я выбрал второй вариант, как более наглядный с моей точки зрения.Первое, что необходимо сделать после установки и запуска iReport, это создать чистый лист шаблона для последующего заполнения элементами отчёта (команда File → New…). Я выбрал шаблон формата A4, расположенный портретно.
В дальнейшем вы можете поменять, как формат листа, так и поля отступов на нём (команда Format → Page format…). И здесь вы встретитесь с первой проблемой, которую придётся учитывать по ходу всей работы с JasperReports, невозможностью точно выставить значения в привычных нам миллиметрах. Точно можно выставить только значение в пикселях, при этом на один дюйм приходится 72 пикселя, а вот в миллиметрах это всегда будет дробное значение 25,4 мм. В обычном отчёте из столбцов это не сильно существенно, но если делать шаблон этикетки, то такой подход к расчётам вам попортит значительно нервы, так как под рукой только миллиметровая линейка и необходимо будет экспериментально подобрать, то количество пикселей которое будет вмещаться при печати на заготовку этикет ленты. Вот как у меня получилось:
Та-же пустая форма отчёта в виде XML
Изначально источник выбранный по-умолчанию пуст.
Но войдя в параметры можно будет его добавить, сделав источником информации для заполнения полей отчёта.
Указав параметры JDBC-драйвера и запустив предварительно NORD POS, можно проверить соединение. А для того, чтобы убедиться, что поля базы данных доступны JasperReports, сделаем простой запрос.
Этот запрос, но в формате XML
А в XML-шаблоне появится набор тегов
Данные получены и отчёт сформирован, теперь можно приступить к их обработке и оформлению отчёта для более наглядного представления информации.
Оформляем шаблон Начнём с самого простого, сделаем заголовок и нижний колонтитул нашего отчёта. Для этого в секцию Title добавим подпись и синий баннер для фона, а в Page Footer поле с подстановкой переменных для количества страниц.Секция заголовка отчёта title
Набор стилей
Делаем расчёты
При создании шаблонов в разделе переменных автоматически генерируется несколько счётчиков, их значение меняется в зависимости от положения в шаблоне. Например мы уже использовали PAGE_NUMBER для подсчёта страниц, при этом используя одну и туже переменную, но задав параметр evaluationTime=«Report» для второго поля, мы получили общее количество страниц в отчёте.
Для указания порядкового номера номенклатурной позиции в отчёте используем переменную COLUMN_COUNT, выбрав её из списка и вставив в выражение для расчёта значения поля.
Порядковый номер строки
Поле штрих-кода
Поле PRODUCT_NAME, PRODUCT_PRICESELL и TAX_RATE оставим таким, какими они были получены из база данных, только указав паттерны для PRODUCT_PRICESELL валюты, а для TAX_RATE процента.
Поля PRODUCT_NAME, PRODUCT_PRICESELL и TAX_RATE
Расчёт цены с налогом
Суммарный итог
Теперь можно приступать к его интеграции в NORD POS, но этому будет посвящена вторая часть статьи. А в этой части я постарался максимально обобщённо и просто рассказать об основных действиях для создания шаблонов в iReport, так что описанное здесь пригодится не только пользователям NORD POS, а всем у кого появилась необходимость в первый раз создать собственный отчёт для библиотеки JasperReports.
