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 @@
+
\ 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",