Заполнение шаблона документа - инструкция

В системе RentRabbit есть ряд документов, которые генерируются в формате Word. На данный момент это договор, акт и транспортная накладная.
Для этих типов документов пользователи могут самостоятельно создавать шаблоны и генерировать документы в том виде, который им требуется.
Как это сделать мы описываем в данной статье!  

Общий принцип заполнения шаблонов

Шаблоны настраиваются полностью, например, вы можете взять свой формальный договор в формате Word и указать специальным образом, какие данные куда нужно вставлять автоматически при генерации документа. 

Чтобы указать системе, куда требуется подставить данные нужно вставлять специальные коды. Для разных документов список доступных кодов разный.

Пример:

В системе заполнен номер и дата договора, мы хотим чтобы они автоматически подставлялись при генерации договора.

В шаблоне договора указываем коды:

  • Код номера договора - project.contract.number;
  • Код даты договора - project.contract.date.

Система заменяет коды нужными значениями и мы получаем заполненный договор:

Структура кодов

Код пишется следующим образом

  • Сначала ставится знак доллара $, при замене кода на значение, именно со знака доллара берется стиль - цвет текста, размер шрифта. тип шрифта и другие;
  • Далее ставятся фигурные скобки {  };
  • В скобках пишется путь до нужного поля через точки. Сначала указывайте поле, которое есть на уровне нужного типа документа (Акт или договор), если вы указали поле, которое является объектом - через точку укажите поле в этом объекте, и так далее пока не получите полный путь: 
    Например, нам нужно имя контакта арендатора в договоре, логика такая:
    В договоре есть поле renter - получили путь к объекту Арендатор. У этого объекта есть поле основной контакт - получили renter.contactPerson. В объекте Контакт нам нужно имя - получили renter.contactPerson.personFullName
  • Далее, в зависимости от типа кода, можно указать формат, в котором нужно вывести данные. Например, есть поле типа сумма денег - sum, можно указать формат .cents и будут выведены только копейки.
    В нашем примере допустим мы хотим получить только фамилию с инициалами, у типа данных ФИО есть нужный формат - получим renter.contactPerson.personFullName.initials

Какие коды доступны в разных типах документов

Коды АКТ:

  1. businessAccount - данные компании (арендодателя), объект типа Аккаунт компании;
  2. renter - арендатор, объект типа Арендатор;
  3. project - данные проекта или заказа, объект типа Проект или заказ;
  4. requestDate - дата генерации документа (текущая дата), дата и время;
  5. aggregations.rentStartDateMin - дата начала аренды (начало периода аренды самой ранней позиции, попавшей в акт)дата и время;
  6. aggregations.rentEndDateMax - дата завершения аренды (завершение периода аренды самой поздней позиции, попавшей в акт)дата и время;
  7. aggregations.totalPriceBeforeDiscountSum - суммарная стоимость до вычета скидки по всем позициям, сумма денег;
  8. aggregations.totalDiscountSum - сумма скидки, сумма денег;
  9. aggregations.finalTotalPriceAfterDiscountSum- суммарная стоимость после вычета скидки по всем позициям, сумма денег;
  10. aggregations.totalTaxesSum- сумма налогов, сумма денег;
  11. aggregations.finalTotalPriceSumAfterTaxes- суммарная стоимость после вычета скидки и добавления налогов, сумма денег;
  12. aggregations.basePurchaseCostSum- суммарная базовая закупочная стоимость (берется только с продуктов базовая), сумма денег;
  13. aggregations.totalPurchaseCostSum- суммарная закупочная? стоимость (берется с экземпляров, если на экземпляре нет, берется с продукта базовая), сумма денег;

Коды ДОГОВОР:

  1. businessAccount - данные компании (арендодателя), объект типа Аккаунт компании;
  2. renter - арендатор, объект типа Арендатор;
  3. project - данные проекта или заказа, объект типа Проект или заказ;
  4. requestDate - дата генерации документа (текущая дата), дата и время;

Типы объектов

