From 36a8e275be43520060e34debb5d95992ce44038d Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Tue, 27 Feb 2024 14:08:03 -0600 Subject: [PATCH] Allow Loan re-aging transaction --- src/app/core/utils/dropdownOptions.ts | 28 +++++++ .../loan-account-actions.component.html | 1 + .../loan-account-actions.component.ts | 6 +- .../loan-reaging/loan-reaging.component.html | 53 ++++++++++++++ .../loan-reaging/loan-reaging.component.scss | 3 + .../loan-reaging.component.spec.ts | 23 ++++++ .../loan-reaging/loan-reaging.component.ts | 73 +++++++++++++++++++ .../loans/loans-view/loans-view.component.ts | 15 ++++ .../transactions-tab.component.scss | 3 + .../transactions-tab.component.ts | 7 ++ src/app/loans/loans.module.ts | 4 +- .../models/loan-account.model.ts | 59 +++++++++++++++ src/assets/styles/_colours.scss | 1 + src/assets/translations/cs-CS.json | 2 + src/assets/translations/de-DE.json | 2 + src/assets/translations/en-US.json | 2 + src/assets/translations/es-MX.json | 2 + src/assets/translations/fr-FR.json | 2 + src/assets/translations/it-IT.json | 2 + src/assets/translations/ko-KO.json | 2 + src/assets/translations/lt-LT.json | 2 + src/assets/translations/lv-LV.json | 2 + src/assets/translations/ne-NE.json | 2 + src/assets/translations/pt-PT.json | 2 + src/assets/translations/sw-SW.json | 2 + 25 files changed, 297 insertions(+), 3 deletions(-) create mode 100644 src/app/core/utils/dropdownOptions.ts create mode 100644 src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.html create mode 100644 src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.scss create mode 100644 src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.spec.ts create mode 100644 src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.ts create mode 100644 src/app/products/loan-products/models/loan-account.model.ts diff --git a/src/app/core/utils/dropdownOptions.ts b/src/app/core/utils/dropdownOptions.ts new file mode 100644 index 000000000..096902091 --- /dev/null +++ b/src/app/core/utils/dropdownOptions.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { OptionData } from 'app/shared/models/option-data.model'; + +@Injectable({ + providedIn: 'root' +}) +export class DropdownOptions { + + public retrievePeriodFrequencyTypeOptions(includeAll: boolean): OptionData[] { + if (includeAll) { + return [ + { id: 0, code: 'DAYS', value: 'Days' }, + { id: 1, code: 'WEEKS', value: 'Weeks' }, + { id: 2, code: 'MONTHS', value: 'Months' }, + { id: 3, code: 'YEARS', value: 'Years' }, + { id: 4, code: 'WHOLE_TERM', value: 'Whole Term' }, + { id: 5, code: 'INVALID', value: 'Invalid' }, + ]; + } else { + return [ + { id: 0, code: 'DAYS', value: 'Days' }, + { id: 1, code: 'WEEKS', value: 'Weeks' }, + { id: 2, code: 'MONTHS', value: 'Months' }, + { id: 3, code: 'YEARS', value: 'Years' } + ]; + } + } +} diff --git a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html index 877e18f54..5a23d94e3 100644 --- a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html +++ b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.html @@ -28,3 +28,4 @@ + \ No newline at end of file diff --git a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts index 9cfb7c247..0156d9c4f 100644 --- a/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts +++ b/src/app/loans/loans-view/loan-account-actions/loan-account-actions.component.ts @@ -44,7 +44,8 @@ export class LoanAccountActionsComponent { 'Charge-Off': boolean, 'Undo Charge-Off': boolean, 'Sell Loan': boolean, - 'Buy Back Loan': boolean + 'Buy Back Loan': boolean, + 'Re-Ageing': boolean } = { 'Close': false, 'Undo Approval': false, @@ -77,7 +78,8 @@ export class LoanAccountActionsComponent { 'Charge-Off': false, 'Undo Charge-Off': false, 'Sell Loan': false, - 'Buy Back Loan': false + 'Buy Back Loan': false, + 'Re-Ageing': false }; actionButtonData: any; diff --git a/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.html b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.html new file mode 100644 index 000000000..49e7fb603 --- /dev/null +++ b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.html @@ -0,0 +1,53 @@ +
+ + + +
+ + + +
+ + + {{"labels.inputs.Number of Installments" | translate}} + + + + + {{"labels.inputs.Frequency Type" | translate}} + + + {{ frequency.value }} + + + + + + {{"labels.inputs.Start Date" | translate}} + + + + + {{"labels.inputs.Start Date" | translate}} {{"labels.commons.is" | translate}} + {{"labels.commons.required" | translate}} + + + + + {{"labels.inputs.External Id" | translate}} + + +
+ + + + + + +
+
+
+
\ No newline at end of file diff --git a/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.scss b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.scss new file mode 100644 index 000000000..1915ad6d3 --- /dev/null +++ b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.scss @@ -0,0 +1,3 @@ +.container { + max-width: 37rem; +} diff --git a/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.spec.ts b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.spec.ts new file mode 100644 index 000000000..022dd2cf7 --- /dev/null +++ b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoanReagingComponent } from './loan-reaging.component'; + +describe('LoanReagingComponent', () => { + let component: LoanReagingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LoanReagingComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LoanReagingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.ts b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.ts new file mode 100644 index 000000000..4b37d7a23 --- /dev/null +++ b/src/app/loans/loans-view/loan-account-actions/loan-reaging/loan-reaging.component.ts @@ -0,0 +1,73 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dates } from 'app/core/utils/dates'; +import { DropdownOptions } from 'app/core/utils/dropdownOptions'; +import { LoansService } from 'app/loans/loans.service'; +import { SettingsService } from 'app/settings/settings.service'; +import { OptionData } from 'app/shared/models/option-data.model'; + +@Component({ + selector: 'mifosx-loan-reaging', + templateUrl: './loan-reaging.component.html', + styleUrls: ['./loan-reaging.component.scss'] +}) +export class LoanReagingComponent implements OnInit { + @Input() dataObject: any; + /** Loan Id */ + loanId: string; + /** Repayment Loan Form */ + reagingLoanForm: UntypedFormGroup; + + frequencyOptions: OptionData[] = []; + + /** Minimum Date allowed. */ + minDate = new Date(2000, 0, 1); + /** Maximum Date allowed. */ + maxDate = new Date(); + + constructor(private formBuilder: UntypedFormBuilder, + private route: ActivatedRoute, + private router: Router, + private settingsService: SettingsService, + private dropdownOptions: DropdownOptions, + private loanService: LoansService, + private dateUtils: Dates) { + this.loanId = this.route.snapshot.params['loanId']; + this.frequencyOptions = this.dropdownOptions.retrievePeriodFrequencyTypeOptions(false); + } + + ngOnInit(): void { + this.maxDate = this.settingsService.maxFutureDate; + this.createReagingLoanForm(); + } + + createReagingLoanForm() { + this.reagingLoanForm = this.formBuilder.group({ + 'numberOfInstallments': [1, Validators.required], + 'startDate': [this.settingsService.businessDate, Validators.required], + 'frequency': [, Validators.required], + 'externalId': '' + }); + } + + submit(): void { + const reagingLoanFormData = this.reagingLoanForm.value; + const locale = this.settingsService.language.code; + const dateFormat = this.settingsService.dateFormat; + const startDate: Date = this.reagingLoanForm.value.startDate; + if (reagingLoanFormData.startDate instanceof Date) { + reagingLoanFormData.startDate = this.dateUtils.formatDate(startDate, dateFormat); + } + const data = { + ...reagingLoanFormData, + dateFormat, + locale + }; + this.loanService.submitLoanActionButton(this.loanId, data, 'reAge') + .subscribe((response: any) => { + this.router.navigate(['../../transactions'], { relativeTo: this.route }); + }); + } + +} diff --git a/src/app/loans/loans-view/loans-view.component.ts b/src/app/loans/loans-view/loans-view.component.ts index 0a726d579..a78d6093b 100644 --- a/src/app/loans/loans-view/loans-view.component.ts +++ b/src/app/loans/loans-view/loans-view.component.ts @@ -16,6 +16,7 @@ import { LoanStatus } from '../models/loan-status.model'; import { Currency } from 'app/shared/models/general.model'; import { DelinquencyPausePeriod } from '../models/loan-account.model'; import { TranslateService } from '@ngx-translate/core'; +import { LoanTransaction } from 'app/products/loan-products/models/loan-account.model'; @Component({ selector: 'mifosx-loans-view', @@ -47,6 +48,7 @@ export class LoansViewComponent implements OnInit { loanDelinquencyClassificationStyle = ''; loanStatus: LoanStatus; currency: Currency; + loanReAged = false; constructor(private route: ActivatedRoute, private router: Router, @@ -59,6 +61,11 @@ export class LoansViewComponent implements OnInit { this.loanDisplayArrearsDelinquency = data.loanArrearsDelinquencyConfig.value || 0; this.loanStatus = this.loanDetailsData.status; this.currency = this.loanDetailsData.currency; + this.loanDetailsData.transactions.some((lt: LoanTransaction) => { + if (lt.type.reAge) { + this.loanReAged = true; + } + }); }); this.loanId = this.route.snapshot.params['loanId']; this.clientId = this.loanDetailsData.clientId; @@ -164,6 +171,14 @@ export class LoansViewComponent implements OnInit { }); } + // Allow Re-Ageing only when there is not any Re-Age transaction + if (!this.loanReAged) { + this.buttonConfig.addButton({ + name: 'Re-Ageing', + icon: 'calendar', + taskPermissionName: 'REAGE_LOAN', + }); + } } } diff --git a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.scss b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.scss index c1b992f28..c78999119 100644 --- a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.scss +++ b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.scss @@ -38,6 +38,9 @@ .chargeoff { color: $status-chargeoff; } + .reage { + color: $status-reage; + } } } diff --git a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts index 3820d0402..35f8b794a 100644 --- a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts +++ b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts @@ -142,6 +142,9 @@ export class TransactionsTabComponent implements OnInit { if (this.isDownPayment(transaction.type)) { return 'down-payment'; } + if (this.isReAge(transaction.type)) { + return 'reage'; + } return ''; } @@ -209,6 +212,10 @@ export class TransactionsTabComponent implements OnInit { return (transactionType.downPayment || transactionType.code === 'loanTransactionType.downPayment'); } + private isReAge(transactionType: any): boolean { + return (transactionType.code === 'loanTransactionType.reAge'); + } + private reload() { const clientId = this.route.parent.parent.snapshot.params['clientId']; const loanId = this.route.parent.parent.snapshot.params['loanId']; diff --git a/src/app/loans/loans.module.ts b/src/app/loans/loans.module.ts index 087591081..d13a269f9 100644 --- a/src/app/loans/loans.module.ts +++ b/src/app/loans/loans.module.ts @@ -80,6 +80,7 @@ import { ExternalAssetOwnerTabComponent } from './loans-view/external-asset-owne import { ExternalAssetTransferComponent } from './loans-view/external-asset-owner-tab/external-asset-transfer/external-asset-transfer.component'; import { TranslateModule } from '@ngx-translate/core'; import { LoanDelinquencyActionDialogComponent } from './custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component'; +import { LoanReagingComponent } from './loans-view/loan-account-actions/loan-reaging/loan-reaging.component'; /** * Loans Module @@ -163,7 +164,8 @@ import { LoanDelinquencyActionDialogComponent } from './custom-dialog/loan-delin AssetTransferLoanComponent, ExternalAssetOwnerTabComponent, ExternalAssetTransferComponent, - LoanDelinquencyActionDialogComponent + LoanDelinquencyActionDialogComponent, + LoanReagingComponent ], providers: [ ], }) diff --git a/src/app/products/loan-products/models/loan-account.model.ts b/src/app/products/loan-products/models/loan-account.model.ts new file mode 100644 index 000000000..5393d1774 --- /dev/null +++ b/src/app/products/loan-products/models/loan-account.model.ts @@ -0,0 +1,59 @@ +import { Currency } from 'app/shared/models/general.model'; + +export interface LoanTransaction { + id: number; + loanId: number; + officeId: number; + officeName: string; + type: LoanTransactionType; + date: number[]; + currency: Currency; + amount: number; + netDisbursalAmount: number; + principalPortion: number; + interestPortion: number; + feeChargesPortion: number; + penaltyChargesPortion: number; + overpaymentPortion: number; + unrecognizedIncomePortion: number; + externalId: string; + outstandingLoanBalance: number; + submittedOnDate: number[]; + manuallyReversed: boolean; + loanChargePaidByList: any[]; + numberOfRepayments: number; + transactionRelations: any[]; +} + + +export interface LoanTransactionType { + id: number; + code: string; + value: string; + disbursement: boolean; + repaymentAtDisbursement: boolean; + repayment: boolean; + merchantIssuedRefund: boolean; + payoutRefund: boolean; + goodwillCredit: boolean; + chargeRefund: boolean; + contra: boolean; + waiveInterest: boolean; + waiveCharges: boolean; + accrual: boolean; + writeOff: boolean; + recoveryRepayment: boolean; + initiateTransfer: boolean; + approveTransfer: boolean; + withdrawTransfer: boolean; + rejectTransfer: boolean; + chargePayment: boolean; + refund: boolean; + refundForActiveLoans: boolean; + creditBalanceRefund: boolean; + chargeAdjustment: boolean; + chargeback: boolean; + chargeoff: boolean; + downPayment: boolean; + reAge: boolean; +} diff --git a/src/assets/styles/_colours.scss b/src/assets/styles/_colours.scss index 085f09e0b..84b4070f0 100644 --- a/src/assets/styles/_colours.scss +++ b/src/assets/styles/_colours.scss @@ -71,6 +71,7 @@ $status-approved: #0f36e4; $status-chargeoff: #f39c12; $status-overpaid: #800080; $status-downpayment: #16a085; +$status-reage: #e08e0b; $status-active-overdue: #ff0000; $status-matured: #ff4000; $state-done: #00ce00; diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index 9370a1bfd..0befa27da 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Počet dní do Escheat", "Number of Days to Inactive sub-status": "Počet dní do neaktivního dílčího stavu", "Number of Groups": "Počet skupin", + "Number of Installments": "Počet splátek", "Number of Repayments": "Počet splátek", "Number of Staff": "Počet zaměstnanců", "Number of days a loan may be overdue before moving into arrears": "Počet dní, po které může být půjčka po splatnosti, než se dostane do prodlení", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Půjčka před výplatou", "Products": "produkty", "Profile": "Profil", + "Re-Ageing": "Stárnutí", "Recover From Guarantor": "Vymáhání od ručitele", "Recovery Payment": "Platba obnovy", "Reject": "Odmítnout", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 2da85d559..ec37f9ca9 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Anzahl der Tage bis zur Pfändung", "Number of Days to Inactive sub-status": "Anzahl der Tage bis zum Unterstatus „Inaktiv“.", "Number of Groups": "Anzahl der Gruppen", + "Number of Installments": "Anzahl der Raten", "Number of Repayments": "Anzahl der Rückzahlungen", "Number of Staff": "Anzahl der Mitarbeiter", "Number of days a loan may be overdue before moving into arrears": "Anzahl der Tage, die ein Kredit überfällig sein kann, bevor er in Verzug gerät", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Darlehen mit Vorauszahlung", "Products": "Produkte", "Profile": "Profil", + "Re-Ageing": "Altern", "Recover From Guarantor": "Rückforderung vom Bürgen", "Recovery Payment": "Wiederherstellungszahlung", "Reject": "Ablehnen", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index 7ead816a5..861805aa2 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -1612,6 +1612,7 @@ "Number of Days to Escheat": "Number of Days to Escheat", "Number of Days to Inactive sub-status": "Number of Days to Inactive sub-status", "Number of Groups": "Number of Groups", + "Number of Installments": "Number of Installments", "Number of Repayments": "Number of Repayments", "Number of Staff": "Number of Staff", "Number of days a loan may be overdue before moving into arrears": "Number of days a loan may be overdue before moving into arrears", @@ -2143,6 +2144,7 @@ "Prepay Loan": "Prepay Loan", "Products": "Products", "Profile": "Profile", + "Re-Ageing": "Re-Ageing", "Recover From Guarantor": "Recover From Guarantor", "Recovery Payment": "Recovery Payment", "Reject": "Reject", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index 069a31a0b..3db5bb157 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Número de días para evitar", "Number of Days to Inactive sub-status": "Número de días hasta el subestado inactivo", "Number of Groups": "Número de grupos", + "Number of Installments": "Número de cuotas", "Number of Repayments": "Número de reembolsos", "Number of Staff": "Numero de empleado", "Number of days a loan may be overdue before moving into arrears": "Número de días que un Crédito puede estar vencido antes de entrar en mora", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Prepagar crédito", "Products": "Productos", "Profile": "Perfil", + "Re-Ageing": "Envejecimiento", "Recover From Guarantor": "Recuperar del Garante", "Recovery Payment": "Pago de recuperación", "Reject": "Rechazar", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index 549959bc8..edacaa0fb 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Nombre de jours pour éviter", "Number of Days to Inactive sub-status": "Nombre de jours avant le sous-statut inactif", "Number of Groups": "Nombre de groupes", + "Number of Installments": "Nombre d'installations", "Number of Repayments": "Nombre de remboursements", "Number of Staff": "Nombre d'employés", "Number of days a loan may be overdue before moving into arrears": "Nombre de jours pendant lesquels un prêt peut être en retard avant de se retrouver en arriérés", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Prêt à remboursement anticipé", "Products": "Des produits", "Profile": "Profil", + "Re-Ageing": "Vieillissement", "Recover From Guarantor": "Récupération auprès du garant", "Recovery Payment": "Paiement de récupération", "Reject": "Rejeter", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index cf3c4a401..7319dfa23 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Numero di giorni per l'evasione", "Number of Days to Inactive sub-status": "Numero di giorni allo stato secondario Inattivo", "Number of Groups": "Numero di gruppi", + "Number of Installments": "Numero di installazioni", "Number of Repayments": "Numero di rimborsi", "Number of Staff": "Numero di personale", "Number of days a loan may be overdue before moving into arrears": "Numero di giorni in cui un prestito può essere scaduto prima di entrare in arretrato", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Prestito con pagamento anticipato", "Products": "Prodotti", "Profile": "Profilo", + "Re-Ageing": "Invecchiamento", "Recover From Guarantor": "Recupero dal garante", "Recovery Payment": "Pagamento di recupero", "Reject": "Rifiutare", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index 2552529a4..b0af570b7 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -1614,6 +1614,7 @@ "Number of Days to Escheat": "탈퇴까지 남은 일수", "Number of Days to Inactive sub-status": "비활성 하위 상태까지 남은 일수", "Number of Groups": "그룹 수", + "Number of Installments": "할부 수", "Number of Repayments": "상환횟수", "Number of Staff": "직원 수", "Number of days a loan may be overdue before moving into arrears": "연체 상태로 전환되기 전까지 대출이 연체될 수 있는 일수", @@ -2145,6 +2146,7 @@ "Prepay Loan": "선불대출", "Products": "제품", "Profile": "프로필", + "Re-Ageing": "노화", "Recover From Guarantor": "보증인으로부터의 회복", "Reject": "거부하다", "Reports": "보고서", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index 628f46d36..b73655603 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Dienų skaičius iki Escheat", "Number of Days to Inactive sub-status": "Dienų skaičius iki antrinės būsenos Neaktyvus", "Number of Groups": "Grupių skaičius", + "Number of Installments": "Įmokų skaičius", "Number of Repayments": "Grąžinimų skaičius", "Number of Staff": "Darbuotojų skaičius", "Number of days a loan may be overdue before moving into arrears": "Dienų skaičius, kada paskola gali būti pradelsta, kol bus pradelsta skola", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Išankstinio mokėjimo paskola", "Products": "Produktai", "Profile": "Profilis", + "Re-Ageing": "Senėjimas", "Recover From Guarantor": "Išieškojimas iš garanto", "Recovery Payment": "Išieškojimo mokėjimas", "Reject": "Atmesti", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index ca22a847e..4a04f7ac3 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Dienu skaits līdz Escheat", "Number of Days to Inactive sub-status": "Dienu skaits līdz apakšstatusam Neaktīvs", "Number of Groups": "Grupu skaits", + "Number of Installments": "Maksāžu skaits", "Number of Repayments": "Atmaksu skaits", "Number of Staff": "Personāla skaits", "Number of days a loan may be overdue before moving into arrears": "Dienu skaits, kad aizdevums var būt nokavēts, pirms tiek iekasēts parāds", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Priekšapmaksas aizdevums", "Products": "Produkti", "Profile": "Profils", + "Re-Ageing": "Novecošanās", "Recover From Guarantor": "Atgūšana no galvotāja", "Recovery Payment": "Atgūšanas maksājums", "Reject": "Noraidīt", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index 8bcb58717..2f10304b0 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Escheat गर्न दिनहरूको संख्या", "Number of Days to Inactive sub-status": "निष्क्रिय उप-स्थितिमा दिनहरूको संख्या", "Number of Groups": "समूहहरूको संख्या", + "Number of Installments": "किस्ताहरूको संख्या", "Number of Repayments": "भुक्तानीको संख्या", "Number of Staff": "कर्मचारी संख्या", "Number of days a loan may be overdue before moving into arrears": "ऋण बक्यौतामा जानु भन्दा पहिले दिनको संख्या ओभरड्यू हुन सक्छ", @@ -2144,6 +2145,7 @@ "Prepay Loan": "पूर्व भुक्तानी ऋण", "Products": "उत्पादनहरू", "Profile": "प्रोफाइल", + "Re-Ageing": "बुढ्यौडो", "Recover From Guarantor": "ग्यारेन्टरबाट रिकभरी", "Recovery Payment": "रिकभरी भुक्तानी", "Reject": "अस्वीकार गर्नुहोस्", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index a7a0664f9..1c1defc19 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Número de dias para escapar", "Number of Days to Inactive sub-status": "Número de dias até o substatus Inativo", "Number of Groups": "Número de grupos", + "Number of Installments": "Número de parcelas", "Number of Repayments": "Número de reembolsos", "Number of Staff": "Número de funcionários", "Number of days a loan may be overdue before moving into arrears": "Número de dias que um empréstimo pode estar vencido antes de entrar em atraso", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Empréstimo pré-pago", "Products": "Produtos", "Profile": "Perfil", + "Re-Ageing": "Envelhecimento", "Recover From Guarantor": "Recuperação do Fiador", "Recovery Payment": "Pagamento de recuperação", "Reject": "Rejeitar", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index 46cd30000..e0779992e 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -1613,6 +1613,7 @@ "Number of Days to Escheat": "Idadi ya Siku za Escheat", "Number of Days to Inactive sub-status": "Idadi ya Siku hadi hali ndogo Isiyotumika", "Number of Groups": "Idadi ya Vikundi", + "Number of Installments": "Idadi ya awamu", "Number of Repayments": "Idadi ya Marejesho", "Number of Staff": "Idadi ya Wafanyakazi", "Number of days a loan may be overdue before moving into arrears": "Idadi ya siku mkopo unaweza kuchelewa kabla ya kuhamia kwenye malimbikizo", @@ -2144,6 +2145,7 @@ "Prepay Loan": "Lipa Mkopo", "Products": "Bidhaa", "Profile": "Wasifu", + "Re-Ageing": "Kuzeeka", "Recover From Guarantor": "Urejeshaji Kutoka kwa Mdhamini", "Recovery Payment": "Malipo ya uokoaji", "Reject": "Kataa",