From 01e60a08103f10ab289deff842c7116df7e70fb2 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Mon, 1 Aug 2022 17:25:56 -0500 Subject: [PATCH] Allow accounting mappings for fund source asset or liability --- .../create-gl-account.component.html | 2 +- .../edit-gl-account.component.html | 2 +- .../gl-account-tree.service.ts | 4 +- .../view-gl-account.component.html | 6 ++- .../loan-tranche-details.component.html | 8 ++-- .../create-loan-product.component.ts | 3 ++ .../edit-loan-product.component.ts | 3 ++ ...oan-product-accounting-step.component.html | 42 ++++++++++++------- .../loan-product-accounting-step.component.ts | 5 +++ .../loan-product-preview-step.component.html | 13 ++++-- .../view-loan-product.component.html | 37 +++++++++------- 11 files changed, 84 insertions(+), 41 deletions(-) diff --git a/src/app/accounting/chart-of-accounts/create-gl-account/create-gl-account.component.html b/src/app/accounting/chart-of-accounts/create-gl-account/create-gl-account.component.html index fd2792a1a..4793ad277 100644 --- a/src/app/accounting/chart-of-accounts/create-gl-account/create-gl-account.component.html +++ b/src/app/accounting/chart-of-accounts/create-gl-account/create-gl-account.component.html @@ -52,7 +52,7 @@ Parent - {{ parent.name }} + ({{ parent.glCode }}) {{ parent.name }} diff --git a/src/app/accounting/chart-of-accounts/edit-gl-account/edit-gl-account.component.html b/src/app/accounting/chart-of-accounts/edit-gl-account/edit-gl-account.component.html index fdebb58f4..cda77e59b 100644 --- a/src/app/accounting/chart-of-accounts/edit-gl-account/edit-gl-account.component.html +++ b/src/app/accounting/chart-of-accounts/edit-gl-account/edit-gl-account.component.html @@ -52,7 +52,7 @@ Parent - {{ parent.name }} + ({{ parent.glCode }}) {{ parent.name }} diff --git a/src/app/accounting/chart-of-accounts/gl-account-tree.service.ts b/src/app/accounting/chart-of-accounts/gl-account-tree.service.ts index c0f17b84c..113395c22 100644 --- a/src/app/accounting/chart-of-accounts/gl-account-tree.service.ts +++ b/src/app/accounting/chart-of-accounts/gl-account-tree.service.ts @@ -84,7 +84,9 @@ export class GlAccountTreeService { glAccountTree[0].children[4].children.push(glAccounts[glAccount.id]); } } else { - glAccounts[glAccount.parentId].children.push(glAccounts[glAccount.id]); + if (glAccounts[glAccount.parentId]) { + glAccounts[glAccount.parentId].children.push(glAccounts[glAccount.id]); + } } } diff --git a/src/app/accounting/chart-of-accounts/view-gl-account/view-gl-account.component.html b/src/app/accounting/chart-of-accounts/view-gl-account/view-gl-account.component.html index 2f3d4eb0b..6bdd13b45 100644 --- a/src/app/accounting/chart-of-accounts/view-gl-account/view-gl-account.component.html +++ b/src/app/accounting/chart-of-accounts/view-gl-account/view-gl-account.component.html @@ -58,7 +58,9 @@
- {{ glAccount.parent.name }} + + ({{ glAccount.parent.glCode }}) {{ glAccount.parent.name }} +
@@ -82,7 +84,7 @@
- {{ glAccount.manualEntriesAllowed }} + {{ glAccount.manualEntriesAllowed ? 'Yes' : 'No' }}
diff --git a/src/app/loans/loans-view/loan-tranche-details/loan-tranche-details.component.html b/src/app/loans/loans-view/loan-tranche-details/loan-tranche-details.component.html index d38fb4363..23b0a1f5c 100644 --- a/src/app/loans/loans-view/loan-tranche-details/loan-tranche-details.component.html +++ b/src/app/loans/loans-view/loan-tranche-details/loan-tranche-details.component.html @@ -5,7 +5,7 @@ {{ loanDetails.maxOutstandingLoanBalance | number }}
-

