Add loan charge-off behaviour

This commit is contained in:
adam.magyari
2024-11-28 12:47:11 -06:00
committed by Jose Alberto Hernandez
parent 497fc3b9d9
commit fb692d47da
18 changed files with 102 additions and 14 deletions
@@ -55,6 +55,11 @@
<span fxFlex="50%">{{ loanDetails.enableDownPayment | yesNo }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%">{{ 'labels.inputs.Loan Charge-off behaviour' | translate}}:</span>
<span fxFlex="50%">{{ loanDetails.chargeOffBehaviour.value | translateKey: 'catalogs' }}</span>
</div>
<div fxFlexFill>
<span fxFlex="50%"> {{"labels.inputs.Grace: On Principal Payment" | translate}}</span>
<span fxFlex="50%"> {{loanDetails.graceOnPrincipalPayment}} </span>
@@ -403,6 +403,17 @@
<span fxFlex="53%">{{ loanProduct.enableAutoRepaymentForDownPayment | yesNo }}</span>
</div>
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation" fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Loan Charge-off behaviour' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider>
<div fxFlexFill>
<span fxFlex="47%">{{ 'labels.inputs.Loan Charge-off behaviour' | translate}}:</span>
<span fxFlex="53%">{{ loanProduct.chargeOffBehaviour.value | translateKey:'catalogs' }}</span>
</div>
</div>
<h3 class="mat-h3" fxFlexFill>{{ 'labels.heading.Moratorium' | translate}}</h3>
<div fxFlexFill *ngIf="loanProduct.delinquencyBucket">
@@ -202,6 +202,9 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
this.loanProduct.loanScheduleProcessingType = this.optionDataLookUpByCode(this.loanProduct.loanScheduleProcessingType,
this.loanProductsTemplate.loanScheduleProcessingTypeOptions);
}
if (!this.loanProduct.chargeOffBehaviour.value) {
this.loanProduct.chargeOffBehaviour = this.stringEnumOptionDataLookUp(this.loanProduct.chargeOffBehaviour, this.loanProductsTemplate.chargeOffBehaviourOptions);
}
}
}
@@ -242,6 +245,20 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
return optionData;
}
stringEnumOptionDataLookUp(itemId: any, optionsData: any[]): StringEnumOptionData {
let optionData: StringEnumOptionData | null;
optionsData.some((o: any) => {
if (o.id === itemId) {
optionData = {
id: o.id,
code: o.code,
value: o.value
};
}
});
return optionData;
}
optionDataLookUpByCode(currentValue: any, optionsData: any[]): OptionData {
let optionData: OptionData | null;
optionsData.some((o: any) => {
@@ -135,6 +135,19 @@
<span fxFlex="48%" fxHide.lt-md></span>
<div *ngIf="isAdvancedTransactionProcessingStrategy" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<h3 fxFlex="98%" class="mat-h4">{{'labels.inputs.Loan Charge-off behaviour' | translate}}</h3>
<mat-form-field fxFlex="30%">
<mat-label>{{'labels.inputs.Loan Charge-off behaviour' | translate}}</mat-label>
<mat-select formControlName="chargeOffBehaviour" required>
<mat-option *ngFor="let chargeOffBehaviour of chargeOffBehaviourData" [value]="chargeOffBehaviour.id">
{{ chargeOffBehaviour.value | translateKey:'catalogs' }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<h4 fxFlex="98%" class="mat-h4 m-r-10">{{'labels.inputs.Moratorium' | translate}} <i class="fas fa-question" matTooltip="{{ 'tooltips.The moratorium information' | translate}}"></i></h4>
<mat-form-field fxFlex="48%">
@@ -3,7 +3,7 @@ import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl }
import { LoanProducts } from '../../loan-products';
import { rangeValidator } from 'app/shared/validators/percentage.validator';
import { GlobalConfiguration } from 'app/system/configurations/global-configurations-tab/configuration.model';
import { CodeName, OptionData } from 'app/shared/models/option-data.model';
import { CodeName, OptionData, StringEnumOptionData } from 'app/shared/models/option-data.model';
import { ProcessingStrategyService } from '../../services/processing-strategy.service';
@@ -46,6 +46,7 @@ export class LoanProductSettingsStepComponent implements OnInit {
advancedTransactionProcessingStrategyDisabled = true;
useDueForRepaymentsConfigurations = false;
rescheduleStrategyTypeDisabled = false;
chargeOffBehaviourData: StringEnumOptionData[] = [];
/** Values to Days for Repayments */
defaultConfigValues: GlobalConfiguration[] = [];
@@ -85,6 +86,7 @@ export class LoanProductSettingsStepComponent implements OnInit {
this.delinquencyBucketData = this.loanProductsTemplate.delinquencyBucketOptions;
this.loanScheduleTypeData = this.loanProductsTemplate.loanScheduleTypeOptions;
this.loanScheduleProcessingTypeData = this.loanProductsTemplate.loanScheduleProcessingTypeOptions;
this.chargeOffBehaviourData = this.loanProductsTemplate.chargeOffBehaviourOptions;
// this.useDueForRepaymentsConfigurations = (!this.loanProduct.dueDaysForRepaymentEvent && !this.loanProduct.overDueDaysForRepaymentEvent);
@@ -121,7 +123,8 @@ export class LoanProductSettingsStepComponent implements OnInit {
'enableInstallmentLevelDelinquency': this.loanProductsTemplate.enableInstallmentLevelDelinquency,
'loanScheduleType': this.loanProductsTemplate.loanScheduleType.code,
'useDueForRepaymentsConfigurations': this.loanProductsTemplate.useDueForRepaymentsConfigurations,
'allowAccrualPostingInArrears': this.loanProductsTemplate.allowAccrualPostingInArrears
'allowAccrualPostingInArrears': this.loanProductsTemplate.allowAccrualPostingInArrears,
'chargeOffBehaviour': this.loanProductsTemplate.chargeOffBehaviour.id
});
this.isAdvancedTransactionProcessingStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(transactionProcessingStrategyCode);
@@ -474,6 +477,7 @@ export class LoanProductSettingsStepComponent implements OnInit {
}
this.advancedTransactionProcessingStrategyDisabled = false;
this.isAdvancedTransactionProcessingStrategy = false;
this.loanProductSettingsForm.removeControl('chargeOffBehaviour');
} else {
// Only Advanced Payment Allocation Strategy
this.transactionProcessingStrategyDataBase.some(
@@ -487,6 +491,7 @@ export class LoanProductSettingsStepComponent implements OnInit {
'transactionProcessingStrategyCode': this.transactionProcessingStrategyData[0].code
});
this.isAdvancedTransactionProcessingStrategy = true;
this.loanProductSettingsForm.addControl('chargeOffBehaviour', new UntypedFormControl(this.loanProductsTemplate.chargeOffBehaviour.id));
}
if (this.loanProductSettingsForm.value.isInterestRecalculationEnabled) {
this.setRescheduleStrategies();
@@ -128,6 +128,7 @@ export interface LoanProduct {
chargeOffReasonToGLAccountMappings?: ChargeOffReasonsToGLAccountMapping[];
enableAccrualActivityPosting?: boolean;
supportedInterestRefundTypes?: StringEnumOptionData[];
chargeOffBehaviour?: StringEnumOptionData;
}
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Přidejte pravidelné položky časového rozlišení",
"Accrual Activity Posting on Installment Due Date": "Účtování akruální činnosti v den splatnosti splátky",
"Check loan repayment due": "Zkontrolujte splatnost půjčky",
"Transfer to Savings": "Převod do Úspory"
"Transfer to Savings": "Převod do Úspory",
"Zero interest after charge-off": "Nulový úrok po nabití",
"Accelerate maturity to charge-off date": "Urychlete splatnost do data odúčtování"
},
"commons": {
"50 characters long": "50 znaků dlouhé",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Výše a zůstatek půjčky",
"Loan Approval": "Schválení půjčky",
"Loan Balance": "Zůstatek půjčky",
"Loan Charge-off behaviour": "Chování při odúčtování půjčky",
"Loan Collateral Details": "Podrobnosti o zajištění úvěru",
"Loan Cycle": "Úvěrový cyklus",
"Loan Disbursal": "Vyplacení půjčky",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Fügen Sie periodische Abgrenzungsposten hinzu",
"Accrual Activity Posting on Installment Due Date": "Buchung der Abgrenzungsaktivität am Fälligkeitsdatum der Rate",
"Check loan repayment due": "Prüfen Sie, ob die Kreditrückzahlung fällig ist",
"Transfer to Savings": "Übertragen auf Ersparnisse"
"Transfer to Savings": "Übertragen auf Ersparnisse",
"Zero interest after charge-off": "Null Zinsen nach Abschreibung",
"Accelerate maturity to charge-off date": "Fälligkeit bis zum Abschreibungsdatum beschleunigen"
},
"commons": {
"50 characters long": "50 Zeichen lang",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Kreditbetrag und Saldo",
"Loan Approval": "Kreditgenehmigung",
"Loan Balance": "Kreditsaldo",
"Loan Charge-off behaviour": "Kreditabschreibungsverhalten",
"Loan Collateral Details": "Details zur Kreditsicherheit",
"Loan Cycle": "Kreditzyklus",
"Loan Disbursal": "Kreditauszahlung",
+4 -1
View File
@@ -739,7 +739,9 @@
"Add periodic accrual entries": "Add periodic accrual entries",
"Accrual Activity Posting on Installment Due Date": "Accrual Activity Posting on Installment Due Date",
"Check loan repayment due": "Check loan repayment due",
"Transfer to Savings": "Transfer to Savings"
"Transfer to Savings": "Transfer to Savings",
"Zero interest after charge-off": "Zero interest after charge-off",
"Accelerate maturity to charge-off date": "Accelerate maturity to charge-off date"
},
"commons": {
"50 characters long": "50 characters long",
@@ -1792,6 +1794,7 @@
"Loan Amount and Balance": "Loan Amount and Balance",
"Loan Approval": "Loan Approval",
"Loan Balance": "Loan Balance",
"Loan Charge-off behaviour": "Loan Charge-off behaviour",
"Loan Collateral Details": "Loan Collateral Details",
"Loan Cycle": "Loan Cycle",
"Loan Disbursal": "Loan Disbursal",
+4 -1
View File
@@ -735,7 +735,9 @@
"Add periodic accrual entries": "Agregar entradas de devengo periódico",
"Accrual Activity Posting on Installment Due Date": "Contabilización de devengo acumulado en la fecha de vencimiento del pago",
"Check loan repayment due": "Verificar pagos a vencer de préstamos",
"Transfer to Savings": "Transferir a Ahorros"
"Transfer to Savings": "Transferir a Ahorros",
"Zero interest after charge-off": "Cero intereses después de la cancelación",
"Accelerate maturity to charge-off date": "Acelerar el vencimiento hasta la fecha de amortización"
},
"commons": {
"50 characters long": "50 caracteres de largo",
@@ -1789,6 +1791,7 @@
"Loan Amount and Balance": "Monto y saldo del Crédito",
"Loan Approval": "Aprobación de Crédito",
"Loan Balance": "Balance de Crédito",
"Loan Charge-off behaviour": "Comportamiento de cancelación de préstamos",
"Loan Collateral Details": "Detalles de la garantía del Crédito",
"Loan Cycle": "Ciclo de Crédito",
"Loan Disbursal": "Desembolso del Crédito",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Ajouter des entrées de régularisation périodiques",
"Accrual Activity Posting on Installment Due Date": "Comptabilisation d'activité de régularisation à la date d'échéance du versement",
"Check loan repayment due": "Vérifier le remboursement du prêt dû",
"Transfer to Savings": "Transfert vers l'épargne"
"Transfer to Savings": "Transfert vers l'épargne",
"Zero interest after charge-off": "Zéro intérêt après radiation",
"Accelerate maturity to charge-off date": "Accélérer la maturité jusqu'à la date de radiation"
},
"commons": {
"50 characters long": "50 caractères",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Montant et solde du prêt",
"Loan Approval": "Approbation du prêt",
"Loan Balance": "Solde du prêt",
"Loan Charge-off behaviour": "Comportement en matière de radiation de prêts",
"Loan Collateral Details": "Détails de la garantie de prêt",
"Loan Cycle": "Cycle de prêt",
"Loan Disbursal": "Décaissement du prêt",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Aggiungere voci di competenza periodica",
"Accrual Activity Posting on Installment Due Date": "Registrazione dell'attività di competenza alla data di scadenza della rata",
"Check loan repayment due": "Controllare il rimborso del prestito in scadenza",
"Transfer to Savings": "Trasferimento al risparmio"
"Transfer to Savings": "Trasferimento al risparmio",
"Zero interest after charge-off": "Zero interessi dopo la cancellazione",
"Accelerate maturity to charge-off date": "Accelerare la scadenza alla data di cancellazione"
},
"commons": {
"50 characters long": "50 caratteri di lunghezza",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Importo e saldo del prestito",
"Loan Approval": "Approvazione del prestito",
"Loan Balance": "Saldo del prestito",
"Loan Charge-off behaviour": "Comportamento di cancellazione del prestito",
"Loan Collateral Details": "Dettagli della garanzia del prestito",
"Loan Cycle": "Ciclo del prestito",
"Loan Disbursal": "Erogazione del prestito",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "정기 발생 항목 추가",
"Accrual Activity Posting on Installment Due Date": "할부 만기일에 대한 발생 활동 전기",
"Check loan repayment due": "대출 상환 기한 확인",
"Transfer to Savings": "저축으로 이체"
"Transfer to Savings": "저축으로 이체",
"Zero interest after charge-off": "대손충당 후 이자 없음",
"Accelerate maturity to charge-off date": "만기일을 대금상환일로 앞당기세요"
},
"commons": {
"50 characters long": "50자(영문 기준)",
@@ -1792,6 +1794,7 @@
"Loan Amount and Balance": "대출금액 및 잔액",
"Loan Approval": "대출 승인",
"Loan Balance": "대출 잔액",
"Loan Charge-off behaviour": "대출 상환 거부 행동",
"Loan Collateral Details": "대출 담보 세부정보",
"Loan Cycle": "대출주기",
"Loan Disbursal": "대출금 지급",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Pridėkite periodinius kaupimo įrašus",
"Accrual Activity Posting on Installment Due Date": "Kaupimo veiklos registravimas įmokos mokėjimo dieną",
"Check loan repayment due": "Patikrinkite paskolos grąžinimo terminą",
"Transfer to Savings": "Perkėlimas į santaupas"
"Transfer to Savings": "Perkėlimas į santaupas",
"Zero interest after charge-off": "Nulinės palūkanos po apmokestinimo",
"Accelerate maturity to charge-off date": "Paspartinkite terminą iki nurašymo datos"
},
"commons": {
"50 characters long": "50 simbolių ilgio",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Paskolos suma ir likutis",
"Loan Approval": "Paskolos patvirtinimas",
"Loan Balance": "Paskolos likutis",
"Loan Charge-off behaviour": "Paskolos nurašymo elgesys",
"Loan Collateral Details": "Paskolos užstato informacija",
"Loan Cycle": "Paskolos ciklas",
"Loan Disbursal": "Paskolos išmokėjimas",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Pievienojiet periodiskus uzkrāšanas ierakstus",
"Accrual Activity Posting on Installment Due Date": "Uzkrāšanas darbības grāmatošana iemaksas termiņā",
"Check loan repayment due": "Pārbaudiet aizdevuma atmaksas termiņu",
"Transfer to Savings": "Pārskaitījums uz uzkrājumiem"
"Transfer to Savings": "Pārskaitījums uz uzkrājumiem",
"Zero interest after charge-off": "Nulle procenti pēc atskaitīšanas",
"Accelerate maturity to charge-off date": "Paātriniet dzēšanas termiņu līdz izņemšanas datumam"
},
"commons": {
"50 characters long": "50 rakstzīmes garš",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Aizdevuma summa un atlikums",
"Loan Approval": "Aizdevuma apstiprināšana",
"Loan Balance": "Aizdevuma atlikums",
"Loan Charge-off behaviour": "Aizdevuma nomaksas uzvedība",
"Loan Collateral Details": "Sīkāka informācija par aizdevuma nodrošinājumu",
"Loan Cycle": "Aizdevuma cikls",
"Loan Disbursal": "Aizdevuma izsniegšana",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "आवधिक संचय प्रविष्टिहरू थप्नुहोस्",
"Accrual Activity Posting on Installment Due Date": "किस्ता तिर्ने मितिमा उपार्जन गतिविधि पोस्ट गर्दै",
"Check loan repayment due": "ऋण तिर्न बाँकी जाँच गर्नुहोस्",
"Transfer to Savings": "बचतमा स्थानान्तरण गर्नुहोस्"
"Transfer to Savings": "बचतमा स्थानान्तरण गर्नुहोस्",
"Zero interest after charge-off": "चार्ज अफ पछि शून्य ब्याज",
"Accelerate maturity to charge-off date": "चार्ज अफ मितिमा परिपक्वतालाई गति दिनुहोस्"
},
"commons": {
"50 characters long": "५० वर्ण लामो",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "ऋण रकम र मौज्दात",
"Loan Approval": "ऋण स्वीकृति",
"Loan Balance": "ऋण शेष",
"Loan Charge-off behaviour": "ऋण चार्ज अफ व्यवहार",
"Loan Collateral Details": "ऋण संपार्श्विक विवरण",
"Loan Cycle": "ऋण चक्र",
"Loan Disbursal": "ऋण वितरण",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Adicione entradas de acumulação periódicas",
"Accrual Activity Posting on Installment Due Date": "Publicação de atividades de acumulação na data de vencimento da parcela",
"Check loan repayment due": "Verifique o vencimento do empréstimo",
"Transfer to Savings": "Transferência para Poupança"
"Transfer to Savings": "Transferência para Poupança",
"Zero interest after charge-off": "Juros zero após baixa",
"Accelerate maturity to charge-off date": "Acelerar o vencimento até à data de baixa"
},
"commons": {
"50 characters long": "50 caracteres",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Valor e saldo do empréstimo",
"Loan Approval": "Aprovação de empréstimo",
"Loan Balance": "Saldo do empréstimo",
"Loan Charge-off behaviour": "Comportamento de cobrança de empréstimos",
"Loan Collateral Details": "Detalhes da garantia do empréstimo",
"Loan Cycle": "Ciclo de Empréstimo",
"Loan Disbursal": "Desembolso de empréstimo",
+4 -1
View File
@@ -737,7 +737,9 @@
"Add periodic accrual entries": "Ongeza maingizo ya mara kwa mara",
"Accrual Activity Posting on Installment Due Date": "Shughuli ya Accrual Inachapisha Tarehe ya Kukamilisha Malipo ya Malipo",
"Check loan repayment due": "Angalia ulipaji wa mkopo unaodaiwa",
"Transfer to Savings": "Hamisha kwa Akiba"
"Transfer to Savings": "Hamisha kwa Akiba",
"Zero interest after charge-off": "Riba sifuri baada ya kutozwa",
"Accelerate maturity to charge-off date": "Kuharakisha ukomavu hadi tarehe ya kukomesha malipo"
},
"commons": {
"50 characters long": "Urefu wa herufi 50",
@@ -1791,6 +1793,7 @@
"Loan Amount and Balance": "Kiasi cha Mkopo na Salio",
"Loan Approval": "Idhini ya Mkopo",
"Loan Balance": "Salio la Mkopo",
"Loan Charge-off behaviour": "Tabia ya kutoza mkopo",
"Loan Collateral Details": "Maelezo ya Dhamana ya Mkopo",
"Loan Cycle": "Mzunguko wa mkopo",
"Loan Disbursal": "Utoaji wa mkopo",