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

6.8 KiB
Raw Permalink Blame History

Статусы объектов

Заявка

  • Черновик - 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

Пример запроса

{
    "projects": [
        {
            "projectId": "AP001", // AP ID проекта
        },
        {
            "projectId": "AP002", // AP ID проекта
        }
    ]
}

Пример ответа

{
    "projects": [
        {
            "projectId": "AP001",
            "applicationStatus": "4",
            "projectStatus": "E0001"
        },
        {
            "projectId": "AP002",
            "applicationStatus": "4",
            "projectStatus": "E0005"
        }
    ]
}

Изменение данных по проекту

Заявка на перевыпуск

Используется endpoint с методом POST - асинхронный процесс

Предлагаемый вариант api/1.0/openRequest/createPresaleProject Обсудить данный момент после реализации и предоставить команде CRM

В данном процессе будет использоваться метод createPresaleProject, также как и для создания некоммерческого проекта, но с условием, что в параметр projectId будет заполнен, что даст сигнал о том, что это заявка на перевыпуск проекта.

Пример запроса

{
    "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
}

Успешный ответ

{
	"success": true,
	"errorMessage": ""
}

Неуспешный ответ

{
	"success": false,
	"errorMessage": "Текст ошибки"
}

Проверка готовности проекта с измененными данными

После изменения статуса заявки на Черновик, ожидаем согласования заявки и система CRM (Temporal) будет периодически опрашивать СУП о готовности перевыпуска и согласовании изменений по проекту.

Ответ считается окончательным, если статус != Waiting, то есть Error или Success.

Предлагаемый вариант api/1.0/openRequest/view?applicationId={applicationId} Обсудить данный момент после реализации и предоставить команде CRM

Примеры ответов

Идет согласование изменений

{
	"status": "Waiting",
	"projectId": "AP001",
	"errorMessage": ""
}

Согласование изменений успешно

{
	"status": "Success",
	"projectId": "AP001",
	"errorMessage": ""
}

Ошибка или отказ по изменениям в проекте

{
	"status": "Error",
	"projectId": "AP001",
	"errorMessage": "Описание ошибки"
}