vault backup: 2026-01-21 18:43:44
This commit is contained in:
156
Интеграция СУП/Изменение данных в проекте (перевыпуск).md
Normal file
156
Интеграция СУП/Изменение данных в проекте (перевыпуск).md
Normal file
@@ -0,0 +1,156 @@
|
||||
## Статусы объектов
|
||||
|
||||
Заявка
|
||||
- Черновик - 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": "Описание ошибки"
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user