# Генерация счет-фактуры

## 1. Введение

В Бипиуме вы можете автоматически генерировать счет-фактуры согласно заданному шаблону. Автоматическая генерация избавляет от ручной работы и снижает вероятность возникновения опечаток.

## 2. Принцип работы

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F4M04trcrWdb7XUqOhiSU%2Ftemp%20-%20Frame%201.jpg?alt=media\&token=ab1f3040-a68d-4ddd-968a-49db8b9f73b3)

При нажатии на кнопку «Сгенерировать» в каталоге «Заявки» запускается сценарий генерации счет-фактуры. Сценарий собирает данные о покупателе и выбранных позициях и генерирует счет-фактуры из заданного шаблона.

## 3. **Реализация**

### 3.1. **Настройка структуры данных**

#### **Каталог «Клиенты»**

Создайте каталог «Клиенты». В этом каталоге будут собраны все клиенты, с которыми вы взаимодействуете. Заполните каталог следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F8SAJjocq33GB6KGXLAUy%2FclientsStruct.png?alt=media\&token=17a8dd84-17ea-4680-a92c-8823100c067a)

* **Наименование** (текст).\
  \&#xNAN;*Описание*: Наименование покупателя, например ФИО.\
  \&#xNAN;*Настройки*: Обязательное поле.
* **ИНН** (текст по маске).\
  \&#xNAN;*Описание*: ИНН клиента в формате 12 цифр.\
  \&#xNAN;*Настройки*: Обязательное поле, маска ввода — 111111111111.
* **КПП** (текст по маске).\
  \&#xNAN;*Описание*: КПП клиента в формате 9 цифр.\
  \&#xNAN;*Настройки*: Обязательное поле, маска ввода - 111111111.
* **Адрес** (Адрес).\
  \&#xNAN;*Описание*: Адрес клиента.\
  \&#xNAN;*Настройки*: Обязательное поле, введите в поле [токен сервиса «dadata.ru»](https://docs.bpium.ru/integrations/integration/cases/integraciya-s-servisom-dadata#2.1.-poluchenie-tokena-servisa-dadata.ru).

#### **Каталог «Типы товаров»**

Создайте каталог «Типы товаров». В этом каталоге будут собраны все ваши товары. Заполните каталог следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FdWBOMWkSMwYHZrS5oTNg%2FitemsStruct.png?alt=media\&token=06245eb8-bd90-4355-bed0-e92de346c0c5)

* **Наименование** (текст)**.**\
  \&#xNAN;*Описание*: Наименование товара.\
  \&#xNAN;*Настройки*: Обязательное поле.
* **Цена** (число).\
  \&#xNAN;*Описание*: Цену товара за его единицу.\
  \&#xNAN;*Настройки*: Обязательное поле.
* **Единица измерения** (текст).\
  \&#xNAN;*Описание*: Единица измерения товара \
  (например, шт., кг., л. и так далее).\
  \&#xNAN;*Настройки*: Обязательное поле.

#### **Каталог «Позиции»**

Создайте каталог «Позиции». Это связующий каталог, содержащий покупателя, товар и количество товара. Заполните каталог следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fp9WMHwHkPJbxScKnKtnn%2FposStruct.png?alt=media\&token=9361db7b-a161-4a74-9f8c-4bebbeecfa46)

* **Наименование** (текст).\
  \&#xNAN;*Описание*: Наименование позиции для быстрого поиска.
* **Покупатель** (связанный каталог).\
  \&#xNAN;*Описание*: Клиент, оформляющий позицию.\
  \&#xNAN;*Настройки*: Связь с каталогом «Клиенты», обязательное поле.
* **Товар** (связанный каталог).\
  \&#xNAN;*Описание*: Товар в позиции.\
  \&#xNAN;*Настройки*: Связь с каталогом «Товары», обязательное поле.
* **Количество** (число).\
  \&#xNAN;*Описание*: Количество товара в позиции.\
  \&#xNAN;*Настройки*: Обязательное поле.

#### **Каталог «Заявки»**

Создайте каталог «Заявки». В этом каталоге собраны позиции покупателя. Заполните каталог следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FuP1AhhUtAV4VC1YbLjmY%2FzayStruct1.png?alt=media\&token=706c3d3c-1290-4c13-9db9-da7492638036)

