# Функциональность ОК Отчет комитента + Платежки Формирует "Отчет комитента" и платежки по агентским договорам в 1С Операционной компании. # График выполнения Выполняется вручную. # Требования **Проверки:** - Не должно допускаться формирование отчетов для одного юр. лица, которые пересекаются по датам **Логгирование:** - Старт работы обработки (дата, значения входных параметров); - Успех выполнения обработки (дата, значения входных параметров); - Ошибка выполнения работы (дата, значения входных параметров, описание ошибки). **Интерфейс:** - Выбор дата начала (включительно); - Выбор даты окончания (включительно). # Источник данных БД для внешних интеграций. # Логика работы 1. Получить список операций за выбранный период из БД (надо быть внимательным с таймзонами; все данные должны выгружаться по Московскому часовому поясу); 1. Загрузить информацию обо всех используемых ЮЛ и договорах; 1. Сформировать "Отчет комитента" по всем юр. лицам, которые имели операции за период; 1. Проводки и документы для операций каждого типа описаны ниже; 1. Сформировать платежки / счета. ## Формирование проводок ## `type == income_agent_delivery` Клиенту оказана услуга доставки, которая была осуществлена принципалом. | Дт | Кт | Сумма | Пример | Комментарий | Документы 1С | Налоговый учет | | - | - | - | - | ---- | - | - | | 62.01 | 90.01.1 субконто "АВ Курьерская доставка" | @agent_amount | 2 | Отражено агентское вознаграждение по курьерской доставке | Отчет комитента (Доставка) | - | | 76.09.4 | 62.01 | @agent_amount | 2 | Зачтено агентское вознаграждение по курьерской доставке | Отчет комитента (Доставка) | - | ### `type == income_own_services` Клиенту оказана услуга доставки, которая была осуществлена сервисом. Проводок не осуществляется (не агентская операция). ### `type == income_agent_merchant_payment_to_merchant` Мерчант на площадке продал свои товары / услуги клиенту и принял оплату самостоятельно. Проводок не осуществляется. ### `type == income_agent_merchant` Клиенту были проданы товары / услуги мерчанта и оплата была принята сервисом. | Дт | Кт | Сумма | Пример | Комментарий | Документы 1С | Налоговый учет | | - | - | - | - | ---- | - | - | | 62.01 | 90.01.1 субконто "АВ Товары" | @agent_amount | 300 | Отражено агентское вознаграждение по товарам (с мерчантом) | Отчет комитента (Мерчант) | - | | 76.09.1 | 62.01 | @agent_amount | 300 | Зачтено агентское вознаграждение по товарам (с мерчантом) | Отчет комитента (Мерчант) | - | ### `type == refund_place` Возврата клиенту за товары / услуги мерчанта за счет мерчанта. Отражается, как строчка с отрицательными значениями в отчете комитенту. | Дт | Кт | Сумма | Пример | Комментарий | Документы 1С | Налоговый учет | | - | - | - | - | ---- | - | - | | 76.09.1 | 62.01 | @agent_amount | 300 | Уменьшить сумму выручки по АВ (с мерчантом) | Отчет комитента (Мерчант) | - | | 62.01 | 90.01.1 Субконто "АВ Товары" | @agent_amount | 300 | Уменьшить сумму выручки по товарам (с мерчантом) | Отчет комитента (Мерчант) | - | ### `type == surcharge` Доплата мерчанту за счет сервиса. Отражается, как отдельная строчка с в отчете комитенту. | Дт | Кт | Сумма | Пример | Комментарий | Документы 1С | Налоговый учет | | - | - | - | - | ---- | - | - | | 62.01 | 90.01.1 субконто "АВ Товары" | @agent_amount | 300 | Отражено агентское вознаграждение по товарам (с мерчантом) | Отчет комитента (Мерчант) | - | | 76.09.1 | 62.01 | @agent_amount | 300 | Зачтено агентское вознаграждение по товарам (с мерчантом) | Отчет комитента (Мерчант) | - | ## Формирование платежек / счетов Формируются по каждому договору (`@contract_id`) отдельно. ### Для мерчантов 1. Выбрать операции с типом `@type == income_agent_merchant` и `@type == surcharge` (Доплаты); 2. Посчитать размер выплаты по каждой операции: `@pay_to_principal - @agent_amount` 3. Посчитать общий размер выплаты мерчанту (сумма выплат из предыдущего пункта); 4. Выбрать операции с типом `@type == income_agent_merchant_payment_to_merchant` (мерчант получил оплату самостоятельно); 5. Посчитать общий размер задолженности мерчанта (сумма операций из предыдущего пункта по полю `@agent_amount`); 6. Посчитать сумму возвратов за счет мерчанта: выбрать операции с типом `@type == refund_place`, сумма от `@pay_to_principal - @agent_amount` по каждому возврату. 7. Рассчитать итоговый результат: `{размер задолженности операционной компании (пункт 3)} - {размер задолженности мерчанта (пункт 5)} - {сумма возвратов за счет мерчанта (пункт 6) }` 8. Сформировать документы: - Если мы должны сделать выплату (итоговый результат > 0): сформировать платежку - Если мерчант должен оплатить наши услуги (итоговый результат < 0): сформировать счет - Если итоговый результат равен 0: ничего не делать ### Для сервисных компаний 1. Выбрать операции с типом `@type == income_agent_delivery` 2. Посчитать размер выплаты по каждой операции: `@pay_to_principal - @agent_amount` 3. Сформировать платежку на сумму выплат из предыдущего пункта