23-01-2019 18:11

Инициализация нового контракта

GET   /bs-core/main/contracts/init/loan-app-id/{loanApplicationId}

Существует следующий процесс создания контракта по указанной заявке:

      1. Сначала создается заявка. Описание создания заявки Вы можете найти здесь. Следует принять во внимание, что при создании заявки в канале поступления нужно убрать галочку "Автоматическое создание                 контракта" (Админ-->Электронная коммерция-->Каналы-->Название Канала).

 --> 2. Затем происходит инициализация контракта по заявке на займ. При передаче параметра generateName со значением false номер контракта не будет сгенерирован. Этот параметр не обязателен и по                               умолчанию установлено значение true, при котором генерируется следующий номер контракта. Для автоматиского создания контрактов, во избежание                                                                                                               ошибки CONTRACT_SERIAL_NUMBER_IS_NOT_UNIQUE, желательно указывать generateName=falsе. Это поле заполнится автоматически при последующем вызове метода сохранения контракта (смотрите                 следующий шаг).

      3. В последнем шаге происходит создание нового контракта.

Запрос

GET /bs-core/main/contracts/init/loan-app-id/10113505

или 

GET /bs-core/main/contracts/init/loan-app-id/10113505?generateName=false HTTP/1.1
Описание параметров
Нет описанных параметров

Ответ


                        {
    "status": "ok",
    "timestamp": 1548256174894,
    "data": {
        "id": null,
        "name": "002086",
        "creationDate": "2019-01-23",
        "donorId": 101091,
        "branchId": 101306,
        "subdivisionId": 101791,
        "clientId": 101322927,
        "currencyId": 101011,
        "loanAmount": 9988,
        "loanCategoryId": null,
        "loanApplicationId": 101133126,
        "loanStage": 1,
        "issuePlanDate": "2019-01-23",
        "firstRepaymentDate": "2019-02-22",
        "repaymentPlanDate": "2019-05-23",
        "comment": "",
        "creditOfficerId": 1010824,
        "documentsReceived": false,
        "forIssue": false,
        "underCourt": false,
        "underCourtDate": null,
        "institutionDate": null,
        "determinationDate": null,
        "underCourtAmount": 0,
        "captive": false,
        "contractAgentId": null,
        "ofertaCode": "",
        "insurancePolicy": "",
        "loadingDate": null,
        "prevProlongationsQty": null,
        "definedIntForepaymentAmount": 0,
        "msfoReserveRate": 0,
        "barcode": null,
        "merchantCommissionRate": 0,
        "creditProductId": 10133178,
        "creditProductName": "21% капитал",
        "creditFieldReq": {
            "id": null,
            "dateCalcMethodId": 101232,
            "allowHolidaysPayment": true,
            "shortTermControl": false,
            "shiftFirstRepaymentDate": false,
            "interestChargeMethodId": 101863,
            "interestCalcMethodId": 101223,
            "repaymentNorm": 0,
            "calcIntOnIssueDate": false,
            "calcInterestOnDelinqBalance": true,
            "calcArrearInterest": false,
            "arrearInterestFirstDay": 0,
            "arrearInterestLastDay": 0,
            "principalDistribMethodId": 101351,
            "forepaymentConsiderationMethodId": 101591,
            "creditLineId": null,
            "trancheDuration": 30,
            "interestForTranche": 1.93,
            "delinquencyIntRate": 0,
            "delinqIntRateDelay": 0,
            "useDelinqIntRateTillNextTranche": true,
            "keepUsingDelinqIntRate": false,
            "interestRateTypeId": 101123,
            "chargeExtraInterest": true,
            "interestLgotPeriod": 0,
            "interestLgotRate": 0,
            "interestGracePeriod": 0,
            "trancheCount": 4,
            "repaymentSequenceId": 101204,
            "mandatoryChargePeriod": 30,
            "allowPrepayment": true,
            "prolongationPeriod": 20,
            "earlyProlongationFromCurrentDate": true,
            "prolongationOnNewSchedule": false,
            "prolongedIntToLastTranche": true,
            "penaltyTypeId": 101272,
            "calendarDaysPenalty": true,
            "firstWeekendWithoutPenalty": false,
            "stopPenaltyOnClose": false,
            "qtyDaysStopPenaltyOnClose": 0,
            "fixedDelayPenalty": 1000,
            "delayPenaltyDay": 10,
            "inviteAmountPct": 0,
            "inviteDiscountPerFriend": 0,
            "inviteMinIntRate": 0,
            "scheduleRecalcEnabled": false,
            "fullScheduleDatesRecalc": false,
            "useDelinqIntRateForPsk": false,
            "discountingEnabled": true,
            "useEirForDiscounting": false,
            "fees": [],
            "principalParts": [
                {
                    "id": null,
                    "trancheNo": 1,
                    "part": 25
                },
                {
                    "id": null,
                    "trancheNo": 2,
                    "part": 25
                },
                {
                    "id": null,
                    "trancheNo": 3,
                    "part": 25
                },
                {
                    "id": null,
                    "trancheNo": 4,
                    "part": 25
                }
            ],
            "penaltyRates": [
                {
                    "id": null,
                    "periodBegin": 1,
                    "periodEnd": 50,
                    "principalRate": 4,
                    "interestRate": 0,
                    "feeRate": 0,
                    "keyRateCB": null,
                    "keyRateCBTypeId": null
                }
            ],
            "qtyTranchesFirstPeriod": 0,
            "intRateFirstPeriod": 0,
            "qtyTranchesSecondPeriod": 0,
            "intRateSecondPeriod": 0,
            "qtyTranchesRepNormSecondPeriod": 0,
            "interestOnLoanAmount": false
        },
        "contractCollectorId": null,
        "repaymentNorm": 0,
        "additional": false,
        "joinFee": 0,
        "fixedJoinFee": 0,
        "insuranceFee": 0,
        "fixedInsuranceFee": 0,
        "estimateFee": 0,
        "fixedEstimateFee": 0,
        "insurance": false,
        "insurancePremiumRate": 0,
        "insurancePremiumAmount": 0
    }
}
                    
