Recurring Deposit view account homologation (#1910)
Co-authored-by: Jose Alberto Hernandez <alberto@blue-daemon.local>
This commit is contained in:
co-authored by
Jose Alberto Hernandez
parent
7c53b82965
commit
79595f6a1c
@@ -0,0 +1,224 @@
|
||||
|
||||
<mat-progress-bar mode="indeterminate" *ngIf="isLoading"></mat-progress-bar>
|
||||
|
||||
<div class="savings-account-tables" fxLayout="row" fxLayoutGap="2%" *ngIf="!isLoading">
|
||||
|
||||
<div fxFlex="49%" fxLayout="column" fxLayoutGap="4%">
|
||||
<div
|
||||
*ngIf="!savingsAccountData.status.rejected && !savingsAccountData.status.submittedAndPendingApproval; else alternateDetails">
|
||||
<h4 class="table-headers">{{'labels.heading.Savings Details' | translate}}</h4>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Activated On' | translate}}</td>
|
||||
<td>{{savingsAccountData.timeline.activatedOnDate ? (savingsAccountData.timeline.activatedOnDate |
|
||||
dateFormat) : 'Not Activated'}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Field Officer' | translate}}</td>
|
||||
<td>{{savingsAccountData.fieldOfficerName ? savingsAccountData.fieldOfficerName : 'Unassigned'}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.External Id' | translate}}</td>
|
||||
<td *ngIf="savingsAccountData.externalId">
|
||||
<mifosx-external-identifier externalId="{{savingsAccountData.externalId}}"></mifosx-external-identifier>
|
||||
</td>
|
||||
<td *ngIf="!savingsAccountData.externalId">{{'labels.inputs.Not Provided' | translate}}</td> </tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Currency' | translate}}</td>
|
||||
<td>{{savingsAccountData.currency.name}} [{{savingsAccountData.currency.code}}]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Nominal Interest Rate' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.nominalAnnualInterestRate | formatNumber}} %</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<ng-template #alternateDetails>
|
||||
<div>
|
||||
<h4 class="table-headers">{{'labels.heading.Savings Details' | translate}}</h4>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Field Officer' | translate}}</td>
|
||||
<td>{{savingsAccountData.fieldOfficerName ? savingsAccountData.fieldOfficerName : 'Unassigned'}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Balance' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.accountBalance | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<div *ngIf="!savingsAccountData.status.rejected && !savingsAccountData.status.submittedAndPendingApproval">
|
||||
<h4 class="table-headers">{{'labels.heading.Performance History' | translate}}</h4>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr *ngIf="savingsAccountData.summary.totalDeposits">
|
||||
<td>{{'labels.inputs.Total Deposits' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalDeposits | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalInterestEarned >= 0">
|
||||
<td>{{'labels.inputs.Total Interest Earned' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalInterestEarned | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxFlex="49%"
|
||||
*ngIf="isActive; else alternateSummary">
|
||||
<h4 class="table-headers">{{'labels.heading.Account Summary' | translate}}</h4>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr *ngIf="savingsAccountData.summary.totalWithdrawals">
|
||||
<td>{{'labels.inputs.Total Withdrawls' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalWithdrawals | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalWithdrawalFees">
|
||||
<td>{{'labels.inputs.Withdrawals Fees' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalWithdrawalFees | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalAnnualFees">
|
||||
<td>{{'labels.inputs.Annual Fees' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalAnnualFees | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalInterestEarned >= 0">
|
||||
<td>{{'labels.inputs.Interest Earned' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalInterestEarned | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalInterestPosted">
|
||||
<td>{{'labels.inputs.Interest Posted' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.totalInterestPosted | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.interestNotPosted >= 0">
|
||||
<td>{{'labels.inputs.Interest Earned Not Posted' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.interestNotPosted | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.totalOverdraftInterestDerived">
|
||||
<td>{{'labels.inputs.Interest On Overdraft' | translate}}</td>
|
||||
<td class="r-amount">
|
||||
{{savingsAccountData.summary.totalOverdraftInterestDerived | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.interestNotPosted < 0">
|
||||
<td>{{'labels.inputs.Overdraft Interest Not Posted' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.summary.interestNotPosted | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.nominalAnnualInterestRate">
|
||||
<td>{{'labels.inputs.Nominal Interest Rate' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.nominalAnnualInterestRate | formatNumber}} %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Interest Compounding Period' | translate}}</td>
|
||||
<td>{{savingsAccountData.interestCompoundingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Interest Posting Period' | translate}}</td>
|
||||
<td>{{savingsAccountData.interestPostingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Interest Calculated Using' | translate}}</td>
|
||||
<td>{{savingsAccountData.interestCalculationType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td># {{'labels.inputs.Days in Year' | translate}}</td>
|
||||
<td>{{savingsAccountData.interestCalculationDaysInYearType.value}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.withdrawalFee">
|
||||
<td>{{'labels.inputs.Withdrawal Fee' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.withdrawalFee.amount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.lastActiveTransactionDate">
|
||||
<td>{{'labels.inputs.Last Active Transaction Date' | translate}}</td>
|
||||
<td>{{savingsAccountData.lastActiveTransactionDate | dateFormat}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="!(savingsAccountData.subStatus.id === 0)">
|
||||
<td>{{'labels.inputs.Substatus' | translate}}</td>
|
||||
<td>{{savingsAccountData.subStatus.value}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.daysToInactive">
|
||||
<td>{{'labels.inputs.Days to Inactive' | translate}}</td>
|
||||
<td>{{savingsAccountData.daysToInactive}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.daysToDormancy">
|
||||
<td>{{'labels.inputs.Days to Dormancy' | translate}}</td>
|
||||
<td>{{savingsAccountData.daysToDormancy}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.daysToEscheat">
|
||||
<td>{{'labels.inputs.Days to Escheat' | translate}}</td>
|
||||
<td>{{savingsAccountData.daysToEscheat}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.annualFee">
|
||||
<td>{{'labels.inputs.Annual Fee' | translate}}</td>
|
||||
<td class="r-amount">
|
||||
{{savingsAccountData.annualFee.amount | currency:currency.code:'symbol-narrow':'1.2-2'}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.allowOverdraft">
|
||||
<td>{{'labels.inputs.Over Draft Limit' | translate}}</td>
|
||||
<td class="r-amount">{{savingsAccountData.overdraftLimit | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.allowOverdraft">
|
||||
<td>{{'labels.inputs.Min Overdraft Required for Interest Calculation' | translate}}</td>
|
||||
<td>{{savingsAccountData.minOverdraftForInterestCalculation | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.minBalanceForInterestCalculation">
|
||||
<td>{{'labels.inputs.Min Balance Required for Interest Calculation' | translate}}</td>
|
||||
<td>{{savingsAccountData.minBalanceForInterestCalculation | formatNumber}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.minRequiredBalance">
|
||||
<td>{{'labels.inputs.Minimum Required Balance' | translate}}</td>
|
||||
<td>{{savingsAccountData.minRequiredBalance | formatNumber}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.enforceMinRequiredBalance">
|
||||
<td>{{'labels.inputs.Enforce Minimum Required Balance' | translate}}</td>
|
||||
<td>{{savingsAccountData.enforceMinRequiredBalance | formatNumber}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.summary.lastInterestCalculationDate">
|
||||
<td>{{'labels.inputs.Interest Recalculation Date' | translate}}</td>
|
||||
<td>{{savingsAccountData.summary.lastInterestCalculationDate | dateFormat}}</td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.onHoldFunds">
|
||||
<td>{{'labels.inputs.On Hold Funds' | translate}}</td>
|
||||
<td><a *mifosxHasPermission="'READ_SAVINGSACCOUNT'">{{savingsAccountData.onHoldFunds | currency:currency.code:'symbol-narrow':'1.2-2'}}</a></td>
|
||||
</tr>
|
||||
<tr *ngIf="savingsAccountData.withHoldTax">
|
||||
<td>{{'labels.inputs.Withhold Tax Group' | translate}}</td>
|
||||
<td>{{savingsAccountData.taxGroup.name}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<ng-template #alternateSummary>
|
||||
<div fxFlex="49%">
|
||||
<h4 class="table-headers">{{'labels.heading.Account Summary' | translate}}</h4>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Activated On' | translate}}</td>
|
||||
<td>{{savingsAccountData.timeline.activatedOnDate ? (savingsAccountData.timeline.activatedOnDate |
|
||||
dateFormat) : 'Not Activated'}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.Currency' | translate}}</td>
|
||||
<td>{{savingsAccountData.currency.name}} [{{savingsAccountData.currency.code}}]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'labels.inputs.External Id' | translate}}</td>
|
||||
<td *ngIf="savingsAccountData.externalId">
|
||||
<mifosx-external-identifier externalId="{{savingsAccountData.externalId}}"></mifosx-external-identifier>
|
||||
</td>
|
||||
<td *ngIf="!savingsAccountData.externalId">{{'labels.inputs.Not Provided' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { GeneralTabComponent } from './general-tab.component';
|
||||
|
||||
describe('GeneralTabComponent', () => {
|
||||
let component: GeneralTabComponent;
|
||||
let fixture: ComponentFixture<GeneralTabComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ GeneralTabComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(GeneralTabComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { Currency } from 'app/shared/models/general.model';
|
||||
|
||||
@Component({
|
||||
selector: 'mifosx-general-tab',
|
||||
templateUrl: './general-tab.component.html',
|
||||
styleUrls: ['./general-tab.component.scss']
|
||||
})
|
||||
export class GeneralTabComponent implements OnInit {
|
||||
isLoading = true;
|
||||
isActive = false;
|
||||
entityType: string;
|
||||
|
||||
savingsAccountData: any;
|
||||
currency: Currency;
|
||||
|
||||
constructor(private route: ActivatedRoute,
|
||||
private router: Router) {
|
||||
this.route.parent.parent.data.subscribe((data: { savingsAccountData: any }) => {
|
||||
this.savingsAccountData = data.savingsAccountData;
|
||||
this.currency = this.savingsAccountData.currency;
|
||||
this.isLoading = false;
|
||||
const status = this.savingsAccountData.status.value;
|
||||
this.isActive = (status === 'Active');
|
||||
});
|
||||
if (this.router.url.includes('clients')) {
|
||||
this.entityType = 'Client';
|
||||
} else if (this.router.url.includes('groups')) {
|
||||
this.entityType = 'Group';
|
||||
} else if (this.router.url.includes('centers')) {
|
||||
this.entityType = 'Center';
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user