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 М [int][20] Идентификатор контракта (при создании нового контракта - его указывать не нужно)
name М [string][50] Номер контракта
creationDate М [date] Дата создания в формате YYYY-MM-DD
donorId М [int][20] Источник финансирования
branchId М [int] Идентификатор филиала
subdivisionId М [int] Идентификатор подразделения
clientId М [int] Идентификатор клиента
currencyId М [int] Идентификатор валюты
loanAmount М [float] Сумма займа
loanCategoryId М [int] Идентификатор категории займа
loanApplicationId М [int] Идентификатор заявки на займ
loanStage М [int]

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

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

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

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

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

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

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

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

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

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

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

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

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

Вид суммы

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

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

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