* **Покупатель** (связанный каталог)**.**\
  \&#xNAN;*Описание*: Клиент, оформляющий заявку.\
  \&#xNAN;*Настройки*: Обязательное поле.
* **Позиции** (связанный каталог).\
  \&#xNAN;*Описание*: Позиции заявки.\
  \&#xNAN;*Настройки*: Обязательное поле, «Можно связывать несколько записей».

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FyyDcYNsUQSb0PJhyiE7k%2FzayStruct2.png?alt=media\&token=7960d127-2c72-40d3-b6f6-d9cce327f44b)

* **Ответственный** (сотрудник).\
  \&#xNAN;*Описание*: Ответственный за заявку сотрудник.\
  \&#xNAN;*Настройки*: «По умолчанию: текущий сотрудник».
* **Сгенерировать счет-фактуры** (статус).\
  \&#xNAN;*Описание*: Запускает сценарий генерации счет-фактуры.\
  \&#xNAN;*Настройки*: Добавьте одно значение и назовите его «Сгенерировать».
* **Счет-фактура** (файл).\
  \&#xNAN;*Описание*: Сгенерированный .docx-документ счет-фактуры.\
  \&#xNAN;*Настройки*: «Редактируемое только через API».

#### &#x20;**Каталог «Типы отчетов»**

Создайте каталог «Типы отчетов». В этом каталоге будут собраны шаблоны отчетов. Заполните его следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FE9DcENTFlVYb1DMr80XP%2FtypeStruct.png?alt=media\&token=adce41e9-c045-4b11-862a-6ea7707e506d)

* **Наименование** (текст)**.**\
  \&#xNAN;*Описание*: Хранит наименование отчета.
* **Шаблон отчета** (файл).\
  \&#xNAN;*Описание*: Хранит шаблон отчета, для подстановки в него данных по отчет&#x443;**.**

#### **Формирование шаблона счет-фактуры**

Вы можете сформировать свой шаблон счет-фактуры в формате .docx или загрузить готовый [файл шаблона](https://docs.google.com/document/d/1J2iMenYdScbtE9pmN_R_exU88gXqRV3F/edit?usp=sharing\&ouid=111627820568305603912\&rtpof=true\&sd=true). Готовый шаблон выглядит следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FfHY1zC3jooedbxr5X7VW%2Ftemplate.png?alt=media\&token=95b440d3-d0f0-4c9c-a988-e265d4d5cc61)

Встраиваемые в отчет значения записываются в обрамляющих фигурных скобках, например {{value}}. После обработки сценария на место {{value}} будет записана сценарная переменная с тем же именем.

#### **Описание сценарных переменных в шаблоне**

* {{data.date}} — дата формирования счета-фактуры. По умолчанию: текущая дата.
* {{data.buyInfo.address}} — адрес покупателя из каталога «Клиенты».{{data.buyInfo.address}} - адрес покупателя из каталога «Клиенты».
* {{data.buyInfo.inn}} — ИНН покупателя из каталога «Клиенты».{{data.buyInfo.inn}} — ИНН покупателя из каталога «Клиенты».
* {{data.buyInfo.kpp}} — КПП покупателя из каталога «Клиенты».
* {{data.orders.name}} — наименование товара из каталога «Типы товаров».
* {{data.orders.col}} — количество товара из каталога «Позиции».
* {{data.orders.price}} — цена за единицу товара из каталога «Типы товаров».
* {{data.orders.priceTotal}} — полная стоимость за все количество товаров. Считается по формуле: цена за единицу товара \* количество товара.
* {{data.orders.nalog}} — налоговая ставка на единицу товара, задается в коде. По умолчанию: 20.
* {{data.orders.priceWithNalog}} — цена за единицу товара с учетом налоговой ставки. Считается по формуле: цена за товар \* ((100 + налоговая ставка) / 100).
* {{data.orders.priceTotalWithNalog}} — полная стоимость за все количество товаров с учетом налоговой ставки. Считается по формуле: цена за единицу товара с учетом налоговой ставки \* количество товара.
* {{data.ordersTotal}} — сумма по всем полным стоимостям всех товаров.
* {{data.nalogsTotal}} — сумма по всем ценам за единицу товара с учетом налоговой ставки.
* {{data.ordersTotalWithNalog}} — сумма по всем полным стоимостям товара с учетом налоговой ставки.
* {{data.responsible}} — ответственное за заявку лицо из каталога «Заявки».

#### **Создание записи в каталоге «Типы отчетов»**

Создайте запись в каталоге «Типы отчетов» и прикрепите к ней шаблон счет-фактуры:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Faj2ZmhUXCZ6pDQLM6Mfl%2FtemplateRec.png?alt=media\&token=55877aca-12d0-462f-a25b-6556325468fa)