Коды могут содержаться в объектах, которые встречаются много раз. Например, есть объект с реквизитами legalDetails, он может быть у арендатора renter.legalDetails либо у компании businessAccount.legalDetails.

Проект или заказ project:

  1. fullName - полное наименование, строка;
  2. defaultDiscount - скидка по умолчанию (которая задается на карточке проекта или заказа), число с дробной частью;
  3. locationName - название локации, строка;
  4. location - адрес локации, строка;
  5. contract.number - номер договора, строка;
  6. contract.date - дата договора, локальная дата;
  7. contract.expirationDate - дата окончания действия договора, локальная дата;
  8. startDate - дата и время начала проекта, дата и время;
  9. endDate - дата и время завершения проекта, дата и время;
  10. sumBeforeTaxes - сумма к оплате до налогов (Итого без налогов), сумма денег;

  11. sumAfterTaxes - сумма к оплате после налога (Итого), сумма денег;
  12. paymentMethods - способы оплаты по которым есть проведенные ненулевые платежи, строка;
  13. durationInDays - длительность в календарных сутках, округление в большую сторону, целое число;
  14. taxRate - процент налога, число с дробной частью;
  15. contactPerson - основное контактное лицо, объект типа Контакт;
  16. assignee - ответственный пользователь (со стороны нашей компании - арендодателя), объект типа Контакт;
  17. creationAuthor - автор создания (проекта или заказа), объект типа Контакт;
  18. tags
  19. type
  20. requiredPledgeSum - требуемый залог, автоматически расчитанный, сумма денег;
  21. acceptedPledgeSum - сумма внесенного залога, сумма денег;
  22. acceptedPledgeDescription - описание внесенного вещевого залога, строка;
  23. description - описание, строка;

Арендатор renter:

  1. shortName - короткое наименование, строка;
  2. fullName - полное наименование, строка;
  3. defaultDiscount - скидка по умолчанию (которая задается на карточке арендатора), число с дробной частью;
  4. contactPerson - основной контакт, объект типа Контакт;
  5. legalDetails - номер телефона, объект типа Реквизиты;

Контакт contactPerson:

  1. personFullName - фамилия, имя и отчество, ФИО;
  2. position- доkжность, строка;
  3. email- адрес электронной почты, строка;
  4. phoneNumber - номер телефона,  строка.

Аккаунт компании businessAccount:

  1. shortName - Краткое наименование компании, строка;
  2. fullName - Полное наименование компании, строка;
  3. description - Описание из профиля компании, строка;
  4. contactPerson - контактные данные компании, объект типа Контакт;
  5. legalDetails - реквизиты компании, объект типа Реквизиты;

Все указанные поля редактируются в разделе Настройки / подразделах Профиль компании, Контактное лицо или Реквизиты

Позиция заказа или проекта position:

