diff --git a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts
index 1e37a7769..37cb58037 100644
--- a/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts
+++ b/src/app/loans/loans-view/transactions-tab/transactions-tab.component.ts
@@ -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 ||
diff --git a/src/app/loans/models/loan-transaction-type.model.ts b/src/app/loans/models/loan-transaction-type.model.ts
index 8be1cdbd4..a72e3ccac 100644
--- a/src/app/loans/models/loan-transaction-type.model.ts
+++ b/src/app/loans/models/loan-transaction-type.model.ts
@@ -39,4 +39,5 @@ export interface LoanTransactionType {
contractTermination: boolean;
buyDownFee: boolean;
buyDownFeeAdjustment: boolean;
+ buyDownFeeAmortizationAdjustment: boolean;
}
diff --git a/src/app/products/collaterals/create-collateral/create-collateral.component.ts b/src/app/products/collaterals/create-collateral/create-collateral.component.ts
index 55cfe35a1..beaa9dada 100644
--- a/src/app/products/collaterals/create-collateral/create-collateral.component.ts
+++ b/src/app/products/collaterals/create-collateral/create-collateral.component.ts
@@ -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
: [];
diff --git a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html
index c0ae61e4d..3222ceb89 100644
--- a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html
+++ b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html
@@ -1236,7 +1236,7 @@
| {{ 'labels.inputs.Charge-off reason' | translate }} |
- {{ chargeOffReasonToExpenseAccountMapping.chargeOffReasonCodeValue.name }}
+ {{ chargeOffReasonToExpenseAccountMapping.reasonCodeValue.name }}
|
@@ -1253,10 +1253,7 @@
-
0"
- class="flex-100 layout-row-wrap responsive-column"
- >
+
{{ 'labels.heading.Buydown Fee classifications to Income accounts' | translate }}
@@ -1318,6 +1315,32 @@
+
+
0" class="flex-100 layout-row-wrap responsive-column">
+
+ {{ 'labels.heading.WriteOff reasons to Expense accounts' | translate }}
+
+
+
+
+ | {{ 'labels.inputs.WriteOff Reason' | translate }} |
+
+ {{ writeOffReasonsToExpenseMapping.reasonCodeValue.name }}
+ |
+
+
+
+ {{ 'labels.inputs.Expense Account' | translate }} |
+
+ ({{ writeOffReasonsToExpenseMapping.expenseAccount.glCode }})
+ {{ writeOffReasonsToExpenseMapping.expenseAccount.name }}
+ |
+
+
+
+
+
+
diff --git a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts
index 14e20d492..e189bbdd4 100644
--- a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts
+++ b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts
@@ -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
);
}
diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/advanced-accounting-mapping-rule/advanced-accounting-mapping-rule.component.ts b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/advanced-accounting-mapping-rule/advanced-accounting-mapping-rule.component.ts
index 1b4ed9430..8b225294f 100644
--- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/advanced-accounting-mapping-rule/advanced-accounting-mapping-rule.component.ts
+++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/advanced-accounting-mapping-rule/advanced-accounting-mapping-rule.component.ts
@@ -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;
}
}
diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html
index 94095ebb8..0e237c1bb 100644
--- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html
+++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html
@@ -536,6 +536,17 @@
[accountingMappingOptions]="capitalizedIncomeClassificationOptions"
(formChangeEvent)="formChangeEvent($event)"
>
+
+
diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts
index ce02cd832..d05072957 100644
--- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts
+++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.ts
@@ -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();
}
diff --git a/src/app/products/loan-products/models/loan-product.model.ts b/src/app/products/loan-products/models/loan-product.model.ts
index 30f28496f..9ad7c3c83 100644
--- a/src/app/products/loan-products/models/loan-product.model.ts
+++ b/src/app/products/loan-products/models/loan-product.model.ts
@@ -155,8 +155,10 @@ export interface LoanProduct {
enableAccrualActivityPosting?: boolean;
supportedInterestRefundTypes?: StringEnumOptionData[];
chargeOffBehaviour?: StringEnumOptionData;
+ buydownfeeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
buydownFeeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
capitalizedIncomeClassificationToIncomeAccountMappings?: ClassificationToIncomeAccountMapping[];
+ writeOffReasonsToExpenseMappings?: ChargeOffReasonToExpenseAccountMapping[];
}
export interface AllowAttributeOverrides {
diff --git a/src/app/shared/models/general.model.ts b/src/app/shared/models/general.model.ts
index dea5fdecd..4fb5c5468 100644
--- a/src/app/shared/models/general.model.ts
+++ b/src/app/shared/models/general.model.ts
@@ -41,8 +41,10 @@ export interface PaymentChannelToFundSourceMapping {
export interface ChargeOffReasonToExpenseAccountMapping {
chargeOffReasonCodeValueId?: number;
+ writeOffReasonCodeValueId?: number;
expenseAccountId?: number;
- chargeOffReasonCodeValue?: CodeValue;
+ reasonCodeValue?: CodeValue;
+ writeOffReasonCodeValue?: CodeValue;
expenseAccount?: AccountingMapping;
}
diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json
index f6ae9a40b..6d5971c9a 100644
--- a/src/assets/translations/cs-CS.json
+++ b/src/assets/translations/cs-CS.json
@@ -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",
diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json
index af9bea9bd..4c36aec48 100644
--- a/src/assets/translations/de-DE.json
+++ b/src/assets/translations/de-DE.json
@@ -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",
diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json
index 58bf3268b..5ee1253c1 100644
--- a/src/assets/translations/en-US.json
+++ b/src/assets/translations/en-US.json
@@ -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",
diff --git a/src/assets/translations/es-CL.json b/src/assets/translations/es-CL.json
index af7cf2f99..424c62b36 100644
--- a/src/assets/translations/es-CL.json
+++ b/src/assets/translations/es-CL.json
@@ -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",
diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json
index 6dc71338d..084c7af6f 100644
--- a/src/assets/translations/es-MX.json
+++ b/src/assets/translations/es-MX.json
@@ -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",
diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json
index ee6b7106d..2800ff89b 100644
--- a/src/assets/translations/fr-FR.json
+++ b/src/assets/translations/fr-FR.json
@@ -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",
diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json
index ccf90f7bc..868670e4b 100644
--- a/src/assets/translations/it-IT.json
+++ b/src/assets/translations/it-IT.json
@@ -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",
diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json
index fb84fdef1..ec0b5d896 100644
--- a/src/assets/translations/ko-KO.json
+++ b/src/assets/translations/ko-KO.json
@@ -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": "상각",
diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json
index 3b2c63c25..7ba48e34c 100644
--- a/src/assets/translations/lt-LT.json
+++ b/src/assets/translations/lt-LT.json
@@ -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",
diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json
index a8cac58a9..6e960a16e 100644
--- a/src/assets/translations/lv-LV.json
+++ b/src/assets/translations/lv-LV.json
@@ -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",
diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json
index b1fb42562..3ba1e55f0 100644
--- a/src/assets/translations/ne-NE.json
+++ b/src/assets/translations/ne-NE.json
@@ -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": "राइट-अफ",
diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json
index 6da336457..587539178 100644
--- a/src/assets/translations/pt-PT.json
+++ b/src/assets/translations/pt-PT.json
@@ -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",
diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json
index 9543cf3e7..6c3984d95 100644
--- a/src/assets/translations/sw-SW.json
+++ b/src/assets/translations/sw-SW.json
@@ -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",