Files
obsidian/Интеграция СУП/Изменение данных в проекте (перевыпуск).md

156 lines
6.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Статусы объектов
Заявка
- Черновик - 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",
            "applicationStatus": "4",
            "projectStatus": "E0001"
        },
        {
            "projectId": "AP002",
            "applicationStatus": "4",
            "projectStatus": "E0005"
        }
    ]
}
```
## Изменение данных по проекту
### Заявка на перевыпуск
Используется 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": "Описание ошибки"
}
```