Доступна только в таблице. Может представлять обязательство, набор обязательств, затрату или работы. 

  1. orderal - сквозной порядковый номер в таблице, целое число;
  2. orderalInGroup - порядковый номер строки в категории без учета вложенных в наборы, целое число;
  3. name - наименование (продукта, варианта, набора, затраты или работ), строка;
  4. externalCode - артикул (продукта, варианта, набора или специальности),  строка;

  5. unitCount - количество, целое число;

  6. discount - скидка на уровне проекта или заказа (не включается скидка по ценовой схеме или доп. скидка в наборе), число с дробной частью;

  7. shiftCountString - число смен строкой, строка;

  8. calendarShiftCount - число календарных смен (сколько всего смен помещается в календарный период), число с дробной частью;

  9. rentPeriodStartDate - дата начала (начало периода аренды или работ, либо дата затраты), дата и время;

  10. rentPeriodEndDate - дата завершения (завершения периода аренды или работ, либо дата затраты), дата и время;

  11. effectiveUnitPrice - цена единицы до скидки и налога (смены экземпляра для обязательств, смены работника для работ, просто внешняя стоимость для затрат),  сумма денег;

  12. finalUnitPrice - цена единицы после скидки, до налога, сумма денег;

  13. finalUnitPriceAfterTaxes - цена единицы после скидки и налога, сумма денег;

  14. totalPriceBeforeDiscount - стоимость всей позиции до скидки и налога, сумма денег;
  15. finalTotalPrice - стоимость всей позиции после скидки до налога, сумма дене;

  16. finalTotalPriceAfterTaxes - стоимость всей позиции после скидки и налога, сумма денег;

  17. unitsString - наименования экземпляров или коротких фио работников через запятую, строка;

  18. instancesInventoryNumbersString - официальные инвентарные номера экземпляров через запятую, строка;

  19. instancesBarcodesString - штриховые коды экземпляров через запятую, строка;

  20. instancesSerialNumbersString - серийные номера экземпляров через запятую, строка;

  21. instancesStateDescription - описание состояния экземпляров вида '№nameOrCode-Состояние' через запятую с переносом строки, строка;

  22. basePurchaseCost - базовая закупочная стоимость одного экземпляра (указывается на продукте в целом), сумма денег;

  23. purchaseCostSum - суммарная закупочная стоимость (суммируется по всем экземплярам, берется с экземпляра, если на нем нет - с продукта базовая), сумма денег;

  24. baseCarryingValue - базовая балансовая стоимость одного экземпляра (указывается на продукте в целом), сумма денег;

  25. carryingValueSum - суммарная балансовая стоимость (суммируется по всем экземплярам, берется с экземпляра, если на нем нет - с продукта базовая), сумма денег;

  26. tags

Реквизиты legalDetails:

Набор полей реквизитов отличается по странам и субъектам

Юридическое лицо

  1. fullOfficialName - официальное наименование, строка;

  2. inn - ИНН, строка;

  3. kpp - КПП, строка;

  4. ogrn - ОГРН, строка;

  5. bankName - наименование банка, строка;

  6. bic - БИК (банковский идентификационный код), строка;

  7. paymentAccountNumber - номер счета, строка;

  8. correspondentAccountNumber - корреспондентский счет, строка;

  9. legalAddress - юридический адрес, строка;

  10. physicalAddress - адрес нахождения, строка;

  11. okopf - ОКОПФ, строка;

  12. representedByDocumentString - "в лице..." (родительский падеж), строка;

  13. actsOnTheBasisDocumentString - "на основании..." (родительский падеж), строка;

Физическое лицо

  1. fullOfficialName - официальное наименование, строка;

  2. sex - пол, строка;

  3. birthDate - дата рождения, локальная дата;

  4. passportNumber - номер паспорта, строка;

  5. identityDocumentExpirationDate - паспорт действителен до, локальная дата;

  6. identityDocumentIssuerName - выдан (кем выдан паспорт), строка;

  7. identityDocumentIssueDate - дата выдачи (паспорта), локальная дата;

  8. passportIssuerCode - код подразделения, выдавшего паспорт, строка;

  9. bankName - наименование банка, строка;

  10. bic - БИК (банковский идентификационный код), строка;

  11. paymentAccountNumber - номер счета, строка;

  12. correspondentAccountNumber - корреспондентский счет, строка;

  13. legalAddress - адрес регистрации, строка;

  14. physicalAddress - адрес нахождения, строка;

Индивидуальный предприниматель

  1. fullOfficialName - официальное наименование, строка;

  2. innIp - ИННИП, строка;

  3. ogrnIp - ОГРНИП, строка;

  4. bankName - наименование банка, строка;

  5. bic - БИК (банковский идентификационный код), строка;

  6. paymentAccountNumber - номер счета, строка;

  7. correspondentAccountNumber - корреспондентский счет, строка;

  8. legalAddress - юридический адрес, строка;

  9. physicalAddress - адрес нахождения, строка;

  10. actsOnTheBasisDocumentString - "на основании..." (родительский падеж), строка;