Описание параметров
Параметр Обязателен Тип данных Описание
id R [int][20] Идентификатор контракта (при создании нового контракта - его указывать не нужно)
name R [string][50] Номер контракта
creationDate R [date] Дата создания в формате YYYY-MM-DD
donorId R [int][20] Источник финансирования
branchId R [int] Идентификатор филиала
subdivisionId R [int] Идентификатор подразделения
clientId R [int] Идентификатор клиента
currencyId R [int] Идентификатор валюты
loanAmount R [float] Сумма займа
loanCategoryId R [int] Идентификатор категории займа
loanApplicationId R [int] Идентификатор заявки на займ
loanStage R [int]

Ступень займа.

Механизм проставления loanStage следующий:
в значение параметра loanStage записывается ступень займа (1, 2, 3 ... итд). При создании новой заявки на заем (если она первая по данному клиенту) в это поле проставляется значение 1. Если заявка одобрена, то в контракте в этом поле будет значение 1. При создании новой заявки на заем для этого клиента, в этом поле будет соответственно значение 2 (2 ступень), при условии что первая заявка у этого клиента была одобрена.
Пример: 
создается заявка со ступенью 3, заявка уходит на систему принятия решения (которая будет предварительно настроена в системе), там будет выполняться выражение, которое будет применять кредитный продукт который соответствует ступени займа. При одобрении заявки в системе принятия решений в значение параметра loanStage в контракте будет проставлено значение 3.

issuePlanDate R [date] Дата плановой выдачи в формате YYYY-MM-DD
firstRepaymentDate R [date] Дата первого погашения в формате YYYY-MM-DD
repaymentPlanDate R [date] Дата планового погашения в формате YYYY-MM-DD
comment R [string][50] Комментарий
creditOfficerId R [int] Идентификатор специалиста по займам
documentReceived R [bool] Оригиналы документов получены
forIssue R [bool] Флаг "К выдаче"
underCourt R [bool] Флаг Судебник
underCourtDate R [date] Дата обращения в суд
institutionDate R [date] Дата поставления о возбуждении
determitionDate R [date] Дата поставления об удержании
underCourtAmount R [float] Исковая сумма задолженности
captive R [bool] Каптивный
contractAgentId R [int] Идентификатор агента
ofertaCode R [string][25] Код оферты
insurancePolicy R [string][50] Страховой полис
loadingDate R [date] Дата загрузки (если контракт был перенесён из сторонней системы ведения учета).  Дата загрузки в данное поле автоматически записывается дата миграции контракта. При этом поле Дата загрузки = дате на которую грузим остатки. Все расчеты по контракту будут начинаться с этой даты. Если контракт был создан в BS (не мигрирован), то в поле будет значение NULL.
prevProlongationsQty R [int][11]  
definedIntForepaymentAmount R [float] Заданная сумма для распределения предоплаты по процентам
msfoReserveRate R [float]  
creditProductId R [int] Идентификатор кредитного продукта
creditProductName R [string][250] Наименование кредитного продукта
creditFieldReq R [object] Условия кредита
creditFieldReq.id R [int] Идентификатор кредитного продукта
creditFieldReq.dateCalcMethodId R [int] Метод расчета дат
creditFieldReq.allowHolidaysPayment R [bool] Не переносить с праздников и выходных
creditFieldReq.shortTermControl R [bool] Контроль краткосрочности займа
creditFieldReq.interestChargeMethodId R [int] Метод начисления процентов
creditFieldReq.interestCalcMethodId О [int][20]

