## Статусы объектов Заявка - Черновик - 1 - На утверждении - 2 - На рассмотрении в ЦПРП - 3 - Зарегистрирована (финальный) - 4 - Отклонена - 5 - Отозвана - 6 Проект - Открыт - E0001 - Закрыт (финальный) - E0002 - Приостановлен - E0003 - На закрытии в ЦПРП (финальный) - E0005 - На закрытии в ФС (финальный) - E0006 - Аннулирован (финальный) - E0009 - Закрыт для списания TS - E0027 ## Процесс 1. После получения AP ID (Id проекта из САП) в CRM могут происходить изменения данных по сделке (заявке). 2. Все изменения фиксируются в системе CRM и отправляются в СУП в конце рабочего дня 3. По всем измененным заявкам вначале отправляем запрос на получение текущих статусов заявок и проектов Пример запроса смотри в "Получение статусов заявок и проектов" (Пример запроса) 4. После получения статусов заявок и проектов система CRM отбирает только те заявки, которые могут быть изменены 1. Заявка "Зарегистрирована" и Проект "Проект открыт" 2. Заявка "Зарегистрирована" и Проект "Проект закрыт для списания TS" 5. По подходящим заявкам из п.4 система CRM формирует запросы для отправки в СУП с использованием Temporal Пример запроса смотри в "Изменение данных по заявке - проекту" (Примеры запроса) 6. Периодически опрашиваем систему СУП о готовности изменения данных по заявке и после получения ответа изменяем статусы заявок в CRM ## Авторизация Используется кастомный header `X-Erp-Integration` Значение хранится в конфигах у системы СУП. Для дев и прод разные значения. Данные передаются в формате base64, при получении значения необходимо его раскодировать и сравнить со значением хранящимся в конфиге. Если значения не соответствуют, то вернуть ошибку и код HTTP 403 - Unauthorized. ## Получение статусов заявок и проектов Используется endpoint с методом POST - синхронный процесс Предлагаемый вариант `api/1.0/openRequest/getPresaleProjectsStatus` **Обсудить данный момент после реализации и предоставить команде CRM** Пример запроса ```json {     "projects": [         {             "projectId": "AP001", // AP ID проекта         },         {             "projectId": "AP002", // AP ID проекта         }     ] } ``` Пример ответа ```json {     "projects": [         {             "projectId": "AP001", // AP ID проекта             "applicationStatus": "4", // Id статуса заявки             "projectStatus": "E0001" // Id статуса проекта         },         {             "projectId": "AP002", // AP ID проекта             "applicationStatus": "4", // Id статуса заявки             "projectStatus": "E0005" // Id статуса проекта         }     ] } ``` ## Изменение данных по проекту ### Заявка на перевыпуск Используется endpoint с методом POST - асинхронный процесс Предлагаемый вариант `api/1.0/openRequest/createPresaleProject` **Обсудить данный момент после реализации и предоставить команде CRM** В данном процессе будет использоваться метод `createPresaleProject`, также как и для создания некоммерческого проекта, но с условием, что в параметр `projectId` будет заполнен, что даст сигнал о том, что это заявка на перевыпуск проекта. Пример запроса ```json {     "orderName": "Сделка-1", // Название проекта     "orderDate": "2025-12-31", // Дата сделки из CRM     "clientId": "123-123", // Код клиента из R3     "headProjectId": "00123123", // ИНС руководителя проекта     "managerProjectId": "00123124", // ИНС менеджера по продажам     "directorProjectId": "00123125", // ИНС директора проекта     "orderAmount": 12345.67, // Сумма сделки     "projectId": "AP001", // AP ID проекта     "applicationId": "57ef229c-d8e4-4da5-b87a-7205e7eb7c43" // Id заявки в CRM } ``` Успешный ответ ```json { "success": true, "errorMessage": "" } ``` Неуспешный ответ ```json { "success": false, "errorMessage": "Текст ошибки" } ``` ### Проверка готовности проекта с измененными данными После изменения статуса заявки на Черновик, ожидаем согласования заявки и система CRM (Temporal) будет периодически опрашивать СУП о готовности перевыпуска и согласовании изменений по проекту. Ответ считается окончательным, если статус != Waiting, то есть Error или Success. Предлагаемый вариант `api/1.0/openRequest/view?applicationId={applicationId}` **Обсудить данный момент после реализации и предоставить команде CRM** Примеры ответов Идет согласование изменений ```json { "status": "Waiting", "projectId": "AP001", "errorMessage": "" } ``` Согласование изменений успешно ```json { "status": "Success", "projectId": "AP001", "errorMessage": "" } ``` Ошибка или отказ по изменениям в проекте ```json { "status": "Error", "projectId": "AP001", "errorMessage": "Описание ошибки" } ```