Планадо позволяет настроить печатную форму наряда под ваши нужды. Вы можете поменять способ отображения полей, выделить нужную информацию, добавить или убрать поля. Также настройка позволяет поменять формат вывода печатной формы с PDF на HTML.
Форма наряда редактируется через HTML-файл. В качестве языка разметки используется язык Liquid. С его документацией вы можете ознакомиться на сайте.
Перед добавлением ваших собственных печатных форм наряда, вам будет доступна форма печати по умолчанию. Чтобы посмотреть, как выглядит наряд в этой форме, откройте любой наряд и нажмите кнопку печати.
Распечатать наряд
Планадо распечатает ваш наряд в PDF-файл.
Печать наряда по умолчанию
Чтобы в дальнейшем создавать свои формы печати, скачайте форму печати по умолчанию. Она находится в меню Настройки → Печать. Чтобы скачать файл формы по умолчанию, нажмите на «Форма по умолчанию» и выберите «Скачать».
Скачать форму печати по умолчанию
После этого у вас загрузится файл формы для печати в HTML-формате. Его можно открыть в удобном вам редакторе HTML-файлов. В примере будет использоваться Notepad++.
На данный момент форма по умолчанию не доступна для редактирования.
Форма печати по умолчанию
Для обозначения полей Планадо в файле формы используются подстановки. Поля заключаются в двойные фигурные скобки, например, {{ job.template.name }} — это подстановка для шаблона наряда. Чтобы получить название поля на русском языке, подстановку необходимо указывать в кавычках и добавить фильтр "| translate". Например, чтобы получить надпись «Запланирован», потребуется использовать подстановку {{ 'scheduled_at' | translate }}. Чтобы в печатной форме получить поля из наряда используйте эти подстановки:
Все эти подстановки и их использование вы можете найти в форме печати по умолчанию.
Также разберём основные инструменты самого Shopify Liquid.
Shopify Liquid — это язык разметки. Он позволяет динамически менять содержимое формы в зависимости от вашего наряда.
Операторы вывода:
{{ }}: Выводит значение переменной или результат выражения, как описывали это выше.
{{ job.serial_no }} {{ job.scheduled_at | datetime }}
В этом случае в форму выведутся номер наряда и его запланированная дата.
{% %}: Используется для управления логикой и циклами. Например, для оператора if.
{% if job.type %} <div class="field"> ... </div> {% endif %}
В этом примере содержимое
1. if - Условные выражения:
С помощью оператора if указываются условия выведения информации в печатной форме. Информация появится в печатной форме только при соблюдении условия, указанного в if.
Синтаксис:
{% if condition %} // Код выполняется, если условие истинно
Пример: Проверка, заполнен ли адрес клиента:
{% assign address_present = job.address.formatted | filled? %}
Использование elsif: Проверка, назначен ли работник или команда:
`<div class="field">`
`<label>{{ 'assignee' | translate }}</label>`
`{% if job.assignee %}`
`<span class="value">{{ job.assignee }}</span>`
`{% elsif job.team %}`
`<span class="value">{{ job.team }}</span>`
`{% else %}`
`<span class="value empty-value">{{ 'empty' | translate }}</span>`
`{% endif %} </div>`
2. for - Циклы:
Используется для массивов данных. Например, для вывода данных из всех полей отчёта наряда.
Синтаксис:
{% for item in items %} // Код выполняется для каждого элементав массиве "items"
Пример: Вывод контактов:
{% for contact in job.filled_contacts %}
<div class="field contact">
<label>
{% if forloop.first %}
{{ 'contacts' | translate }}
{% endif %}
</label>
<span class="value">
{{ contact.value }}{% if contact.name and contact.value %}, {% endif %}
{{ contact.name }}
</span>
</div> {% endfor %}
Здесь цикл проходит по всем элементам массива контактов и выводит их имена и телефоны
3. case - Выбор по условию:
Как и if используется для указания условий.
Синтаксис:
{% case variable %}
Пример: Обработка различных типов полей:
`{% for field in job.report_fields %}`
`<div class="field">`
`<label>{{ field.name }}</label>`
`{% case field.field_type %}`
`{% when 'input' %}`
`...`
`{% when 'action' %}`
`...`
`{% when 'checkbox' %}`
`...`
`{% else %}`
`...`
`{% endcase %}`
`</div> {% endfor %}`
В этом случае условия указываются для каждого типа отдельно.
Операторы сравнения:
==: Проверяет равенство.
{% if job.description == "" %}
<span class="value empty-value">{{ 'empty'| translate }}</span>
{% endif %}
В примере пустое значение будет выведено только, когда описание пустое.
!=: Проверяет неравенство.
{% if job.resolution.comment != "" %}
<span class="value"> ... </span>
{% endif %}
Из примера примечание к резолюции будет выведено, только если оно не пустое.
Схожим образом можно использовать другие операторы:
>: Больше.
<: Меньше.
>=: Больше или равно.
<=: Меньше или равно.
Логические операторы:
and: Логическое "И" — выводится только когда оба условия соблюдены.
{% if job.template == "Доставка" and job.assignee.name == "Иван Петров" %} Доставка от Петрова {% endif %}
В примере условие соблюдается, только если в наряде используется шаблон «Доставка» и выбран исполнитель Иван Петров.
or: Логическое "ИЛИ" — если хотя бы одно из условий соблюдено.
{% if job.assignee or job.team %} ... {% endif %}
Значение выводится, если в наряде выбран исполнитель или бригада.
not: Логическое отрицание.
{% if not job.description %} ... {% endif %}
Дополнительные операторы:
empty: Проверяет, является ли переменная пустой.
{% if job.resolution.comment | empty %} ... {% endif %}
filled: Проверяет, является ли переменная непустой.
{% if job.description | filled %} ... {% endif %}
Фильтры:
datetime: Преобразует дату в читаемый формат с указанием времени.
truncate: Обрезает строку до заданной длины.
translate: Переводит строку на язык вашего Планадо.
Разберём несколько вариантов редактирования этого файла для получения нужной формы печати.
Печатную форму из примера вы можете найти во вложении к инструкции.
Редактирование формы наряда позволяет заменить логотип Планадо в форме печати на логотип вашей компании.
Для этого используется поле custom-logo.
Логотип в печатной форме наряда должен представлен в формате base64. Чтобы привести ваш логотип к этому формату, воспользуйтесь онлайн конвертером. Получившийся код можно будет использовать для вставки в форму печати.
Слева — логотип компании в формате PNG, справа — в формате base64
В теле формы печати замените имеющееся поле logo на custom-logo.
Слева — форма печати по умолчанию — справа с добавленным custom-logo
Теперь внутри
Лого до и после преобразования
После этого можно задать размеры логотипа, чтобы он лучше смотрелся в самой печатной форме. Логотип будет лучше смотреться, если он будет около 100-200px в ширину и высоту. Размеры лучше задать кратными оригинальным размерам логотипа. Например, если изначальный файл был 1920:1080, то в файле стоит указать размеры 192:108. Ширина задаётся параметром width, а высота — height. В нашем примере оригинальный размер логотипа был 1200:1200. поэтому уменьшим его до 120:120.
Добавленное изображение логотипа
Чтобы загрузить получившийся файл печатной формы, перейдите на страницу Настройки → Печать в Планадо и нажмите «Добавить печатную форму».
Добавить печатную форму
В открывшемся окне введите название печатной формы и загрузите полученный ранее HTML-файл формы печати наряда с новым логотипом. В зависимости от ваших потребностей выберите формат выходного файла. В этом примере мы используем PDF.
Загрузка новую печатную форму
Чтобы проверить, как выглядит печатная форма наряда, откройте наряд, нажмите на кнопку печати и выберите добавленную форму печати.
После этого начнётся загрузка печатной формы наряда.
Печатная форма наряда с измененным логотипом
В полученной форме наряда вместо логотипа Планадо будет использовать загруженный вами логотип. Если требуется скорректировать размер логотипа, то вы можете внести их в HTML-файл формы наряда, а потом загрузить форму заново.
Заменить файл формы печати
По умолчанию значения полей фото отображаются как имена фото. Если вам требуется вывести их в виде изображений, потребуется внести изменения в форму.
Названия файлов в полях с фото
Правила для отображения фотографий находятся в части полей отчёта:
{% when 'image' %}
{% if field.value == empty_list %}
{{ 'empty' | translate }}
{% else %}
{% for image in field.value %}
{{ image.name }}{% unless forloop.last %}, {% endunless %}
{% endfor %}
{% endif %}
Из кода видим, что в случае наличия изображений в поле с типом «Фото», отображается только название фото — {{ image.name }}. Чтобы отображалось изображение, нужно его указать в форме. Изменим эту часть кода, чтобы вместо имени файла выводилось изображение:
{% when 'image' %}
{% if field.size > 0 and field.filled %}
{% for image in field.value %}
{{image}}
{% endfor %}
{% endif %}
Теперь вместо имени файла фотографии выводится сама фотография. Но фотография появится в форме в натуральную величину.
Распечатанный наряд с фото в натуральную величину
Зачастую это очень большой размер, его стоит уменьшить. Укажем соответсвующий фильтр resize у {{ image }}.
В нашем случае у фотографий основное разрешение — 1080 на 1920, поэтому в форме используем размер в 10 раз меньше. Добавим также пропуск после фотографии, чтобы они не шли вплотную друг к другу.
{% when 'image' %}
{% if field.size > 0 and field.filled %}
{% for image in field.value %}
{{image | resize: 108, 192}}
{% endfor %}
{% endif %}
Фотографии в распечатанном наряде с измененным размером и промежутком между ними
В полученной форме есть фотографии подходящего размера с разделением между ними.
Также можем добавить счётчик, который будет переводить фотографии на новую строку, если в строке больше 3 фото. В нём также используются два класса <**div**>: image-row и image-wrapper.
.image-row { display: flex; flex-wrap: wrap; margin-bottom: 5px; }
.image-wrapper { flex: 1 1 calc(33.33% - 5px); margin-right: 5px; margin-bottom: 5px; }
.image-wrapper:nth-child(3n) { margin-right: 0; }
Так как теперь фотографии находятся в своих <**div**>, нам не потребуется использовать специальный пропуск после каждой.
{% when 'image' %} {% if field.size > 0 and field.filled %} {% assign image_count = 0 %} {% for image in field.value %} {% if image_count == 0 %}
В этом примере каждая фотография увеличивает значение счётчика image_count, и когда тот достигает значения в 3, фотография переносится на новую строку. Так будет выглядеть наряд с шесть фотографиями в одном поле при печати.
Распечатанный наряд с шестью фото в одном поле
Полученную форму вы можете найти в приложении к этой инструции.
Выходной формат распечатанного наряда можно изменить с PDF на HTML. Печатные формы в HTML формате проще редактировать через текстовые редакторы вроде Microsoft Word или OpenOffice Writer. Поэтому если вам требуется дополнить печатную форму наряда после выгрузки, то стоит выбрать HTML в качестве формата выгрузки. Чтобы это сделать:
Изменить выходной формат на HTML
После этого эта печатная форма наряда будет выгружаться в формате HTML.
Печатная форма наряда в HTML формате
Полученную форму можно редактировать в текстовом редакторе как обычный файл.
Если вам требуется помощь с формированием печатной формы наряда, обратитесь к нам на support@planado.app или портале технической поддержки.