Метод расчета процентов

creditFieldReq.repaymentNorm R [float] Норма погашения
creditFieldReq.calcIntOnIssueDate R [bool] Начислять проценты в день выдачи контракта (в этом случае проценты начисляются и на первый и на последний день транша)
creditFieldReq.calcInterestOnDelinqBalance R [bool] Начислять процента на просроченную ОС
creditFieldReq.calcArrearInterest R [bool] Начислять доп. проценты на просроченную ОС (отдельным видом суммы)
creditFieldReq.arrearInterestFirstDay R [int] первый день начисления доп.процентов на просроченную ОС
creditFieldReq.arrearInterestLastDay R [int] последний день начисления доп.процентов на просроченную ОС
creditFieldReq.principalDistribMethodId О [int][20]

Метод распределения основной суммы

creditFieldReq.forepaymentConsiderationMethodId R [int] Метод зачета предоплаты
creditFieldReq.creditLineId R [int] Тип кредитной линии
creditFieldReq.trancheDuration R [int] Длительность периода между погашениями
creditFieldReq.interestForTranche R [float] Процентная ставка
creditFieldReq.delinquencyIntRate R [float] Процентная ставка при просрочке
creditFieldReq.delinqIntRateDelay R [int][11] Кол-во дней до перехода на ставку при просрочке. Если в поле delinqIntRateDelay значение 0 - то процентная ставка при просрочке используется с первого дня начисления процентов на транш (если по предыдущим траншам есть просрочка), иначе - обычная процентная ставка будет продолжать действовать с начала транша указанное кол-во дней.
creditFieldReq.useDelinqIntRateTillNextTranche R [bool] Возвращение к регулярной процентной ставке со следующего транша после погашения просрочки. Если поле useDelinqIntRateTillNextTranche = ДА (true), то возврат к обычной ставке после погашения просрочки будет с начала следующего транша, если НЕТ (false) - со следующего дня после погашения просрочки.
creditFieldReq.keepUsingDelinqIntRate​ R [bool]

Продолжать применять ставку при просрочке после выхода из просрочки. 

В случае, если это поле проставлено, то ставка при просрочке будет использоваться для расчета процентов после возникновения первой просрочки и до конца контракта. Важно, что наличие предыдущих просрочек определяется по наличию соответствующих статусов контракта (Просроченный, Реструктурированный просроченный).

creditFieldReq.interestRateTypeId R [int] Тип процентной ставки
creditFieldReq.chargeExtraInterest R [bool] Начислять проценты по окончанию срока кредита
creditFieldReq.interestFreePeriod R [int] Беспроцентный период в днях
creditFieldReq.interestGracePeriod R [int] Беспроцентный льготный период (в днях)
creditFieldReq.trancheCount R [int] Количество траншей
creditFieldReq.repaymentSequenceId R [int] Порядок погашения
creditFieldReq.verticalSequenceForDelinqOnly R [bool] Погашать вертикально только просроченные транши
creditFieldReq.mandatoryChargePeriod R [int] Период обязательного начисления процентов
creditFieldReq.allowPrepayment R [bool] Возможно погашение до срока при автоакцепте
creditFieldReq.ProlongationPeriod R [int] Срок пролонгации
creditFieldReq.earlyProlongationFromCurrentDate R [bool] Досрочная пролонгация с текущей даты (иначе пролонгация с даты окончания текущего транша)
creditFieldReq.prolongationOnNewSchedule​ R [bool] Создавать новый график при пролонгации (иначе добавляются новые транши к существующему). Возможность добавлена как опция (для обратной совместимости).
creditFieldReq.prolongedIntToLastTranche​ R [bool] Переносить проценты по пролонгированным контрактам на последний транш. Для того чтобы проценты не переносились как отсроченные после пролонгации - в контракте в этом поле должно быть значение false.
creditFieldReq.penaltyTypeId R [int] Вид начисления штрафов
creditFieldReq.calendarDaysPenalty R [bool] Штраф по календарным дням
creditFieldReq.firstWeekendWithoutPenalty R [bool] Первые выходные штрафы не начислять. При установке в кредитном продукте "Первые выходные штрафы не начислять" - "true" штрафы будут начисляться в первый рабочий день после выходных или праздников, если в этот день не будет произведено уплаты. По умолчанию значение этого параметра равно "false".
Например: Дата планового погашения 4 января 2018. При ежедневной обработке штрафы не должны начисляться до 9-го января 2018 (9 января первый рабочий день). Если 9 января не было произведено погашения, то при ежедневной обработке начиная с 9 января будут начисляться штрафы. А с 4 января по 9 января котракт будет иметь статус "просрочен".
creditFieldReq.stopPenaltyOnClose R [bool] Останавливать штрафы после окончания графика
creditFieldReq.qtyDaysStopPenaltyOnClose R [int] Кол-во дней после окончания графика до остановки штрафов
creditFieldReq.fixedDelayPenalty R [float] Штраф за опоздание (Фиксированная сумма)
creditFieldReq.delayPenaltyDay R [int] День просрочки для начисления штрафа за опоздание
creditFieldReq.inviteAmountPct R [float] Процент от суммы выдачи (по которому определяем считать ли другом)
creditFieldReq.inviteDiscountPerFriend R [float] Снижение процентной ставки за каждого друга
creditFieldReq.inviteMinIntRate R [float] Минимальная процентная ставка
creditFieldReq.scheduleRecalcEnabled R [bool] Перерасчет графика в дату планового платежа
creditFieldReq.fullScheduleDatesRecalc R [bool] Полное смещение графика от фактической даты выдачи
creditFieldReq.useDelinqIntRateForPsk R [bool]