Loan Tranche Details

+

Loan Tranche Details

- + diff --git a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts index 2aafc9f79..4fff052d3 100644 --- a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts +++ b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts @@ -44,6 +44,9 @@ export class CreateLoanProductComponent implements OnInit { private router: Router) { this.route.data.subscribe((data: { loanProductsTemplate: any }) => { this.loanProductsTemplate = data.loanProductsTemplate; + const assetAccountData = this.loanProductsTemplate.accountingMappingOptions.assetAccountOptions || []; + const liabilityAccountData = this.loanProductsTemplate.accountingMappingOptions.liabilityAccountOptions || []; + this.loanProductsTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions = assetAccountData.concat(liabilityAccountData); }); } diff --git a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts index dbcc72eb8..2c78bcbec 100644 --- a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts +++ b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts @@ -44,6 +44,9 @@ export class EditLoanProductComponent implements OnInit { private router: Router) { this.route.data.subscribe((data: { loanProductAndTemplate: any }) => { this.loanProductAndTemplate = data.loanProductAndTemplate; + const assetAccountData = this.loanProductAndTemplate.accountingMappingOptions.assetAccountOptions || []; + const liabilityAccountData = this.loanProductAndTemplate.accountingMappingOptions.liabilityAccountOptions || []; + this.loanProductAndTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions = assetAccountData.concat(liabilityAccountData); }); } 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 8e8784e07..f57fb8ef5 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 @@ -12,13 +12,13 @@
-

Assets

+

Assets / Liability

Fund source - - {{ assetAccount.name }} + + ({{ assetAndLiabilityAccount.glCode }}) {{ assetAndLiabilityAccount.name }} @@ -26,11 +26,13 @@ +

Assets

+ Loan portfolio - {{ assetAccount.name }} + ({{ assetAccount.glCode }}) {{ assetAccount.name }} @@ -44,7 +46,7 @@ Interest Receivable - {{ assetAccount.name }} + ({{ assetAccount.glCode }}) {{ assetAccount.name }} @@ -56,7 +58,7 @@ Fees Receivable - {{ assetAccount.name }} + ({{ assetAccount.glCode }}) {{ assetAccount.name }} @@ -68,7 +70,7 @@ Penalties Receivable - {{ assetAccount.name }} + ({{ assetAccount.glCode }}) {{ assetAccount.name }} @@ -82,7 +84,7 @@ Transfer in suspense - {{ assetAccount.name }} + ({{ assetAccount.glCode }}) {{ assetAccount.name }} @@ -98,7 +100,7 @@ Income from Interest - {{ incomeAccount.name }} + ({{ incomeAccount.glCode }}) {{ incomeAccount.name }} @@ -110,7 +112,7 @@ Income from fees - {{ incomeAccount.name }} + ({{ incomeAccount.glCode }}) {{ incomeAccount.name }} @@ -122,7 +124,7 @@ Income from penalties - {{ incomeAccount.name }} + ({{ incomeAccount.glCode }}) {{ incomeAccount.name }} @@ -134,7 +136,7 @@ Income from Recovery Repayments - {{ incomeAccount.name }} + ({{ incomeAccount.glCode }}) {{ incomeAccount.name }} @@ -150,7 +152,7 @@ Losses written off - {{ expenseAccount.name }} + ({{ expenseAccount.glCode }}) {{ expenseAccount.name }} @@ -158,6 +160,18 @@ + + Goodwill credit + + + ({{ expenseAccount.glCode }}) {{ expenseAccount.name }} + + + + Goodwill credit is required + + +

Liabilities

