FINERACT-2107: Interest refund configuration for Progressive loan

This commit is contained in:
Adam Saghy
2024-07-23 10:40:00 -06:00
committed by Jose Alberto Hernandez
parent 95c9161770
commit 7800d6797d
27 changed files with 241 additions and 27 deletions
@@ -372,6 +372,13 @@
</span>
</div>
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation && supportedInterestRefundTypes.length > 0">
<span fxFlex="47%">{{ 'labels.inputs.SUPPORTED INTEREST REFUND TYPES' | translate}}:</span>
<span fxFlex="53%">
{{mapHumanReadableValueStringEnumOptionDataList(supportedInterestRefundTypes)}}
</span>
</div>
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Down Payments' | translate}}</h3>
<mat-divider [inset]="true"></mat-divider>
@@ -3,7 +3,7 @@ import { DelinquencyBucket, LoanProduct } from '../../models/loan-product.model'
import { AccountingMapping, Charge, ChargeToIncomeAccountMapping, GLAccount, PaymentChannelToFundSourceMapping, PaymentType, PaymentTypeOption } from '../../../../shared/models/general.model';
import { AdvancePaymentAllocationData, CreditAllocation, PaymentAllocation } from '../../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
import { LoanProducts } from '../../loan-products';
import { CodeName, OptionData } from '../../../../shared/models/option-data.model';
import { CodeName, OptionData, StringEnumOptionData } from '../../../../shared/models/option-data.model';
import { Accounting } from 'app/core/utils/accounting';
@Component({
@@ -19,6 +19,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
@Input() useDueForRepaymentsConfigurations: boolean;
@Input() paymentAllocations: PaymentAllocation | null;
@Input() creditAllocations: CreditAllocation | null;
@Input() supportedInterestRefundTypes: StringEnumOptionData[] | null;
variationsDisplayedColumns: string[] = ['valueConditionType', 'borrowerCycleNumber', 'minValue', 'defaultValue', 'maxValue'];
chargesDisplayedColumns: string[] = ['name', 'chargeCalculationType', 'amount', 'chargeTimeType'];
@@ -331,4 +332,8 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
return this.accounting.getAccountRuleName(value.toUpperCase());
}
mapHumanReadableValueStringEnumOptionDataList(incomingParameter: StringEnumOptionData[]): string[] {
return incomingParameter.map(v => v.value);
}
}
@@ -51,6 +51,15 @@
</mat-step>
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanProductInterestRefundForm">
<ng-template matStepLabel>{{'labels.inputs.INTEREST REFUND' | translate}}</ng-template>
<mifosx-loan-product-interest-refund-step
[loanProductsTemplate]="loanProductsTemplate"
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
>
</mifosx-loan-product-interest-refund-step>
</mat-step>
<mat-step *ngIf="isAdvancedPaymentStrategy">
<ng-template matStepLabel>{{'labels.inputs.PAYMENT ALLOCATION' | translate}}</ng-template>
@@ -9,12 +9,14 @@ import { LoanProductTermsStepComponent } from '../loan-product-stepper/loan-prod
import { LoanProductSettingsStepComponent } from '../loan-product-stepper/loan-product-settings-step/loan-product-settings-step.component';
import { LoanProductChargesStepComponent } from '../loan-product-stepper/loan-product-charges-step/loan-product-charges-step.component';
import { LoanProductAccountingStepComponent } from '../loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component';
import { LoanProductInterestRefundStepComponent } from '../loan-product-stepper/loan-product-interest-refund-step/loan-product-interest-refund-step.component';
/** Custom Services */
import { ProductsService } from 'app/products/products.service';
import { LoanProducts } from '../loan-products';
import { AdvancedPaymentAllocation, AdvancedPaymentStrategy, PaymentAllocation } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
import { Accounting } from 'app/core/utils/accounting';
import { StringEnumOptionData } from '../../../shared/models/option-data.model';
@Component({
selector: 'mifosx-create-loan-product',
@@ -25,6 +27,7 @@ export class CreateLoanProductComponent implements OnInit {
@ViewChild(LoanProductDetailsStepComponent, { static: true }) loanProductDetailsStep: LoanProductDetailsStepComponent;
@ViewChild(LoanProductCurrencyStepComponent, { static: true }) loanProductCurrencyStep: LoanProductCurrencyStepComponent;
@ViewChild(LoanProductInterestRefundStepComponent, {static: true}) loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
@ViewChild(LoanProductSettingsStepComponent, { static: true }) loanProductSettingsStep: LoanProductSettingsStepComponent;
@ViewChild(LoanProductChargesStepComponent, { static: true }) loanProductChargesStep: LoanProductChargesStepComponent;
@@ -37,6 +40,7 @@ export class CreateLoanProductComponent implements OnInit {
isAdvancedPaymentStrategy = false;
paymentAllocation: PaymentAllocation[] = [];
creditAllocation: PaymentAllocation[] = [];
supportedInterestRefundTypes: StringEnumOptionData[] = [];
advancedPaymentAllocations: AdvancedPaymentAllocation[] = [];
advancedCreditAllocations: AdvancedPaymentAllocation[] = [];
@@ -79,6 +83,12 @@ export class CreateLoanProductComponent implements OnInit {
}
}
get loanProductInterestRefundForm() {
if (this.loanProductInterestRefundStep != null) {
return this.loanProductInterestRefundStep.loanProductInterestRefundForm;
}
}
get loanProductTermsForm() {
return this.loanProductTermsStep.loanProductTermsForm;
}
@@ -99,6 +109,10 @@ export class CreateLoanProductComponent implements OnInit {
this.creditAllocation = paymentAllocation;
}
setSupportedInterestRefundTypes(supportedInterestRefundTypes: StringEnumOptionData[]): void {
this.supportedInterestRefundTypes = supportedInterestRefundTypes;
}
get loanProductSettingsForm() {
return this.loanProductSettingsStep.loanProductSettingsForm;
}
@@ -129,6 +143,7 @@ export class CreateLoanProductComponent implements OnInit {
if (this.isAdvancedPaymentStrategy) {
loanProduct['paymentAllocation'] = this.paymentAllocation;
loanProduct['creditAllocation'] = this.creditAllocation;
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
}
return loanProduct;
}
@@ -139,6 +154,7 @@ export class CreateLoanProductComponent implements OnInit {
loanProduct['dueDaysForRepaymentEvent'] = null;
loanProduct['overDueDaysForRepaymentEvent'] = null;
}
loanProduct['supportedInterestRefundTypes'] = this.mapStringEnumOptionToIdList(loanProduct['supportedInterestRefundTypes']);
delete loanProduct['useDueForRepaymentsConfigurations'];
this.productsService.createLoanProduct(loanProduct)
@@ -147,4 +163,7 @@ export class CreateLoanProductComponent implements OnInit {
});
}
mapStringEnumOptionToIdList(incomingValues: StringEnumOptionData[]): string[] {
return incomingValues.map(v => v.id);
}
}
@@ -51,6 +51,15 @@
</mat-step>
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanProductInterestRefundForm" completed>
<ng-template matStepLabel>{{'labels.inputs.INTEREST REFUND' | translate}}</ng-template>
<mifosx-loan-product-interest-refund-step
[loanProductsTemplate]="loanProductAndTemplate"
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
>
</mifosx-loan-product-interest-refund-step>
</mat-step>
<mat-step *ngIf="isAdvancedPaymentStrategy" completed>
<ng-template matStepLabel>{{'labels.inputs.PAYMENT ALLOCATION' | translate}}</ng-template>
@@ -14,8 +14,10 @@ import { LoanProductAccountingStepComponent } from '../loan-product-stepper/loan
import { ProductsService } from 'app/products/products.service';
import { GlobalConfiguration } from 'app/system/configurations/global-configurations-tab/configuration.model';
import { LoanProducts } from '../loan-products';
import { AdvancedCreditAllocation, AdvancedPaymentAllocation, AdvancedPaymentStrategy, CreditAllocation, PaymentAllocation, PaymentAllocationOrder, PaymentAllocationTransactionTypes } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
import { AdvancedCreditAllocation, AdvancedPaymentAllocation, AdvancedPaymentStrategy, CreditAllocation, PaymentAllocation } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
import { Accounting } from 'app/core/utils/accounting';
import { LoanProductInterestRefundStepComponent } from '../loan-product-stepper/loan-product-interest-refund-step/loan-product-interest-refund-step.component';
import { StringEnumOptionData } from '../../../shared/models/option-data.model';
@Component({
selector: 'mifosx-edit-loan-product',
@@ -26,6 +28,7 @@ export class EditLoanProductComponent implements OnInit {
@ViewChild(LoanProductDetailsStepComponent, { static: true }) loanProductDetailsStep: LoanProductDetailsStepComponent;
@ViewChild(LoanProductCurrencyStepComponent, { static: true }) loanProductCurrencyStep: LoanProductCurrencyStepComponent;
@ViewChild(LoanProductInterestRefundStepComponent, { static: true }) loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
@ViewChild(LoanProductSettingsStepComponent, { static: true }) loanProductSettingsStep: LoanProductSettingsStepComponent;
@ViewChild(LoanProductChargesStepComponent, { static: true }) loanProductChargesStep: LoanProductChargesStepComponent;
@@ -41,6 +44,7 @@ export class EditLoanProductComponent implements OnInit {
creditAllocation: CreditAllocation[] = [];
advancedPaymentAllocations: AdvancedPaymentAllocation[] = [];
advancedCreditAllocations: AdvancedCreditAllocation[] = [];
supportedInterestRefundTypes: StringEnumOptionData[] = [];
/**
* @param {ActivatedRoute} route Activated Route.
@@ -77,6 +81,7 @@ export class EditLoanProductComponent implements OnInit {
if (this.isAdvancedPaymentStrategy) {
this.paymentAllocation = this.loanProductAndTemplate.paymentAllocation;
this.creditAllocation = this.loanProductAndTemplate.creditAllocation;
this.supportedInterestRefundTypes = this.loanProductAndTemplate.supportedInterestRefundTypes;
}
}
@@ -96,6 +101,12 @@ export class EditLoanProductComponent implements OnInit {
return this.loanProductSettingsStep.loanProductSettingsForm;
}
get loanProductInterestRefundForm() {
if (this.loanProductInterestRefundStep != null) {
return this.loanProductInterestRefundStep.loanProductInterestRefundForm;
}
}
advancePaymentStrategy(value: string): void {
this.isAdvancedPaymentStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(value);
}
@@ -115,6 +126,10 @@ export class EditLoanProductComponent implements OnInit {
this.wasPaymentAllocationChanged = true;
}
setSupportedInterestRefundTypes(supportedInterestRefundTypes: StringEnumOptionData[]): void {
this.supportedInterestRefundTypes = supportedInterestRefundTypes;
}
paymentAllocationChanged(value: boolean): void {
this.wasPaymentAllocationChanged = value;
}
@@ -154,9 +169,11 @@ export class EditLoanProductComponent implements OnInit {
// Default empty array
loanProduct['paymentAllocation'] = [];
loanProduct['creditAllocation'] = [];
loanProduct['supportedInterestRefundTypes'] = [];
if (this.isAdvancedPaymentStrategy) {
loanProduct['paymentAllocation'] = this.paymentAllocation;
loanProduct['creditAllocation'] = this.creditAllocation;
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
}
return loanProduct;
}
@@ -167,6 +184,7 @@ export class EditLoanProductComponent implements OnInit {
loanProduct['dueDaysForRepaymentEvent'] = null;
loanProduct['overDueDaysForRepaymentEvent'] = null;
}
loanProduct['supportedInterestRefundTypes'] = this.mapStringEnumOptionToIdList(loanProduct['supportedInterestRefundTypes']);
delete loanProduct['useDueForRepaymentsConfigurations'];
this.productsService.updateLoanProduct(this.loanProductAndTemplate.id, loanProduct)
@@ -175,4 +193,8 @@ export class EditLoanProductComponent implements OnInit {
});
}
mapStringEnumOptionToIdList(incomingValues: StringEnumOptionData[]): string[] {
return incomingValues.map(v => v.id);
}
}
@@ -0,0 +1,14 @@
<form [formGroup]="loanProductInterestRefundForm">
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{'labels.inputs.SUPPORTED INTEREST REFUND TYPES' | translate}}</mat-label>
<mat-select multiple formControlName="supportedInterestRefundTypes" matTooltip="{{ 'tooltips.Refund transactions where interest refund will automatically be calculated' | translate}}">
<mat-option *ngFor="let supportedTransaction of supportedInterestRefundTypesOptions" [value]="supportedTransaction.id">
{{ supportedTransaction.value }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
</form>
@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LoanProductInterestRefundStepComponent } from './loan-product-interest-refund-step.component';
describe('LoanProductInterestRefundStepComponent', () => {
let component: LoanProductInterestRefundStepComponent;
let fixture: ComponentFixture<LoanProductInterestRefundStepComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoanProductInterestRefundStepComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoanProductInterestRefundStepComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,54 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup} from '@angular/forms';
import { StringEnumOptionData } from '../../../../shared/models/option-data.model';
@Component({
selector: 'mifosx-loan-product-interest-refund-step',
templateUrl: './loan-product-interest-refund-step.component.html',
styleUrls: ['./loan-product-interest-refund-step.component.scss']
})
export class LoanProductInterestRefundStepComponent implements OnInit {
@Input() loanProductsTemplate: any;
@Output() supportedInterestRefundTypes = new EventEmitter<StringEnumOptionData[]>();
loanProductInterestRefundForm: UntypedFormGroup;
supportedInterestRefundTypesOptions: StringEnumOptionData[];
constructor(private formBuilder: UntypedFormBuilder) {
this.createLoanProductInterestRefundForm();
this.setConditionalControls();
}
ngOnInit() {
this.supportedInterestRefundTypesOptions = this.loanProductsTemplate.supportedInterestRefundTypesOptions;
const values: StringEnumOptionData[] = this.loanProductsTemplate.supportedInterestRefundTypes;
const supportedInterestRefundTypes: string[] = this.mapStringEnumOptionToIdList(values);
this.loanProductInterestRefundForm.patchValue({
'supportedInterestRefundTypes': supportedInterestRefundTypes
});
this.supportedInterestRefundTypes.emit(values);
}
createLoanProductInterestRefundForm() {
this.loanProductInterestRefundForm = this.formBuilder.group({
'supportedInterestRefundTypes': ''
});
}
setConditionalControls() {
this.loanProductInterestRefundForm.get('supportedInterestRefundTypes').valueChanges
.subscribe(value => {
this.supportedInterestRefundTypes.emit(this.mapIdToStringEnumOptionList(value, this.loanProductsTemplate.supportedInterestRefundTypesOptions));
});
}
mapStringEnumOptionToIdList(incomingValues: StringEnumOptionData[]): string[] {
return incomingValues.map(v => v.id);
}
mapIdToStringEnumOptionList(incomingValues: string[], options: StringEnumOptionData[]): StringEnumOptionData[] {
return options.filter(v => incomingValues.includes(v.id));
}
}
@@ -6,6 +6,7 @@
[useDueForRepaymentsConfigurations]="loanProduct.useDueForRepaymentsConfigurations"
[paymentAllocations]="loanProduct.paymentAllocation"
[creditAllocations]="loanProduct.creditAllocation"
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
>
</mifosx-loan-product-summary>
@@ -1,5 +1,5 @@
import { AccountingMapping, ChargeToIncomeAccountMapping, Currency, PaymentChannelToFundSourceMapping } from 'app/shared/models/general.model';
import { OptionData } from 'app/shared/models/option-data.model';
import { OptionData, StringEnumOptionData } from 'app/shared/models/option-data.model';
import { CreditAllocation, PaymentAllocation } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
export interface LoanProduct {
@@ -125,6 +125,7 @@ export interface LoanProduct {
feeToIncomeAccountMappings?: ChargeToIncomeAccountMapping[];
penaltyToIncomeAccountMappings?: ChargeToIncomeAccountMapping[];
enableAccrualActivityPosting?: boolean;
supportedInterestRefundTypes?: StringEnumOptionData[];
}
@@ -18,5 +18,6 @@
[useDueForRepaymentsConfigurations]="useDueForRepaymentsConfigurations"
[paymentAllocations]="loanProduct.paymentAllocation"
[creditAllocations]="loanProduct.creditAllocation"
[supportedInterestRefundTypes]="loanProduct.supportedInterestRefundTypes"
>
</mifosx-loan-product-summary>
+2
View File
@@ -12,6 +12,7 @@ import { ProductsComponent } from './products.component';
import { LoanProductsComponent } from './loan-products/loan-products.component';
import { LoanProductDetailsStepComponent } from './loan-products/loan-product-stepper/loan-product-details-step/loan-product-details-step.component';
import { LoanProductCurrencyStepComponent } from './loan-products/loan-product-stepper/loan-product-currency-step/loan-product-currency-step.component';
import { LoanProductInterestRefundStepComponent } from './loan-products/loan-product-stepper/loan-product-interest-refund-step/loan-product-interest-refund-step.component';
import { LoanProductTermsStepComponent } from './loan-products/loan-product-stepper/loan-product-terms-step/loan-product-terms-step.component';
import { LoanProductSettingsStepComponent } from './loan-products//loan-product-stepper/loan-product-settings-step/loan-product-settings-step.component';
import { LoanProductChargesStepComponent } from './loan-products/loan-product-stepper/loan-product-charges-step/loan-product-charges-step.component';
@@ -138,6 +139,7 @@ import { LoanProductSummaryComponent } from './loan-products/common/loan-product
LoanProductsComponent,
LoanProductDetailsStepComponent,
LoanProductCurrencyStepComponent,
LoanProductInterestRefundStepComponent,
LoanProductTermsStepComponent,
LoanProductSettingsStepComponent,
LoanProductPaymentStrategyStepComponent,
@@ -8,3 +8,9 @@ export interface CodeName {
code: string;
name: string;
}
export interface StringEnumOptionData {
id: string;
value: string;
code: string;
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "na",
"Down Payments": "Zálohy",
"Enable Down Payments": "Povolit zálohové platby",
"valid": "platný"
"valid": "platný",
"INTEREST REFUND": "VRÁCENÍ ÚROKU",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Podporované typy vrácení úroků"
},
"links": {
"Community": "Společenství",
@@ -3373,6 +3375,7 @@
"Withdraw": "Ustoupit",
"Yes": "Ano",
"loan product will be active and available to clients": "Datum, kdy bude úvěrový produkt aktivní a dostupný klientům. Pokud nevyplníte, bude úvěrový produkt aktivní, jakmile bude vytvořen.",
"loan product will become inactive and unavailable to clients": "Datum, kdy se úvěrový produkt stane neaktivním a nedostupným pro klienty. Pokud je prázdné, produkt zatížení se nikdy nestane neaktivním."
"loan product will become inactive and unavailable to clients": "Datum, kdy se úvěrový produkt stane neaktivním a nedostupným pro klienty. Pokud je prázdné, produkt zatížení se nikdy nestane neaktivním.",
"Refund transactions where interest refund will automatically be calculated": "Transakce s vrácením peněz, kde bude automaticky vypočítána refundace úroků"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "Zu",
"Down Payments": "Anzahlungen",
"Enable Down Payments": "Anzahlungen aktivieren",
"valid": "gültig"
"valid": "gültig",
"INTEREST REFUND": "ZINSRÜCKERSTATTUNG",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Unterstützte Zinsrückerstattungsarten"
},
"links": {
"Community": "Gemeinschaft",
@@ -3372,6 +3374,7 @@
"Withdraw": "Zurückziehen",
"Yes": "Ja",
"loan product will be active and available to clients": "Das Datum, an dem das Kreditprodukt aktiv und für Kunden verfügbar sein wird. Wenn das Feld leer ist, ist das Kreditprodukt aktiv, sobald es erstellt wird.",
"loan product will become inactive and unavailable to clients": "Das Datum, an dem das Kreditprodukt inaktiv wird und für Kunden nicht mehr verfügbar ist. Wenn es leer ist, wird das Ladeprodukt niemals inaktiv."
"loan product will become inactive and unavailable to clients": "Das Datum, an dem das Kreditprodukt inaktiv wird und für Kunden nicht mehr verfügbar ist. Wenn es leer ist, wird das Ladeprodukt niemals inaktiv.",
"Refund transactions where interest refund will automatically be calculated": "Rückerstattungstransaktionen, bei denen die Zinsrückerstattung automatisch berechnet wird"
}
}
+5 -2
View File
@@ -2389,7 +2389,9 @@
"to": "to",
"Down Payments": "Down Payments",
"Enable Down Payments": "Enable Down Payments",
"valid": "valid"
"valid": "valid",
"INTEREST REFUND": "INTEREST REFUND",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Supported interest refund types"
},
"links": {
"Community": "Community",
@@ -3374,6 +3376,7 @@
"Withdraw": "Withdraw",
"Yes": "Yes",
"loan product will be active and available to clients": "The date that the loan product will be active and available to clients. If blank, the loan product will be active as soon as it is created.",
"loan product will become inactive and unavailable to clients": "The date that the loan product will become inactive and unavailable to clients. If blank, the load product will never become inactive."
"loan product will become inactive and unavailable to clients": "The date that the loan product will become inactive and unavailable to clients. If blank, the load product will never become inactive.",
"Refund transactions where interest refund will automatically be calculated": "Refund transactions where interest refund will automatically be calculated"
}
}
+5 -2
View File
@@ -2387,7 +2387,9 @@
"to": "a",
"Down Payments": "Pago Inicial",
"Enable Down Payments": "Habilitar Pagos Iniciales",
"valid": "válido"
"valid": "válido",
"INTEREST REFUND": "REEMBOLSO DE INTERESES",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Tipos de reembolso de intereses admitidos"
},
"links": {
"Community": "Comunidad",
@@ -3372,6 +3374,7 @@
"Withdraw": "Retirar",
"Yes": "Sí",
"loan product will be active and available to clients": "La fecha en que el producto de Crédito estará activo y disponible para los clientes. Si está en blanco, el producto de Crédito estará activo tan pronto como se cree.",
"loan product will become inactive and unavailable to clients": "La fecha en que el producto de Crédito quedará inactivo y no estará disponible para los clientes. Si está en blanco, el producto de carga nunca quedará inactivo."
"loan product will become inactive and unavailable to clients": "La fecha en que el producto de Crédito quedará inactivo y no estará disponible para los clientes. Si está en blanco, el producto de carga nunca quedará inactivo.",
"Refund transactions where interest refund will automatically be calculated": "Transacciones de reembolso en las que el reembolso de intereses se calculará automáticamente"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "à",
"Down Payments": "Acomptes",
"Enable Down Payments": "Activer les acomptes",
"valid": "valide"
"valid": "valide",
"INTEREST REFUND": "REMBOURSEMENT DES INTÉRÊTS",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Types de remboursement d'intérêts pris en charge"
},
"links": {
"Community": "Communauté",
@@ -3373,6 +3375,7 @@
"Withdraw": "Retirer",
"Yes": "Oui",
"loan product will be active and available to clients": "La date à laquelle le produit de prêt sera actif et disponible pour les clients. Si ce champ est vide, le produit de prêt sera actif dès sa création.",
"loan product will become inactive and unavailable to clients": "Date à laquelle le produit de prêt deviendra inactif et indisponible pour les clients. S'il est vide, le produit chargé ne deviendra jamais inactif."
"loan product will become inactive and unavailable to clients": "Date à laquelle le produit de prêt deviendra inactif et indisponible pour les clients. S'il est vide, le produit chargé ne deviendra jamais inactif.",
"Refund transactions where interest refund will automatically be calculated": "Opérations de remboursement pour lesquelles le remboursement des intérêts sera automatiquement calculé"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "A",
"Down Payments": "Acconti",
"Enable Down Payments": "Abilita acconti",
"valid": "valido"
"valid": "valido",
"INTEREST REFUND": "RIMBORSO DEGLI INTERESSI",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Tipi di rimborso degli interessi supportati"
},
"links": {
"Community": "Comunità",
@@ -3373,6 +3375,7 @@
"Withdraw": "Ritirare",
"Yes": "SÌ",
"loan product will be active and available to clients": "La data in cui il prodotto di prestito sarà attivo e disponibile per i clienti. Se vuoto, il prodotto di prestito sarà attivo non appena verrà creato.",
"loan product will become inactive and unavailable to clients": "La data in cui il prodotto di prestito diventerà inattivo e non disponibile per i clienti. Se vuoto, il prodotto caricato non diventerà mai inattivo."
"loan product will become inactive and unavailable to clients": "La data in cui il prodotto di prestito diventerà inattivo e non disponibile per i clienti. Se vuoto, il prodotto caricato non diventerà mai inattivo.",
"Refund transactions where interest refund will automatically be calculated": "Transazioni di rimborso in cui il rimborso degli interessi verrà calcolato automaticamente"
}
}
+5 -2
View File
@@ -2389,7 +2389,9 @@
"to": "에게",
"Down Payments": "계약금",
"Enable Down Payments": "계약금 활성화",
"valid": "유효한"
"valid": "유효한",
"INTEREST REFUND": "이자환급",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "지원되는 이자 환불 유형"
},
"links": {
"Community": "지역 사회",
@@ -3373,6 +3375,7 @@
"Withdraw": "철회하다",
"Yes": "예",
"loan product will be active and available to clients": "대출 상품이 활성화되어 고객에게 제공되는 날짜입니다. 비어 있으면 대출 상품이 생성되자마자 활성화됩니다.",
"loan product will become inactive and unavailable to clients": "대출 상품이 비활성화되어 고객이 사용할 수 없게 되는 날짜입니다. 비어 있으면 로드 제품이 비활성화되지 않습니다."
"loan product will become inactive and unavailable to clients": "대출 상품이 비활성화되어 고객이 사용할 수 없게 되는 날짜입니다. 비어 있으면 로드 제품이 비활성화되지 않습니다.",
"Refund transactions where interest refund will automatically be calculated": "이자 환불이 자동으로 계산되는 환불 거래"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "į",
"Down Payments": "Pradiniai mokėjimai",
"Enable Down Payments": "Įgalinti pradinius mokėjimus",
"valid": "galioja"
"valid": "galioja",
"INTEREST REFUND": "PALŪKANŲ GRĄŽINIMAS",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Palaikomi palūkanų grąžinimo tipai"
},
"links": {
"Community": "bendruomenė",
@@ -3373,6 +3375,7 @@
"Withdraw": "Atsitraukti",
"Yes": "Taip",
"loan product will be active and available to clients": "Data, kada paskolos produktas bus aktyvus ir bus prieinamas klientams. Jei tuščia, paskolos produktas bus aktyvus, kai tik bus sukurtas.",
"loan product will become inactive and unavailable to clients": "Data, kai paskolos produktas taps neaktyvus ir nepasiekiamas klientams. Jei tuščia, įkėlimo produktas niekada netaps neaktyvus."
"loan product will become inactive and unavailable to clients": "Data, kai paskolos produktas taps neaktyvus ir nepasiekiamas klientams. Jei tuščia, įkėlimo produktas niekada netaps neaktyvus.",
"Refund transactions where interest refund will automatically be calculated": "Atmaksas darījumi, kuros procentu atmaksa tiks aprēķināta automātiski"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "uz",
"Down Payments": "Pirmās iemaksas",
"Enable Down Payments": "Iespējot pirmās iemaksas",
"valid": "derīgs"
"valid": "derīgs",
"INTEREST REFUND": "PROCENTU ATMAKSĀŠANA",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Atbalstītie procentu atmaksas veidi"
},
"links": {
"Community": "kopiena",
@@ -3373,6 +3375,7 @@
"Withdraw": "Izņemt",
"Yes": "Jā",
"loan product will be active and available to clients": "Datums, kad aizdevuma produkts būs aktīvs un pieejams klientiem. Ja lauks ir tukšs, aizdevuma produkts būs aktīvs, tiklīdz tas tiks izveidots.",
"loan product will become inactive and unavailable to clients": "Datums, kad aizdevuma produkts kļūs neaktīvs un klientiem nebūs pieejams. Ja lauks ir tukšs, ielādes produkts nekad nekļūs neaktīvs."
"loan product will become inactive and unavailable to clients": "Datums, kad aizdevuma produkts kļūs neaktīvs un klientiem nebūs pieejams. Ja lauks ir tukšs, ielādes produkts nekad nekļūs neaktīvs.",
"Refund transactions where interest refund will automatically be calculated": "Grąžinimo operacijos, kai palūkanų grąžinimas bus skaičiuojamas automatiškai"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "को",
"Down Payments": "तल भुक्तानीहरू",
"Enable Down Payments": "डाउन पेमेन्टहरू सक्षम गर्नुहोस्",
"valid": "मान्य"
"valid": "मान्य",
"INTEREST REFUND": "व्याज परतावा",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "समर्थित व्याज परतावा प्रकार"
},
"links": {
"Community": "समुदाय",
@@ -3373,6 +3375,7 @@
"Withdraw": "निकाल्नु",
"Yes": "हो",
"loan product will be active and available to clients": "ऋण उत्पादन सक्रिय र ग्राहकहरूको लागि उपलब्ध हुने मिति। खाली भएमा, ऋण उत्पादन सिर्जना हुने बित्तिकै सक्रिय हुनेछ।",
"loan product will become inactive and unavailable to clients": "ऋण उत्पादन निष्क्रिय र ग्राहकहरु को लागी अनुपलब्ध हुने मिति। यदि खाली छ भने, लोड उत्पादन कहिल्यै निष्क्रिय हुनेछैन।"
"loan product will become inactive and unavailable to clients": "ऋण उत्पादन निष्क्रिय र ग्राहकहरु को लागी अनुपलब्ध हुने मिति। यदि खाली छ भने, लोड उत्पादन कहिल्यै निष्क्रिय हुनेछैन।",
"Refund transactions where interest refund will automatically be calculated": "फिर्ता लेनदेन जहाँ ब्याज फिर्ता स्वतः गणना हुनेछ"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "para",
"Down Payments": "Adiantamentos",
"Enable Down Payments": "Habilitar adiantamentos",
"valid": "válido"
"valid": "válido",
"INTEREST REFUND": "REEMBOLSO DE JUROS",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Tipos de reembolso de juros suportados"
},
"links": {
"Community": "Comunidade",
@@ -3373,6 +3375,7 @@
"Withdraw": "Retirar",
"Yes": "Sim",
"loan product will be active and available to clients": "A data em que o produto de empréstimo estará ativo e disponível para os clientes. Se estiver em branco, o produto de empréstimo estará ativo assim que for criado.",
"loan product will become inactive and unavailable to clients": "A data em que o produto de empréstimo ficará inativo e indisponível para os clientes. Se estiver em branco, o produto de carregamento nunca ficará inativo."
"loan product will become inactive and unavailable to clients": "A data em que o produto de empréstimo ficará inativo e indisponível para os clientes. Se estiver em branco, o produto de carregamento nunca ficará inativo.",
"Refund transactions where interest refund will automatically be calculated": "Transações de reembolso em que o reembolso de juros será calculado automaticamente"
}
}
+5 -2
View File
@@ -2388,7 +2388,9 @@
"to": "kwa",
"Down Payments": "Malipo ya Chini",
"Enable Down Payments": "Washa Malipo ya Chini",
"valid": "halali"
"valid": "halali",
"INTEREST REFUND": "MAREJESHO YA RIBA",
"SUPPORTED REFUND TRANSACTIONS FOR INTEREST REFUND": "Aina za kurejesha riba zinazotumika"
},
"links": {
"Community": "Jumuiya",
@@ -3373,6 +3375,7 @@
"Withdraw": "Kutoa",
"Yes": "Ndiyo",
"loan product will be active and available to clients": "Tarehe ambayo bidhaa ya mkopo itaanza kutumika na inapatikana kwa wateja. Ikiwa tupu, bidhaa ya mkopo itaanza kutumika mara tu itakapoundwa.",
"loan product will become inactive and unavailable to clients": "Tarehe ambayo bidhaa ya mkopo itaacha kutumika na haitapatikana kwa wateja. Ikiwa tupu, bidhaa ya kupakia haitafanya kazi kamwe."
"loan product will become inactive and unavailable to clients": "Tarehe ambayo bidhaa ya mkopo itaacha kutumika na haitapatikana kwa wateja. Ikiwa tupu, bidhaa ya kupakia haitafanya kazi kamwe.",
"Refund transactions where interest refund will automatically be calculated": "Shughuli za kurejesha pesa ambapo urejeshaji wa riba utahesabiwa kiotomatiki"
}
}