Согласование договоров и соглашений
В Про.рент есть возможность подключить вашу систему согласования договоров и соглашений. Для этого перейдите в раздел Настройки портала и включите согласование договоров.
Про.рент поддерживает две метода передачи согласуемых договоров и соглашений в вашу систему:
Путем HTTP-запроса на внешний сервис согласования. Стоит использовать этот метод, если есть endpoint, на который Про.рент может сделать HTTP-запрос.
Если нет возможности указать endpoint, на который Про.рент может сделать HTTP-запрос, то вы должны с определенной периодичностью запрашивать список согласуемых документов.
Согласование выполняется в несколько этапов для обоих случаев.
Этап 1 (если указана ссылка на внешний сервис)
При установке статуса договора или соглашения в На согласовании, Про.рент передаст информацию в ваш сервис согласования путем выполнения запроса:
POST {URL вашего сервиса}
User-Agent: Pro.rent/{версия}
{ contract: ApiContract, // Сущность договора versionId: number, // ID согласуемого соглашения resultUrl: string // URL для возврата результата согласования }
В ответ система ожидает успешный HTTP код 200 и следующие данные:
{ id: string, // ID согласования во внешнем сервисе name: string, // Название сервиса согласования url?: string, // Ссылка на договор или соглашение в сервисе согласования oneCId?: Guid // ID договора в 1С для записи в Pro.rent }
На обработку запроса система дает 10 секунд, за которые необходимо вернуть HTTP код 200.
Чтобы сообщить об ошибке нужно указать HTTP код ответа 400.
После успешного ответа Про.рент установит договору или соглашению статус На согласовании и отобразит в интерфейсе ссылку на него во внешнем сервисе.
Этап 1 (если не указана ссылка на внешний сервис)
При установке статуса договора или соглашения в На согласовании, Про.рент заблокирует дальнейшее изменение статуса договора, и вы должны запросить список документов на согласование путем выполнения запроса:
GET https://portal.pro.rent/api/approval?token={token}&onlynew={false|true}
token– это токен приложения. Как его получить описано в разделе Доступ по API.onlynewотвечает за возврат всех согласуемых на текущий момент документов, или только тех, которые до этого не были приняты вашим сервисом согласования.
В ответ система вернет успешный HTTP код 200 и массив документов для согласования:
[ { contract: ApiContract, // Сущность договора versionId: number, // ID согласуемого соглашения acceptUrl: string, // URL для уведомления об успешном приёме докумета на согласование rejectUrl: string, // URL для уведомления о неуспешном приёме документа на согласование resultUrl: string // URL для возврата результата согласования }, ... ]
После успешного приема документов, необходимо для каждого из них выполнить запрос и уведомить Про.рент о том, что документы были успешно приняты сервисом согласования:
POST {acceptUrl}
{ id: string, // ID согласования во внешнем сервисе name: string, // Название сервиса согласования url?: string // Ссылка на договор или соглашение в сервисе согласования }
В ответ система вернет успешный HTTP код 204.
Если документ не соответствует какому-либо критерию приема, то заместо предыдущего запроса, необходимо выполнить запрос:
POST {rejectUrl}
{ reason: string // Причина отказа в приеме на согласование. Максимальная длинна 1000 символов. }
В ответ система вернет успешный HTTP код 204.
Этап 2
После согласования договора или соглашения внешний сервис должен вернуть результат в Про.рент путем выполнения запроса:
POST {resultUrl}
{ signStatus: ContractSignStatus, // Обязательный статус договора, если согласование еще идет, то можно передать статус "На согласовании". reason?: string, // Необязательная причина отказа в согласовании или комментарии при согласовании. Максимальная длинна 1000 символов. number?: string, // Новый номер согласуемого договора или соглашения для записи в Pro.rent, если нужно изменить. Максимальная длинна 50 символов. date?: "yyyy-mm-dd", // Новая дата согласуемого договора или соглашения для записи в Pro.rent, если нужно изменить. oneCId?: Guid // ID договора в 1С для записи в Pro.rent }
Возможные статусы подписания договора вы можете посмотреть в разделе Перечисления. Если согласование еще идет и вы лишь передаете новый номер договора, то можно указать статус «На согласовании».
Запрос на возврат результата согласования можно выполнять несколько раз, если в процессе согласования статус подписания или номер меняются несколько раз.
Отмена согласования
Пользователь Про.рент может выбрать отмену согласования договора или соглашения. В этом случае будет выполнен следующий запрос:
POST {URL вашего сервиса}
{ contract: ApiContract, // Сущность договора versionId: number, // ID согласуемого соглашения cancel: true }
Согласование в Про.рент будет отменено независимо от результата выполнения этого запроса.