Юридическое лицо

  1. fullOfficialName - официальное наименование, строка;

  2. byUnp - УНП, строка;

  3. bankName - наименование банка, строка;

  4. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT),

  5. iban - IBAN (International Bank Account Number), строка;

  6. legalAddress - юридический адрес, строка;

  7. physicalAddress - адрес нахождения, строка;

Физическое лицо

  1. fullOfficialName  - официальное наименование, строка;

  2. sex - пол, строка;

  3. birthDate - дата рождения, локальная дата;

  4. byIdentificationPassportNumber - идентификационный номер, строка;

  5. byPassportBookNumber - номер бланка паспорта, строка;

  6. identityDocumentExpirationDate - срок действия документа, уд. личность, локальная дата;

  7. bankName - наименование банка, строка;

  8. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT),

  9. iban - IBAN (International Bank Account Number), строка;

  10. physicalAddress - адрес нахождения, строка;

Индивидуальный предприниматель

  1. fullOfficialName  - официальное наименование, строка;

  2. byUnp - УНП, строка;

  3. bankName - наименование банка, строка;

  4. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT),

  5. iban - IBAN (International Bank Account Number), строка;

  6. legalAddress - юридический адрес, строка;

  7. physicalAddress - адрес нахождения, строка;

Юридическое лицо

  1. fullOfficialName - официальное наименование, строка;

  2. kzBin - БИН, строка;

  3. bankName - наименование банка, строка;

  4. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT), строка;

  5. iban - IBAN (International Bank Account Number), строка;

  6. legalAddress - юридический адрес, строка;

  7. physicalAddress - адрес нахождения, строка;

Физическое лицо

  1. fullOfficialName  - официальное наименование, строка;

  2. sex - пол, строка;

  3. birthDate - дата рождения, локальная дата;

  4. kzPassportNumber - номер паспорта, строка;

  5. kzCertificateNumber - номер удостоверения, строка;

  6. kzIdentificationPassportNumber - идентификационный номер, строка;

  7. identityDocumentExpirationDate - срок действия документа, уд. личность, локальная дата;

  8. bankName - наименование банка, строка;

  9. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT),

  10. iban - IBAN (International Bank Account Number), строка;

  11. physicalAddress - адрес нахождения, строка;

Индивидуальный предприниматель

  1. fullOfficialName  - официальное наименование, строка;

  2. kzBin - БИН, строка;

  3. bankName - наименование банка, строка;

  4. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT), строка;

  5. iban - IBAN (International Bank Account Number), строка;

  6. legalAddress - юридический адрес, строка;

  7. physicalAddress - адрес нахождения, строка;

Юридическое лицо

  1. fullOfficialName - официальное наименование, строка;

  2. bankName - наименование банка, строка;

  3. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT), строка;

  4. iban - IBAN (International Bank Account Number), строка;

  5. legalAddress - юридический адрес, строка;

Физическое лицо

  1. fullOfficialName  - официальное наименование, строка;

  2. citizenship - гражданство, строка;

  3. identityDocumentNumber - номер документа удостоверяющего личность, строка;

  4. identityDocumentExpirationDate - срок действия документа, уд. личность, локальная дата;

  5. birthDate - дата рождения, локальная дата;

  6. sex - пол, строка;

  7. bankName - наименование банка, строка;

  8. swiftBic - SWIFT BIC (Банковский идентификационный код SWIFT), строка;

  9. iban - IBAN (International Bank Account Number), строка;

  10. legalAddress - юридический адрес, строка;

Технические поля реквизитов:
(есть у всех типов субъектов и стран, помогают в заполнении шаблона)

  1. isEmpty - пустое ли поле, да / нет;

  2. isLegalEntity - является юридическим лицом, да / нет;

  3. isIndividualEntrepreneur - является индивидуальным предпринимателемда / нет;

  4. isNaturalPerson - является физическим лицом,  да / нет;

  5. country - название страны, строка;

  6. subjectType - тип субъекта, строка. Пример - физ. лицо РФ;

  7. e1 и e2 - дополнительные реквизиты (используйте, когда стандартных не хватает), строка;


Типы кодов