Использовать процентную ставку при просрочке для расчета ПСК.

Если по контракту в этом поле проставлено ДА, а также процентная ставка при просрочке не нулевая, то при расчете ПСК по контракту создаётся график с учетом процентной ставки при просрочке и ПСК рассчитывается от этого графика.

creditFieldReq.discountingEnabled R [bool] Дисконтирование активировано
creditFieldReq.fees R [collection] Сборы
creditFieldReq.fees._.id R [int] Идентификатор
creditFieldReq.fees._.amountTypeId О [int][20]

Вид суммы

creditFieldReq.fees._.chargeMomentId R [int] Момент начисления
creditFieldReq.fees._.valueTypeId R [int] Вид сбора
creditFieldReq.fees._.chargeBaseId R [int] База начисления
creditFieldReq.fees._.value R [float] Значение
creditFieldReq.fees._.compositeValue R [string][100] Составная ставка
creditFieldReq.fees._.chargePenalty R [bool] Штраф за просрочку
creditFieldReq.fees._.notForCharge R [bool] Не начислять
creditFieldReq.fees._.notForRepayment R [bool] Не погашать
creditFieldReq.fees._.involvedInFullCostCalc R [bool] Участвует в расчете ПСК
creditFieldReq.principalParts R [collection] Части основной суммы
creditFieldReq.principalParts._.id R [int] Идентификатор транша
creditFieldReq.principalParts._.trancheNo R [int] Порядковый номер транша
creditFieldReq.principalParts._.part R [float] Доля основной суммы в процентах
creditFieldReq.penaltyRates R [collection] Ставки штрафа
creditFieldReq.penaltyRates._.id R [int] Идентификатор ставки
creditFieldReq.penaltyRates._.periodBegin R [int] Начало периода начисления штрафов
creditFieldReq.penaltyRates._.periodEnd R [int] Конец периода начисления штрафов 
creditFieldReq.penaltyRates._.principalRate R [float] Ставка на ОС
creditFieldReq.penaltyRates._.interestRate R [float] Ставка на проценты
creditFieldReq.penaltyRates._.feeRate R [float] Ставка на сбор
creditFieldReq.qtyTranchesFirstPeriod R [int] Кол-во траншей в 1-м периоде
creditFieldReq.intRateFirstPeriod R [float] Процентная ставка в 1-м периоде
creditFieldReq.qtyTranchesSecondPeriod R [int] Кол-во траншей в 2-м периоде
creditFieldReq.intRateSecondPeriod R [float] Процентная ставка в 2-м периоде
creditFieldReq.interestOnLoanAmount R [bool] Рассчитывать проценты от суммы в контракте
creditFieldReq.qtyTranchesRepNormSecondPeriod О [int][11]

Количество траншей для расчета нормы погашения второго периода. Это поле сейчас имеет смысл отображать только при выборе метода расчета процентов (параметр interestCalcMethodId) Остаточный с двумя ставками (101226). Если это поле больше нуля, то при расчете графика для второго периода рассчитывается норма погашения исходя из указанного кол-ва траншей, рассчитанная норма погашения сохраняется в контракте.

contractCollectorId R [int] Идентификатор коллектора
repaymentNorm R [float] Норма погашения
additional R [bool] Дополнительный
joinFee R [float] Вступительный взнос (Ставка)
fixedJoinFee R [float] Фиксированный вступительный взнос (Сумма)
insuranceFee R [float] Страховочный взнос (Ставка)
fixedInsuranceFee R [float] Фиксированный страховочный взнос (Сумма)
estimateFee R [float] Сметный взнос (Ставка)
fixedEstimateFee R [float] Фиксированный сметный взнос (Сумма)
insurance R [bool] Страхование
insurancePremiumRate R [float] Ставка страховой премии
insurancePremiumAmount R [float] Сумма страховой премии