@@ -166,7 +180,7 @@ Over payment liability - {{ liabilityAccount.name }} + ({{ liabilityAccount.glCode }}) {{ liabilityAccount.name }} 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 541b847c9..55a1fbcf1 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 @@ -29,6 +29,7 @@ export class LoanProductAccountingStepComponent implements OnInit { expenseAccountData: any; liabilityAccountData: any; incomeAndLiabilityAccountData: any; + assetAndLiabilityAccountData: any; paymentFundSourceDisplayedColumns: string[] = ['paymentTypeId', 'fundSourceAccountId', 'actions']; feesPenaltyIncomeDisplayedColumns: string[] = ['chargeId', 'incomeAccountId', 'actions']; @@ -48,6 +49,7 @@ export class LoanProductAccountingStepComponent implements OnInit { this.expenseAccountData = this.loanProductsTemplate.accountingMappingOptions.expenseAccountOptions || []; this.liabilityAccountData = this.loanProductsTemplate.accountingMappingOptions.liabilityAccountOptions || []; this.incomeAndLiabilityAccountData = this.incomeAccountData.concat(this.liabilityAccountData); + this.assetAndLiabilityAccountData = this.loanProductsTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions || []; this.loanProductAccountingForm.patchValue({ 'accountingRule': this.loanProductsTemplate.accountingRule.id @@ -72,6 +74,7 @@ export class LoanProductAccountingStepComponent implements OnInit { 'incomeFromPenaltyAccountId': this.loanProductsTemplate.accountingMappings.incomeFromPenaltyAccount.id, 'incomeFromRecoveryAccountId': this.loanProductsTemplate.accountingMappings.incomeFromRecoveryAccount.id, 'writeOffAccountId': this.loanProductsTemplate.accountingMappings.writeOffAccount.id, + 'goodwillCreditAccountId': this.loanProductsTemplate.accountingMappings.goodwillCreditAccount.id, 'overpaymentLiabilityAccountId': this.loanProductsTemplate.accountingMappings.overpaymentLiabilityAccount.id, 'advancedAccountingRules': (this.loanProductsTemplate.paymentChannelToFundSourceMappings || this.loanProductsTemplate.feeToIncomeAccountMappings || this.loanProductsTemplate.penaltyToIncomeAccountMappings) ? true : false }); @@ -106,6 +109,7 @@ export class LoanProductAccountingStepComponent implements OnInit { this.loanProductAccountingForm.addControl('incomeFromPenaltyAccountId', new FormControl('', Validators.required)); this.loanProductAccountingForm.addControl('incomeFromRecoveryAccountId', new FormControl('', Validators.required)); this.loanProductAccountingForm.addControl('writeOffAccountId', new FormControl('', Validators.required)); + this.loanProductAccountingForm.addControl('goodwillCreditAccountId', new FormControl('', Validators.required)); this.loanProductAccountingForm.addControl('overpaymentLiabilityAccountId', new FormControl('', Validators.required)); this.loanProductAccountingForm.addControl('advancedAccountingRules', new FormControl(false)); @@ -130,6 +134,7 @@ export class LoanProductAccountingStepComponent implements OnInit { this.loanProductAccountingForm.removeControl('incomeFromPenaltyAccountId'); this.loanProductAccountingForm.removeControl('incomeFromRecoveryAccountId'); this.loanProductAccountingForm.removeControl('writeOffAccountId'); + this.loanProductAccountingForm.removeControl('goodwillCreditAccountId'); this.loanProductAccountingForm.removeControl('overpaymentLiabilityAccountId'); this.loanProductAccountingForm.removeControl('advancedAccountingRules'); } diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-preview-step/loan-product-preview-step.component.html b/src/app/products/loan-products/loan-product-stepper/loan-product-preview-step/loan-product-preview-step.component.html index 8dde6a99b..bf38f9dc3 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-preview-step/loan-product-preview-step.component.html +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-preview-step/loan-product-preview-step.component.html @@ -589,11 +589,16 @@
-

Assets

+

Assets / Liabilities

Fund source: - {{ loanProduct.fundSourceAccountId | find:loanProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }} + {{ loanProduct.fundSourceAccountId | find:loanProductsTemplate.accountingMappingOptions.assetAndLiabilityAccountOptions:'id':'name' }} +
+ +

Assets

+ +
Loan portfolio: {{ loanProduct.loanPortfolioAccountId | find:loanProductsTemplate.accountingMappingOptions.assetAccountOptions:'id':'name' }}
@@ -623,9 +628,11 @@

Expenses

-
+
Losses written off: {{ loanProduct.writeOffAccountId | find:loanProductsTemplate.accountingMappingOptions.expenseAccountOptions:'id':'name' }} + Goodwill credit: + {{ loanProduct.goodwillCreditAccountId | find:loanProductsTemplate.accountingMappingOptions.expenseAccountOptions:'id':'name' }}

Liabilities

diff --git a/src/app/products/loan-products/view-loan-product/view-loan-product.component.html b/src/app/products/loan-products/view-loan-product/view-loan-product.component.html index 5ecc16b06..7fdee8d37 100644 --- a/src/app/products/loan-products/view-loan-product/view-loan-product.component.html +++ b/src/app/products/loan-products/view-loan-product/view-loan-product.component.html @@ -601,50 +601,57 @@
-

Assets

+

Assets / Liabilities

Fund source: - {{ loanProduct.accountingMappings.fundSourceAccount.name }} + ({{loanProduct.accountingMappings.fundSourceAccount.glCode}}) {{ loanProduct.accountingMappings.fundSourceAccount.name }} +
+ +

Assets

+ +
Loan portfolio: - {{ loanProduct.accountingMappings.loanPortfolioAccount.name }} + ({{loanProduct.accountingMappings.loanPortfolioAccount.glCode}}) {{ loanProduct.accountingMappings.loanPortfolioAccount.name }}
Interest Receivable: - {{ loanProduct.accountingMappings.receivableInterestAccount.name }} + ({{loanProduct.accountingMappings.receivableInterestAccount.glCode}}) {{ loanProduct.accountingMappings.receivableInterestAccount.name }} Fees Receivable: - {{ loanProduct.accountingMappings.receivableInterestAccount.name }} + ({{loanProduct.accountingMappings.receivableInterestAccount.glCode}}) {{ loanProduct.accountingMappings.receivableInterestAccount.name }} Penalties Receivable: - {{ loanProduct.accountingMappings.receivablePenaltyAccount.name }} + ({{loanProduct.accountingMappings.receivablePenaltyAccount.glCode}}) {{ loanProduct.accountingMappings.receivablePenaltyAccount.name }}
Transfer in suspense: - {{ loanProduct.accountingMappings.transfersInSuspenseAccount.name }} + ({{loanProduct.accountingMappings.transfersInSuspenseAccount.glCode}}) {{ loanProduct.accountingMappings.transfersInSuspenseAccount.name }}

Income

Income from Interest: - {{ loanProduct.accountingMappings.interestOnLoanAccount.name }} + ({{loanProduct.accountingMappings.interestOnLoanAccount.glCode}}) {{ loanProduct.accountingMappings.interestOnLoanAccount.name }} Income from fees: - {{ loanProduct.accountingMappings.incomeFromFeeAccount.name }} + ({{loanProduct.accountingMappings.incomeFromFeeAccount.glCode}}) {{ loanProduct.accountingMappings.incomeFromFeeAccount.name }} Income from penalties: - {{ loanProduct.accountingMappings.incomeFromPenaltyAccount.name }} + ({{loanProduct.accountingMappings.incomeFromPenaltyAccount.glCode}}) {{ loanProduct.accountingMappings.incomeFromPenaltyAccount.name }} Income from Recovery Repayments: - {{ loanProduct.accountingMappings.incomeFromRecoveryAccount.name }} + ({{loanProduct.accountingMappings.incomeFromRecoveryAccount.glCode}}) {{ loanProduct.accountingMappings.incomeFromRecoveryAccount.name }}

Expenses

-
+
Losses written off: - {{ loanProduct.accountingMappings.writeOffAccount.name }} + ({{loanProduct.accountingMappings.writeOffAccount.glCode}}) {{ loanProduct.accountingMappings.writeOffAccount.name }} + Goodwill credit: + ({{loanProduct.accountingMappings.goodwillCreditAccount.glCode}}) {{ loanProduct.accountingMappings.goodwillCreditAccount.name }}

Liabilities

-
+
Over payment liability: - {{ loanProduct.accountingMappings.overpaymentLiabilityAccount.name }} + ({{loanProduct.accountingMappings.overpaymentLiabilityAccount.glCode}}) {{ loanProduct.accountingMappings.overpaymentLiabilityAccount.name }}