Merge pull request #2692 from alberto-art3ch/WEB-332/advance-accounting-rule-can-be-set-for-each-writeoff-reason
WEB-332: Advanced accounting rule can be set for each writeoff reason
This commit is contained in:
@@ -189,10 +189,7 @@ export class TransactionsTabComponent implements OnInit {
|
||||
|
||||
if (hideAccrual || hideReversed) {
|
||||
transactions = this.transactionsData.filter((t: LoanTransaction) => {
|
||||
return (
|
||||
!(hideReversed && t.manuallyReversed) &&
|
||||
!(hideAccrual && (t.type.accrual || t.type.capitalizedIncomeAmortization))
|
||||
);
|
||||
return !(hideReversed && t.manuallyReversed) && !(hideAccrual && this.isAccrualKindOf(t.type));
|
||||
});
|
||||
}
|
||||
this.dataSource = new MatTableDataSource(transactions);
|
||||
@@ -243,10 +240,12 @@ export class TransactionsTabComponent implements OnInit {
|
||||
* REAMORTIZE:30
|
||||
* INTEREST REFUND:33
|
||||
* CAPITALIZED INCOME:35
|
||||
* CAPITALIZED_INCOME_AMORTIZATION:36
|
||||
* CAPITALIZED INCOME ADJUSTMENT:37
|
||||
* CONTRACT_TERMINATION:38
|
||||
* BUY_DOWN_FEE:40
|
||||
* BUY_DOWN_FEE_ADJUSTMENT:41
|
||||
* BUY_DOWN_FEE_AMORTIZATION:42
|
||||
*/
|
||||
showTransaction(transactionsData: LoanTransaction): boolean {
|
||||
return [
|
||||
@@ -266,10 +265,12 @@ export class TransactionsTabComponent implements OnInit {
|
||||
32,
|
||||
33,
|
||||
35,
|
||||
36,
|
||||
37,
|
||||
38,
|
||||
40,
|
||||
41
|
||||
41,
|
||||
42
|
||||
].includes(transactionsData.type.id);
|
||||
}
|
||||
|
||||
@@ -293,7 +294,7 @@ export class TransactionsTabComponent implements OnInit {
|
||||
if (transaction.transactionRelations && transaction.transactionRelations.length > 0) {
|
||||
return 'linked';
|
||||
}
|
||||
if (this.isAccrual(transaction.type) || this.isCapitalizedIncomeAmortization(transaction.type)) {
|
||||
if (this.isAccrualKindOf(transaction.type)) {
|
||||
return 'accrual';
|
||||
}
|
||||
if (this.isChargeOff(transaction.type)) {
|
||||
@@ -427,6 +428,21 @@ export class TransactionsTabComponent implements OnInit {
|
||||
return transactionType.capitalizedIncome || transactionType.code === 'loanTransactionType.capitalizedIncome';
|
||||
}
|
||||
|
||||
private isBuyDownFeeAmortization(transactionType: LoanTransactionType): boolean {
|
||||
return (
|
||||
transactionType.buyDownFeeAmortizationAdjustment ||
|
||||
transactionType.code === 'loanTransactionType.buyDownFeeAmortizationAdjustment'
|
||||
);
|
||||
}
|
||||
|
||||
private isAccrualKindOf(transactionType: LoanTransactionType): boolean {
|
||||
return (
|
||||
this.isAccrual(transactionType) ||
|
||||
this.isCapitalizedIncomeAmortization(transactionType) ||
|
||||
this.isBuyDownFeeAmortization(transactionType)
|
||||
);
|
||||
}
|
||||
|
||||
private isCapitalizedIncomeAmortization(transactionType: LoanTransactionType): boolean {
|
||||
return (
|
||||
transactionType.capitalizedIncomeAmortization ||
|
||||
|
||||
@@ -39,4 +39,5 @@ export interface LoanTransactionType {
|
||||
contractTermination: boolean;
|
||||
buyDownFee: boolean;
|
||||
buyDownFeeAdjustment: boolean;
|
||||
buyDownFeeAmortizationAdjustment: boolean;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ export class CreateCollateralComponent implements OnInit {
|
||||
) {
|
||||
this.route.data.subscribe((data: { collateralTemplate: any }) => {
|
||||
this.organizationService.getCurrencies().subscribe((orgCurrencies: any) => {
|
||||
console.log('Organization currencies response:', orgCurrencies);
|
||||
let orgCurrencyList = Array.isArray(orgCurrencies.selectedCurrencyOptions)
|
||||
? orgCurrencies.selectedCurrencyOptions
|
||||
: [];
|
||||
|
||||
+28
-5
@@ -1236,7 +1236,7 @@
|
||||
<ng-container matColumnDef="chargeOffReasonCodeValueId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Charge-off reason' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let chargeOffReasonToExpenseAccountMapping">
|
||||
{{ chargeOffReasonToExpenseAccountMapping.chargeOffReasonCodeValue.name }}
|
||||
{{ chargeOffReasonToExpenseAccountMapping.reasonCodeValue.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
@@ -1253,10 +1253,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div
|
||||
*ngIf="buydownFeeClassificationToIncomeAccountMappings?.length > 0"
|
||||
class="flex-100 layout-row-wrap responsive-column"
|
||||
>
|
||||
<div class="flex-100 layout-row-wrap responsive-column">
|
||||
<h4 class="mat-h4 flex-100">
|
||||
{{ 'labels.heading.Buydown Fee classifications to Income accounts' | translate }}
|
||||
</h4>
|
||||
@@ -1318,6 +1315,32 @@
|
||||
<tr mat-row *matRowDef="let row; columns: chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div *ngIf="writeOffReasonsToExpenseMappings?.length > 0" class="flex-100 layout-row-wrap responsive-column">
|
||||
<h4 class="mat-h4 flex-100">
|
||||
{{ 'labels.heading.WriteOff reasons to Expense accounts' | translate }}
|
||||
</h4>
|
||||
|
||||
<table class="mat-elevation-z1 flex-100" mat-table [dataSource]="writeOffReasonsToExpenseMappings">
|
||||
<ng-container matColumnDef="chargeOffReasonCodeValueId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.WriteOff Reason' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let writeOffReasonsToExpenseMapping">
|
||||
{{ writeOffReasonsToExpenseMapping.reasonCodeValue.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="expenseAccountId">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Expense Account' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let writeOffReasonsToExpenseMapping">
|
||||
({{ writeOffReasonsToExpenseMapping.expenseAccount.glCode }})
|
||||
{{ writeOffReasonsToExpenseMapping.expenseAccount.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: chargeOffReasonExpenseDisplayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+26
-5
@@ -117,6 +117,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
chargeOffReasonToExpenseAccountMappings: ChargeOffReasonToExpenseAccountMapping[] = [];
|
||||
buydownFeeClassificationToIncomeAccountMappings: ClassificationToIncomeAccountMapping[] = [];
|
||||
capitalizedIncomeClassificationToIncomeAccountMappings: ClassificationToIncomeAccountMapping[] = [];
|
||||
writeOffReasonsToExpenseMappings: ChargeOffReasonToExpenseAccountMapping[] = [];
|
||||
|
||||
constructor(private accounting: Accounting) {}
|
||||
|
||||
@@ -152,6 +153,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
this.loanProduct.buydownFeeClassificationToIncomeAccountMappings || [];
|
||||
this.capitalizedIncomeClassificationToIncomeAccountMappings =
|
||||
this.loanProduct.capitalizedIncomeClassificationToIncomeAccountMappings || [];
|
||||
this.writeOffReasonsToExpenseMappings = this.loanProduct.writeOffReasonsToExpenseMappings || [];
|
||||
} else {
|
||||
this.accountingMappings = {};
|
||||
|
||||
@@ -166,6 +168,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
const assetAndLiabilityAccountData =
|
||||
this.loanProductsTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions || [];
|
||||
const chargeOffReasonOptions: any = this.loanProductsTemplate.chargeOffReasonOptions || [];
|
||||
const writeOffReasonOptions: any = this.loanProductsTemplate.writeOffReasonOptions || [];
|
||||
const buydownFeeClassificationOptions: any = this.loanProductsTemplate.buydownFeeClassificationOptions || [];
|
||||
const capitalizedIncomeClassificationOptions: any =
|
||||
this.loanProductsTemplate.capitalizedIncomeClassificationOptions || [];
|
||||
@@ -269,7 +272,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
let optionData = this.optionDataLookUp(m.chargeOffReasonCodeValueId, chargeOffReasonOptions);
|
||||
this.chargeOffReasonToExpenseAccountMappings.push({
|
||||
expenseAccount: this.glAccountLookUp(m.expenseAccountId, expenseAccountData),
|
||||
chargeOffReasonCodeValue: {
|
||||
reasonCodeValue: {
|
||||
id: optionData.id,
|
||||
name: optionData.value
|
||||
} as CodeValue
|
||||
@@ -279,8 +282,8 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
}
|
||||
|
||||
this.buydownFeeClassificationToIncomeAccountMappings = [];
|
||||
if (this.loanProduct.buydownFeeClassificationToIncomeAccountMappings?.length > 0) {
|
||||
this.loanProduct.buydownFeeClassificationToIncomeAccountMappings.forEach((m: any) => {
|
||||
if (this.loanProduct.buydownfeeClassificationToIncomeAccountMappings?.length > 0) {
|
||||
this.loanProduct.buydownfeeClassificationToIncomeAccountMappings.forEach((m: any) => {
|
||||
let optionData = this.optionDataLookUp(m.classificationCodeValueId, buydownFeeClassificationOptions);
|
||||
if (optionData !== null) {
|
||||
this.buydownFeeClassificationToIncomeAccountMappings.push({
|
||||
@@ -293,6 +296,7 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.capitalizedIncomeClassificationToIncomeAccountMappings = [];
|
||||
if (this.loanProduct.capitalizedIncomeClassificationToIncomeAccountMappings?.length > 0) {
|
||||
this.loanProduct.capitalizedIncomeClassificationToIncomeAccountMappings.forEach((m: any) => {
|
||||
@@ -308,6 +312,22 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.writeOffReasonsToExpenseMappings = [];
|
||||
if (this.loanProduct.writeOffReasonsToExpenseMappings?.length > 0) {
|
||||
this.loanProduct.writeOffReasonsToExpenseMappings.forEach((m: any) => {
|
||||
let optionData = this.optionDataLookUp(m.writeOffReasonCodeValueId, writeOffReasonOptions);
|
||||
if (optionData !== null) {
|
||||
this.writeOffReasonsToExpenseMappings.push({
|
||||
expenseAccount: this.glAccountLookUp(m.expenseAccountId, expenseAccountData),
|
||||
reasonCodeValue: {
|
||||
id: optionData.id,
|
||||
name: optionData.value
|
||||
} as CodeValue
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (this.loanProduct.isInterestRecalculationEnabled) {
|
||||
@@ -618,8 +638,9 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
||||
this.loanProduct.feeToIncomeAccountMappings?.length > 0 ||
|
||||
this.loanProduct.penaltyToIncomeAccountMappings?.length > 0 ||
|
||||
this.loanProduct.chargeOffReasonToExpenseAccountMappings?.length > 0 ||
|
||||
this.loanProduct.buydownFeeClassificationToIncomeAccountMappings?.length > 0 ||
|
||||
this.loanProduct.capitalizedIncomeClassificationToIncomeAccountMappings?.length > 0
|
||||
this.loanProduct.buydownfeeClassificationToIncomeAccountMappings?.length > 0 ||
|
||||
this.loanProduct.capitalizedIncomeClassificationToIncomeAccountMappings?.length > 0 ||
|
||||
this.loanProduct.writeOffReasonsToExpenseMappings?.length > 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+41
-7
@@ -96,11 +96,25 @@ export class AdvancedAccountingMappingRuleComponent implements OnInit {
|
||||
const dialogRef = this.dialog.open(FormDialogComponent, { data });
|
||||
dialogRef.afterClosed().subscribe((response: any) => {
|
||||
if (response.data) {
|
||||
const addData: AccountingMappingDTO = {
|
||||
value: this.getValueData(response.data.value.valueId),
|
||||
glAccount: this.getGlAccountData(response.data.value.glAccountId)
|
||||
};
|
||||
this.tableData.push(addData);
|
||||
if ([
|
||||
'ChargeOffReasonExpense',
|
||||
'WriteOffReasonToExpense'
|
||||
].includes(this.formType)) {
|
||||
const addData: AccountingMappingDTO = {
|
||||
value: this.getValueData(response.data.value.chargeOffReasonCodeValueId),
|
||||
glAccount: this.getGlAccountData(response.data.value.expenseAccountId)
|
||||
};
|
||||
this.addTableData(addData);
|
||||
} else if ([
|
||||
'BuydownFeeClassificationToIncome',
|
||||
'CapitalizedIncomeClassificationToIncome'
|
||||
].includes(this.formType)) {
|
||||
const addData: AccountingMappingDTO = {
|
||||
value: this.getValueData(response.data.value.valueId),
|
||||
glAccount: this.getGlAccountData(response.data.value.glAccountId)
|
||||
};
|
||||
this.addTableData(addData);
|
||||
}
|
||||
this.sendParentData();
|
||||
|
||||
if (this.formType == 'ChargeOffReasonExpense') {
|
||||
@@ -110,13 +124,21 @@ export class AdvancedAccountingMappingRuleComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
addTableData(addedData: AccountingMappingDTO): void {
|
||||
let newData = [
|
||||
...this.tableData,
|
||||
addedData
|
||||
];
|
||||
this.tableData = newData;
|
||||
}
|
||||
|
||||
delete(index: number) {
|
||||
const dialogRef = this.dialog.open(DeleteDialogComponent, {
|
||||
data: { deleteContext: this.translateService.instant('labels.text.this') }
|
||||
});
|
||||
dialogRef.afterClosed().subscribe((response: any) => {
|
||||
if (response.delete) {
|
||||
this.tableData.splice(index, 1);
|
||||
this.tableData = this.tableData.filter((_, i) => i !== index);
|
||||
this.sendParentData();
|
||||
}
|
||||
});
|
||||
@@ -159,6 +181,11 @@ export class AdvancedAccountingMappingRuleComponent implements OnInit {
|
||||
title: 'Capitalized Income classifications to Income accounts',
|
||||
formfields: this.getClassificationIncomeFormfields(values)
|
||||
};
|
||||
case 'WriteOffReasonToExpense':
|
||||
return {
|
||||
title: 'Map Write-off reasons to Expense accounts',
|
||||
formfields: this.getChargeOffReasonExpenseFormfields(values)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,8 +317,15 @@ export class AdvancedAccountingMappingRuleComponent implements OnInit {
|
||||
}
|
||||
|
||||
getGlAccountData(valueId: number): any {
|
||||
return this.incomeAccountData.find((i: any) => {
|
||||
const glAccountData = [
|
||||
this.incomeAccountData,
|
||||
this.expenseAccountData,
|
||||
this.assetAccountData,
|
||||
this.liabilityAccountData
|
||||
];
|
||||
return glAccountData.find((i: any) => {
|
||||
return i.id === valueId;
|
||||
});
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -536,6 +536,17 @@
|
||||
[accountingMappingOptions]="capitalizedIncomeClassificationOptions"
|
||||
(formChangeEvent)="formChangeEvent($event)"
|
||||
></mifosx-advanced-accounting-mapping-rule>
|
||||
|
||||
<mifosx-advanced-accounting-mapping-rule
|
||||
class="flex-100 m-t-10"
|
||||
[textField]="'WriteOff Reason'"
|
||||
[formType]="'WriteOffReasonToExpense'"
|
||||
[formArray]="writeOffReasonsToExpenseMappings"
|
||||
[textHeading]="'WriteOff reasons to Expense accounts'"
|
||||
[expenseAccountData]="expenseAccountData"
|
||||
[accountingMappingOptions]="writeOffReasonOptions"
|
||||
(formChangeEvent)="formChangeEvent($event)"
|
||||
></mifosx-advanced-accounting-mapping-rule>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+32
-4
@@ -86,6 +86,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
chargeOffReasonOptions: any;
|
||||
capitalizedIncomeClassificationOptions: any[] = [];
|
||||
buydownFeeClassificationOptions: any[] = [];
|
||||
writeOffReasonOptions: any[] = [];
|
||||
|
||||
currentFormValues: any[] = [];
|
||||
allowAddChargeOffReasonExpense = true;
|
||||
@@ -134,6 +135,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
this.capitalizedIncomeClassificationOptions =
|
||||
this.loanProductsTemplate.capitalizedIncomeClassificationOptions || [];
|
||||
this.buydownFeeClassificationOptions = this.loanProductsTemplate.buydownFeeClassificationOptions || [];
|
||||
this.writeOffReasonOptions = this.loanProductsTemplate.writeOffReasonOptions || [];
|
||||
|
||||
this.loanProductAccountingForm.patchValue({
|
||||
accountingRule: this.loanProductsTemplate.accountingRule.id
|
||||
@@ -214,7 +216,8 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
this.loanProductsTemplate.penaltyToIncomeAccountMappings ||
|
||||
this.loanProductsTemplate.chargeOffReasonToExpenseAccountMappings ||
|
||||
this.loanProductsTemplate.buydownFeeClassificationToIncomeAccountMappings ||
|
||||
this.loanProductsTemplate.capitalizedIncomeClassificationToIncomeAccountMappings
|
||||
this.loanProductsTemplate.capitalizedIncomeClassificationToIncomeAccountMappings ||
|
||||
this.loanProductsTemplate.writeOffReasonsToExpenseMappings
|
||||
? true
|
||||
: false
|
||||
});
|
||||
@@ -251,7 +254,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
this.formBuilder.array(
|
||||
(this.loanProductsTemplate.chargeOffReasonToExpenseAccountMappings || []).map(
|
||||
(m: ChargeOffReasonToExpenseAccountMapping) => ({
|
||||
chargeOffReasonCodeValueId: m.chargeOffReasonCodeValue.id,
|
||||
chargeOffReasonCodeValueId: m.reasonCodeValue.id,
|
||||
expenseAccountId: m.expenseAccount.id
|
||||
})
|
||||
)
|
||||
@@ -279,6 +282,17 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
)
|
||||
)
|
||||
);
|
||||
this.loanProductAccountingForm.setControl(
|
||||
'writeOffReasonsToExpenseMappings',
|
||||
this.formBuilder.array(
|
||||
(this.loanProductsTemplate.writeOffReasonsToExpenseMappings || []).map(
|
||||
(m: ChargeOffReasonToExpenseAccountMapping) => ({
|
||||
value: m.reasonCodeValue,
|
||||
glAccount: m.expenseAccount
|
||||
})
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,6 +398,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
'capitalizedIncomeClassificationToIncomeAccountMappings',
|
||||
this.formBuilder.array([])
|
||||
);
|
||||
this.loanProductAccountingForm.addControl('writeOffReasonsToExpenseMappings', this.formBuilder.array([]));
|
||||
} else {
|
||||
this.loanProductAccountingForm.setControl(
|
||||
'paymentChannelToFundSourceMappings',
|
||||
@@ -403,6 +418,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
'capitalizedIncomeClassificationToIncomeAccountMappings',
|
||||
this.formBuilder.array([])
|
||||
);
|
||||
this.loanProductAccountingForm.setControl('writeOffReasonsToExpenseMappings', this.formBuilder.array([]));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -476,6 +492,10 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
) as UntypedFormArray;
|
||||
}
|
||||
|
||||
get writeOffReasonsToExpenseMappings(): UntypedFormArray {
|
||||
return this.loanProductAccountingForm.get('writeOffReasonsToExpenseMappings') as UntypedFormArray;
|
||||
}
|
||||
|
||||
setLoanProductAccountingFormDirty() {
|
||||
if (this.loanProductAccountingForm.pristine) {
|
||||
this.loanProductAccountingForm.markAsDirty();
|
||||
@@ -708,7 +728,6 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
}))
|
||||
)
|
||||
);
|
||||
console.log(this.loanProductAccountingForm.value.buydownfeeClassificationToIncomeAccountMappings);
|
||||
} else if (accountingData.formType === 'CapitalizedIncomeClassificationToIncome') {
|
||||
this.loanProductAccountingForm.setControl(
|
||||
'capitalizedIncomeClassificationToIncomeAccountMappings',
|
||||
@@ -719,7 +738,16 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
}))
|
||||
)
|
||||
);
|
||||
console.log(this.loanProductAccountingForm.value.capitalizedIncomeClassificationToIncomeAccountMappings);
|
||||
} else if (accountingData.formType === 'WriteOffReasonToExpense') {
|
||||
this.loanProductAccountingForm.setControl(
|
||||
'writeOffReasonsToExpenseMappings',
|
||||
this.formBuilder.array(
|
||||
(accountingData.values || []).map((m: AccountingMappingDTO) => ({
|
||||
writeOffReasonCodeValueId: m.value.id,
|
||||
expenseAccountId: m.glAccount.id
|
||||
}))
|
||||
)
|
||||
);
|
||||
}
|
||||
this.setLoanProductAccountingFormDirty();
|
||||
}
|
||||
|
||||
@@ -155,8 +155,10 @@ export interface LoanProduct {
|
||||
enableAccrualActivityPosting?: boolean;
|
||||
supportedInterestRefundTypes?: StringEnumOptionData[];
|
||||
chargeOffBehaviour?: StringEnumOptionData;
|
||||
buydownfeeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
|
||||
buydownFeeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
|
||||
capitalizedIncomeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
|
||||
writeOffReasonsToExpenseMappings?: ChargeOffReasonToExpenseAccountMapping[];
|
||||
}
|
||||
|
||||
export interface AllowAttributeOverrides {
|
||||
|
||||
@@ -41,8 +41,10 @@ export interface PaymentChannelToFundSourceMapping {
|
||||
|
||||
export interface ChargeOffReasonToExpenseAccountMapping {
|
||||
chargeOffReasonCodeValueId?: number;
|
||||
writeOffReasonCodeValueId?: number;
|
||||
expenseAccountId?: number;
|
||||
chargeOffReasonCodeValue?: CodeValue;
|
||||
reasonCodeValue?: CodeValue;
|
||||
writeOffReasonCodeValue?: CodeValue;
|
||||
expenseAccount?: AccountingMapping;
|
||||
}
|
||||
|
||||
|
||||
@@ -1156,6 +1156,7 @@
|
||||
"View Journal Entry": "Zobrazit záznam deníku",
|
||||
"Waive Charge": "Zřeknutí se poplatku",
|
||||
"Welcome to Mifos": "Vítejte v destinaci Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Odepis důvodů do výdajových účtů",
|
||||
"Withdraw Money From Saving Account": "Výběr peněz ze spořicího účtu",
|
||||
"Withhold Tax": "Srážková daň",
|
||||
"Working Days": "Pracovní dny",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "V rámci banky",
|
||||
"Working Days": "Pracovní dny",
|
||||
"Workflow Jobs": "Workflow Jobs",
|
||||
"WriteOff Reason": "Důvod odepsání",
|
||||
"Write Off Date": "Datum odepsání",
|
||||
"Write off on": "Odepiš dál",
|
||||
"Write-off": "Odepsat",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Journaleintrag anzeigen",
|
||||
"Waive Charge": "Auf Gebühr verzichten",
|
||||
"Welcome to Mifos": "Willkommen bei Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Abschreibungsgründe für Aufwandskonten",
|
||||
"Withdraw Money From Saving Account": "Geld vom Sparkonto abheben",
|
||||
"Withhold Tax": "Quellensteuer",
|
||||
"Working Days": "Arbeitstage",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Innerhalb der Bank",
|
||||
"Working Days": "Arbeitstage",
|
||||
"Workflow Jobs": "Workflow Jobs",
|
||||
"WriteOff Reason": "Abschreibungsgrund",
|
||||
"Write Off Date": "Abschreibungsdatum",
|
||||
"Write off on": "Abschreiben am",
|
||||
"Write-off": "Abschreiben",
|
||||
|
||||
@@ -1161,6 +1161,7 @@
|
||||
"View Journal Entry": "View Journal Entry",
|
||||
"Waive Charge": "Waive Charge",
|
||||
"Welcome to Mifos": "Welcome to Mifos",
|
||||
"WriteOff reasons to Expense accounts": "WriteOff reasons to Expense accounts",
|
||||
"Withdraw Money From Saving Account": "Withdraw Money From Saving Account",
|
||||
"Withhold Tax": "Withhold Tax",
|
||||
"Working Days": "Working Days",
|
||||
@@ -2464,6 +2465,7 @@
|
||||
"Within Bank": "Within Bank",
|
||||
"Working Days": "Working Days",
|
||||
"Workflow Jobs": "Workflow Jobs",
|
||||
"WriteOff Reason": "WriteOff Reason",
|
||||
"Write Off Date": "Write Off Date",
|
||||
"Write off on": "Write off on",
|
||||
"Write-off": "Write-off",
|
||||
|
||||
@@ -1156,6 +1156,7 @@
|
||||
"View Journal Entry": "Ver entrada de diario",
|
||||
"Waive Charge": "Renunciar a Comisión",
|
||||
"Welcome to Mifos": "Bienvenido a Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Razones de cancelación de cuentas de gastos",
|
||||
"Withdraw Money From Saving Account": "Retirar dinero de una cuenta de ahorro",
|
||||
"Withhold Tax": "Retener el impuesto",
|
||||
"Working Days": "Días laborables",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Dentro del banco",
|
||||
"Working Days": "Días laborables",
|
||||
"Workflow Jobs": "Flujos de Procesos",
|
||||
"WriteOff Reason": "Motivo de la cancelación",
|
||||
"Write Off Date": "Fecha de cancelación",
|
||||
"Write off on": "Cancelar en",
|
||||
"Write-off": "Cancelaciones",
|
||||
|
||||
@@ -1156,6 +1156,7 @@
|
||||
"View Journal Entry": "Ver entrada de diario",
|
||||
"Waive Charge": "Renunciar a Comisión",
|
||||
"Welcome to Mifos": "Bienvenido a Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Razones de cancelación de cuentas de gastos",
|
||||
"Withdraw Money From Saving Account": "Retirar dinero de una cuenta de ahorro",
|
||||
"Withhold Tax": "Retener el impuesto",
|
||||
"Working Days": "Días laborables",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Dentro del banco",
|
||||
"Working Days": "Días laborables",
|
||||
"Workflow Jobs": "Flujos de Procesos",
|
||||
"WriteOff Reason": "Motivo de la cancelación",
|
||||
"Write Off Date": "Fecha de cancelación",
|
||||
"Write off on": "Cancelar en",
|
||||
"Write-off": "Cancelaciones",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Afficher l'écriture de journal",
|
||||
"Waive Charge": "Renoncer aux frais",
|
||||
"Welcome to Mifos": "Bienvenue chez Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Raisons de radiation des comptes de dépenses",
|
||||
"Withdraw Money From Saving Account": "Retirer de l'argent d'un compte d'épargne",
|
||||
"Withhold Tax": "Retenir l'impôt",
|
||||
"Working Days": "Jours de travail",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Au sein de la banque",
|
||||
"Working Days": "Jours de travail",
|
||||
"Workflow Jobs": "Tâches de flux de travail",
|
||||
"WriteOff Reason": "Motif de radiation",
|
||||
"Write Off Date": "Date de radiation",
|
||||
"Write off on": "Radier sur",
|
||||
"Write-off": "Radier",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Visualizza la voce del diario",
|
||||
"Waive Charge": "Rinuncia all'addebito",
|
||||
"Welcome to Mifos": "Benvenuti in Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Motivi di cancellazione nei conti spese",
|
||||
"Withdraw Money From Saving Account": "Prelevare denaro dal conto di risparmio",
|
||||
"Withhold Tax": "Trattenuta fiscale",
|
||||
"Working Days": "Giorni lavorativi",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "All'interno della Banca",
|
||||
"Working Days": "Giorni lavorativi",
|
||||
"Workflow Jobs": "Lavori del flusso di lavoro",
|
||||
"WriteOff Reason": "Motivo della cancellazione",
|
||||
"Write Off Date": "Cancellare la data",
|
||||
"Write off on": "Cancellare",
|
||||
"Write-off": "Cancellare",
|
||||
|
||||
@@ -1158,6 +1158,7 @@
|
||||
"View Journal Entry": "분개 항목 보기",
|
||||
"Waive Charge": "요금 면제",
|
||||
"Welcome to Mifos": "미포스에 오신 것을 환영합니다",
|
||||
"WriteOff reasons to Expense accounts": "비용 계정에 대한 WriteOff 이유",
|
||||
"Withdraw Money From Saving Account": "저축 계좌에서 돈을 인출하세요",
|
||||
"Withhold Tax": "원천징수세",
|
||||
"Working Days": "일하는 날",
|
||||
@@ -2458,6 +2459,7 @@
|
||||
"Within Bank": "은행 내",
|
||||
"Working Days": "일하는 날",
|
||||
"Workflow Jobs": "워크플로 작업",
|
||||
"WriteOff Reason": "상각 사유",
|
||||
"Write Off Date": "상각 날짜",
|
||||
"Write off on": "에 상각",
|
||||
"Write-off": "상각",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Žiūrėti žurnalo įrašą",
|
||||
"Waive Charge": "Atsisakyti mokesčio",
|
||||
"Welcome to Mifos": "Sveiki atvykę į Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Išlaidų sąskaitų nurašymo priežastys",
|
||||
"Withdraw Money From Saving Account": "Išimkite pinigus iš taupomosios sąskaitos",
|
||||
"Withhold Tax": "Išskaičiuoti mokestį",
|
||||
"Working Days": "Darbo dienos",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Banko viduje",
|
||||
"Working Days": "Darbo dienos",
|
||||
"Workflow Jobs": "Darbo eiga Darbai",
|
||||
"WriteOff Reason": "Nurašymo priežastis",
|
||||
"Write Off Date": "Nurašymo data",
|
||||
"Write off on": "Nurašyti",
|
||||
"Write-off": "Nusirašinėti",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Skatīt žurnāla ierakstu",
|
||||
"Waive Charge": "Atteikties no maksas",
|
||||
"Welcome to Mifos": "Laipni lūdzam Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Norakstīšanas iemesli izdevumu kontiem",
|
||||
"Withdraw Money From Saving Account": "Izņemiet naudu no krājkonta",
|
||||
"Withhold Tax": "Ieturējuma nodoklis",
|
||||
"Working Days": "Darba dienas",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Bankas ietvaros",
|
||||
"Working Days": "Darba dienas",
|
||||
"Workflow Jobs": "Darbplūsmas darbi",
|
||||
"WriteOff Reason": "Norakstīšanas iemesls",
|
||||
"Write Off Date": "Norakstīšanas datums",
|
||||
"Write off on": "Norakstīt tālāk",
|
||||
"Write-off": "Norakstīt",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "जर्नल प्रविष्टि हेर्नुहोस्",
|
||||
"Waive Charge": "शुल्क छुट",
|
||||
"Welcome to Mifos": "Mifos मा स्वागत छ",
|
||||
"WriteOff reasons to Expense accounts": "खर्च खाताहरूमा कारणहरू लेख्नुहोस्",
|
||||
"Withdraw Money From Saving Account": "बचत खाताबाट पैसा निकाल्नुहोस्",
|
||||
"Withhold Tax": "कर रोक",
|
||||
"Working Days": "काम गर्ने दिनहरू",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "बैंक भित्र",
|
||||
"Working Days": "काम गर्ने दिनहरू",
|
||||
"Workflow Jobs": "कार्यप्रवाह कार्यहरू",
|
||||
"WriteOff Reason": "कारण लेख्नुहोस्",
|
||||
"Write Off Date": "बन्द मिति लेख्नुहोस्",
|
||||
"Write off on": "मा लेख्नुहोस्",
|
||||
"Write-off": "राइट-अफ",
|
||||
|
||||
@@ -1157,6 +1157,7 @@
|
||||
"View Journal Entry": "Ver lançamento contábil manual",
|
||||
"Waive Charge": "Isenção de cobrança",
|
||||
"Welcome to Mifos": "Bem-vindo à Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Motivos de baixa em contas de despesas",
|
||||
"Withdraw Money From Saving Account": "Retirar dinheiro da conta poupança",
|
||||
"Withhold Tax": "Taxa administrativa",
|
||||
"Working Days": "Dias úteis",
|
||||
@@ -2457,6 +2458,7 @@
|
||||
"Within Bank": "Dentro do banco",
|
||||
"Working Days": "Dias úteis",
|
||||
"Workflow Jobs": "Fluxo de trabalho",
|
||||
"WriteOff Reason": "Motivo da baixa",
|
||||
"Write Off Date": "Data de baixa",
|
||||
"Write off on": "Anote em",
|
||||
"Write-off": "Eliminar",
|
||||
|
||||
@@ -1156,6 +1156,7 @@
|
||||
"View Journal Entry": "Tazama Ingizo la Jarida",
|
||||
"Waive Charge": "Kuondoa Malipo",
|
||||
"Welcome to Mifos": "Karibu na Mifos",
|
||||
"WriteOff reasons to Expense accounts": "Sababu za Kufuta kwa akaunti za Gharama",
|
||||
"Withdraw Money From Saving Account": "Toa Pesa kwenye Akaunti ya Kuokoa",
|
||||
"Withhold Tax": "Kodi ya Kuzuia",
|
||||
"Working Days": "Siku za kazi",
|
||||
@@ -2456,6 +2457,7 @@
|
||||
"Within Bank": "Ndani ya Benki",
|
||||
"Working Days": "Siku za kazi",
|
||||
"Workflow Jobs": "Kazi za mtiririko wa kazi",
|
||||
"WriteOff Reason": "Sababu ya Kufuta",
|
||||
"Write Off Date": "Tarehe ya Kuzimwa",
|
||||
"Write off on": "Andika mbali",
|
||||
"Write-off": "Kufuta",
|
||||
|
||||
Reference in New Issue
Block a user