### **3.2. Настройка автоматизации**

#### **Создание и настройка события**

В системном каталоге «События» создайте новую запись и заполните её следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FKzKpSSxPAjJbNZCzjlsV%2FeventRec.png?alt=media\&token=8645d752-6014-42b8-b224-6ee3cf4df813)

В поле «Отслеживать поля» впишите ID поля «Сгенерировать счет-фактуру» из каталога «Заявки».

#### **Сценарий генерации счет-фактруы**

Создайте сценарий в каталоге «Сценарии». Сценарий предназначен для генерации отчета счет-фактуры. При создании записи сценария прикрепите к нему [следующий файл](https://drive.google.com/file/d/1sHDwFS0wh2mUF4p0oe2ZBtxjVAffsXJq/view?usp=sharing), нажав на кнопку «Загрузить…»:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FOAyFUJr6UI85aI4qSf5K%2FscenLoad.png?alt=media\&token=ab2513fe-bf78-43eb-a227-2e2916a9253d)

Прикрепите сценарий к записи ранее созданного события.

#### **Настройка сценария**

Откройте файл сценария в поле «Сценарий» и отредактируйте следующие компоненты, согласно комментариям внутри них:

* Условная стрелка к компоненту «Не заполнены необходимые поля». Замените следующие API ID, указанные в одинарных кавычках стрелки: 20 - API ID поля «Покупатель» в каталоге «Заявки». 21 - API ID поля «Позиции» в каталоге «Заявки».
* Компонент «Получение данных покупателя».
* Компонент «Получение всех заказчиков».
* Компонент «Собрать нужные данные в jsonы & i по заказам».
* Компонент «Получить запись заказа».
* Компонент «Пуш заказа в массив отформатированных заказов».
* Компонент «Все в data».
* Компонент «Генерация счета-фактуры».

Компоненты сценария, в которые нужно внести изменения:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FS49eOO1Sla3h1q7SVge0%2Fscen.png?alt=media\&token=49855c7b-95cf-4cc2-928d-dcfd81d03510)

## **4.** Тестирование

Создайте запись в каталоге «Клиенты». Пример заполнения:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FlMg2RznvzpRk2EyYWel8%2FbuyRec.png?alt=media\&token=6760165d-bef0-4352-9cd8-3273ec520173)

#### **Каталог «Типы товаров»**

Создайте одну или несколько записей в каталоге «Типы товаров». Пример заполнения:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FK0qFFR8CbyD9j6BVDr6S%2FitemRec.png?alt=media\&token=505043bc-301b-4aab-ab84-9ebebc2fb1b8)

**Каталог «Позиции»**

Создайте одну или несколько записей в каталоге «Позиции». Пример заполнения:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FNqy4VsgOEsOxKb45N9tp%2FposRec.png?alt=media\&token=ff4ed46d-f566-4a90-8093-89da997dbf12)

**Каталог «Заявки»**

Создайте запись в каталоге «Заявки». Пример заполнения:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FeR3YubUkwKsJhhVdN40A%2FzayRec.png?alt=media\&token=7e7346bc-74b3-47c1-b802-f7091fcfdcb4)

**Примечание**: Поле «Счет-фактура» нередактируемое и заполняется сгенерированным файлом счет-фактуры.

## **5. Генерация счет-фактуры**

После создания всех записей в каталогах, перейдите в заполненную запись каталога «Заявки» и нажмите на статус-кнопку «Сгенерировать». После окончания процесса  генерации, сохраните запись и откройте сгенерированный файл отчета. Пример данных в сгенерированном .docx файле:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F8wg9qLTJWnpJWcoUk8fM%2Fschet.png?alt=media\&token=bc02461e-e677-4989-a26a-6cfa13257d26)
