155 lines
6.9 KiB
Markdown
155 lines
6.9 KiB
Markdown
## Статусы объектов
|
||
|
||
Заявка
|
||
- Черновик -
|
||
- На утверждении -
|
||
- На рассмотрении в ЦПРП -
|
||
- Зарегистрирована (финальный) -
|
||
- Отклонена -
|
||
|
||
Проект
|
||
- Открыт - 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": "...", // Id статуса заявки
|
||
"projectStatus": "E0005" // Id статуса проекта
|
||
},
|
||
{
|
||
"projectId": "AP002", // AP ID проекта
|
||
"applicationStatus": "...", // Id статуса заявки
|
||
"projectStatus": "E0001" // 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": "Описание ошибки"
|
||
}
|
||
``` |