Дата и время - глобальный момент времени, выводится согласно часовому поясу клиента - в Москве будет одно время, на Бали другое. Доступно множество форматов для красивого вывода даты и/или времени;

  1. dateTimeString (также применяется как формат по умолчанию если не указывать формат) - дата и время 21:20 31 января 2026;

  2. dateString - только дата (без времени) в формате по умолчанию;

  3. timeString - только время (без даты) в формате по умолчанию;

  4. minuteOfHour - минута часа, например 53 для 12:53;

  5. hourOfDay - час дня, например 21 для 21:40;

  6. dayOfMonth - номер дня в месяце, например 12 для 12 января;

  7. year - год;

  8. ddMMMMyyyy_quotes_double - дата с числом в двойных кавычках "12" января 2023;

  9. ddMMMMyyyy_quotes_angle - дата с числом в угловых кавычках «12» января 2023;

Строка - просто текстовая строка, например номер договора.
Сумма денег - сумма денег, доступны различные форматы вывода: с копейками, без копеек, прописью и другие;

  1. formatWithoutCurrency (также применяется как формат по умолчанию если не указывать формат) - строка в красивом представлении без валюты с копейками;

  2. format - строка в красивом представлении с валютой и копейками;

  3. withoutCents - неформатированная сумма как число без копеек (центов);

  4. cents - неформатированная сумма только копеек (центов);

  5. inWordsRuShowAll - прописью на русском, полностью с "рублей" и "копеек";

  6. inWordsRuHowAllCentsAsNumber - прописью на русском, копейки числом с "рублей" и "копеек";

  7. inWordsRuHideCents - прописью на русском, без копеек, с "рублей";

  8. inWordsRuHideUnitNamesAndCents - прописью без копеек, без подписи "рублей";

  9. half - половина суммы округленная в меньшую сторону до копеек, возвращается объект Сумма денег, можно далее применять к нему формат.

Целое число - число без дробной части, например, 0, 1, 2, 1000, 1000000. Форматов не поддерживает, выводится как есть;
Число с дробной частью
- нецелое число, например 0.5 смены или скидка в 33.33 процента;

  1. roundToTwoDigits (также применяется как формат по умолчанию если не указывать формат) - округление до второго знака после запятой, например 3,33333 → 3,33;

  2. roundToThreeDigits - округление до третьего знака после запятой, например 3,33333 → 3,333;

  3. integerPart - целая часть без округления (просто отбрасывается дробная), например 1,99 → 1, 

  4. roundedIntegerPart - целая часть c округлением к ближайшему целому, например 1,99 → 2,  1,5 → 2, 1,4 → 1;

  5. half - возвращает половину, которая тоже является числом с дробной частью, и к ней можно опять применить формат. Например sum.half.half даст половину половины (четверть) от sum, а sum.half.integerPart - целую часть от половины. 

Локальная дата  - дата записанная просто как фиксированная строка, например дата договора. Она просто хранит номер года и дня, часовой пояс клиента никак не влияет на нее. Форматы вывода доступны те же что и для обычной даты.

  1. Особый формат по умолчанию (если не указывать формат) - 31 января 2026;

  2. dateString - 31.01.2026;

  3. dayOfMonth - номер для в месяце, например 12 для 12 января;

  4. ddMMMMyyyy_quotes_double - дата с числом в двойных кавычках "12" января 2023;

  5. ddMMMMyyyy_quotes_angle - дата с числом в угловых кавычках «12» января 2023;

ФИО  - фамилия, имя и отчество. Доступны форматы с инициалами, полным написанием, отдельно фамилией другие;

  1. fullName (также применяется как формат по умолчанию если не указывать формат) - фамилия имя отчество Иванов Иван Иванович;

  2. initials - фамилия и инициалы Иванов И.И.;

  3. firstName - имя;

  4. lastName - фамилия;

  5. secondName - отчество;

  6. firstAndLastName - имя и фамилия Иван Иванов;

  7. lastAndFirstName - фамилия и имя Иванов Иван;