Главная / База знаний / Настройка печатной формы наряда

Настройка печатной формы наряда

14.07.2024

Планадо позволяет настроить печатную форму наряда под ваши нужды. Вы можете поменять способ отображения полей, выделить нужную информацию, добавить или убрать поля. Также настройка позволяет поменять формат вывода печатной формы с PDF на HTML.

Форма наряда редактируется через HTML-файл. В качестве языка разметки используется язык Liquid. С его документацией вы можете ознакомиться на сайте.

Форма по умолчанию

Перед добавлением ваших собственных печатных форм наряда, вам будет доступна форма печати по умолчанию. Чтобы посмотреть, как выглядит наряд в этой форме, откройте любой наряд и нажмите кнопку печати.

Распечатать наряд

Планадо распечатает ваш наряд в PDF-файл.

Печать наряда по умолчанию

Чтобы в дальнейшем создавать свои формы печати, скачайте форму печати по умолчанию. Она находится в меню Настройки → Печать. Чтобы скачать файл формы по умолчанию, нажмите на «Форма по умолчанию» и выберите «Скачать».

Скачать форму печати по умолчанию

После этого у вас загрузится файл формы для печати в HTML-формате. Его можно открыть в удобном вам редакторе HTML-файлов. В примере будет использоваться Notepad++.

На данный момент форма по умолчанию не доступна для редактирования.

Форма печати по умолчанию

Подстановки

Для обозначения полей Планадо в файле формы используются подстановки. Поля заключаются в двойные фигурные скобки, например, {{ job.template.name }} — это подстановка для шаблона наряда. Чтобы получить название поля на русском языке, подстановку необходимо указывать в кавычках и добавить фильтр "| translate". Например, чтобы получить надпись «Запланирован», потребуется использовать подстановку {{ 'scheduled_at' | translate }}. Чтобы в печатной форме получить поля из наряда используйте эти подстановки:

  • job — «Наряд»;
  • job.serial_no — номер наряда;
  • job.status — состояние наряда;
  • job.template — шаблон наряда;
  • template — «Шаблон»;
  • type — «Тип»;
  • job.type.code — тип наряда;
  • scheduled_at — «Запланирован»;
  • job.scheduled_at — запланированная дата и время наряда;
  • duration — «Длительность»;
  • job.scheduled_duration — запланированная длительность наряда;
  • en_route_at — «Выезд»;
  • job.en_route_at — дата и время выезда на наряда;
  • started_at — «Начат»;
  • job.started_at — дата и время начала наряда;
  • finished_at — «Завершен»;
  • job.finished_at — дата и время завершения наряда
  • created_at — «Размещен»;
  • **job.**created_at — дата и время создания наряда;
  • job.creator.name — имя сотрудника, создавшего наряд;
  • assignee — «Исполнитель»;
  • job.assignee — исполнитель наряда, если это один сотрудник;
  • job.team — исполнитель наряда, если это бригада;
  • description — «Описание»;
  • job.description — описание наряда;
  • address — «Адрес»;
  • job.address.full — адрес наряда;
  • client — «Клиент»;
  • job.client.name — имя или название клиента;
  • site — «Объект»;
  • job.site.name — название объекта;
  • resolution — «Резолюция»;
  • job.resolution.name — резолюция наряда;
  • job.resolution.comment — комментарий к резолюции;
  • external_id — «Внешний идентификатор»;
  • job.external_id — внешний идентификатор наряда;
  • contacts — «Контакты»;
  • contact.name — имя контакта;
  • contact.value — телефон контакта;
  • field.name — название поля (дополнительного или поля отчёта);

Все эти подстановки и их использование вы можете найти в форме печати по умолчанию.

Также разберём основные инструменты самого Shopify Liquid.

Операторы 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

Теперь внутри

необходимо поместить само изображение. В качестве источника (src) будет выступать логотип в base64 формате.

Лого до и после преобразования

После этого можно задать размеры логотипа, чтобы он лучше смотрелся в самой печатной форме. Логотип будет лучше смотреться, если он будет около 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}} &nbsp;
     
     
    
            {% 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 %}

{% endif %}
{{ image | resize: 108, 192 }}
{% assign image_count = image_count | plus: 1 %} {% if image_count == 3 %}
{% assign image_count = 0 %} {% endif %} {% endfor %} {% if image_count != 0 %}
{% endif %} {% endif %}

В этом примере каждая фотография увеличивает значение счётчика image_count, и когда тот достигает значения в 3, фотография переносится на новую строку. Так будет выглядеть наряд с шесть фотографиями в одном поле при печати.

Распечатанный наряд с шестью фото в одном поле

Полученную форму вы можете найти в приложении к этой инструции.

Выходной формат HTML

Выходной формат распечатанного наряда можно изменить с PDF на HTML. Печатные формы в HTML формате проще редактировать через текстовые редакторы вроде Microsoft Word или OpenOffice Writer. Поэтому если вам требуется дополнить печатную форму наряда после выгрузки, то стоит выбрать HTML в качестве формата выгрузки. Чтобы это сделать:

  1. Откройте Настройки → Печать;
  2. Выберите нужную печатную форму;
  3. В качестве выходного формата выберите HTML и нажмите «Сохранить».

Изменить выходной формат на HTML

После этого эта печатная форма наряда будет выгружаться в формате HTML.

Печатная форма наряда в HTML формате

Полученную форму можно редактировать в текстовом редакторе как обычный файл.


Если вам требуется помощь с формированием печатной формы наряда, обратитесь к нам на support@planado.app или портале технической поддержки.