From 66739bf7dcf51ccd0aa42075ccfa592b84ac7a84 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Mon, 30 Mar 2026 23:13:20 -0500 Subject: [PATCH] WEB-813: Working Capital loan delinquency actions --- src/app/core/alert/alert.model.ts | 1 + src/app/core/utils/dates.ts | 14 ++ .../loan-delinquency-actions.resolver.ts | 4 +- .../loan-delinquency-data.resolver.ts | 7 +- .../loan-delinquency-tags.resolver.ts | 4 +- .../loan-delinquency-actions.resolver.ts | 38 +++ ...n-delinquency-action-dialog.component.html | 80 +++---- ...cy-action-reschedule-dialog.component.html | 62 +++++ ...cy-action-reschedule-dialog.component.scss | 7 + ...ency-action-reschedule-dialog.component.ts | 70 ++++++ .../loans-account-terms-step.component.html | 2 +- src/app/loans/loans-routing.module.ts | 4 +- .../loan-delinquency-tags-tab.component.html | 218 +++++++++++++----- .../loan-delinquency-tags-tab.component.ts | 150 ++++++++++-- src/app/loans/loans.service.ts | 12 +- src/app/loans/models/loan-account.model.ts | 14 ++ .../create-loan-product.component.ts | 9 - .../edit-loan-product.component.ts | 9 - src/app/shared/footer/footer.component.ts | 8 +- .../business-date-tab.component.ts | 2 +- .../configurations.component.ts | 2 +- .../global-configurations-tab.component.ts | 6 +- src/assets/translations/cs-CS.json | 7 + src/assets/translations/de-DE.json | 7 + src/assets/translations/en-US.json | 7 + src/assets/translations/es-CL.json | 7 + src/assets/translations/es-MX.json | 7 + src/assets/translations/fr-FR.json | 7 + src/assets/translations/it-IT.json | 7 + src/assets/translations/ko-KO.json | 7 + src/assets/translations/lt-LT.json | 7 + src/assets/translations/lv-LV.json | 7 + src/assets/translations/ne-NE.json | 7 + src/assets/translations/pt-PT.json | 7 + src/assets/translations/sw-SW.json | 7 + 35 files changed, 646 insertions(+), 168 deletions(-) create mode 100644 src/app/loans/common-resolvers/working-capital/loan-delinquency-actions.resolver.ts create mode 100644 src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.html create mode 100644 src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.scss create mode 100644 src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.ts diff --git a/src/app/core/alert/alert.model.ts b/src/app/core/alert/alert.model.ts index 92ec8d70dd..bee191d996 100644 --- a/src/app/core/alert/alert.model.ts +++ b/src/app/core/alert/alert.model.ts @@ -12,4 +12,5 @@ export interface Alert { type: string; message: string; + enabled?: boolean; } diff --git a/src/app/core/utils/dates.ts b/src/app/core/utils/dates.ts index d256ea17d1..b406ff9265 100644 --- a/src/app/core/utils/dates.ts +++ b/src/app/core/utils/dates.ts @@ -52,6 +52,20 @@ export class Dates { } } + public isBefore(date1: Date, date2: Date): boolean { + return ( + Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate()) < + Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate()) + ); + } + + public isAfter(date1: Date, date2: Date): boolean { + return ( + Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate()) > + Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate()) + ); + } + public parseDatetime(value: any): Date { return moment(value).toDate(); } diff --git a/src/app/loans/common-resolvers/loan-delinquency-actions.resolver.ts b/src/app/loans/common-resolvers/loan-delinquency-actions.resolver.ts index 0949efc686..64aabe06d0 100644 --- a/src/app/loans/common-resolvers/loan-delinquency-actions.resolver.ts +++ b/src/app/loans/common-resolvers/loan-delinquency-actions.resolver.ts @@ -29,6 +29,8 @@ export class LoanDelinquencyActionsResolver extends LoanBaseResolver { resolve(route: ActivatedRouteSnapshot): Observable { this.initialize(route); const loanId = route.paramMap.get('loanId') || route.parent.paramMap.get('loanId'); - return this.loansService.getDelinquencyActions(this.loanAccountPath, loanId); + if (!isNaN(+loanId)) { + return this.loansService.getDelinquencyActions(this.loanAccountPath, loanId); + } } } diff --git a/src/app/loans/common-resolvers/loan-delinquency-data.resolver.ts b/src/app/loans/common-resolvers/loan-delinquency-data.resolver.ts index b0af2f4fe9..145ea568d4 100644 --- a/src/app/loans/common-resolvers/loan-delinquency-data.resolver.ts +++ b/src/app/loans/common-resolvers/loan-delinquency-data.resolver.ts @@ -27,7 +27,6 @@ export class LoanDelinquencyDataResolver extends LoanBaseResolver { constructor() { super(); } - /** * Returns the Loans with Association data. * @returns {Observable} @@ -36,9 +35,9 @@ export class LoanDelinquencyDataResolver extends LoanBaseResolver { this.initialize(route); const loanId = route.paramMap.get('loanId') || route.parent.paramMap.get('loanId'); if (!isNaN(+loanId)) { - if (this.isLoanProduct) { - return this.loansService.getDelinquencyData(loanId); - } + return this.isLoanProduct + ? this.loansService.getDelinquencyData(loanId) + : this.loansService.getWorkingCapitalLoanDetails(loanId); } } } diff --git a/src/app/loans/common-resolvers/loan-delinquency-tags.resolver.ts b/src/app/loans/common-resolvers/loan-delinquency-tags.resolver.ts index 53564772d0..5a9945297c 100644 --- a/src/app/loans/common-resolvers/loan-delinquency-tags.resolver.ts +++ b/src/app/loans/common-resolvers/loan-delinquency-tags.resolver.ts @@ -36,7 +36,9 @@ export class LoanDelinquencyTagsResolver extends LoanBaseResolver { this.initialize(route); const loanId = route.paramMap.get('loanId') || route.parent.paramMap.get('loanId'); if (!isNaN(+loanId)) { - return this.loansService.getDelinquencyTags(this.loanAccountPath, loanId); + if (this.isLoanProduct) { + return this.loansService.getDelinquencyTags(loanId); + } } } } diff --git a/src/app/loans/common-resolvers/working-capital/loan-delinquency-actions.resolver.ts b/src/app/loans/common-resolvers/working-capital/loan-delinquency-actions.resolver.ts new file mode 100644 index 0000000000..b9fe836673 --- /dev/null +++ b/src/app/loans/common-resolvers/working-capital/loan-delinquency-actions.resolver.ts @@ -0,0 +1,38 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { Injectable, inject } from '@angular/core'; +import { ActivatedRouteSnapshot } from '@angular/router'; +import { Observable } from 'rxjs'; +import { LoanBaseResolver } from '../loan-base.resolver'; +import { LoansService } from 'app/loans/loans.service'; + +@Injectable({ + providedIn: 'root' +}) +export class LoanDelinquencyRangeScheduleResolver extends LoanBaseResolver { + private loansService = inject(LoansService); + + constructor() { + super(); + } + + /** + * Returns the Loans with Association data. + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + this.initialize(route); + const loanId = route.paramMap.get('loanId') || route.parent.paramMap.get('loanId'); + if (!isNaN(+loanId)) { + if (this.isWorkingCapital) { + return this.loansService.getWorkingCapitalLoanDelinquencyRangeSchedule(loanId); + } + } + } +} diff --git a/src/app/loans/custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component.html b/src/app/loans/custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component.html index c9584059f3..5ae2ec7bf9 100644 --- a/src/app/loans/custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component.html +++ b/src/app/loans/custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component.html @@ -8,46 +8,48 @@

{{ 'labels.heading.Loan Delinquency Actions' | translate }}

-
- - {{ 'labels.inputs.Start Date' | translate }} - - - - @if (delinquencyActionForm.controls.startDate.hasError('required')) { - - {{ 'labels.inputs.Start Date' | translate }} {{ 'labels.commons.is' | translate }} - {{ 'labels.commons.required' | translate }} - - } - +
+
+ + {{ 'labels.inputs.Start Date' | translate }} + + + + @if (delinquencyActionForm.controls.startDate.hasError('required')) { + + {{ 'labels.inputs.Start Date' | translate }} {{ 'labels.commons.is' | translate }} + {{ 'labels.commons.required' | translate }} + + } + - - {{ 'labels.inputs.End Date' | translate }} - - - - @if (delinquencyActionForm.controls.endDate.hasError('required')) { - - {{ 'labels.inputs.End Date' | translate }} {{ 'labels.commons.is' | translate }} - {{ 'labels.commons.required' | translate }} - - } - + + {{ 'labels.inputs.End Date' | translate }} + + + + @if (delinquencyActionForm.controls.endDate.hasError('required')) { + + {{ 'labels.inputs.End Date' | translate }} {{ 'labels.commons.is' | translate }} + {{ 'labels.commons.required' | translate }} + + } + +
diff --git a/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.html b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.html new file mode 100644 index 0000000000..11cb676f70 --- /dev/null +++ b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.html @@ -0,0 +1,62 @@ + + +

{{ 'labels.heading.Loan Delinquency Actions' | translate }}

+ +
+
+ + {{ 'labels.inputs.Minimum Payment' | translate }} + + + + + {{ 'labels.inputs.Minimum Payment Type' | translate }} + + @for (minimumPaymentType of minimumPaymentTypeOptions; track minimumPaymentType) { + + {{ minimumPaymentType.value | translateKey: 'catalogs' }} + + } + + + + + {{ 'labels.inputs.Period Payment Frequency' | translate }} + + + + + {{ 'labels.inputs.Period Payment Frequency Type' | translate }} + + @for (frequencyType of frequencyTypeOptions; track frequencyType) { + + {{ frequencyType.value | translateKey: 'catalogs' }} + + } + + +
+
+ + + + + diff --git a/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.scss b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.scss new file mode 100644 index 0000000000..af9f4c0753 --- /dev/null +++ b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.scss @@ -0,0 +1,7 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ diff --git a/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.ts b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.ts new file mode 100644 index 0000000000..b10a94e29f --- /dev/null +++ b/src/app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component.ts @@ -0,0 +1,70 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { Component, inject } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; +import { + MAT_DIALOG_DATA, + MatDialogRef, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose +} from '@angular/material/dialog'; +import { CdkScrollable } from '@angular/cdk/scrolling'; +import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; +import { MatTooltip } from '@angular/material/tooltip'; +import { StringEnumOptionData } from 'app/shared/models/option-data.model'; + +@Component({ + selector: 'mifosx-loan-delinquency-action-reschedule-dialog', + templateUrl: './loan-delinquency-action-reschedule-dialog.component.html', + styleUrl: './loan-delinquency-action-reschedule-dialog.component.scss', + imports: [ + ...STANDALONE_SHARED_IMPORTS, + MatDialogTitle, + CdkScrollable, + MatDialogContent, + MatDialogActions, + MatDialogClose, + MatTooltip + ] +}) +export class LoanDelinquencyActionRescheduleDialogComponent { + dialogRef = inject>(MatDialogRef); + data = inject(MAT_DIALOG_DATA); + private formBuilder = inject(UntypedFormBuilder); + + delinquencyActionForm: UntypedFormGroup; + + frequencyTypeOptions: StringEnumOptionData[] = []; + minimumPaymentTypeOptions: StringEnumOptionData[] = []; + + constructor() { + this.createDelinquencyActionForm(); + this.frequencyTypeOptions = this.data.frequencyTypeOptions; + this.minimumPaymentTypeOptions = this.data.minimumPaymentTypeOptions; + } + + createDelinquencyActionForm() { + this.delinquencyActionForm = this.formBuilder.group({ + minimumPayment: [ + '' + ], + minimumPaymentType: [ + '' + ], + frequency: [ + '' + ], + frequencyType: [ + '' + ] + }); + } +} diff --git a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html index b41d1d4483..7a4b0ff761 100644 --- a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html +++ b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html @@ -59,7 +59,7 @@

/> @if (loansAccountTermsForm.controls.repaymentEvery.hasError('required')) { - {{ 'labels.inputs.Repaid every' | translate }} {{ 'labels.commons.is' | translate }} + {{ 'labels.inputs.Period Payment Frequency' | translate }} {{ 'labels.commons.is' | translate }} {{ 'labels.commons.required' | translate }} } diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index df230129ad..13be56a7d2 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -78,6 +78,7 @@ import { LoanBuyDownFeesDataResolver } from './common-resolvers/loan-buy-down-fe import { LoanOriginatorsTabComponent } from './loans-view/loan-originators-tab/loan-originators-tab.component'; import { LoanOriginatorsResolver } from './common-resolvers/loan-originators.resolver'; import { LoanProductsResolver } from './common-resolvers/loan-products.resolver'; +import { LoanDelinquencyRangeScheduleResolver } from './common-resolvers/working-capital/loan-delinquency-actions.resolver'; /** Loans Route. */ const routes: Routes = [ @@ -168,7 +169,8 @@ const routes: Routes = [ resolve: { loanDelinquencyTagsData: LoanDelinquencyTagsResolver, loanDelinquencyData: LoanDelinquencyDataResolver, - loanDelinquencyActions: LoanDelinquencyActionsResolver + loanDelinquencyActions: LoanDelinquencyActionsResolver, + wcLoanDelinquencyRangeSchedule: LoanDelinquencyRangeScheduleResolver }, children: [ { diff --git a/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.html b/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.html index e0fe46a9ce..83bbf9ab96 100644 --- a/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.html +++ b/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.html @@ -7,73 +7,75 @@ -->
-

{{ 'labels.heading.Loan Delinquency Tags' | translate }}

+ @if (loanProductService.isLoanProduct) { +

{{ 'labels.heading.Loan Delinquency Tags' | translate }}

- @if (loanDelinquencyTags.length > 0) { - - - - - - - - - - - - - - - -
{{ 'labels.inputs.Delinquency Classification' | translate }} - {{ item.delinquencyRange.classification }} - @if (item.delinquencyRange.maximumAgeDays) { - ( {{ item.delinquencyRange.minimumAgeDays }} - {{ item.delinquencyRange.maximumAgeDays }} ) - } - @if (!item.delinquencyRange.maximumAgeDays) { - ( {{ item.delinquencyRange.minimumAgeDays }} ) - } - {{ 'labels.inputs.Added On' | translate }} - @if (item.addedOnDate) { - - {{ item.addedOnDate | dateFormat }} - - } - {{ 'labels.inputs.Lifted On' | translate }} - @if (item.liftedOnDate) { - - {{ item.liftedOnDate | dateFormat }} - - } -
- } - - @if (installmentLevelDelinquency.length > 0) { -
-

{{ 'labels.heading.Loan Delinquency Installment Tags' | translate }}

- + @if (loanDelinquencyTags.length > 0) { +
- + - - - + + + - - + + - - + +
{{ 'labels.inputs.Delinquency Classification' | translate }}{{ item.classification }} + {{ item.delinquencyRange.classification }} + @if (item.delinquencyRange.maximumAgeDays) { + ( {{ item.delinquencyRange.minimumAgeDays }} - {{ item.delinquencyRange.maximumAgeDays }} ) + } + @if (!item.delinquencyRange.maximumAgeDays) { + ( {{ item.delinquencyRange.minimumAgeDays }} ) + } + {{ 'labels.inputs.Days' | translate }}{{ item.minimumAgeDays | formatNumber }}{{ 'labels.inputs.Added On' | translate }} + @if (item.addedOnDate) { + + {{ item.addedOnDate | dateFormat }} + + } + {{ 'labels.inputs.Amount' | translate }}{{ 'labels.inputs.Lifted On' | translate }} - {{ item.delinquentAmount | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + @if (item.liftedOnDate) { + + {{ item.liftedOnDate | dateFormat }} + + }
-
+ } + + @if (installmentLevelDelinquency.length > 0) { +
+

{{ 'labels.heading.Loan Delinquency Installment Tags' | translate }}

+ + + + + + + + + + + + + + + +
{{ 'labels.inputs.Delinquency Classification' | translate }}{{ item.classification }}{{ 'labels.inputs.Days' | translate }}{{ item.minimumAgeDays | formatNumber }}{{ 'labels.inputs.Amount' | translate }} + {{ item.delinquentAmount | currency: currency.code : 'symbol-narrow' : '1.2-2' }} +
+
+ } } - @if (allowPause) { -
+
+ @if (allowPause) {

{{ 'labels.buttons.Pause Delinquency Classification' | translate }} -
- } + } + @if (loanProductService.isWorkingCapital) { + + } + @if (loanDelinquencyActions.length > 0) {

{{ 'labels.heading.Loan Delinquency Actions' | translate }}

+ + + + @@ -100,16 +116,41 @@

{{ 'labels.heading.Loan Delinquency Actions' | translate }}

- - - - - + + @if (loanProductService.isLoanProduct) { + + + + + } + @if (loanProductService.isWorkingCapital) { + + + + + + + + + }
{{ 'labels.inputs.Id' | translate }}{{ item.id }} {{ 'labels.inputs.Action' | translate }} {{ item.action }} {{ 'labels.inputs.End Date' | translate }}{{ item.endDate | dateFormat }}{{ 'labels.inputs.Created On' | translate }}{{ item.createdOn | datetimeFormat }} + @if (item.endDate) { + {{ item.endDate | dateFormat }} + } + {{ 'labels.inputs.Created On' | translate }}{{ item.createdOn | datetimeFormat }}{{ 'labels.inputs.Minimum Payment' | translate }} + @if (item.action === 'RESCHEDULE') { + {{ item.minimumPayment | formatNumber: '' : 0 }} + {{ item.minimumPaymentType | translateKey: 'catalogs' }} + } + {{ 'labels.inputs.Frequency' | translate }} + @if (item.action === 'RESCHEDULE') { + {{ item.frequency | formatNumber: '' : 0 }} {{ item.frequencyType | translateKey: 'catalogs' }} + } + {{ 'labels.inputs.Actions' | translate }} - @if (isCurrentAndPauseAction(item)) { + @if (loanProductService.isLoanProduct && isCurrentAndPauseAction(item)) {
} + @if (wcLoanDelinquencyRangeSchedule.length > 0) { +
+

{{ 'labels.heading.Loan Delinquency Range Schedule' | translate }}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ 'labels.inputs.Period' | translate }}{{ item.periodNumber }}{{ 'labels.inputs.Start Date' | translate }}{{ item.fromDate | dateFormat }}{{ 'labels.inputs.End Date' | translate }}{{ item.toDate | dateFormat }}{{ 'labels.inputs.Expected Amount' | translate }}{{ item.expectedAmount | formatNumber }}{{ 'labels.inputs.Paid Amount' | translate }}{{ item.paidAmount | formatNumber }}{{ 'labels.inputs.Outstanding Amount' | translate }}{{ item.outstandingAmount | formatNumber }}{{ 'labels.inputs.Delinquent Days' | translate }}{{ item.delinquentDays | formatNumber }}{{ 'labels.inputs.Delinquent Amount' | translate }}{{ item.delinquentAmount | formatNumber }}{{ 'labels.inputs.Minimum Payment Criteria Met' | translate }} +
+ +
+
+
+ } diff --git a/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.ts b/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.ts index 2ed26e7a0d..4024b039c1 100644 --- a/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.ts +++ b/src/app/loans/loans-view/loan-delinquency-tags-tab/loan-delinquency-tags-tab.component.ts @@ -14,6 +14,7 @@ import { Dates } from 'app/core/utils/dates'; import { LoanDelinquencyActionDialogComponent } from 'app/loans/custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component'; import { LoansService } from 'app/loans/loans.service'; import { + DelinquencyRangeSchedule, DelinquentData, InstallmentLevelDelinquency, LoanDelinquencyAction, @@ -42,6 +43,9 @@ import { DatetimeFormatPipe } from '../../../pipes/datetime-format.pipe'; import { FormatNumberPipe } from '../../../pipes/format-number.pipe'; import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; import { LoanProductBaseComponent } from 'app/products/loan-products/common/loan-product-base.component'; +import { LoanDelinquencyActionRescheduleDialogComponent } from 'app/loans/custom-dialog/loan-delinquency-action-reschedule-dialog/loan-delinquency-action-reschedule-dialog.component'; +import { StringEnumOptionData } from 'app/shared/models/option-data.model'; +import { ProductsService } from 'app/products/products.service'; @Component({ selector: 'mifosx-loan-delinquency-tags-tab', @@ -71,6 +75,7 @@ import { LoanProductBaseComponent } from 'app/products/loan-products/common/loan export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent implements OnInit { private route = inject(ActivatedRoute); private loansServices = inject(LoansService); + private productsServices = inject(ProductsService); private dateUtils = inject(Dates); private settingsService = inject(SettingsService); private translateService = inject(TranslateService); @@ -78,6 +83,7 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im loanDelinquencyTags: LoanDelinquencyTags[] = []; loanDelinquencyActions: LoanDelinquencyAction[] = []; + wcLoanDelinquencyRangeSchedule: DelinquencyRangeSchedule[] = []; currentLoanDelinquencyAction: LoanDelinquencyAction | null; currency: Currency; installmentLevelDelinquency: InstallmentLevelDelinquency[] = []; @@ -86,44 +92,61 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im 'addedOn', 'liftedOn' ]; - loanDelinquencyActionsColumns: string[] = [ - 'action', - 'startDate', - 'endDate', - 'createdOn', - 'actions' - ]; + loanDelinquencyActionsColumns: string[] = []; installmentDelinquencyTagsColumns: string[] = [ 'classification', 'minimumAgeDays', 'amount' ]; + loanDelinquencyRangeScheduleColumns: string[] = [ + 'periodNumber', + 'fromDate', + 'toDate', + 'expectedAmount', + 'paidAmount', + 'outstandingAmount', + 'delinquentDays', + 'delinquentAmount', + 'minPaymentCriteriaMet' + ]; allowPause = true; loanId: any; + loanProductId: any; locale: string; dateFormat: string; + businessDate: Date | null = null; + + frequencyTypeOptions: StringEnumOptionData[] = []; + minimumPaymentTypeOptions: StringEnumOptionData[] = []; + constructor() { super(); this.loanId = this.route.parent.parent.snapshot.params['loanId']; + this.businessDate = this.settingsService.businessDate; this.route.parent.data.subscribe( (data: { loanDelinquencyTagsData: LoanDelinquencyTags[]; loanDelinquencyData: any; loanDelinquencyActions: LoanDelinquencyAction[]; + wcLoanDelinquencyRangeSchedule: DelinquencyRangeSchedule[]; }) => { this.loanDelinquencyTags = data.loanDelinquencyTagsData; - this.loanDelinquencyActions = data.loanDelinquencyActions || []; - this.validateDelinquencyActions(); - const loanDelinquencyData: DelinquentData | null = data.loanDelinquencyData.delinquent || null; - this.currency = data.loanDelinquencyData.currency; + this.setLoanDelinquencyAction(data.loanDelinquencyActions || []); + const loanDelinquencyDataResponse = data.loanDelinquencyData ?? null; + const loanDelinquencyData: DelinquentData | null = loanDelinquencyDataResponse?.delinquent || null; + this.currency = loanDelinquencyDataResponse?.currency; this.installmentLevelDelinquency = []; if (loanDelinquencyData != null) { this.installmentLevelDelinquency = loanDelinquencyData.installmentLevelDelinquency || []; } + if (loanDelinquencyDataResponse?.product) { + this.loanProductId = loanDelinquencyDataResponse.product.id; + } + this.wcLoanDelinquencyRangeSchedule = data.wcLoanDelinquencyRangeSchedule; } ); } @@ -132,14 +155,45 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im this.locale = this.settingsService.language.code; this.dateFormat = this.settingsService.dateFormat; this.currentLoanDelinquencyAction = null; - this.validateDelinquencyActions(); + if (this.loanProductService.isWorkingCapital) { + this.productsServices + .getLoanProductsTemplate(this.loanProductService.loanProductPath) + .subscribe((response: any) => { + this.frequencyTypeOptions = response.periodFrequencyTypeOptions; + this.minimumPaymentTypeOptions = response.delinquencyMinimumPaymentTypeOptions; + }); + } + + if (this.loanProductService.isLoanProduct) { + this.loanDelinquencyActionsColumns = [ + 'identifier', + 'action', + 'startDate', + 'endDate', + 'createdOn', + 'actions' + ]; + } else if (this.loanProductService.isWorkingCapital) { + this.loanDelinquencyActionsColumns = [ + 'identifier', + 'action', + 'startDate', + 'endDate', + 'minimumPayment', + 'frequency', + 'actions' + ]; + } } validateDelinquencyActions(): void { if (this.loanDelinquencyActions.length > 0) { - const businessDate: Date = this.settingsService.businessDate; this.currentLoanDelinquencyAction = this.loanDelinquencyActions[this.loanDelinquencyActions.length - 1]; - this.allowPause = this.currentLoanDelinquencyAction.action === 'RESUME'; + if (this.loanProductService.isLoanProduct) { + this.allowPause = this.currentLoanDelinquencyAction.action === 'RESUME'; + } else if (this.loanProductService.isWorkingCapital) { + this.allowPause = true; + } } } @@ -154,7 +208,26 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im const startDate: Date = response.data.value.startDate; const endDate: Date = response.data.value.endDate; - this.sendDelinquencyAction(action, startDate, endDate); + this.sendDelinquencyAction(action, startDate, endDate, null, null, null, null); + }); + } + + createDelinquencyActionReschedule(): void { + const action = 'reschedule'; + const loanDelinquencyActionDialogRef = this.dialog.open(LoanDelinquencyActionRescheduleDialogComponent, { + data: { + action: action, + frequencyTypeOptions: this.frequencyTypeOptions, + minimumPaymentTypeOptions: this.minimumPaymentTypeOptions + } + }); + loanDelinquencyActionDialogRef.afterClosed().subscribe((response: { data: any }) => { + const minimumPayment: number = response.data.value.minimumPayment; + const minimumPaymentType: string = response.data.value.minimumPaymentType; + const frequency: number = response.data.value.frequency; + const frequencyType: string = response.data.value.frequencyType; + + this.sendDelinquencyAction(action, null, null, minimumPayment, minimumPaymentType, frequency, frequencyType); }); } @@ -171,12 +244,20 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im }); removePauseDialogRef.afterClosed().subscribe((response: any) => { if (response.confirm) { - this.sendDelinquencyAction('resume', new Date(), null); + this.sendDelinquencyAction('resume', null, null, null, null, null, null); } }); } - sendDelinquencyAction(action: string, startDate: Date, endDate: Date): void { + sendDelinquencyAction( + action: string, + startDate: Date | null, + endDate: Date | null, + minimumPayment: number | null, + minimumPaymentType: string | null, + frequency: number | null, + frequencyType: string | null + ): void { let payload: any = { action, locale: this.locale, @@ -191,16 +272,35 @@ export class LoanDelinquencyTagsTabComponent extends LoanProductBaseComponent im startDate: this.dateUtils.formatDate(startDate, this.dateFormat), endDate: this.dateUtils.formatDate(endDate, this.dateFormat) }; + } else if (action === 'reschedule') { + payload = { + action, + locale: this.locale, + minimumPayment, + minimumPaymentType, + frequency, + frequencyType + }; } - this.loansServices.createDelinquencyActions(this.loanId, payload).subscribe((result: any) => { - this.loansServices - .getDelinquencyActions(this.loanProductService.loanAccountPath, this.loanId) - .subscribe((loanDelinquencyActions: LoanDelinquencyAction[]) => { - this.loanDelinquencyActions = loanDelinquencyActions; - this.validateDelinquencyActions(); - }); - }); + this.loansServices + .createDelinquencyActions(this.loanProductService.loanAccountPath, this.loanId, payload) + .subscribe((result: any) => { + this.loansServices + .getDelinquencyActions(this.loanProductService.loanAccountPath, this.loanId) + .subscribe((loanDelinquencyActions: LoanDelinquencyAction[]) => { + this.setLoanDelinquencyAction(loanDelinquencyActions); + }); + }); + } + + setLoanDelinquencyAction(loanDelinquencyActions: LoanDelinquencyAction[]): void { + this.loanDelinquencyActions = loanDelinquencyActions || []; + this.loanDelinquencyActions = this.loanDelinquencyActions.sort( + (objA: LoanDelinquencyAction, objB: LoanDelinquencyAction) => + this.dateUtils.parseDate(objA.startDate).getTime() - this.dateUtils.parseDate(objB.startDate).getTime() + ); + this.validateDelinquencyActions(); } isCurrentAndPauseAction(item: LoanDelinquencyAction): boolean { diff --git a/src/app/loans/loans.service.ts b/src/app/loans/loans.service.ts index 1ee75d4688..f2ba2e35a2 100644 --- a/src/app/loans/loans.service.ts +++ b/src/app/loans/loans.service.ts @@ -110,8 +110,8 @@ export class LoansService { return this.http.delete(`/loans/${loanId}`); } - getDelinquencyTags(productType: string, loanId: string): Observable { - return this.http.get(`/${productType}/${loanId}/delinquencytags`); + getDelinquencyTags(loanId: string): Observable { + return this.http.get(`/loans/${loanId}/delinquencytags`); } getDelinquencyData(loanId: string) { @@ -133,8 +133,8 @@ export class LoansService { return this.http.get(`/${productType}/${loanId}/delinquency-actions`); } - createDelinquencyActions(loanId: string, delinquencyActions: any) { - return this.http.post(`/loans/${loanId}/delinquency-actions`, delinquencyActions); + createDelinquencyActions(productType: string, loanId: string, delinquencyActions: any) { + return this.http.post(`/${productType}/${loanId}/delinquency-actions`, delinquencyActions); } getDeferredIncomeData(loanId: string) { @@ -145,6 +145,10 @@ export class LoansService { return this.http.get(`/loans/${loanId}/buydown-fees`); } + getWorkingCapitalLoanDelinquencyRangeSchedule(loanId: string) { + return this.http.get(`/working-capital-loans/${loanId}/delinquency-range-schedule`); + } + /** * Returns the loan template data with specific condition * @param loanId Loan Id diff --git a/src/app/loans/models/loan-account.model.ts b/src/app/loans/models/loan-account.model.ts index b5072c3723..c953dd6a44 100644 --- a/src/app/loans/models/loan-account.model.ts +++ b/src/app/loans/models/loan-account.model.ts @@ -181,3 +181,17 @@ export interface LoanOriginator { originatorType: CodeValue; channelType: CodeValue; } + +export interface DelinquencyRangeSchedule { + id: number; + loanId: number; + periodNumber: number; + fromDate: string; + toDate: string; + expectedAmount: number; + paidAmount: number; + outstandingAmount: number; + minPaymentCriteriaMet?: boolean; + delinquentDays?: number; + delinquentAmount?: number; +} diff --git a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts index 7e5ab5d19a..bec165e283 100644 --- a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts +++ b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts @@ -375,15 +375,6 @@ export class CreateLoanProductComponent extends LoanProductBaseComponent impleme submitWCProduct(): void { const loanProduct = this.loanProducts.buildPayload(this.loanProduct, this.itemsByDefault); - // No Empty values to be sent - [ - 'nearBreachId' - ].forEach((attr: string) => { - if (loanProduct[attr] === null || loanProduct[attr] === '') { - delete loanProduct[attr]; - } - }); - this.productsService .createLoanProduct(this.loanProductService.loanProductPath, loanProduct) .subscribe((response: any) => { diff --git a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts index c9546aab6a..d2c3483f0e 100644 --- a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts +++ b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts @@ -414,15 +414,6 @@ export class EditLoanProductComponent extends LoanProductBaseComponent implement delete loanProduct['useDueForRepaymentsConfigurations']; } - // No Empty values to be sent - [ - 'nearBreachId' - ].forEach((attr: string) => { - if (loanProduct[attr] === null || loanProduct[attr] === '') { - delete loanProduct[attr]; - } - }); - this.productsService .updateLoanProduct(this.loanProductService.loanProductPath, this.loanProductAndTemplate.id, loanProduct) .subscribe((response: any) => { diff --git a/src/app/shared/footer/footer.component.ts b/src/app/shared/footer/footer.component.ts index 3e3308fa48..1d26bf8002 100644 --- a/src/app/shared/footer/footer.component.ts +++ b/src/app/shared/footer/footer.component.ts @@ -86,12 +86,8 @@ export class FooterComponent implements OnInit, OnDestroy { if (this.displayBackEndInfo) { this.alert$ = this.alertService.alertEvent.subscribe((alertEvent: Alert) => { const alertType = alertEvent.type; - if ( - alertType === - this.translateService.instant('errors.config.setConfig', { type: SettingsService.businessDateType }) - ) { - this.isBusinessDateEnabled = - alertEvent.message === this.translateService.instant('labels.inputs.Enabled') ? true : false; + if (alertType === SettingsService.businessDateType + ' Set Config') { + this.isBusinessDateEnabled = alertEvent.enabled ? true : false; this.isBusinessDateDefined = false; if (this.isBusinessDateEnabled) { this.setBusinessDate(); diff --git a/src/app/system/configurations/business-date-tab/business-date-tab.component.ts b/src/app/system/configurations/business-date-tab/business-date-tab.component.ts index 6bb871f780..cc1497da7b 100644 --- a/src/app/system/configurations/business-date-tab/business-date-tab.component.ts +++ b/src/app/system/configurations/business-date-tab/business-date-tab.component.ts @@ -68,7 +68,7 @@ export class BusinessDateTabComponent implements OnInit { this.alert$ = this.alertService.alertEvent.subscribe((alertEvent: Alert) => { const alertType = alertEvent.type; if (alertType === SettingsService.businessDateType + ' Set Config') { - this.isBusinessDateEnabled = alertEvent.message === 'enabled' ? true : false; + this.isBusinessDateEnabled = alertEvent.enabled ? true : false; if (this.isBusinessDateEnabled) { this.setBusinessDates(); this.createBusinessDateForm(); diff --git a/src/app/system/configurations/configurations.component.ts b/src/app/system/configurations/configurations.component.ts index 8cd741e766..098d1f4e22 100644 --- a/src/app/system/configurations/configurations.component.ts +++ b/src/app/system/configurations/configurations.component.ts @@ -42,7 +42,7 @@ export class ConfigurationsComponent implements OnInit { this.alert$ = this.alertService.alertEvent.subscribe((alertEvent: Alert) => { const alertType = alertEvent.type; if (alertType === SettingsService.businessDateType + ' Set Config') { - this.isBusinessDateEnabled = alertEvent.message === 'enabled' ? true : false; + this.isBusinessDateEnabled = alertEvent.enabled ? true : false; } }); this.getConfigurations(); diff --git a/src/app/system/configurations/global-configurations-tab/global-configurations-tab.component.ts b/src/app/system/configurations/global-configurations-tab/global-configurations-tab.component.ts index 72b7d16272..e7fbde2ac8 100644 --- a/src/app/system/configurations/global-configurations-tab/global-configurations-tab.component.ts +++ b/src/app/system/configurations/global-configurations-tab/global-configurations-tab.component.ts @@ -155,9 +155,11 @@ export class GlobalConfigurationsTabComponent implements OnInit, AfterViewInit { const msg = configuration.enabled ? this.translateService.instant('labels.inputs.Enabled') : this.translateService.instant('labels.inputs.Disabled'); + // Do not change Type, It is linked to other stuffs this.alertService.alert({ - type: this.translateService.instant('errors.config.setConfig', { type: SettingsService.businessDateType }), - message: msg + type: SettingsService.businessDateType + ' Set Config', + message: msg, + enabled: configuration.enabled }); } }); diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index 91d31562e1..4324c6cd67 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -1308,6 +1308,7 @@ "Loan Delinquency Classification": "Klasifikace delikvence půjčky", "Loan Delinquency Tags": "Značky proplácení úvěrů", "Loan Delinquency Installment Tags": "Značky delikvenční splátky půjčky", + "Loan Delinquency Range Schedule": "Rozvrh Rozsahu Delikvence Půjčky", "Loan Details": "Podrobnosti o půjčce", "Loan Disbursal": "Výplata půjčky", "Loan Originators": "Poskytovatelé úvěrů", @@ -1914,6 +1915,7 @@ "Delinquency Grace Days": "Dny odkladu prodlení", "Delinquency Start Type": "Typ zahájení prodlení", "Delinquency Tags": "Štítky delikvence", + "Delinquent Amount": "Částka po Splatnosti", "Delinquent Days": "Delikventní dny", "Delivery Method": "způsob doručení", "Deposit Account": "Vkladový účet", @@ -2007,6 +2009,7 @@ "Execution Time": "Doba provedení", "Existing Client": "Stávající klient", "Existing Meeting Date": "Datum stávající schůzky", + "Expected Amount": "Očekávaná Částka", "Expected Disbursement On": "Očekávaná výplata zapnuta", "Expected disbursement on": "Očekávaná výplata dne", "Expense Account": "Výdajový účet", @@ -2354,6 +2357,7 @@ "Minimum Opening Balance": "Minimální počáteční zůstatek", "Minimum Overdraft Required for Interest Calculation": "Minimální přečerpání požadované pro výpočet úroku", "Minimum Payment": "Minimální platba", + "Minimum Payment Criteria Met": "Kritéria Minimální Platby Splněna", "Minimum Payment Type": "Typ minimální platby", "Minimum Required Balance": "Minimální požadovaný zůstatek", "Minimum Value": "Minimální hodnota", @@ -2453,6 +2457,7 @@ "Original Schedule": "Původní rozvrh", "Output Type": "Typ výstupu", "Outstanding": "Vynikající", + "Outstanding Amount": "Nesplacená Částka", "Overdraft": "Přečerpání", "Over Amount": "Nad Částka", "Over Amount Calculation Type": "Typ výpočtu nadměrné částky", @@ -2476,6 +2481,7 @@ "PDF format": "ve formátu PDF", "PREVIEW": "NÁHLED", "Paid": "Zaplaceno", + "Paid Amount": "Zaplacená Částka", "Paid Date": "Datum výplaty", "Parameter": "Parametr", "Parameter Name Passed to Pentaho": "Název parametru sestavy", @@ -2515,6 +2521,7 @@ "Percentage to Base": "Procento k základně", "Period": "Doba", "Period From": "Období od", + "Period Number": "Číslo Období", "Period Payment Rate": "Sazba splátek za období", "Period To": "Období do", "Period Type": "Typ období", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 41ca5829b6..251074c77e 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -1310,6 +1310,7 @@ "Loan Delinquency Classification": "Kreditkriminalitätsklassifizierung", "Loan Delinquency Tags": "Tags für Kreditausfälle", "Loan Delinquency Installment Tags": "Kredit -Delinquenz -Ratenmarke", + "Loan Delinquency Range Schedule": "Kredit-Delinquenz-Bereichsplan", "Loan Details": "Kreditdetails", "Loan Disbursal": "Darlehensauszahlung", "Loan Originators": "Kreditvermittler", @@ -1917,6 +1918,7 @@ "Delinquency Grace Days": "Gnadentage für Jugendstraftäter", "Delinquency Start Type": "Delinquenz-Starttyp", "Delinquency Tags": "Kriminalitäts-Tags", + "Delinquent Amount": "Überfälliger Betrag", "Delinquent Days": "Kriminelle Tage", "Delivery Method": "Versandart", "Deposit Account": "Einlagenkonto", @@ -2010,6 +2012,7 @@ "Execution Time": "Ausführungszeit", "Existing Client": "Bestehender Kunde", "Existing Meeting Date": "Bestehendes Besprechungsdatum", + "Expected Amount": "Erwarteter Betrag", "Expected Disbursement On": "Voraussichtliche Auszahlung am", "Expected disbursement on": "Voraussichtliche Auszahlung am", "Expense Account": "Aufwandskonto", @@ -2356,6 +2359,7 @@ "Minimum Opening Balance": "Mindesteröffnungssaldo", "Minimum Overdraft Required for Interest Calculation": "Für die Zinsberechnung erforderlicher Mindestüberziehungskredit", "Minimum Payment": "Mindestzahlung", + "Minimum Payment Criteria Met": "Mindestzahlungskriterien Erfüllt", "Minimum Payment Type": "Mindestzahlungsart", "Minimum Required Balance": "Mindestbetrag erforderlich", "Minimum Value": "Mindestwert", @@ -2455,6 +2459,7 @@ "Original Schedule": "Ursprünglicher Zeitplan", "Output Type": "Ausgabetyp", "Outstanding": "Hervorragend", + "Outstanding Amount": "Ausstehender Betrag", "Overdraft": "Überziehung", "Over Amount": "Überbetrag", "Over Amount Calculation Type": "Art der Berechnung des Überbetrags", @@ -2478,6 +2483,7 @@ "PDF format": "PDF-Format", "PREVIEW": "VORSCHAU", "Paid": "Bezahlt", + "Paid Amount": "Bezahlter Betrag", "Paid Date": "Bezahltes Datum", "Parameter": "Parameter", "Parameter Name Passed to Pentaho": "Berichtsparametername", @@ -2517,6 +2523,7 @@ "Percentage to Base": "Prozentsatz zur Basis", "Period": "Zeitraum", "Period From": "Zeitraum Von", + "Period Number": "Periodennummer", "Period Payment Rate": "Zahlungsrate für den Zeitraum", "Period To": "Zeitraum bis", "Period Type": "Periodentyp", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index 7aaf8b4704..d5462181b0 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -1324,6 +1324,7 @@ "Loan Delinquency Classification": "Loan Delinquency Classification", "Loan Delinquency Tags": "Loan Delinquency Tags", "Loan Delinquency Installment Tags": "Loan Delinquency Installment Tags", + "Loan Delinquency Range Schedule": "Loan Delinquency Range Schedule", "Loan Details": "Loan Details", "Loan Disbursal": "Loan Disbursal", "Loan Originators": "Loan Originators", @@ -1923,6 +1924,7 @@ "Delinquency Grace Days": "Delinquency Grace Days", "Delinquency Start Type": "Delinquency Start Type", "Delinquency Tags": "Delinquency Tags", + "Delinquent Amount": "Delinquent Amount", "Delinquent Days": "Delinquent Days", "Delivery Method": "Delivery Method", "Deposit Account": "Deposit Account", @@ -2020,6 +2022,7 @@ "Execution Time": "Execution Time", "Existing Client": "Existing Client", "Existing Meeting Date": "Existing Meeting Date", + "Expected Amount": "Expected Amount", "Expected Disbursement On": "Expected Disbursement On", "Expected disbursement on": "Expected disbursement on", "Expense Account": "Expense Account", @@ -2373,6 +2376,7 @@ "Minimum Opening Balance": "Minimum Opening Balance", "Minimum Overdraft Required for Interest Calculation": "Minimum Overdraft Required for Interest Calculation", "Minimum Payment": "Minimum Payment", + "Minimum Payment Criteria Met": "Minimum Payment Criteria Met", "Minimum Payment Type": "Minimum Payment Type", "Minimum Required Balance": "Minimum Required Balance", "Minimum Value": "Minimum Value", @@ -2472,6 +2476,7 @@ "Original Schedule": "Original Schedule", "Output Type": "Output Type", "Outstanding": "Outstanding", + "Outstanding Amount": "Outstanding Amount", "Overdraft": "Overdraft", "Over Amount": "Over Amount", "Over Amount Calculation Type": "Over Amount Calculation Type", @@ -2495,6 +2500,7 @@ "PDF format": "PDF format", "PREVIEW": "PREVIEW", "Paid": "Paid", + "Paid Amount": "Paid Amount", "Paid Date": "Paid Date", "Parameter": "Parameter", "Parameter Name Passed to Pentaho": "Report Parameter Name", @@ -2534,6 +2540,7 @@ "Percentage to Base": "Percentage to Base", "Period": "Period", "Period From": "Period From", + "Period Number": "Period Number", "Period Payment Rate": "Period Payment Rate", "Period To": "Period To", "Period Type": "Period Type", diff --git a/src/assets/translations/es-CL.json b/src/assets/translations/es-CL.json index e98b9ef241..4b8362717d 100644 --- a/src/assets/translations/es-CL.json +++ b/src/assets/translations/es-CL.json @@ -1308,6 +1308,7 @@ "Loan Delinquency Classification": "Clasificación de morosidad de créditos", "Loan Delinquency Tags": "Etiquetas de morosidad de Créditos", "Loan Delinquency Installment Tags": "Etiquetas de morosidad de cuotas", + "Loan Delinquency Range Schedule": "Calendario de Rango de Morosidad del Préstamo", "Loan Details": "Detalles del Crédito", "Loan Disbursal": "Curso de créditos", "Loan Originators": "Originadores de créditos", @@ -1915,6 +1916,7 @@ "Delinquency Grace Days": "Días de gracia para morosidad", "Delinquency Start Type": "Tipo de inicio de morosidad", "Delinquency Tags": "Etiquetas de morosidad", + "Delinquent Amount": "Monto Moroso", "Delinquent Days": "Días morosos", "Delivery Method": "Método de entrega", "Deposit Account": "Cuenta de depósito", @@ -2008,6 +2010,7 @@ "Execution Time": "Tiempo de ejecución", "Existing Client": "Cliente existente", "Existing Meeting Date": "Fecha de reunión existente", + "Expected Amount": "Monto Esperado", "Expected Disbursement On": "Curso esperado el", "Expected disbursement on": "Curso previsto en", "Expense Account": "Cuenta de gastos", @@ -2354,6 +2357,7 @@ "Minimum Opening Balance": "Saldo mínimo de apertura", "Minimum Overdraft Required for Interest Calculation": "Sobregiro mínimo requerido para el cálculo de intereses", "Minimum Payment": "Pago mínimo", + "Minimum Payment Criteria Met": "Criterio de Pago Mínimo Cumplido", "Minimum Payment Type": "Tipo de pago mínimo", "Minimum Required Balance": "Balance mínimo requerido", "Minimum Value": "Valor mínimo", @@ -2454,6 +2458,7 @@ "Original Schedule": "Calendario original", "Output Type": "Tipo de salida", "Outstanding": "Pendiente", + "Outstanding Amount": "Monto Pendiente", "Overdraft": "Sobregiro", "Over Amount": "Monto extra", "Over Amount Calculation Type": "Tipo de cálculo", @@ -2477,6 +2482,7 @@ "PDF format": "formato PDF", "PREVIEW": "RESUMEN", "Paid": "Pagado", + "Paid Amount": "Monto Pagado", "Paid Date": "Fecha de pago", "Parameter": "Parámetro", "Parameter Name Passed to Pentaho": "Nombre del parámetro del informe", @@ -2516,6 +2522,7 @@ "Percentage to Base": "Porcentaje a la base", "Period": "Período", "Period From": "Periodo desde", + "Period Number": "Número de Período", "Period Payment Rate": "Tasa de pago del período", "Period To": "Período hasta", "Period Type": "Tipo de período", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index d3bb634ddb..6594561c37 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -1310,6 +1310,7 @@ "Loan Delinquency Classification": "Clasificación de morosidad de créditos", "Loan Delinquency Tags": "Clasificación de morosidad de Créditos", "Loan Delinquency Installment Tags": "Clasificación de morosidad de cuotas", + "Loan Delinquency Range Schedule": "Calendario de Rango de Morosidad del Crédito", "Loan Details": "Detalles del Crédito", "Loan Disbursal": "Ministración de créditos", "Loan Originators": "Comisionistas de créditos", @@ -1917,6 +1918,7 @@ "Delinquency Grace Days": "Días de gracia para morosidad", "Delinquency Start Type": "Tipo de inicio de la morosidad", "Delinquency Tags": "Clasificación de morosidad", + "Delinquent Amount": "Monto Moroso", "Delinquent Days": "Días morosos", "Delivery Method": "Método de entrega", "Deposit Account": "Cuenta de depósito", @@ -2010,6 +2012,7 @@ "Execution Time": "Tiempo de ejecución", "Existing Client": "Cliente existente", "Existing Meeting Date": "Fecha de reunión existente", + "Expected Amount": "Monto Esperado", "Expected Disbursement On": "Fecha esperada de Ministración", "Expected disbursement on": "Fecha esperada de Ministración", "Expense Account": "Cuenta de gastos", @@ -2357,6 +2360,7 @@ "Minimum Opening Balance": "Saldo mínimo de apertura", "Minimum Overdraft Required for Interest Calculation": "Sobregiro mínimo requerido para el cálculo de intereses", "Minimum Payment": "Pago mínimo", + "Minimum Payment Criteria Met": "Criterio de Pago Mínimo Cumplido", "Minimum Payment Type": "Tipo de pago mínimo", "Minimum Required Balance": "Balance mínimo requerido", "Minimum Value": "Valor mínimo", @@ -2457,6 +2461,7 @@ "Original Schedule": "Calendario original", "Output Type": "Tipo de salida", "Outstanding": "Pendiente", + "Outstanding Amount": "Monto Pendiente", "Overdraft": "Sobregiro", "Over Amount": "Monto extra", "Over Amount Calculation Type": "Tipo de cálculo", @@ -2480,6 +2485,7 @@ "PDF format": "formato PDF", "PREVIEW": "RESUMEN", "Paid": "Pagado", + "Paid Amount": "Monto Pagado", "Paid Date": "Fecha de pago", "Parameter": "Parámetro", "Parameter Name Passed to Pentaho": "Nombre del parámetro del informe", @@ -2519,6 +2525,7 @@ "Percentage to Base": "Porcentaje a la base", "Period": "Período", "Period From": "Periodo desde", + "Period Number": "Número de Período", "Period Payment Rate": "Tasa de pago del período", "Period To": "Período hasta", "Period Type": "Tipo de período", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index 3efe5fdc9a..7d36ecc7b9 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -1311,6 +1311,7 @@ "Loan Delinquency Classification": "Classification de délinquance de prêt", "Loan Delinquency Tags": "Étiquettes de délinquance de prêt", "Loan Delinquency Installment Tags": "Étiquettes de versement de délinquance de prêt", + "Loan Delinquency Range Schedule": "Calendrier de Plage de Délinquance du Prêt", "Loan Details": "Détails du prêt", "Loan Disbursal": "Disquations du prêt", "Loan Originators": "Les courtiers en prêts", @@ -1918,6 +1919,7 @@ "Delinquency Grace Days": "Jours de grâce pour la délinquance", "Delinquency Start Type": "Type de début de délinquance", "Delinquency Tags": "Étiquettes de délinquance", + "Delinquent Amount": "Montant en Souffrance", "Delinquent Days": "Jours de délinquance", "Delivery Method": "méthode de livraison", "Deposit Account": "Compte de dépôt", @@ -2011,6 +2013,7 @@ "Execution Time": "Temps d'exécution", "Existing Client": "Client existant", "Existing Meeting Date": "Date de réunion actuelle", + "Expected Amount": "Montant Prévu", "Expected Disbursement On": "Décaissement prévu le", "Expected disbursement on": "Décaissement attendu pour", "Expense Account": "Compte de dépenses", @@ -2357,6 +2360,7 @@ "Minimum Opening Balance": "Solde d'ouverture minimum", "Minimum Overdraft Required for Interest Calculation": "Découvert minimum requis pour le calcul des intérêts", "Minimum Payment": "Paiement minimum", + "Minimum Payment Criteria Met": "Critère de Paiement Minimum Atteint", "Minimum Payment Type": "Type de paiement minimum", "Minimum Required Balance": "Équilibre minimum requis", "Minimum Value": "Valeur minimum", @@ -2456,6 +2460,7 @@ "Original Schedule": "Calendrier original", "Output Type": "Le type de sortie", "Outstanding": "Remarquable", + "Outstanding Amount": "Montant Impayé", "Overdraft": "Découvert", "Over Amount": "Surmontant", "Over Amount Calculation Type": "Type de calcul du montant supérieur", @@ -2479,6 +2484,7 @@ "PDF format": "Format PDF", "PREVIEW": "APERÇU", "Paid": "Payé", + "Paid Amount": "Montant Payé", "Paid Date": "La date de paiement", "Parameter": "Paramètre", "Parameter Name Passed to Pentaho": "Nom du paramètre de rapport", @@ -2518,6 +2524,7 @@ "Percentage to Base": "Pourcentage à la base", "Period": "Période", "Period From": "Période de", + "Period Number": "Numéro de Période", "Period Payment Rate": "Taux de paiement périodique", "Period To": "Période jusqu'à", "Period Type": "Type de période", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index d427e12a6f..4d1cc79bb4 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -1308,6 +1308,7 @@ "Loan Delinquency Classification": "Classificazione della delinquenza del prestito", "Loan Delinquency Tags": "Tag di insolvenza del prestito", "Loan Delinquency Installment Tags": "Prestito tag di rata delinquenza", + "Loan Delinquency Range Schedule": "Calendario di Intervallo di Insolvenza del Prestito", "Loan Details": "Dettagli del prestito", "Loan Disbursal": "Prestito erogato", "Loan Originators": "Originatori di prestiti", @@ -1915,6 +1916,7 @@ "Delinquency Grace Days": "Giorni di grazia per i delinquenti", "Delinquency Start Type": "Tipo di inizio della delinquenza", "Delinquency Tags": "Tag di delinquenza", + "Delinquent Amount": "Importo Insoluto", "Delinquent Days": "Giorni delinquenti", "Delivery Method": "metodo di consegna", "Deposit Account": "Conto Deposito", @@ -2008,6 +2010,7 @@ "Execution Time": "Tempo di esecuzione", "Existing Client": "Cliente esistente", "Existing Meeting Date": "Data della riunione esistente", + "Expected Amount": "Importo Previsto", "Expected Disbursement On": "Erogazione prevista il", "Expected disbursement on": "Esborso previsto il", "Expense Account": "Conto spese", @@ -2354,6 +2357,7 @@ "Minimum Opening Balance": "Saldo di apertura minimo", "Minimum Overdraft Required for Interest Calculation": "Scoperto minimo richiesto per il calcolo degli interessi", "Minimum Payment": "Pagamento minimo", + "Minimum Payment Criteria Met": "Criterio di Pagamento Minimo Soddisfatto", "Minimum Payment Type": "Tipo di pagamento minimo", "Minimum Required Balance": "Saldo minimo richiesto", "Minimum Value": "Valore minimo", @@ -2453,6 +2457,7 @@ "Original Schedule": "Programma originale", "Output Type": "Tipo di uscita", "Outstanding": "Eccezionale", + "Outstanding Amount": "Importo in Sospeso", "Overdraft": "Scoperto", "Over Amount": "Importo eccessivo", "Over Amount Calculation Type": "Tipo di calcolo dell'importo eccessivo", @@ -2476,6 +2481,7 @@ "PDF format": "Formato PDF", "PREVIEW": "ANTEPRIMA", "Paid": "Pagato", + "Paid Amount": "Importo Pagato", "Paid Date": "Data di pagamento", "Parameter": "Parametro", "Parameter Name Passed to Pentaho": "Nome parametro report", @@ -2515,6 +2521,7 @@ "Percentage to Base": "Percentuale rispetto alla base", "Period": "Periodo", "Period From": "Periodo da", + "Period Number": "Numero del Periodo", "Period Payment Rate": "Tasso di pagamento del periodo", "Period To": "Periodo a", "Period Type": "Tipo di periodo", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index 59ac1778cb..9929bc164b 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -1308,6 +1308,7 @@ "Loan Delinquency Classification": "대출 연체 분류", "Loan Delinquency Tags": "대출 연체 태그", "Loan Delinquency Installment Tags": "대출 연체 설치 태그", + "Loan Delinquency Range Schedule": "대출 연체 범위 일정", "Loan Details": "대출내역", "Loan Disbursal": "대출 지시", "Loan Originators": "대출 담당자", @@ -1916,6 +1917,7 @@ "Delinquency Grace Days": "비행 청소년 사면 기간", "Delinquency Start Type": "비행 시작 유형", "Delinquency Tags": "연체 태그", + "Delinquent Amount": "연체 금액", "Delinquent Days": "연체일수", "Delivery Method": "배달 방법", "Deposit Account": "예금 계좌", @@ -2009,6 +2011,7 @@ "Execution Time": "실행 시간", "Existing Client": "기존 클라이언트", "Existing Meeting Date": "기존 회의 날짜", + "Expected Amount": "예상 금액", "Expected Disbursement On": "예상 지불 날짜", "Expected disbursement on": "예상 지급액:", "Expense Account": "지출 계좌", @@ -2355,6 +2358,7 @@ "Minimum Opening Balance": "최소 기초 잔액", "Minimum Overdraft Required for Interest Calculation": "이자 계산에 필요한 최소 초과인월", "Minimum Payment": "최소 지불액", + "Minimum Payment Criteria Met": "최소 납부 기준 충족", "Minimum Payment Type": "최소 지불 유형", "Minimum Required Balance": "최소 필요한 잔액", "Minimum Value": "최소값", @@ -2454,6 +2458,7 @@ "Original Schedule": "원래 일정", "Output Type": "출력 유형", "Outstanding": "뛰어난", + "Outstanding Amount": "미결제 금액", "Overdraft": "당좌 대월", "Over Amount": "초과 금액", "Over Amount Calculation Type": "초과 금액 계산 유형", @@ -2477,6 +2482,7 @@ "PDF format": "PDF 형식", "PREVIEW": "시사", "Paid": "유급의", + "Paid Amount": "납부 금액", "Paid Date": "지급일", "Parameter": "매개변수", "Parameter Name Passed to Pentaho": "보고서 매개변수 이름", @@ -2516,6 +2522,7 @@ "Percentage to Base": "베이스에 대한 백분율", "Period": "기간", "Period From": "기간: 부터", + "Period Number": "기간 번호", "Period Payment Rate": "기간별 지급률", "Period To": "기간: 까지", "Period Type": "기간 유형", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index 003032644c..4d22ad2e9f 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -1307,6 +1307,7 @@ "Loan Delinquency Classification": "Paskolos nusikalstamumo klasifikacija", "Loan Delinquency Tags": "Paskolų vėlavimo žymos", "Loan Delinquency Installment Tags": "Paskolos nusikalstamumo įmokos žymos", + "Loan Delinquency Range Schedule": "Paskolos Nusikalstamumo Diapazono Grafikas", "Loan Details": "Paskolos informacija", "Loan Disbursal": "Paskolos išmokimas", "Loan Originators": "Paskolų teikėjai", @@ -1914,6 +1915,7 @@ "Delinquency Grace Days": "Delspinigių dienos", "Delinquency Start Type": "Delspinigių pradžios tipas", "Delinquency Tags": "Nusikaltimų žymos", + "Delinquent Amount": "Pradelsta Suma", "Delinquent Days": "Nusikaltėlių dienos", "Delivery Method": "Pristatymo būdas", "Deposit Account": "Indėlio sąskaita", @@ -2007,6 +2009,7 @@ "Execution Time": "Vykdymo laikas", "Existing Client": "Esamas Klientas", "Existing Meeting Date": "Esamo susitikimo data", + "Expected Amount": "Numatoma Suma", "Expected Disbursement On": "Numatoma išmokėti", "Expected disbursement on": "Numatomas išmokėjimas", "Expense Account": "Išlaidų sąskaita", @@ -2353,6 +2356,7 @@ "Minimum Opening Balance": "Minimalus pradinis likutis", "Minimum Overdraft Required for Interest Calculation": "Palūkanoms apskaičiuoti reikalingas minimalus overdraftas", "Minimum Payment": "Minimali įmoka", + "Minimum Payment Criteria Met": "Minimalaus Mokėjimo Kriterijai Įvykdyti", "Minimum Payment Type": "Minimalus mokėjimo tipas", "Minimum Required Balance": "Minimalus reikiamas balansas", "Minimum Value": "Minimali vertė", @@ -2452,6 +2456,7 @@ "Original Schedule": "Originalus tvarkaraštis", "Output Type": "Išvesties tipas", "Outstanding": "išskirtinis", + "Outstanding Amount": "Neapmokėta Suma", "Overdraft": "Overdraftas", "Over Amount": "Virš Sumos", "Over Amount Calculation Type": "Virš sumos apskaičiavimo tipas", @@ -2475,6 +2480,7 @@ "PDF format": "PDF formatu", "PREVIEW": "PERŽIŪRA", "Paid": "Mokama", + "Paid Amount": "Sumokėta Suma", "Paid Date": "Apmokėjimo data", "Parameter": "Parametras", "Parameter Name Passed to Pentaho": "Ataskaitos parametro pavadinimas", @@ -2514,6 +2520,7 @@ "Percentage to Base": "Procentai iki bazės", "Period": "Laikotarpis", "Period From": "Laikotarpis Nuo", + "Period Number": "Laikotarpio Numeris", "Period Payment Rate": "Laikotarpio mokėjimo norma", "Period To": "Laikotarpis iki", "Period Type": "Laikotarpio tipas", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index 6474a47c08..9ea7f3d599 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -1308,6 +1308,7 @@ "Loan Delinquency Classification": "Aizdevumu likumpārkāpumu klasifikācija", "Loan Delinquency Tags": "Aizdevuma kavējuma birkas", "Loan Delinquency Installment Tags": "Aizdevuma likumpārkāpumu iemaksas tagi", + "Loan Delinquency Range Schedule": "Aizdevuma Likumpārkāpumu Diapazona Grafiks", "Loan Details": "Aizdevuma detaļas", "Loan Disbursal": "Aizdevuma izmaksa", "Loan Originators": "Aizdevumu izsniedzēji", @@ -1915,6 +1916,7 @@ "Delinquency Grace Days": "Nokavējuma atvieglojumu dienas", "Delinquency Start Type": "Kavējuma sākuma veids", "Delinquency Tags": "Noziedzības tagi", + "Delinquent Amount": "Kavētā Summa", "Delinquent Days": "Noziedznieku dienas", "Delivery Method": "Piegāde metode", "Deposit Account": "Depozīta konts", @@ -2008,6 +2010,7 @@ "Execution Time": "Izpildes laiks", "Existing Client": "Esošais klients", "Existing Meeting Date": "Esošā sapulces datums", + "Expected Amount": "Paredzamā Summa", "Expected Disbursement On": "Paredzamā izmaksa", "Expected disbursement on": "Paredzamā izmaksa", "Expense Account": "Izdevumu konts", @@ -2354,6 +2357,7 @@ "Minimum Opening Balance": "Minimālais sākuma atlikums", "Minimum Overdraft Required for Interest Calculation": "Nepieciešamais minimālais overdrafts procentu aprēķināšanai", "Minimum Payment": "Minimālais maksājums", + "Minimum Payment Criteria Met": "Minimālā Maksājuma Kritēriji Izpildīti", "Minimum Payment Type": "Minimālā maksājuma veids", "Minimum Required Balance": "Minimālais nepieciešamais līdzsvars", "Minimum Value": "Minimālā vērtība", @@ -2453,6 +2457,7 @@ "Original Schedule": "Sākotnējais grafiks", "Output Type": "Izvades veids", "Outstanding": "Izcili", + "Outstanding Amount": "Nesamaksātā Summa", "Overdraft": "Overdrafts", "Over Amount": "Virs summa", "Over Amount Calculation Type": "Virssummas aprēķina veids", @@ -2476,6 +2481,7 @@ "PDF format": "PDF formātā", "PREVIEW": "PRIEKŠSKATĪJUMS", "Paid": "Apmaksāts", + "Paid Amount": "Samaksātā Summa", "Paid Date": "Apmaksas datums", "Parameter": "Parametrs", "Parameter Name Passed to Pentaho": "Atskaites parametra nosaukums", @@ -2515,6 +2521,7 @@ "Percentage to Base": "Procenti līdz bāzei", "Period": "Periods", "Period From": "Periods No", + "Period Number": "Perioda Numurs", "Period Payment Rate": "Perioda maksājuma likme", "Period To": "Periods līdz", "Period Type": "Perioda veids", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index 98d91621dd..1f8c2f9dc6 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -1307,6 +1307,7 @@ "Loan Delinquency Classification": "कर्जा दुस्तुरी वर्गीकरण", "Loan Delinquency Tags": "ऋण अपराध ट्यागहरू", "Loan Delinquency Installment Tags": "ण दिक्विर्याज किग ट्यागहरू", + "Loan Delinquency Range Schedule": "ऋण बाँकी दायरा तालिका", "Loan Details": "ऋण विवरण", "Loan Disbursal": "Loan ण विभेदत्मक", "Loan Originators": "ऋण सुरुवातकर्ताहरू", @@ -1914,6 +1915,7 @@ "Delinquency Grace Days": "अपराध अनुग्रह दिनहरू", "Delinquency Start Type": "डिलिंक्वेन्सी सुरुवात प्रकार", "Delinquency Tags": "अपराध ट्यागहरू", + "Delinquent Amount": "बाँकी रकम", "Delinquent Days": "अपराधी दिनहरू", "Delivery Method": "वितरण विधि", "Deposit Account": "निक्षेप खाता", @@ -2007,6 +2009,7 @@ "Execution Time": "कार्यान्वयन समय", "Existing Client": "अवस्थित ग्राहक", "Existing Meeting Date": "अवस्थित बैठक मिति", + "Expected Amount": "अपेक्षित रकम", "Expected Disbursement On": "अपेक्षित वितरण चालू", "Expected disbursement on": "अपेक्षित वितरण मा", "Expense Account": "खर्च लेखा", @@ -2353,6 +2356,7 @@ "Minimum Opening Balance": "न्यूनतम ओपनिङ ब्यालेन्स", "Minimum Overdraft Required for Interest Calculation": "ब्याज गणनाको लागि न्यूनतम ओभरड्राफ्ट आवश्यक छ", "Minimum Payment": "न्यूनतम भुक्तानी", + "Minimum Payment Criteria Met": "न्यूनतम भुक्तानी मापदण्ड पूरा भयो", "Minimum Payment Type": "न्यूनतम भुक्तानी प्रकार", "Minimum Required Balance": "न्यूनतम आवश्यक ब्यालेन्स", "Minimum Value": "न्यूनतम मान", @@ -2452,6 +2456,7 @@ "Original Schedule": "मूल तालिका", "Output Type": "आउटपुट प्रकार", "Outstanding": "उत्कृष्ट", + "Outstanding Amount": "बाँकी रकम", "Overdraft": "ओभरड्राफ्ट", "Over Amount": "रकम भन्दा बढी", "Over Amount Calculation Type": "ओभर अमाउन्ट गणना प्रकार", @@ -2475,6 +2480,7 @@ "PDF format": "PDF ढाँचा", "PREVIEW": "पूर्वावलोकन", "Paid": "भुक्तान गरियो", + "Paid Amount": "भुक्तानी रकम", "Paid Date": "भुक्तानी मिति", "Parameter": "प्यारामिटर", "Parameter Name Passed to Pentaho": "रिपोर्ट प्यारामिटर नाम", @@ -2514,6 +2520,7 @@ "Percentage to Base": "आधार को प्रतिशत", "Period": "अवधि", "Period From": "बाट अवधि", + "Period Number": "अवधि संख्या", "Period Payment Rate": "अवधि भुक्तानी दर", "Period To": "को अवधि", "Period Type": "अवधि प्रकार", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index f5ac283cc7..f2e839bebb 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -1307,6 +1307,7 @@ "Loan Delinquency Classification": "Classificação de inadimplência de empréstimos", "Loan Delinquency Tags": "Inadimplência de Empréstimo Tags", "Loan Delinquency Installment Tags": "Tags de parcelamento de inadimplência de empréstimo", + "Loan Delinquency Range Schedule": "Cronograma de Faixa de Inadimplência do Empréstimo", "Loan Details": "Detalhes do empréstimo", "Loan Disbursal": "Desembolso do empréstimo", "Loan Originators": "Agentes de Crédito", @@ -1914,6 +1915,7 @@ "Delinquency Grace Days": "Dias de Tolerância para Delinquência", "Delinquency Start Type": "Tipo de início de inadimplência", "Delinquency Tags": "Tags de inadimplência", + "Delinquent Amount": "Valor Inadimplente", "Delinquent Days": "Dias de Inadimplência", "Delivery Method": "Método de Entrega", "Deposit Account": "Conta de deposito", @@ -2007,6 +2009,7 @@ "Execution Time": "Tempo de execução", "Existing Client": "Cliente existente", "Existing Meeting Date": "Data da reunião existente", + "Expected Amount": "Valor Esperado", "Expected Disbursement On": "Desembolso esperado em", "Expected disbursement on": "Desembolso esperado em", "Expense Account": "Conta de despesa", @@ -2353,6 +2356,7 @@ "Minimum Opening Balance": "Saldo Mínimo de Abertura", "Minimum Overdraft Required for Interest Calculation": "Cheque especial mínimo necessário para cálculo de juros", "Minimum Payment": "Pagamento mínimo", + "Minimum Payment Criteria Met": "Critério de Pagamento Mínimo Cumprido", "Minimum Payment Type": "Tipo de pagamento mínimo", "Minimum Required Balance": "Equilíbrio mínimo necessário", "Minimum Value": "Valor Mínimo", @@ -2452,6 +2456,7 @@ "Original Schedule": "Cronograma Original", "Output Type": "Tipo de saída", "Outstanding": "Fora do comum", + "Outstanding Amount": "Valor em Aberto", "Overdraft": "Cheque especial", "Over Amount": "Acima do valor", "Over Amount Calculation Type": "Tipo de cálculo de valor excedente", @@ -2475,6 +2480,7 @@ "PDF format": "Formato PDF", "PREVIEW": "VISUALIZAR", "Paid": "Pago", + "Paid Amount": "Valor Pago", "Paid Date": "Data de pagamento", "Parameter": "Parâmetro", "Parameter Name Passed to Pentaho": "Nome do parâmetro do relatório", @@ -2514,6 +2520,7 @@ "Percentage to Base": "Porcentagem para Base", "Period": "Período", "Period From": "Periodo de", + "Period Number": "Número do Período", "Period Payment Rate": "Taxa de pagamento por período", "Period To": "Período até", "Period Type": "Tipo de período", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index 1ee64fcc06..331ff2678e 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -1305,6 +1305,7 @@ "Loan Delinquency Classification": "Uainishaji wa mkopo wa mkopo", "Loan Delinquency Tags": "Lebo za Uhalifu wa Mkopo", "Loan Delinquency Installment Tags": "Vitambulisho vya Usanidi wa Mikopo ya Mkopo", + "Loan Delinquency Range Schedule": "Ratiba ya Anuwai ya Uhalifu wa Mkopo", "Loan Details": "Maelezo ya Mkopo", "Loan Disbursal": "Utoaji wa mkopo", "Loan Originators": "Waanzilishi wa Mikopo", @@ -1912,6 +1913,7 @@ "Delinquency Grace Days": "Siku za Neema za Uhalifu", "Delinquency Start Type": "Aina ya Mwanzo wa Uhalifu", "Delinquency Tags": "Lebo za Uhalifu", + "Delinquent Amount": "Kiasi Kilichochelewa", "Delinquent Days": "Siku za Uhalifu", "Delivery Method": "Njia ya Utoaji", "Deposit Account": "Akaunti ya Amana", @@ -2005,6 +2007,7 @@ "Execution Time": "Muda wa Utekelezaji", "Existing Client": "Mteja Aliyepo", "Existing Meeting Date": "Tarehe ya Mkutano uliopo", + "Expected Amount": "Kiasi Kinachotarajiwa", "Expected Disbursement On": "Ulipaji Unaotarajiwa Umewashwa", "Expected disbursement on": "Ulipaji unaotarajiwa umewashwa", "Expense Account": "Akaunti ya Gharama", @@ -2351,6 +2354,7 @@ "Minimum Opening Balance": "Salio la chini la Ufunguzi", "Minimum Overdraft Required for Interest Calculation": "Kiwango cha Chini cha Overdrafti Inahitajika kwa Kukokotoa Riba", "Minimum Payment": "Malipo ya Chini Zaidi", + "Minimum Payment Criteria Met": "Vigezo vya Malipo ya Chini Zaidi Vimekutana", "Minimum Payment Type": "Aina ya Malipo ya Chini Zaidi", "Minimum Required Balance": "Mizani ya chini inayohitajika", "Minimum Value": "Thamani ya chini", @@ -2450,6 +2454,7 @@ "Original Schedule": "Ratiba ya Asili", "Output Type": "Aina ya Pato", "Outstanding": "Bora", + "Outstanding Amount": "Kiasi Kinachobaki", "Overdraft": "Overdraft", "Over Amount": "Zaidi ya Kiasi", "Over Amount Calculation Type": "Aina ya Kukokotoa Zaidi ya Kiasi", @@ -2473,6 +2478,7 @@ "PDF format": "Umbizo la PDF", "PREVIEW": "ANGALIA", "Paid": "Imelipwa", + "Paid Amount": "Kiasi Kilicholipwa", "Paid Date": "Tarehe ya Kulipwa", "Parameter": "Kigezo", "Parameter Name Passed to Pentaho": "Jina la Kigezo cha Ripoti", @@ -2512,6 +2518,7 @@ "Percentage to Base": "Asilimia kwa Msingi", "Period": "Kipindi", "Period From": "Kipindi Kutoka", + "Period Number": "Nambari ya Kipindi", "Period Payment Rate": "Kiwango cha Malipo ya Kipindi", "Period To": "Kipindi Kwa", "Period Type": "Aina ya Kipindi",