Recurring Deposit view account homologation (#1910)

Co-authored-by: Jose Alberto Hernandez <alberto@blue-daemon.local>
This commit is contained in:
José Alberto Hernández
2023-11-26 20:00:42 -06:00
committed by GitHub
co-authored by Jose Alberto Hernandez
parent 7c53b82965
commit 79595f6a1c
72 changed files with 1591 additions and 1226 deletions
@@ -1,13 +0,0 @@
@use '@angular/material' as mat;
@mixin clients-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-clients-view {
.client-card {
.header {
background-color: mat.get-color-from-palette($primary, 500);
}
}
}
}
@@ -1,4 +1,4 @@
<mat-card class="client-card"> <mat-card class="account-card">
<mat-card-header fxLayout="column" class="header"> <mat-card-header fxLayout="column" class="header">
@@ -27,7 +27,7 @@
<p (click)="doAction('View Signature')" class="signature">{{"labels.inputs.View Signature" | translate}}</p> <p (click)="doAction('View Signature')" class="signature">{{"labels.inputs.View Signature" | translate}}</p>
</div> </div>
<div class="mat-typography client-card-title"> <div class="mat-typography account-card-title">
<mat-card-title fxLayout="row wrap" class="content"> <mat-card-title fxLayout="row wrap" class="content">
<h3 fxFlex="95%"> <h3 fxFlex="95%">
@@ -1,25 +1,6 @@
.client-card { .account-card {
margin: 0 auto;
max-width: 80rem;
width: 90%;
padding: 0;
.header { .header {
padding: 1%;
.header-title-group {
.client-card-title {
color: white;
width: 90%;
p {
color: white;
}
}
}
.profile-image-container { .profile-image-container {
margin: 4px;
.profile-image {
object-fit: cover;
border-radius: 20px;
}
.client-image-button { .client-image-button {
min-width: 26px; min-width: 26px;
padding: 0 6px; padding: 0 6px;
@@ -37,19 +18,5 @@
} }
} }
} }
.client-actions {
align-self: flex-end;
margin: 0 1%;
i {
margin-bottom: 2px;
margin-right: 4px;
}
}
}
.navigation-tabs {
overflow: auto;
}
i:hover {
cursor: pointer;
} }
} }
@@ -303,7 +303,7 @@
<tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: openSavingsColumns;" <tr mat-row *matRowDef="let row; columns: openSavingsColumns;"
[routerLink]="['../', 'savings-accounts', row.id, 'transactions']"></tr> [routerLink]="['../', 'savings-accounts', row.id, 'general']"></tr>
</table> </table>
@@ -329,7 +329,7 @@
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: closedSavingsColumns;" [routerLink]="['../', 'savings-accounts', row.id, 'transactions']"></tr> <tr mat-row *matRowDef="let row; columns: closedSavingsColumns;" [routerLink]="['../', 'savings-accounts', row.id, 'general']"></tr>
</table> </table>
@@ -397,7 +397,7 @@
<tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: openSavingsColumns;" <tr mat-row *matRowDef="let row; columns: openSavingsColumns;"
[routerLink]="['../', 'fixed-deposits-accounts', row.id, 'interest-rate-chart']"></tr> [routerLink]="['../', 'fixed-deposits-accounts', row.id, 'general']"></tr>
</table> </table>
@@ -425,7 +425,7 @@
<tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: closedSavingsColumns;" <tr mat-row *matRowDef="let row; columns: closedSavingsColumns;"
[routerLink]="['../', 'fixed-deposits-account', row.id]"></tr> [routerLink]="['../', 'fixed-deposits-accounts', row.id, 'general']"></tr>
</table> </table>
@@ -498,7 +498,7 @@
<tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="openSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: openSavingsColumns;" <tr mat-row *matRowDef="let row; columns: openSavingsColumns;"
[routerLink]="['../', 'recurringdeposits', row.id, 'interest-rate-chart']" class="select-row"></tr> [routerLink]="['../', 'recurringdeposits', row.id, 'general']" class="select-row"></tr>
</table> </table>
@@ -525,7 +525,7 @@
<tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr> <tr mat-header-row *matHeaderRowDef="closedSavingsColumns"></tr>
<tr mat-row *matRowDef="let row; columns: closedSavingsColumns;" <tr mat-row *matRowDef="let row; columns: closedSavingsColumns;"
[routerLink]="['../', 'recurringdeposits', row.id, 'interest-rate-chart']" class="select-row"></tr> [routerLink]="['../', 'recurringdeposits', row.id, 'general']" class="select-row"></tr>
</table> </table>
<!-- Shares overview Table --> <!-- Shares overview Table -->
@@ -1,16 +0,0 @@
@use '@angular/material' as mat;
@mixin fixed-deposits-account-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-fixed-deposit-account-view {
.fixed-deposits-account-card {
.header {
background-color: mat.get-color-from-palette($primary, 500);
}
.table-headers {
background-color: mat.get-color-from-palette($primary, 500);
color: mat.get-contrast-color-from-palette($primary, 500);
}
}
}
}
@@ -1,4 +1,4 @@
<mat-card class="fixed-deposits-account-card"> <mat-card class="account-card">
<mat-card-header fxLayout="column" class="header"> <mat-card-header fxLayout="column" class="header">
@@ -14,12 +14,42 @@
<div class="mat-typography account-card-title"> <div class="mat-typography account-card-title">
<mat-card-title> <mat-card-title>
<h3>
<i class="fa fa-stop" [ngClass]="fixedDepositsAccountData.status.code | statusLookup" [matTooltip]="fixedDepositsAccountData.status.value"></i> <div fxFlex="60%">
{{"labels.inputs.Account Name" | translate }} : {{fixedDepositsAccountData.depositProductName}} <h3>
</h3> <i class="fa fa-stop" [ngClass]="fixedDepositsAccountData.status.code | statusLookup" [matTooltip]="fixedDepositsAccountData.status.value"></i>
{{"labels.inputs.Fixed Deposit Product" | translate }} : {{fixedDepositsAccountData.depositProductName}}
<mifosx-account-number accountNo="{{fixedDepositsAccountData.accountNo}}"></mifosx-account-number>
</h3>
<span class="account-overview">
{{'labels.text.' + entityType | translate}} {{"labels.inputs.name" | translate}}: {{fixedDepositsAccountData.clientName ||
fixedDepositsAccountData.groupName}}
<span class="m-l-10" *ngIf="fixedDepositsAccountData.clientAccountNo">
<mifosx-account-number accountNo="{{fixedDepositsAccountData.clientAccountNo}}"></mifosx-account-number>
</span>
</span>
</div>
<div *ngIf="!fixedDepositsAccountData.status.rejected && !fixedDepositsAccountData.status.submittedAndPendingApproval">
<h3> {{"labels.heading.Account Overview" | translate}} </h3>
<table class="account-overview">
<tbody>
<tr>
<td>{{"labels.inputs.Current Balance" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.summary.accountBalance | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposit Amount" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.depositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
</tbody>
</table>
</div>
<span fxFlex="auto"></span>
<div fxFlex="5%"> <div fxFlex="5%">
<button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Loan account actions" <button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Fixed Deposit account actions"
yPosition="below"> yPosition="below">
<mat-icon matListIcon class="actions-menu"> <mat-icon matListIcon class="actions-menu">
<fa-icon icon="bars" size="sm"></fa-icon> <fa-icon icon="bars" size="sm"></fa-icon>
@@ -27,15 +57,6 @@
</button> </button>
</div> </div>
</mat-card-title> </mat-card-title>
<mat-card-subtitle>
<p>
{{"labels.inputs.Account" | translate }} #: {{fixedDepositsAccountData.accountNo}} | {{"labels.inputs.Client Name" | translate }}: {{fixedDepositsAccountData.clientName}}<br/>
<span *ngIf="!fixedDepositsAccountData.status.rejected && !fixedDepositsAccountData.status.submittedAndPendingApproval">
{{"labels.inputs.Current Balance" | translate }}: {{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.summary.accountBalance}}<br/>
{{"labels.inputs.Deposit Amount" | translate }}: {{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.depositAmount}}<br/>
</span>
</p>
</mat-card-subtitle>
</div> </div>
<mat-menu #accountMenu="matMenu"> <mat-menu #accountMenu="matMenu">
@@ -56,151 +77,15 @@
</mat-card-title-group> </mat-card-title-group>
<mat-card-actions class="account-actions">
<ng-container *ngFor="let button of buttonConfig.singleButtons">
<button mat-raised-button (click)="doAction(button.name)">
<i ngClass="{{button.icon}}"></i> {{button.name}}</button>
</ng-container>
<ng-container *ngIf="buttonConfig.options.length">
<button mat-raised-button [matMenuTriggerFor]="More">{{"labels.buttons.More" | translate }}</button>
<mat-menu #More="matMenu">
<span *ngFor="let option of buttonConfig.options">
<button mat-menu-item (click)="doAction(option.name)">{{option.name}}</button>
</span>
</mat-menu>
</ng-container>
</mat-card-actions>
</mat-card-header> </mat-card-header>
<mat-card-content class="content"> <mat-card-content class="content">
<div class="fixed-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%" fxLayout="column" fxLayoutGap="4%">
<div>
<h4 class="table-headers">{{"labels.heading.Fixed Deposit Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Activated On" | translate }}</td>
<td>{{fixedDepositsAccountData.timeline.activatedOnDate ? (fixedDepositsAccountData.timeline.activatedOnDate | dateFormat) : 'Not Activated'}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.timeline.closedOnDate">
<td>{{"labels.inputs.Closed On" | translate }}</td>
<td>{{fixedDepositsAccountData.timeline.closedOnDate | dateFormat}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Field Officer" | translate }}</td>
<td>{{fixedDepositsAccountData.fieldOfficerName ? fixedDepositsAccountData.fieldOfficerName : 'Unassigned'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td>{{fixedDepositsAccountData.maturityDate ? (fixedDepositsAccountData.maturityDate | dateFormat) : 'N/A'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposit Period" | translate }}</td>
<td>{{fixedDepositsAccountData.depositPeriod}}&nbsp;{{fixedDepositsAccountData.depositPeriodFrequency.value}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.withHoldTax">
<td>{{"labels.inputs.Tax Group" | translate }}</td>
<td>{{fixedDepositsAccountData.taxGroup.name}}</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4 class="table-headers">{{"labels.heading.Interest Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Rate" | translate }}</td>
<td>{{fixedDepositsAccountData.nominalAnnualInterestRate}}%</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Compounding Period" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCompoundingPeriodType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting Period" | translate }}</td>
<td>{{fixedDepositsAccountData.interestPostingPeriodType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Calculated Using" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCalculationType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.No. of Days in Year" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCalculationDaysInYearType.value}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-cloure Penal" | translate }}</td>
<td>{{fixedDepositsAccountData.preClosurePenalInterest}} % on {{fixedDepositsAccountData.preClosurePenalInterestOnType.value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div fxFlex="49%">
<div *ngIf="!fixedDepositsAccountData.status.rejected && !fixedDepositsAccountData.status.submittedAndPendingApproval; else otherDetails">
<h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.depositAmount}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.maturityAmount}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalDeposits">
<td>{{"labels.inputs.Total Deposits" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.summary.totalDeposits}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalWithdrawals">
<td>{{"labels.inputs.Total Withdrawals" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.summary.totalWithdrawals}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalInterestEarned >= 0">
<td>{{"labels.inputs.Total Interest Earned" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.summary.totalInterestEarned}}</td>
</tr>
</tbody>
</table>
</div>
<ng-template #otherDetails>
<div>
<h4 class="table-headers">{{"labels.heading.Other Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.depositAmount}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td>{{fixedDepositsAccountData.currency.displaySymbol}}&nbsp;{{fixedDepositsAccountData.maturityAmount}}</td>
</tr>
</tbody>
</table>
</div>
</ng-template>
</div>
</div>
<nav mat-tab-nav-bar class="navigation-tabs"> <nav mat-tab-nav-bar class="navigation-tabs">
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
[active]="general.isActive">
{{"labels.inputs.General" | translate }}
</a>
<a mat-tab-link [routerLink]="['./interest-rate-chart']" routerLinkActive #IRC="routerLinkActive" <a mat-tab-link [routerLink]="['./interest-rate-chart']" routerLinkActive #IRC="routerLinkActive"
[active]="IRC.isActive"> [active]="IRC.isActive">
{{"labels.inputs.Interest Rate Chart" | translate }} {{"labels.inputs.Interest Rate Chart" | translate }}
@@ -1,53 +0,0 @@
.fixed-deposits-account-card {
margin: 0 auto;
max-width: 80rem;
width: 90%;
padding: 0;
.header {
padding: 1%;
.header-title-group {
.account-card-title {
color: white;
width: 90%;
p {
color: white;
}
}
}
.profile-image-container {
margin: 1%;
.profile-image {
object-fit: cover;
border-radius: 20px;
}
}
.account-actions {
align-self: flex-end;
margin: 0 1%;
i {
margin-bottom: 2px;
margin-right: 4px;
}
}
}
.navigation-tabs {
background-color: #f2f2f2;
overflow: auto;
}
.content {
.fixed-deposits-account-tables {
padding: 1%;
margin: 1%;
.table-headers {
margin: 0;
padding: 6px;
}
td {
padding: 3px;
}
}
}
i, img:hover {
cursor: pointer;
}
}
@@ -15,6 +15,7 @@ import { FixedDepositsButtonsConfiguration } from './fixed-deposits-buttons.conf
/** Custom Services */ /** Custom Services */
import { FixedDepositsService } from '../fixed-deposits.service'; import { FixedDepositsService } from '../fixed-deposits.service';
import { SavingsService } from 'app/savings/savings.service'; import { SavingsService } from 'app/savings/savings.service';
import { Currency } from 'app/shared/models/general.model';
/** /**
* Fixed Deposits Account View Component * Fixed Deposits Account View Component
@@ -34,7 +35,7 @@ export class FixedDepositAccountViewComponent implements OnInit {
buttonConfig: FixedDepositsButtonsConfiguration; buttonConfig: FixedDepositsButtonsConfiguration;
/** Entity Type */ /** Entity Type */
entityType: string; entityType: string;
currencyCode: string; currency: Currency;
/** /**
* Fetches fixed deposits account data from `resolve` * Fetches fixed deposits account data from `resolve`
@@ -52,7 +53,7 @@ export class FixedDepositAccountViewComponent implements OnInit {
this.route.data.subscribe((data: { fixedDepositsAccountData: any, savingsDatatables: any }) => { this.route.data.subscribe((data: { fixedDepositsAccountData: any, savingsDatatables: any }) => {
this.fixedDepositsAccountData = data.fixedDepositsAccountData; this.fixedDepositsAccountData = data.fixedDepositsAccountData;
this.savingsDatatables = data.savingsDatatables; this.savingsDatatables = data.savingsDatatables;
this.currencyCode = this.fixedDepositsAccountData.currency.code; this.currency = this.fixedDepositsAccountData.currency;
}); });
if (this.router.url.includes('clients')) { if (this.router.url.includes('clients')) {
this.entityType = 'Client'; this.entityType = 'Client';
@@ -0,0 +1,122 @@
<div class="fixed-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%" fxLayout="column" fxLayoutGap="4%">
<div>
<h4 class="table-headers">{{"labels.heading.Fixed Deposit Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Activated On" | translate }}</td>
<td>{{fixedDepositsAccountData.timeline.activatedOnDate ? (fixedDepositsAccountData.timeline.activatedOnDate | dateFormat) : 'Not Activated'}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.timeline.closedOnDate">
<td>{{"labels.inputs.Closed On" | translate }}</td>
<td>{{fixedDepositsAccountData.timeline.closedOnDate | dateFormat}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Field Officer" | translate }}</td>
<td>{{fixedDepositsAccountData.fieldOfficerName ? fixedDepositsAccountData.fieldOfficerName : 'Unassigned'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td>{{fixedDepositsAccountData.maturityDate ? (fixedDepositsAccountData.maturityDate | dateFormat) : 'N/A'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposit Period" | translate }}</td>
<td>{{fixedDepositsAccountData.depositPeriod}}&nbsp;{{fixedDepositsAccountData.depositPeriodFrequency.value}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.withHoldTax">
<td>{{"labels.inputs.Tax Group" | translate }}</td>
<td>{{fixedDepositsAccountData.taxGroup.name}}</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4 class="table-headers">{{"labels.heading.Interest Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Rate" | translate }}</td>
<td>{{fixedDepositsAccountData.nominalAnnualInterestRate}}%</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Compounding Period" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCompoundingPeriodType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting Period" | translate }}</td>
<td>{{fixedDepositsAccountData.interestPostingPeriodType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Calculated Using" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCalculationType.value}}</td>
</tr>
<tr>
<td>{{"labels.inputs.No. of Days in Year" | translate }}</td>
<td>{{fixedDepositsAccountData.interestCalculationDaysInYearType.value}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-cloure Penal" | translate }}</td>
<td>{{fixedDepositsAccountData.preClosurePenalInterest}} % on {{fixedDepositsAccountData.preClosurePenalInterestOnType.value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div fxFlex="49%">
<div *ngIf="!fixedDepositsAccountData.status.rejected && !fixedDepositsAccountData.status.submittedAndPendingApproval; else otherDetails">
<h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.depositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.maturityAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalDeposits">
<td>{{"labels.inputs.Total Deposits" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.summary.totalDeposits | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalWithdrawals">
<td>{{"labels.inputs.Total Withdrawals" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.summary.totalWithdrawals | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="fixedDepositsAccountData.summary.totalInterestEarned >= 0">
<td>{{"labels.inputs.Total Interest Earned" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.summary.totalInterestEarned | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
</tbody>
</table>
</div>
<ng-template #otherDetails>
<div>
<h4 class="table-headers">{{"labels.heading.Other Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.depositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td class="r-amount">{{fixedDepositsAccountData.maturityAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
</tbody>
</table>
</div>
</ng-template>
</div>
</div>
@@ -0,0 +1,3 @@
.fixed-deposits-account-tables {
padding: 1%;
}
@@ -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,34 @@
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 {
fixedDepositsAccountData: any;
entityType: string;
currency: Currency;
constructor(private route: ActivatedRoute,
private router: Router) {
this.route.parent.data.subscribe((data: { fixedDepositsAccountData: any }) => {
this.fixedDepositsAccountData = data.fixedDepositsAccountData;
this.currency = this.fixedDepositsAccountData.currency;
});
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 {
}
}
@@ -40,6 +40,20 @@
<td mat-cell *matCellDef="let transaction"> {{ transaction.runningBalance }} </td> <td mat-cell *matCellDef="let transaction"> {{ transaction.runningBalance }} </td>
</ng-container> </ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Actions" | translate }} </th>
<td mat-cell class="center" *matCellDef="let transaction">
<button class="account-action-button" mat-raised-button color="primary" (click)="routeEdit($event)" [routerLink]="[transaction.id, 'reciept']">
<i class="fa fa-file" matTooltip="View Reciept"></i>
</button>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="View Journal Entries"
matTooltipPosition="left" (click)="routeEdit($event)"
[routerLink]="['/','journal-entry', 'view', 'S'+transaction.id ]">
<i class="fa fa-arrow-circle-right"></i>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row" (click)="showTransactions(row)"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row" (click)="showTransactions(row)"></tr>
@@ -1,3 +1,11 @@
<div fxLayoutAlign="end" class="container m-b-20" fxLayoutGap="2%">
<span *ngIf="allowUndo()">
<button mat-raised-button color="warn" *mifosxHasPermission="'UNDOTRANSACTION_SAVINGSACCOUNT'"
(click)="undoTransaction()">
<fa-icon icon="undo" class="m-r-10"></fa-icon>Undo
</button>
</span>
</div>
<div class="container"> <div class="container">
<mat-card> <mat-card>
@@ -1,7 +1,11 @@
/** Angular Imports */ /** Angular Imports */
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { UndoTransactionDialogComponent } from 'app/savings/savings-account-view/custom-dialogs/undo-transaction-dialog/undo-transaction-dialog.component';
import { Dates } from 'app/core/utils/dates';
import { SavingsService } from 'app/savings/savings.service';
import { SettingsService } from 'app/settings/settings.service';
/** /**
* View Transaction Component. * View Transaction Component.
@@ -12,18 +16,23 @@ import { MatDialog } from '@angular/material/dialog';
styleUrls: ['./view-transaction.component.scss'] styleUrls: ['./view-transaction.component.scss']
}) })
export class ViewTransactionComponent { export class ViewTransactionComponent {
accountId: string;
transactionId: string;
/** Transaction data. */ /** Transaction data. */
transactionData: any; transactionData: any;
/** /**
* Retrieves the Transaction data from `resolve`.
* @param {ActivatedRoute} route Activated Route.
* @param {MatDialog} dialog Dialog reference.
*/ */
constructor(private route: ActivatedRoute, constructor(private savingsService: SavingsService,
public dialog: MatDialog) { private route: ActivatedRoute,
private dateUtils: Dates,
private router: Router,
public dialog: MatDialog,
private settingsService: SettingsService) {
this.route.data.subscribe((data: { fixedDepositsAccountTransaction: any }) => { this.route.data.subscribe((data: { fixedDepositsAccountTransaction: any }) => {
console.log(this.route.parent.snapshot.params);
this.accountId = this.route.parent.snapshot.params['fixedDepositAccountId'];
this.transactionData = data.fixedDepositsAccountTransaction; this.transactionData = data.fixedDepositsAccountTransaction;
}); });
} }
@@ -35,4 +44,27 @@ export class ViewTransactionComponent {
return 'active'; return 'active';
} }
allowUndo(): boolean {
return false;
}
undoTransaction(): void {
const undoTransactionAccountDialogRef = this.dialog.open(UndoTransactionDialogComponent);
undoTransactionAccountDialogRef.afterClosed().subscribe((response: any) => {
if (response.confirm) {
const locale = this.settingsService.language.code;
const dateFormat = this.settingsService.dateFormat;
const data = {
transactionDate: this.dateUtils.formatDate(this.transactionData.date && new Date(this.transactionData.date), dateFormat),
transactionAmount: 0,
dateFormat,
locale
};
this.savingsService.executeSavingsAccountTransactionsCommand(this.accountId, 'undo', data, this.transactionData.id).subscribe(() => {
this.router.navigate(['../'], { relativeTo: this.route });
});
}
});
}
} }
@@ -22,6 +22,7 @@ import { FixedDepositsAccountTransactionResolver } from './common-resolvers/fixe
import { FixedDepositsAccountActionsResolver } from './common-resolvers/fixed-deposit-account-actions.resolver'; import { FixedDepositsAccountActionsResolver } from './common-resolvers/fixed-deposit-account-actions.resolver';
import { FixedDepositsAccountTemplateResolver } from './common-resolvers/fixed-deposit-account-template.resolver'; import { FixedDepositsAccountTemplateResolver } from './common-resolvers/fixed-deposit-account-template.resolver';
import { FixedDepositsAccountAndTemplateResolver } from './common-resolvers/fixed-deposit-account-and-template.resolver'; import { FixedDepositsAccountAndTemplateResolver } from './common-resolvers/fixed-deposit-account-and-template.resolver';
import { GeneralTabComponent } from './fixed-deposit-account-view/general-tab/general-tab.component';
const routes: Routes = [ const routes: Routes = [
{ {
@@ -53,9 +54,14 @@ const routes: Routes = [
children: [ children: [
{ {
path: '', path: '',
redirectTo: 'transactions', redirectTo: 'general',
pathMatch: 'full' pathMatch: 'full'
}, },
{
path: 'general',
component: GeneralTabComponent,
data: { title: 'Fixed Deposit Account Details', breadcrumb: 'General', routeParamBreadcrumb: false },
},
{ {
path: 'interest-rate-chart', path: 'interest-rate-chart',
component: InterestRateChartTabComponent, component: InterestRateChartTabComponent,
@@ -38,6 +38,7 @@ import { FixedDepositAccountInterestRateChartStepComponent } from './fixed-depos
import { FixedDepositAccountPreviewStepComponent } from './fixed-deposit-account-stepper/fixed-deposit-account-preview-step/fixed-deposit-account-preview-step.component'; import { FixedDepositAccountPreviewStepComponent } from './fixed-deposit-account-stepper/fixed-deposit-account-preview-step/fixed-deposit-account-preview-step.component';
import { FixedDepositAccountCurrencyStepComponent } from './fixed-deposit-account-stepper/fixed-deposit-account-currency-step/fixed-deposit-account-currency-step.component'; import { FixedDepositAccountCurrencyStepComponent } from './fixed-deposit-account-stepper/fixed-deposit-account-currency-step/fixed-deposit-account-currency-step.component';
import { EditFixedDepositAccountComponent } from './edit-fixed-deposit-account/edit-fixed-deposit-account.component'; import { EditFixedDepositAccountComponent } from './edit-fixed-deposit-account/edit-fixed-deposit-account.component';
import { GeneralTabComponent } from './fixed-deposit-account-view/general-tab/general-tab.component';
/** /**
* Fixed Deposits Module * Fixed Deposits Module
@@ -75,7 +76,8 @@ import { EditFixedDepositAccountComponent } from './edit-fixed-deposit-account/e
FixedDepositAccountInterestRateChartStepComponent, FixedDepositAccountInterestRateChartStepComponent,
FixedDepositAccountPreviewStepComponent, FixedDepositAccountPreviewStepComponent,
FixedDepositAccountCurrencyStepComponent, FixedDepositAccountCurrencyStepComponent,
EditFixedDepositAccountComponent EditFixedDepositAccountComponent,
GeneralTabComponent
], ],
imports: [ imports: [
SharedModule, SharedModule,
@@ -19,11 +19,13 @@
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field appearance="fill">
<mat-label>{{"labels.inputs.Transaction Amount" | translate }}</mat-label> <mat-label>{{"labels.inputs.Transaction Amount" | translate}}</mat-label>
<input matInput required formControlName="transactionAmount"> <span matTextSuffix class="m-l-10">{{ currency.code }}</span>
<span fxFlex="auto"></span>
<input type="number" matInput required class="right-input" formControlName="transactionAmount">
<mat-error *ngIf="depositRecurringDepositForm.controls.transactionAmount.hasError('required')"> <mat-error *ngIf="depositRecurringDepositForm.controls.transactionAmount.hasError('required')">
{{"labels.inputs.Transaction Amount" | translate }} {{ "labels.commons.is" |translate}} <strong>{{ "labels.commons.required" |translate}}</strong> {{"labels.inputs.Transaction Amount" | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
@@ -40,14 +42,12 @@
</mat-form-field> </mat-form-field>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="25%">{{"labels.inputs.Show Payment Details" | translate }}</span> <span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()">
<span fxFlex="75%" class="expandcollapsebutton" (click)="toggleDisplay()"> <mat-slide-toggle>
<button mat-raised-button color="primary" *ngIf="showPaymentDetails"> <div [className]="showPaymentDetails ? 'enabled' : 'disabled'">
<i class="fa fa-minus"></i> <span class="m-l-10">{{"labels.inputs.Show Payment Details" | translate}}</span>
</button> </div>
<button mat-raised-button color="primary" *ngIf="!showPaymentDetails"> </mat-slide-toggle>
<i class="fa fa-plus"></i>
</button>
</span> </span>
</div> </div>
@@ -59,7 +59,7 @@
<mat-form-field> <mat-form-field>
<mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label> <mat-label>{{"labels.inputs.Cheque" | translate }} #</mat-label>
<input matInput formControlName="chequeNumber"> <input matInput formControlName="checkNumber">
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field>
@@ -6,3 +6,11 @@
margin-top: -7px; margin-top: -7px;
margin-left: 2%; margin-left: 2%;
} }
.right-input {
text-align: right;
}
.right-label {
padding-right: 25px !important;
}
@@ -1,12 +1,13 @@
/** Angular Imports */ /** Angular Imports */
import { Component, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms'; import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
/** Custom Services */ /** Custom Services */
import { RecurringDepositsService } from '../../recurring-deposits.service'; import { RecurringDepositsService } from '../../recurring-deposits.service';
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Currency } from 'app/shared/models/general.model';
/** /**
* Deposits Recurring Deposits Account Component * Deposits Recurring Deposits Account Component
@@ -18,6 +19,8 @@ import { Dates } from 'app/core/utils/dates';
}) })
export class DepositRecurringDepositsAccountComponent implements OnInit { export class DepositRecurringDepositsAccountComponent implements OnInit {
@Input() currency: Currency;
/** Transactions Amount */ /** Transactions Amount */
transactionAmount: any; transactionAmount: any;
/** Outstanding Charge Amount */ /** Outstanding Charge Amount */
@@ -75,15 +78,30 @@ export class DepositRecurringDepositsAccountComponent implements OnInit {
'transactionDate': [new Date(), Validators.required], 'transactionDate': [new Date(), Validators.required],
'transactionAmount': [this.transactionAmount, Validators.required], 'transactionAmount': [this.transactionAmount, Validators.required],
'paymentTypeId': ['', Validators.required], 'paymentTypeId': ['', Validators.required],
'accountNumber': '',
'chequeNumber': '',
'routingCode': '',
'receiptNumber': '',
'bankNumber': '',
'note': '' 'note': ''
}); });
} }
/**
* Add payment detail fields to the UI.
*/
addPaymentDetails() {
this.showPaymentDetails = !this.showPaymentDetails;
if (this.showPaymentDetails) {
this.depositRecurringDepositForm.addControl('accountNumber', new UntypedFormControl(''));
this.depositRecurringDepositForm.addControl('checkNumber', new UntypedFormControl(''));
this.depositRecurringDepositForm.addControl('routingCode', new UntypedFormControl(''));
this.depositRecurringDepositForm.addControl('receiptNumber', new UntypedFormControl(''));
this.depositRecurringDepositForm.addControl('bankNumber', new UntypedFormControl(''));
} else {
this.depositRecurringDepositForm.removeControl('accountNumber');
this.depositRecurringDepositForm.removeControl('checkNumber');
this.depositRecurringDepositForm.removeControl('routingCode');
this.depositRecurringDepositForm.removeControl('receiptNumber');
this.depositRecurringDepositForm.removeControl('bankNumber');
}
}
/** /**
* Toggles the display of payment details * Toggles the display of payment details
*/ */
@@ -2,8 +2,8 @@
<mifosx-undo-approval-recurring-deposits-account *ngIf="actions['Undo Approval']"></mifosx-undo-approval-recurring-deposits-account> <mifosx-undo-approval-recurring-deposits-account *ngIf="actions['Undo Approval']"></mifosx-undo-approval-recurring-deposits-account>
<mifosx-approve-recurring-deposits-account *ngIf="actions['Approve']"></mifosx-approve-recurring-deposits-account> <mifosx-approve-recurring-deposits-account *ngIf="actions['Approve']"></mifosx-approve-recurring-deposits-account>
<mifosx-reject-recurring-deposits-account *ngIf="actions['Reject']"></mifosx-reject-recurring-deposits-account> <mifosx-reject-recurring-deposits-account *ngIf="actions['Reject']"></mifosx-reject-recurring-deposits-account>
<mifosx-withdraw-by-client-recurring-deposits-account *ngIf="actions['Withdraw By Client']"></mifosx-withdraw-by-client-recurring-deposits-account> <mifosx-withdraw-by-client-recurring-deposits-account *ngIf="actions['Withdrawn by client']"></mifosx-withdraw-by-client-recurring-deposits-account>
<mifosx-add-charge-recurring-deposits-account *ngIf="actions['Add Charge']"></mifosx-add-charge-recurring-deposits-account> <mifosx-add-charge-recurring-deposits-account *ngIf="actions['Add Charge']"></mifosx-add-charge-recurring-deposits-account>
<mifosx-premature-close-recurring-deposit-account *ngIf="actions['Premature Close']"></mifosx-premature-close-recurring-deposit-account> <mifosx-premature-close-recurring-deposit-account *ngIf="actions['Premature Close']"></mifosx-premature-close-recurring-deposit-account>
<mifosx-close-recurring-deposits-account *ngIf="actions['Close']"></mifosx-close-recurring-deposits-account> <mifosx-close-recurring-deposits-account *ngIf="actions['Close']"></mifosx-close-recurring-deposits-account>
<mifosx-deposit-recurring-deposits-account *ngIf="actions['Deposit']"></mifosx-deposit-recurring-deposits-account> <mifosx-deposit-recurring-deposits-account [currency]="currency" *ngIf="actions['Deposit']"></mifosx-deposit-recurring-deposits-account>
@@ -1,5 +1,6 @@
import { Component, OnInit } from '@angular/core'; import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Currency } from 'app/shared/models/general.model';
@Component({ @Component({
selector: 'mifosx-recurring-deposits-account-actions', selector: 'mifosx-recurring-deposits-account-actions',
@@ -14,7 +15,7 @@ export class RecurringDepositsAccountActionsComponent {
'Undo Approval': boolean 'Undo Approval': boolean
'Approve': boolean 'Approve': boolean
'Reject': boolean 'Reject': boolean
'Withdraw By Client': boolean 'Withdrawn by client': boolean
'Add Charge': boolean 'Add Charge': boolean
'Premature Close': boolean 'Premature Close': boolean
'Close': boolean 'Close': boolean
@@ -24,17 +25,24 @@ export class RecurringDepositsAccountActionsComponent {
'Undo Approval': false, 'Undo Approval': false,
'Approve': false, 'Approve': false,
'Reject': false, 'Reject': false,
'Withdraw By Client': false, 'Withdrawn by client': false,
'Add Charge': false, 'Add Charge': false,
'Premature Close': false, 'Premature Close': false,
'Close': false, 'Close': false,
'Deposit': false 'Deposit': false
}; };
currency: Currency;
/** /**
* @param {ActivatedRoute} route Activated Route * @param {ActivatedRoute} route Activated Route
*/ */
constructor(private route: ActivatedRoute) { constructor(private route: ActivatedRoute) {
this.route.data.subscribe((data: { recurringDepositsAccountActionData: any }) => {
if (data.recurringDepositsAccountActionData) {
this.currency = data.recurringDepositsAccountActionData.currency;
}
});
const name = this.route.snapshot.params['name']; const name = this.route.snapshot.params['name'];
this.actions[name] = true; this.actions[name] = true;
} }
@@ -0,0 +1,286 @@
<div class="recurring-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Account Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Field Officer" | translate }}</td>
<td>{{recurringDepositsAccountData.fieldOfficerName}}<span
*ngIf="!recurringDepositsAccountData.fieldOfficerName">{{"labels.inputs.Unassigned" | translate }}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Activation date" | translate }}</td>
<td>{{recurringDepositsAccountData.timeline.activatedOnDate | dateFormat}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.maturityDate | dateFormat}}</span></td>
</tr>
<tr
*ngIf="recurringDepositsAccountData.timeline.closedOnDate || recurringDepositsAccountData.summary.totalWitddrawals">
<td *ngIf="recurringDepositsAccountData.timeline.closedOnDate">
{{"labels.inputs.Closed on Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.timeline.closedOnDate | dateFormat}}</span></td>
</tr>
<tr>
</tr>
<tr>
<td><span>{{recurringDepositsAccountData.recurringFrequency}}
&nbsp;{{recurringDepositsAccountData.recurringFrequencyType.value}}
</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.minBalanceForInterestCalculation">
<td> {{"labels.inputs.Balance Required For Interest Calculation" | translate }}</td>
<td><span>{{recurringDepositsAccountData.minBalanceForInterestCalculation}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.witdHoldTax">
<td> {{"labels.inputs.Witdhold Tax Group" | translate }} </td>
<td><span>{{recurringDepositsAccountData.taxGroup.name}}</span></td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td class="r-amount">
<span>{{recurringDepositsAccountData.depositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td class="r-amount">
<span>{{recurringDepositsAccountData.maturityAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Recurring Deposit Amount" | translate }}</td>
<td class="r-amount">
<span>{{recurringDepositsAccountData?.mandatoryRecommendedDepositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposits till Date" | translate }}</td>
<td class="r-amount"><span
*ngIf="recurringDepositsAccountData.summary.totalDeposits">{{recurringDepositsAccountData.summary.totalDeposits | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalDeposits">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Withdrwals till Date" | translate }}</td>
<td class="r-amount"><span
*ngIf="recurringDepositsAccountData.summary.totalWithdrawals">{{recurringDepositsAccountData.summary.totalWithdrawals | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalWithdrawals">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned >= 0">
<td>{{"labels.inputs.Interest Earned" | translate }}</td>
<td class="r-amount"><span>{{recurringDepositsAccountData.summary.totalInterestEarned | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Date of Deposit" | translate }}</td>
<td>
<span *ngIf="!recurringDepositsAccountData.expectedFirstDepositOnDate">{{recurringDepositsAccountData.timeline.activatedOnDate | dateFormat}}
<span *ngIf="!recurringDepositsAccountData.timeline.activatedOnDate">{{"labels.inputs.Not Activated" | translate }}</span>
</span>
<span *ngIf="recurringDepositsAccountData.expectedFirstDepositOnDate" >{{recurringDepositsAccountData.expectedFirstDepositOnDate | dateFormat}}
<span *ngIf="!recurringDepositsAccountData.expectedFirstDepositOnDate">{{"labels.inputs.Not Activated" | translate }}</span>
</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Period" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.depositPeriod}}&nbsp;{{recurringDepositsAccountData.depositPeriodFrequency.value}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.maturityDate">
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.maturityDate | dateFormat}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Total Deposits" | translate }}</td>
<td class="r-amount">
<span *ngIf="recurringDepositsAccountData.summary.totalDeposits">{{ recurringDepositsAccountData.summary.totalDeposits | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span *ngIf="!recurringDepositsAccountData.summary.totalDeposits">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr >
<td> {{"labels.inputs.Actual Available Balance" | translate }}</td>
<td>{{ recurringDepositsAccountData.currency.displaySymbol }}&nbsp;{{ recurringDepositsAccountData.summary.accountBalance }}</td>
</tr>
<tr>
<td> {{"labels.inputs.Recurring Deposit Amount" | translate }}</td>
<td class="r-amount">
{{ recurringDepositsAccountData.mandatoryRecommendedDepositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned">
<td> {{"labels.inputs.Interests Earned" | translate }} </td>
<td><span>{{ recurringDepositsAccountData.currency.displaySymbol }}&nbsp;{{ recurringDepositsAccountData.summary.totalInterestEarned }}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalWithdrawals">
<td> {{"labels.inputs.Total Withdrawls" | translate }} </td>
<td class="r-amount">
<span>{{ recurringDepositsAccountData.summary.totalWithdrawals | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.minBalanceForInterestCalculation">
<td> {{"labels.inputs.Balance Required For Interest Calculation" | translate }} </td>
<td class="r-amount">
<span>{{ recurringDepositsAccountData.minBalanceForInterestCalculation | number }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td class="r-amount"><span
*ngIf="recurringDepositsAccountData.depositAmount">{{ recurringDepositsAccountData.depositAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.depositAmount">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Rate of Interest" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.nominalAnnualInterestRate}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.maturityDate">
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td>
<span>{{ recurringDepositsAccountData.maturityAmount | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Total Withdrawls" | translate }} </td>
<td class="r-amount">
<span
*ngIf="recurringDepositsAccountData.summary.totalWithdrawals">{{ recurringDepositsAccountData.summary.totalWithdrawals | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalWithdrawals">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.timeline.closedOnDate">
<td> {{"labels.inputs.Closed on Date" | translate }} </td>
<td>
{{ recurringDepositsAccountData.timeline.closedOnDate | dateFormat }}
</td>
</tr>
<tr>
<td> {{"labels.inputs.Deposits Frequency" | translate }} </td>
<td>
{{ recurringDepositsAccountData.recurringFrequency }}&nbsp;{{ recurringDepositsAccountData.recurringFrequencyType.value }}
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned">
<td> {{"labels.inputs.Interests Posted" | translate }} </td>
<td class="r-amount">
<span
*ngIf="recurringDepositsAccountData.summary.totalInterestPosted">{{recurringDepositsAccountData.summary.totalInterestPosted | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalInterestPosted">{{ 0 | currency:currency.code:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="recurring-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Interest Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Rate" | translate }}</td>
<td class="r-amount">{{recurringDepositsAccountData.nominalAnnualInterestRate}}%</td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Compounding Period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCompoundingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting Period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestPostingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest calculated using" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationType.value}}</span></td>
</tr>
<tr>
<td># {{"labels.inputs.Days in Year" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationDaysInYearType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-closure penal Interest (less)" | translate }}</td>
<td><span>{{recurringDepositsAccountData.preClosurePenalInterest}} % on
{{recurringDepositsAccountData.preClosurePenalInterestOnType.value}}</span></td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Compounding Period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCompoundingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting Period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestPostingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest calculated using" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationType.value}}</span></td>
</tr>
<tr>
<td># {{"labels.inputs.Days in Year" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationDaysInYearType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-closure penal Interest (less)" | translate }}</td>
<td><span>{{recurringDepositsAccountData.preClosurePenalInterest}} % on
{{recurringDepositsAccountData.preClosurePenalInterestOnType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.witdHoldTax">
<td> {{"labels.inputs.Witdhold Tax Group" | translate }} </td>
<td><span>{{recurringDepositsAccountData.taxGroup.name}}</span></td>
</tr>
</tbody>
</table>
</div>
</div>
@@ -0,0 +1,3 @@
.recurring-deposits-account-tables {
padding: 1%;
}
@@ -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,35 @@
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 {
recurringDepositsAccountData: any;
isprematureAllowed = false;
entityType: string;
currency: Currency;
constructor(private route: ActivatedRoute,
private router: Router) {
this.route.parent.data.subscribe((data: { recurringDepositsAccountData: any }) => {
this.recurringDepositsAccountData = data.recurringDepositsAccountData;
this.currency = this.recurringDepositsAccountData.currency;
this.isprematureAllowed = data.recurringDepositsAccountData.maturityDate != null;
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 {
}
}
@@ -1,16 +0,0 @@
@use '@angular/material' as mat;
@mixin recurring-deposits-account-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-recurring-deposits-account-view {
.recurringDeposits-account-card {
.header {
background-color: mat.get-color-from-palette($primary, 500);
}
.table-headers {
background-color: mat.get-color-from-palette($primary, 500);
color: mat.get-contrast-color-from-palette($primary, 500);
}
}
}
}
@@ -1,4 +1,4 @@
<mat-card class="recurring-deposits-account-card"> <mat-card class="account-card">
<mat-card-header fxLayout="column" class="header"> <mat-card-header fxLayout="column" class="header">
@@ -13,11 +13,49 @@
<div class="mat-typography account-card-title"> <div class="mat-typography account-card-title">
<mat-card-title> <mat-card-title>
<h3 fxFlex="95%"> <div fxFlex="60%">
<i class="fa fa-stop" [ngClass]="recurringDepositsAccountData.status.code | statusLookup" <h3>
[matTooltip]="recurringDepositsAccountData.status.value"></i> <i class="fa fa-stop" [ngClass]="recurringDepositsAccountData.status.code | statusLookup"
{{"labels.inputs.Account Name" | translate }} : {{recurringDepositsAccountData.depositProductName}} [matTooltip]="recurringDepositsAccountData.status.value"></i>
</h3> {{"labels.inputs.Recurring Deposit" | translate }} : {{recurringDepositsAccountData.depositProductName}}
<mifosx-account-number accountNo="{{recurringDepositsAccountData.accountNo}}"></mifosx-account-number>
</h3>
<span class="account-overview">
{{'labels.text.' + entityType | translate}} {{"labels.inputs.name" | translate}}:
{{recurringDepositsAccountData.clientName ||
recurringDepositsAccountData.groupName}}
<span class="m-l-10" *ngIf="recurringDepositsAccountData.clientAccountNo">
<mifosx-account-number
accountNo="{{recurringDepositsAccountData.clientAccountNo}}"></mifosx-account-number>
</span>
</span>
</div>
<div
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h3> {{"labels.heading.Account Overview" | translate}} </h3>
<table class="account-overview">
<tbody>
<tr>
<td>{{"labels.inputs.Current Balance" | translate }}</td>
<td class="r-amount">{{recurringDepositsAccountData.summary.accountBalance |
currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposit Amount" | translate }}</td>
<td class="r-amount">{{recurringDepositsAccountData.depositAmount |
currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposit Period" | translate }}</td>
<td class="r-amount">{{recurringDepositsAccountData.depositPeriod | number}}</td>
</tr>
</tbody>
</table>
</div>
<span fxFlex="auto"></span>
<div fxFlex="5%"> <div fxFlex="5%">
<button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Loan account actions" <button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Loan account actions"
yPosition="below"> yPosition="below">
@@ -27,33 +65,26 @@
</button> </button>
</div> </div>
</mat-card-title> </mat-card-title>
<mat-card-subtitle>
<p>
{{"labels.inputs.Account" | translate }} #: {{recurringDepositsAccountData.accountNo}} | {{"labels.inputs.Client Name" | translate }}:
{{recurringDepositsAccountData.clientName}}<br />
<span
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
{{"labels.inputs.Current Balance" | translate }}:
{{recurringDepositsAccountData.currency.displaySymbol}}&nbsp;{{recurringDepositsAccountData.summary.accountBalance}}<br />
{{"labels.inputs.Available Balance" | translate }}:
{{recurringDepositsAccountData.currency.displaySymbol}}&nbsp;{{recurringDepositsAccountData.summary.availableBalance}}<br />
</span>
</p>
</mat-card-subtitle>
</div> </div>
<mat-menu #accountMenu="matMenu"> <mat-menu #accountMenu="matMenu">
<ng-container *ngFor="let button of buttonConfig.singleButtons"> <ng-container *ngFor="let item of buttonConfig.singleButtons">
<button mat-raised-button (click)="doAction(button.name)"> <button mat-menu-item *mifosxHasPermission="item.taskPermissionName" (click)="doAction(item.name)">
<i ngClass="{{button.icon}}"></i> {{button.name}}</button> <mat-icon matListIcon>
<fa-icon icon="{{item.icon}}" size="sm"></fa-icon>
</mat-icon>
<span> {{'labels.menus.' + item.name | translate}} </span>
</button>
</ng-container> </ng-container>
<ng-container *ngIf="buttonConfig.options.length"> <ng-container *ngIf="buttonConfig.options.length">
<button mat-raised-button [matMenuTriggerFor]="More">More</button> <button mat-menu-item [matMenuTriggerFor]="More">{{'labels.menus.More' | translate}}</button>
<mat-menu #More="matMenu"> <mat-menu #More="matMenu">
<span *ngFor="let option of buttonConfig.options"> <span *ngFor="let option of buttonConfig.options">
<button mat-menu-item (click)="doAction(option.name)">{{option.name}}</button> <button mat-menu-item *mifosxHasPermission="option.taskPermissionName"
</span> (click)="doAction(option.name)">{{'labels.menus.' + option.name | translate}}</button>
</span>
</mat-menu> </mat-menu>
</ng-container> </ng-container>
@@ -61,341 +92,42 @@
</mat-card-title-group> </mat-card-title-group>
<mat-card-actions class="account-actions">
<ng-container *ngFor="let button of buttonConfig.singleButtons">
<button mat-raised-button (click)="doAction(button.name)">
<i ngClass="{{button.icon}}"></i> {{button.name}}</button>
</ng-container>
<ng-container *ngIf="buttonConfig.options.length">
<button mat-raised-button [matMenuTriggerFor]="More">{{"labels.buttons.More" | translate }}</button>
<mat-menu #More="matMenu">
<span *ngFor="let option of buttonConfig.options">
<button mat-menu-item (click)="doAction(option.name)">{{option.name}}</button>
</span>
</mat-menu>
</ng-container>
</mat-card-actions>
</mat-card-header> </mat-card-header>
<mat-card-content class="content"> <mat-card-content class="content">
<div class="recurring-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Savings Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Field Officer" | translate }}</td>
<td>{{recurringDepositsAccountData.fieldOfficerName}}<span
*ngIf="!recurringDepositsAccountData.fieldOfficerName">{{"labels.inputs.Unassigned" | translate }}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Activation date" | translate }}</td>
<td>{{recurringDepositsAccountData.timeline.activatedOnDate | dateFormat}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.maturityDate | dateFormat}}</span></td>
</tr>
<tr
*ngIf="recurringDepositsAccountData.timeline.closedOnDate || recurringDepositsAccountData.summary.totalWitddrawals">
<td *ngIf="recurringDepositsAccountData.timeline.closedOnDate">
{{"labels.inputs.Closed on Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.timeline.closedOnDate | dateFormat}}</span></td>
</tr>
<tr>
</tr>
<tr>
<td><span>{{recurringDepositsAccountData.recurringFrequency}}
&nbsp;{{recurringDepositsAccountData.recurringFrequencyType.value}}
</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.minBalanceForInterestCalculation">
<td> {{"labels.inputs.Balance Required For Interest Calculation" | translate }}</td>
<td><span>{{recurringDepositsAccountData.minBalanceForInterestCalculation}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.witdHoldTax">
<td> {{"labels.inputs.Witdhold Tax Group" | translate }} </td>
<td><span>{{recurringDepositsAccountData.taxGroup.name}}</span></td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Performance History" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.depositAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.maturityAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Recurring Deposit Amount" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData?.mandatoryRecommendedDepositAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Deposits till Date" | translate }}</td>
<td><span
*ngIf="recurringDepositsAccountData.summary.totalDeposits">{{recurringDepositsAccountData.summary.totalDeposits | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalDeposits">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Withdrwals till Date" | translate }}</td>
<td><span
*ngIf="recurringDepositsAccountData.summary.totalWithdrawals">{{recurringDepositsAccountData.summary.totalWithdrawals | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalWithdrawals">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned >= 0">
<td >{{"labels.inputs.Interest Earned" | translate }}</td>
<td><span>{{recurringDepositsAccountData.currency.displaySymbol}}&nbsp;{{recurringDepositsAccountData.summary.totalInterestEarned| formatNumber}}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Date of Deposit" | translate }}</td>
<td>
<span *ngIf="!recurringDepositsAccountData.expectedFirstDepositOnDate">{{recurringDepositsAccountData.timeline.activatedOnDate | dateFormat}}
<span *ngIf="!recurringDepositsAccountData.timeline.activatedOnDate">{{"labels.inputs.Not Activated" | translate }}</span>
</span>
<span *ngIf="recurringDepositsAccountData.expectedFirstDepositOnDate" >{{recurringDepositsAccountData.expectedFirstDepositOnDate | dateFormat}}
<span *ngIf="!recurringDepositsAccountData.expectedFirstDepositOnDate">{{"labels.inputs.Not Activated" | translate }}</span>
</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Period" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.depositPeriod}}&nbsp;{{recurringDepositsAccountData.depositPeriodFrequency.value}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.maturityDate">
<td>{{"labels.inputs.Maturity Date" | translate }}</td>
<td><span>{{recurringDepositsAccountData.maturityDate | dateFormat}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Total Deposits" | translate }}</td>
<td>
<span *ngIf="recurringDepositsAccountData.summary.totalDeposits">{{ recurringDepositsAccountData.summary.totalDeposits | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span *ngIf="!recurringDepositsAccountData.summary.totalDeposits">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr >
<td> {{"labels.inputs.Actual Available Balance" | translate }}</td>
<td>{{ recurringDepositsAccountData.currency.displaySymbol }}&nbsp;{{ recurringDepositsAccountData.summary.accountBalance }}</td>
</tr>
<tr>
<td> {{"labels.inputs.Recurring Deposits Amount" | translate }}</td>
<td>
{{ recurringDepositsAccountData.mandatoryRecommendedDepositAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned">
<td> {{"labels.inputs.Interests Earned" | translate }} </td>
<td><span>{{ recurringDepositsAccountData.currency.displaySymbol }}&nbsp;{{ recurringDepositsAccountData.summary.totalInterestEarned }}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalWithdrawals">
<td> {{"labels.inputs.Total Withdrawls" | translate }} </td>
<td>
<span>{{ recurringDepositsAccountData.summary.totalWithdrawals | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.minBalanceForInterestCalculation">
<td> {{"labels.inputs.Balance Required For Interest Calculation" | translate }} </td>
<td>
<span>{{ recurringDepositsAccountData.minBalanceForInterestCalculation | number }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Principal Amount" | translate }}</td>
<td><span
*ngIf="recurringDepositsAccountData.depositAmount">{{ recurringDepositsAccountData.depositAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.depositAmount">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Rate of Interest" | translate }}</td>
<td>
<span>{{recurringDepositsAccountData.nominalAnnualInterestRate}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.maturityDate">
<td>{{"labels.inputs.Maturity Amount" | translate }}</td>
<td>
<span>{{ recurringDepositsAccountData.maturityAmount | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr>
<td>{{"labels.inputs.Total Withdrawls" | translate }} </td>
<td>
<span
*ngIf="recurringDepositsAccountData.summary.totalWithdrawals">{{ recurringDepositsAccountData.summary.totalWithdrawals | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalWithdrawals">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.timeline.closedOnDate">
<td> {{"labels.inputs.Closed on Date" | translate }} </td>
<td>
{{ recurringDepositsAccountData.timeline.closedOnDate | dateFormat }}
</td>
</tr>
<tr>
<td> {{"labels.inputs.Deposits Frequency" | translate }} </td>
<td>
{{ recurringDepositsAccountData.recurringFrequency }}&nbsp;{{ recurringDepositsAccountData.recurringFrequencyType.value }}
</td>
</tr>
<tr *ngIf="recurringDepositsAccountData.summary.totalInterestEarned">
<td> {{"labels.inputs.Interests Posted" | translate }} </td>
<td>
<span
*ngIf="recurringDepositsAccountData.summary.totalInterestPosted">{{recurringDepositsAccountData.summary.totalInterestPosted | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
<span
*ngIf="!recurringDepositsAccountData.summary.totalInterestPosted">{{ 0 | currency:currencyCode:'symbol-narrow':'1.2-2'}}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="recurring-deposits-account-tables" fxLayout="row" fxLayoutGap="2%">
<div fxFlex="49%"
*ngIf="!recurringDepositsAccountData.status.rejected && !recurringDepositsAccountData.status.submittedAndPendingApproval">
<h4 class="table-headers">{{"labels.heading.Interest Details" | translate }}</h4>
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Rate" | translate }}</td>
<td><span>{{recurringDepositsAccountData.nominalAnnualInterestRate}}%</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Compounding period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCompoundingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestPostingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest calculated using" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationType.value}}</span></td>
</tr>
<tr>
<td># {{"labels.inputs.Days in Year" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationDaysInYearType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-closure penal Interest (less)" | translate }}</td>
<td><span>{{recurringDepositsAccountData.preClosurePenalInterest}} % on
{{recurringDepositsAccountData.preClosurePenalInterestOnType.value}}</span></td>
</tr>
</tbody>
</table>
</div>
<div fxFlex="49%"
*ngIf="recurringDepositsAccountData.status.rejected || recurringDepositsAccountData.status.submittedAndPendingApproval">
<table>
<tbody>
<tr>
<td>{{"labels.inputs.Interest Compounding Period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCompoundingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest Posting period" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestPostingPeriodType.value}}</span></td>
</tr>
<tr>
<td>{{"labels.inputs.Interest calculated using" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationType.value}}</span></td>
</tr>
<tr>
<td># {{"labels.inputs.Days in Year" | translate }}</td>
<td><span>{{recurringDepositsAccountData.interestCalculationDaysInYearType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.preClosurePenalApplicable">
<td>{{"labels.inputs.Pre-closure penal Interest (less)" | translate }}</td>
<td><span>{{recurringDepositsAccountData.preClosurePenalInterest}} % on
{{recurringDepositsAccountData.preClosurePenalInterestOnType.value}}</span></td>
</tr>
<tr *ngIf="recurringDepositsAccountData.witdHoldTax">
<td> {{"labels.inputs.Witdhold Tax Group" | translate }} </td>
<td><span>{{recurringDepositsAccountData.taxGroup.name}}</span></td>
</tr>
</tbody>
</table>
</div>
</div>
<nav mat-tab-nav-bar class="navigation-tabs"> <nav mat-tab-nav-bar class="navigation-tabs">
<a mat-tab-link [routerLink]="['./interest-rate-chart']" routerLinkActive #IRC="routerLinkActive" <a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
[active]="IRC.isActive"> [active]="general.isActive">
{{"labels.inputs.Interest Rate Chart" | translate }} {{"labels.inputs.General" | translate }}
</a>
<a mat-tab-link [routerLink]="['./interest-rate-chart']" routerLinkActive #IRC="routerLinkActive"
[active]="IRC.isActive">
{{"labels.inputs.Interest Rate Chart" | translate }}
</a>
<ng-container *ngIf="recurringDepositsAccountData.transactions">
<a mat-tab-link [routerLink]="['./transactions']" routerLinkActive #transactions="routerLinkActive"
[active]="transactions.isActive">
{{"labels.inputs.Transactions" | translate }}
</a> </a>
<ng-container *ngIf="recurringDepositsAccountData.transactions"> </ng-container>
<a mat-tab-link [routerLink]="['./transactions']" routerLinkActive #transactions="routerLinkActive" <a mat-tab-link [routerLink]="['./charges']" routerLinkActive #charges="routerLinkActive"
[active]="transactions.isActive"> [active]="charges.isActive">
{{"labels.inputs.Transactions" | translate }} {{"labels.inputs.Charges" | translate }}
</a> </a>
</ng-container> <ng-container *ngIf="recurringDepositsAccountData.clientId">
<a mat-tab-link [routerLink]="['./charges']" routerLinkActive #charges="routerLinkActive" [active]="charges.isActive"> <a mat-tab-link [routerLink]="['./standing-instructions-tab']" routerLinkActive
{{"labels.inputs.Charges" | translate }} #standingInstructions="routerLinkActive" [active]="standingInstructions.isActive">
{{"labels.inputs.Standing Instructions" | translate }}
</a> </a>
<ng-container *ngIf="recurringDepositsAccountData.clientId"> </ng-container>
<a mat-tab-link [routerLink]="['./standing-instructions-tab']" routerLinkActive #standingInstructions="routerLinkActive" <ng-container *ngFor="let savingsDatatable of savingsDatatables">
[active]="standingInstructions.isActive"> <a mat-tab-link *mifosxHasPermission="'READ_' + savingsDatatable.registeredTableName"
{{"labels.inputs.Standing Instructions" | translate }} [routerLink]="['./datatables',savingsDatatable.registeredTableName]" routerLinkActive
</a> #datatable="routerLinkActive" [active]="datatable.isActive">
</ng-container> {{savingsDatatable.registeredTableName}}
<ng-container *ngFor="let savingsDatatable of savingsDatatables"> </a>
<a mat-tab-link *mifosxHasPermission="'READ_' + savingsDatatable.registeredTableName" </ng-container>
[routerLink]="['./datatables',savingsDatatable.registeredTableName]" routerLinkActive #datatable="routerLinkActive"
[active]="datatable.isActive">
{{savingsDatatable.registeredTableName}}
</a>
</ng-container>
</nav> </nav>
<router-outlet></router-outlet> <router-outlet></router-outlet>
@@ -1,53 +0,0 @@
.recurring-deposits-account-card {
margin: 0 auto;
max-width: 80rem;
width: 90%;
padding: 0;
.header {
padding: 1%;
.header-title-group {
.account-card-title {
color: white;
width: 90%;
p {
color: white;
}
}
}
.profile-image-container {
margin: 1%;
.profile-image {
object-fit: cover;
border-radius: 20px;
}
}
.account-actions {
align-self: flex-end;
margin: 0 1%;
i {
margin-bottom: 2px;
margin-right: 4px;
}
}
}
.navigation-tabs {
background-color: #f2f2f2;
overflow: auto;
}
.content {
.recurringDeposits-account-tables {
padding: 1%;
margin: 1%;
.table-headers {
margin: 0;
padding: 6px;
}
td {
padding: 3px;
}
}
}
i, img:hover {
cursor: pointer;
}
}
@@ -13,6 +13,7 @@ import { RecurringDepositsButtonsConfiguration } from './recurring-deposits-butt
/** Custom Dialogs */ /** Custom Dialogs */
import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component'; import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component';
import { RecurringDepositConfirmationDialogComponent } from './custom-dialogs/recurring-deposit-confirmation-dialog/recurring-deposit-confirmation-dialog.component'; import { RecurringDepositConfirmationDialogComponent } from './custom-dialogs/recurring-deposit-confirmation-dialog/recurring-deposit-confirmation-dialog.component';
import { Currency } from 'app/shared/models/general.model';
/** /**
@@ -35,7 +36,8 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
savingsDatatables: any; savingsDatatables: any;
/** Is Prematured Allowed */ /** Is Prematured Allowed */
isprematureAllowed: any; isprematureAllowed: any;
currencyCode: string; entityType: string;
currency: Currency;
/** /**
* Fetches recurringDeposits account data from `resolve` * Fetches recurringDeposits account data from `resolve`
* @param {ActivatedRoute} route Activated Route * @param {ActivatedRoute} route Activated Route
@@ -51,8 +53,15 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
this.recurringDepositsAccountData = data.recurringDepositsAccountData; this.recurringDepositsAccountData = data.recurringDepositsAccountData;
this.charges = this.recurringDepositsAccountData.charges; this.charges = this.recurringDepositsAccountData.charges;
this.savingsDatatables = data.savingsDatatables; this.savingsDatatables = data.savingsDatatables;
this.currencyCode = this.recurringDepositsAccountData.currency.code; this.currency = this.recurringDepositsAccountData.currency;
this.isprematureAllowed = data.recurringDepositsAccountData.maturityDate != null; this.isprematureAllowed = data.recurringDepositsAccountData.maturityDate != null;
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';
}
}); });
} }
@@ -69,6 +78,7 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
if (this.recurringDepositsAccountData.clientId && this.recurringDepositsAccountData.status.value === 'Matured') { if (this.recurringDepositsAccountData.clientId && this.recurringDepositsAccountData.status.value === 'Matured') {
this.buttonConfig.addOption({ this.buttonConfig.addOption({
name: 'Transfer Funds', name: 'Transfer Funds',
taskPermissionName: 'CREATE_ACCOUNTTRANSFER'
}); });
} }
@@ -77,6 +87,7 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
if (element.name === 'Annual fee - INR') { if (element.name === 'Annual fee - INR') {
this.buttonConfig.addOption({ this.buttonConfig.addOption({
name: 'Apply Annual Fees', name: 'Apply Annual Fees',
taskPermissionName: 'APPLYANNUALFEE_SAVINGSACCOUNT'
}); });
} }
}); });
@@ -85,7 +96,8 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
if (this.recurringDepositsAccountData.clientId && this.recurringDepositsAccountData.status.value === 'Active') { if (this.recurringDepositsAccountData.clientId && this.recurringDepositsAccountData.status.value === 'Active') {
if (this.recurringDepositsAccountData.allowWithdrawal === true) { if (this.recurringDepositsAccountData.allowWithdrawal === true) {
this.buttonConfig.addOption({ this.buttonConfig.addOption({
name: 'Withdraw' name: 'Withdraw',
taskPermissionName: 'WITHDRAW_RECURRINGDEPOSITACCOUNT'
}); });
} }
if (this.recurringDepositsAccountData.charges) { if (this.recurringDepositsAccountData.charges) {
@@ -93,6 +105,7 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
if (element.name === 'Annual fee - INR') { if (element.name === 'Annual fee - INR') {
this.buttonConfig.addOption({ this.buttonConfig.addOption({
name: 'Apply Annual Fees', name: 'Apply Annual Fees',
taskPermissionName: 'APPLYANNUALFEE_SAVINGSACCOUNT'
}); });
} }
}); });
@@ -101,7 +114,8 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
if (!this.isprematureAllowed) { if (!this.isprematureAllowed) {
this.buttonConfig.addButton({ this.buttonConfig.addButton({
name: 'Close', name: 'Close',
icon: 'fa fa-arrow-right' icon: 'arrow-right',
taskPermissionName: 'CLOSE_RECURRINGDEPOSITACCOUNT'
}); });
} }
@@ -144,7 +158,7 @@ export class RecurringDepositsAccountViewComponent implements OnInit {
case 'Reject': case 'Reject':
case 'Undo Approval': case 'Undo Approval':
case 'Add Charge': case 'Add Charge':
case 'Withdraw By Client': case 'Withdrawn by client':
case 'Premature Close': case 'Premature Close':
case 'Close': case 'Close':
case 'Deposit': case 'Deposit':
@@ -3,13 +3,14 @@ export class RecurringDepositsButtonsConfiguration {
optionArray: { optionArray: {
name: string, name: string,
taskPermissionName?: string, icon?: string,
taskPermissionName: string,
}[]; }[];
buttonsArray: { buttonsArray: {
name: string, name: string,
icon: string, icon: string,
taskPermissionName?: string, taskPermissionName: string,
}[]; }[];
constructor(status: string) { constructor(status: string) {
@@ -31,15 +32,18 @@ export class RecurringDepositsButtonsConfiguration {
this.buttonsArray = [ this.buttonsArray = [
{ {
name: 'Deposit', name: 'Deposit',
icon: 'fa fa-arrow-up' icon: 'arrow-up',
taskPermissionName: 'DEPOSIT_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Premature Close', name: 'Premature Close',
icon: 'fa fa-arrow-left' icon: 'arrow-left',
taskPermissionName: 'PREMATURECLOSE_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Calculate Interest', name: 'Calculate Interest',
icon: 'fa fa-table', icon: 'calculator',
taskPermissionName: 'CALCULATEINTEREST_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
@@ -47,11 +51,13 @@ export class RecurringDepositsButtonsConfiguration {
this.buttonsArray = [ this.buttonsArray = [
{ {
name: 'Modify Application', name: 'Modify Application',
icon: 'fa fa-pencil ', icon: 'edit',
taskPermissionName: 'UPDATE_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Approve', name: 'Approve',
icon: 'fa fa-check' icon: 'check',
taskPermissionName: 'APPROVE_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
@@ -59,11 +65,13 @@ export class RecurringDepositsButtonsConfiguration {
this.buttonsArray = [ this.buttonsArray = [
{ {
name: 'Undo Approval', name: 'Undo Approval',
icon: 'fa fa-undo' icon: 'undo',
taskPermissionName: 'APPROVALUNDO_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Activate', name: 'Activate',
icon: 'fa fa-check' icon: 'check',
taskPermissionName: 'ACTIVATE_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
@@ -71,15 +79,18 @@ export class RecurringDepositsButtonsConfiguration {
this.buttonsArray = [ this.buttonsArray = [
{ {
name: 'Close', name: 'Close',
icon: 'fa fa-arrow-right' icon: 'arrow-right',
taskPermissionName: 'CLOSE_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Calculate Interest', name: 'Calculate Interest',
icon: 'fa fa-table' icon: 'calculator',
taskPermissionName: 'CALCULATEINTEREST_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Post Interest', name: 'Post Interest',
icon: 'fa fa-table' icon: 'money',
taskPermissionName: 'POSTINTEREST_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
@@ -94,32 +105,46 @@ export class RecurringDepositsButtonsConfiguration {
this.optionArray = [ this.optionArray = [
{ {
name: 'Post Interest', name: 'Post Interest',
icon: 'table',
taskPermissionName: 'POSTINTEREST_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Add Charge', name: 'Add Charge',
icon: 'plus',
taskPermissionName: 'POSTINTEREST_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
case 'Submitted and pending approval': case 'Submitted and pending approval':
this.optionArray = [ this.optionArray = [
{ {
name: 'Reject' name: 'Reject',
icon: 'ban',
taskPermissionName: 'REJECT_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Withdraw By Client' name: 'Withdrawn by client',
icon: 'arrow-down',
taskPermissionName: 'WITHDRAW_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Add Charge' name: 'Add Charge',
icon: 'plus',
taskPermissionName: 'ADDCHARGE_RECURRINGDEPOSITACCOUNT'
}, },
{ {
name: 'Delete' name: 'Delete',
icon: 'trash',
taskPermissionName: 'DELETE_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
case 'Matured': case 'Matured':
this.optionArray = [ this.optionArray = [
{ {
name: 'Add Charge' name: 'Add Charge',
icon: 'plus',
taskPermissionName: 'ADDCHARGE_RECURRINGDEPOSITACCOUNT'
} }
]; ];
break; break;
@@ -129,11 +154,11 @@ export class RecurringDepositsButtonsConfiguration {
} }
} }
addOption(option: {name: string, icon?: string, taskPermissionName?: string}) { addOption(option: {name: string, icon?: string, taskPermissionName: string}) {
this.optionArray.push(option); this.optionArray.push(option);
} }
addButton(option: { name: string, icon: string, taskPermissionName?: string }) { addButton(option: { name: string, icon: string, taskPermissionName: string }) {
this.buttonsArray.push(option); this.buttonsArray.push(option);
} }
@@ -25,6 +25,7 @@ import { EditRecurringDepositAccountComponent } from './edit-recurring-deposit-a
import { RecurringDepositsAccountAndTemplateResolver } from './common-resolvers/recurring-deposit-account-and-template.resolver'; import { RecurringDepositsAccountAndTemplateResolver } from './common-resolvers/recurring-deposit-account-and-template.resolver';
import { RecurringDepositsAccountTransactionResolver } from './common-resolvers/recurring-deposit-account-transaction.resolver'; import { RecurringDepositsAccountTransactionResolver } from './common-resolvers/recurring-deposit-account-transaction.resolver';
import { RecurringDepositsAccountTransactionTemplateResolver } from './common-resolvers/recurring-deposit-account-transaction-template.resolver'; import { RecurringDepositsAccountTransactionTemplateResolver } from './common-resolvers/recurring-deposit-account-transaction-template.resolver';
import { GeneralTabComponent } from './recurring-deposits-account-view/general-tab/general-tab.component';
const routes: Routes = [ const routes: Routes = [
{ {
@@ -47,25 +48,29 @@ const routes: Routes = [
path: '', path: '',
component: RecurringDepositsAccountViewComponent, component: RecurringDepositsAccountViewComponent,
resolve: { resolve: {
recurringDepositsAccountData: RecurringDepositsAccountViewResolver, recurringDepositsAccountData: RecurringDepositsAccountDataResolver,
savingsDatatables: SavingsDatatablesResolver savingsDatatables: SavingsDatatablesResolver
}, },
children: [ children: [
{
path: '',
redirectTo: 'general',
pathMatch: 'full'
},
{
path: 'general',
component: GeneralTabComponent,
data: { title: 'Recurring Deposit Account Details', breadcrumb: 'General', routeParamBreadcrumb: false },
},
{ {
path: 'interest-rate-chart', path: 'interest-rate-chart',
component: InterestRateChartTabComponent, component: InterestRateChartTabComponent,
data: { title: 'Recurring Deposit Account Interest Rate Chart', breadcrumb: 'Interest Rate Chart', routeParamBreadcrumb: false }, data: { title: 'Recurring Deposit Account Interest Rate Chart', breadcrumb: 'Interest Rate Chart', routeParamBreadcrumb: false },
resolve: {
recurringDepositsAccountData: RecurringDepositsAccountDataResolver
}
}, },
{ {
path: 'transactions', path: 'transactions',
component: TransactionsTabComponent, component: TransactionsTabComponent,
data: { title: 'Recurring Deposit Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false }, data: { title: 'Recurring Deposit Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false },
resolve: {
recurringDepositsAccountData: RecurringDepositsAccountDataResolver
}
}, },
{ {
path: 'charges', path: 'charges',
@@ -76,9 +81,6 @@ const routes: Routes = [
path: 'standing-instructions-tab', path: 'standing-instructions-tab',
component: StandingInstructionsTabComponent, component: StandingInstructionsTabComponent,
data: { title: 'Recurring Deposit Account Standing Instructions', breadcrumb: 'Standing Instructions', routeParamBreadcrumb: false }, data: { title: 'Recurring Deposit Account Standing Instructions', breadcrumb: 'Standing Instructions', routeParamBreadcrumb: false },
resolve: {
recurringDepositsAccountData: RecurringDepositsAccountDataResolver
}
}, },
{ {
path: 'datatables', path: 'datatables',
@@ -38,6 +38,7 @@ import { EditTransactionComponent } from './recurring-deposits-account-view/tran
/* Dialog Components */ /* Dialog Components */
import { RecurringDepositConfirmationDialogComponent } from './recurring-deposits-account-view/custom-dialogs/recurring-deposit-confirmation-dialog/recurring-deposit-confirmation-dialog.component'; import { RecurringDepositConfirmationDialogComponent } from './recurring-deposits-account-view/custom-dialogs/recurring-deposit-confirmation-dialog/recurring-deposit-confirmation-dialog.component';
import { GeneralTabComponent } from './recurring-deposits-account-view/general-tab/general-tab.component';
/** /**
* RecurringDeposits Module * RecurringDeposits Module
@@ -79,7 +80,8 @@ import { RecurringDepositConfirmationDialogComponent } from './recurring-deposit
CloseRecurringDepositsAccountComponent, CloseRecurringDepositsAccountComponent,
DepositRecurringDepositsAccountComponent, DepositRecurringDepositsAccountComponent,
ViewTransactionComponent, ViewTransactionComponent,
EditTransactionComponent EditTransactionComponent,
GeneralTabComponent
], ],
providers: [ ] providers: [ ]
}) })
@@ -27,7 +27,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" *ngIf="loanProductSelected"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" *ngIf="loanProductSelected">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>{{"labels.inputs.Loan purpose" | translate}}</mat-label> <mat-label>{{"labels.inputs.Loan Purpose" | translate}}</mat-label>
<mat-select formControlName="loanPurposeId" matTooltip="{{ 'tooltips.Provides an indication' | translate}}"> <mat-select formControlName="loanPurposeId" matTooltip="{{ 'tooltips.Provides an indication' | translate}}">
<mat-option *ngFor="let loanPurpose of loanPurposeOptions" [value]="loanPurpose.id"> <mat-option *ngFor="let loanPurpose of loanPurposeOptions" [value]="loanPurpose.id">
{{ loanPurpose.name }} {{ loanPurpose.name }}
@@ -1,8 +1,8 @@
<div fxLayout="row wrap" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayout.lt-md="column">
<a mat-button (click)="showRepaymentInfo()"> <button mat-stroked-button color="primary" (click)="showRepaymentInfo()">
{{"labels.inputs.Repayment Info" | translate}} <fa-icon icon="calendar" class="m-r-10"></fa-icon>{{"labels.inputs.Generate Repayment Schedule" | translate}}
</a> </button>
<mifosx-repayment-schedule-tab fxFlex="100%" [repaymentScheduleDetails]="repaymentScheduleDetails" <mifosx-repayment-schedule-tab fxFlex="100%" [repaymentScheduleDetails]="repaymentScheduleDetails"
[currencyCode]="currencyCode"> [currencyCode]="currencyCode">
@@ -19,7 +19,6 @@ export class LoansAccountScheduleStepComponent implements OnInit {
/** Loans Account Data */ /** Loans Account Data */
@Input() loansAccount: any; @Input() loansAccount: any;
showRepayment = false;
repaymentScheduleDetails: any = {periods: []}; repaymentScheduleDetails: any = {periods: []};
loanId: any = null; loanId: any = null;
@@ -34,16 +33,13 @@ export class LoansAccountScheduleStepComponent implements OnInit {
showRepaymentInfo(): void { showRepaymentInfo(): void {
this.repaymentScheduleDetails = {periods: []}; this.repaymentScheduleDetails = {periods: []};
this.showRepayment = !this.showRepayment; const locale = this.settingsService.language.code;
if (this.showRepayment) { const dateFormat = this.settingsService.dateFormat;
const locale = this.settingsService.language.code; const payload = this.loansService.buildLoanRequestPayload(this.loansAccount, this.loansAccountTemplate,
const dateFormat = this.settingsService.dateFormat; this.loansAccountProductTemplate.calendarOptions, locale, dateFormat);
const payload = this.loansService.buildLoanRequestPayload(this.loansAccount, this.loansAccountTemplate,
this.loansAccountProductTemplate.calendarOptions, locale, dateFormat);
this.loansService.calculateLoanSchedule(payload).subscribe((response: any) => { this.loansService.calculateLoanSchedule(payload).subscribe((response: any) => {
this.repaymentScheduleDetails = response; this.repaymentScheduleDetails = response;
}); });
}
} }
} }
@@ -1,13 +0,0 @@
@use '@angular/material' as mat;
@mixin loans-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-loans-view {
.loan-card {
.header {
background-color: mat.get-color-from-palette($primary, 500);
}
}
}
}
@@ -1,4 +1,4 @@
<mat-card class="loan-card"> <mat-card class="account-card">
<mat-card-header fxLayout="column" class="header"> <mat-card-header fxLayout="column" class="header">
@@ -12,7 +12,7 @@
</div> </div>
</div> </div>
<div class="mat-typography loan-card-title"> <div class="mat-typography account-card-title">
<mat-card-title> <mat-card-title>
<div fxLayout="row" fxLayout.lt-md="column"> <div fxLayout="row" fxLayout.lt-md="column">
@@ -46,24 +46,30 @@
</div> </div>
<div *ngIf="loanDetailsData.summary" class="loans-overview mat-typography" fxFlex="40%"> <div *ngIf="loanDetailsData.summary" class="loans-overview mat-typography" fxFlex="40%">
<h3> {{"labels.heading.Loan Account OverView" | translate}} </h3> <h3> {{"labels.heading.Account OverView" | translate}} </h3>
<span>{{"labels.inputs.Current Balance" | translate}}: {{loanDetailsData.currency.displaySymbol}} <table class="account-overview">
{{loanDetailsData.summary.totalOutstanding | formatNumber}}</span><br> <tbody>
<div *ngIf="loanDisplayArrearsDelinquency < 2"> <tr>
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears By" | translate}}: <td>{{"labels.inputs.Current Balance" | translate }}</td>
{{loanDetailsData.summary.totalOverdue | currency:currencyCode:'symbol-narrow':'1.2-2' }} <td class="r-amount">{{loanDetailsData.summary.totalOutstanding | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
<span *ngIf="!(loanDetailsData.summary.totalOverdue>=0)">{{"labels.inputs.Not Provided" | translate </tr>
}}</span> <tr *ngIf="loanDisplayArrearsDelinquency < 2">
</span><br> <td>{{"labels.inputs.Arrears By" | translate }}</td>
<span *ngIf="loanDetailsData.inArrears">{{"labels.inputs.Arrears Since" | translate}}: <td class="r-amount" *ngIf="loanDetailsData.summary.totalOverdue >= 0">
{{loanDetailsData.summary.overdueSinceDate | {{loanDetailsData.summary.totalOverdue | currency:currency.code:'symbol-narrow':'1.2-2'}}
dateFormat}} </td>
</span> <td *ngIf="!(loanDetailsData.summary.totalOverdue>=0)">{{"labels.inputs.Not Provided" | translate}}</td>
<span *ngIf="loanDetailsData.totalOverpaid && loanDetailsData.totalOverpaid > 0"> </tr>
{{"labels.inputs.Overpaid By" | translate}}: {{loanDetailsData.currency.displaySymbol}} <tr *ngIf="loanDetailsData.inArrears">
{{loanDetailsData.totalOverpaid | formatNumber }} <td>{{"labels.inputs.Arrears Since" | translate }}</td>
</span> <td> {{loanDetailsData.summary.overdueSinceDate | dateFormat}} </td>
</div> </tr>
<tr *ngIf="loanDetailsData.totalOverpaid && loanDetailsData.totalOverpaid > 0">
<td>{{"labels.inputs.Overpaid By" | translate }}</td>
<td class="r-amount">{{loanDetailsData.totalOverpaid | currency:currency.code:'symbol-narrow':'1.2-2'}} </td>
</tr>
</tbody>
</table>
</div> </div>
<span fxFlex="auto"></span> <span fxFlex="auto"></span>
@@ -13,6 +13,7 @@ import { LoansAccountButtonConfiguration } from './loan-accounts-button-config';
import { ConfirmationDialogComponent } from '../../shared/confirmation-dialog/confirmation-dialog.component'; import { ConfirmationDialogComponent } from '../../shared/confirmation-dialog/confirmation-dialog.component';
import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component'; import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component';
import { LoanStatus } from '../models/loan-status.model'; import { LoanStatus } from '../models/loan-status.model';
import { Currency } from 'app/shared/models/general.model';
@Component({ @Component({
selector: 'mifosx-loans-view', selector: 'mifosx-loans-view',
@@ -42,6 +43,7 @@ export class LoansViewComponent implements OnInit {
disburseTransactionNo = 0; disburseTransactionNo = 0;
loanStatus: LoanStatus; loanStatus: LoanStatus;
currency: Currency;
constructor(private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private router: Router, private router: Router,
@@ -52,6 +54,7 @@ export class LoansViewComponent implements OnInit {
this.loanDatatables = data.loanDatatables; this.loanDatatables = data.loanDatatables;
this.loanDisplayArrearsDelinquency = data.loanArrearsDelinquencyConfig.value || 0; this.loanDisplayArrearsDelinquency = data.loanArrearsDelinquencyConfig.value || 0;
this.loanStatus = this.loanDetailsData.status; this.loanStatus = this.loanDetailsData.status;
this.currency = this.loanDetailsData.currency;
}); });
this.loanId = this.route.snapshot.params['loanId']; this.loanId = this.route.snapshot.params['loanId'];
this.clientId = this.loanDetailsData.clientId; this.clientId = this.loanDetailsData.clientId;
@@ -329,6 +329,11 @@
<mat-divider [inset]="true"></mat-divider> <mat-divider [inset]="true"></mat-divider>
<div fxFlexFill>
<span fxFlex="47%">Loan Schedule Type:</span>
<span fxFlex="53%">{{ loanProduct.loanScheduleType.value }}</span>
</div>
<div fxFlexFill> <div fxFlexFill>
<span fxFlex="47%">Repayment Strategy:</span> <span fxFlex="47%">Repayment Strategy:</span>
<span fxFlex="53%" class="repayment-strategy">{{ loanProduct.transactionProcessingStrategyName }}</span> <span fxFlex="53%" class="repayment-strategy">{{ loanProduct.transactionProcessingStrategyName }}</span>
@@ -346,12 +351,7 @@
</span> </span>
</div> </div>
<div fxFlexFill> <div fxFlexFill *ngIf="isAdvancedPaymentAllocationStrategy()">
<span fxFlex="47%">Loan Schedule Type:</span>
<span fxFlex="53%">{{ loanProduct.loanScheduleType.value }}</span>
</div>
<div fxFlexFill *ngIf="loanProduct.loanScheduleProcessingType">
<span fxFlex="47%">Loan Schedule Processing Type:</span> <span fxFlex="47%">Loan Schedule Processing Type:</span>
<span fxFlex="53%">{{ loanProduct.loanScheduleProcessingType.value }}</span> <span fxFlex="53%">{{ loanProduct.loanScheduleProcessingType.value }}</span>
</div> </div>
@@ -2,7 +2,7 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="72%">
<mat-label>Product Name</mat-label> <mat-label>Product Name</mat-label>
<input matInput formControlName="name" matTooltip="The product name is a unique identifier for the lending product." required> <input matInput formControlName="name" matTooltip="The product name is a unique identifier for the lending product." required>
<mat-error> <mat-error>
@@ -10,7 +10,7 @@
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="24%">
<mat-label>Short Name</mat-label> <mat-label>Short Name</mat-label>
<input matInput formControlName="shortName" maxlength="4" matTooltip="The short name is a unique identifier for the lending product." required> <input matInput formControlName="shortName" maxlength="4" matTooltip="The short name is a unique identifier for the lending product." required>
<mat-error> <mat-error>
@@ -65,7 +65,8 @@
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%">
<mat-label>Repayment strategy</mat-label> <mat-label>Repayment strategy</mat-label>
<mat-select formControlName="transactionProcessingStrategyCode" matTooltip="The repayment strategy determines the sequence in which each of the components is paid." required> <mat-select formControlName="transactionProcessingStrategyCode" matTooltip="The repayment strategy determines the sequence in which each of the components is paid."
required [disabled]="advancedTransactionProcessingStrategyDisabled">
<mat-option *ngFor="let transactionProcessingStrategy of transactionProcessingStrategyData" [value]="transactionProcessingStrategy.code"> <mat-option *ngFor="let transactionProcessingStrategy of transactionProcessingStrategyData" [value]="transactionProcessingStrategy.code">
{{ transactionProcessingStrategy.name }} {{ transactionProcessingStrategy.name }}
</mat-option> </mat-option>
@@ -75,7 +76,7 @@
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="48%"> <mat-form-field fxFlex="48%" *ngIf="isAdvancedTransactionProcessingStrategy">
<mat-label>Loan Schedule Processing Type</mat-label> <mat-label>Loan Schedule Processing Type</mat-label>
<mat-select formControlName="loanScheduleProcessingType" required> <mat-select formControlName="loanScheduleProcessingType" required>
<mat-option *ngFor="let loanScheduleProcessingType of loanScheduleProcessingTypeData" [value]="loanScheduleProcessingType.code"> <mat-option *ngFor="let loanScheduleProcessingType of loanScheduleProcessingTypeData" [value]="loanScheduleProcessingType.code">
@@ -40,6 +40,8 @@ export class LoanProductSettingsStepComponent implements OnInit {
delinquencyBucketData: any; delinquencyBucketData: any;
loanScheduleTypeData: OptionData[] = []; loanScheduleTypeData: OptionData[] = [];
loanScheduleProcessingTypeData: OptionData[] = []; loanScheduleProcessingTypeData: OptionData[] = [];
isAdvancedTransactionProcessingStrategy = false;
advancedTransactionProcessingStrategyDisabled = true;
/** Values to Days for Repayments */ /** Values to Days for Repayments */
defaultConfigValues: GlobalConfiguration[] = []; defaultConfigValues: GlobalConfiguration[] = [];
@@ -78,13 +80,14 @@ export class LoanProductSettingsStepComponent implements OnInit {
this.loanScheduleTypeData = this.loanProductsTemplate.loanScheduleTypeOptions; this.loanScheduleTypeData = this.loanProductsTemplate.loanScheduleTypeOptions;
this.loanScheduleProcessingTypeData = this.loanProductsTemplate.loanScheduleProcessingTypeOptions; this.loanScheduleProcessingTypeData = this.loanProductsTemplate.loanScheduleProcessingTypeOptions;
const transactionProcessingStrategyCode: string = this.loanProductsTemplate.transactionProcessingStrategyCode || this.transactionProcessingStrategyData[0].code;
this.loanProductSettingsForm.patchValue({ this.loanProductSettingsForm.patchValue({
'amortizationType': this.loanProductsTemplate.amortizationType.id, 'amortizationType': this.loanProductsTemplate.amortizationType.id,
'interestType': this.loanProductsTemplate.interestType.id, 'interestType': this.loanProductsTemplate.interestType.id,
'isEqualAmortization': this.loanProductsTemplate.isEqualAmortization, 'isEqualAmortization': this.loanProductsTemplate.isEqualAmortization,
'interestCalculationPeriodType': this.loanProductsTemplate.interestCalculationPeriodType.id, 'interestCalculationPeriodType': this.loanProductsTemplate.interestCalculationPeriodType.id,
'allowPartialPeriodInterestCalcualtion': this.loanProductsTemplate.allowPartialPeriodInterestCalcualtion, 'allowPartialPeriodInterestCalcualtion': this.loanProductsTemplate.allowPartialPeriodInterestCalcualtion,
'transactionProcessingStrategyCode': this.loanProductsTemplate.transactionProcessingStrategyCode || this.transactionProcessingStrategyData[0].code, 'transactionProcessingStrategyCode': transactionProcessingStrategyCode,
'graceOnPrincipalPayment': this.loanProductsTemplate.graceOnPrincipalPayment, 'graceOnPrincipalPayment': this.loanProductsTemplate.graceOnPrincipalPayment,
'graceOnInterestPayment': this.loanProductsTemplate.graceOnInterestPayment, 'graceOnInterestPayment': this.loanProductsTemplate.graceOnInterestPayment,
'graceOnInterestCharged': this.loanProductsTemplate.graceOnInterestCharged, 'graceOnInterestCharged': this.loanProductsTemplate.graceOnInterestCharged,
@@ -109,9 +112,15 @@ export class LoanProductSettingsStepComponent implements OnInit {
'enableDownPayment': this.loanProductsTemplate.enableDownPayment, 'enableDownPayment': this.loanProductsTemplate.enableDownPayment,
'enableInstallmentLevelDelinquency': this.loanProductsTemplate.enableInstallmentLevelDelinquency, 'enableInstallmentLevelDelinquency': this.loanProductsTemplate.enableInstallmentLevelDelinquency,
'loanScheduleType': this.loanProductsTemplate.loanScheduleType.code, 'loanScheduleType': this.loanProductsTemplate.loanScheduleType.code,
'loanScheduleProcessingType': this.loanProductsTemplate.loanScheduleProcessingType.code
}); });
this.isAdvancedTransactionProcessingStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(transactionProcessingStrategyCode);
if (this.isAdvancedTransactionProcessingStrategy) {
this.loanProductSettingsForm.addControl('loanScheduleProcessingType', new UntypedFormControl(
this.loanProductsTemplate.loanScheduleProcessingType.code || LoanProducts.LOAN_SCHEDULE_PROCESSING_TYPE_HORIZONTAL,
[Validators.required ]));
}
if (this.loanProductsTemplate.dueDaysForRepaymentEvent != null && if (this.loanProductsTemplate.dueDaysForRepaymentEvent != null &&
this.loanProductsTemplate.overDueDaysForRepaymentEvent != null) { this.loanProductsTemplate.overDueDaysForRepaymentEvent != null) {
this.loanProductSettingsForm.patchValue({ this.loanProductSettingsForm.patchValue({
@@ -234,7 +243,6 @@ export class LoanProductSettingsStepComponent implements OnInit {
'dueDaysForRepaymentEvent': [''], 'dueDaysForRepaymentEvent': [''],
'overDueDaysForRepaymentEvent': [''], 'overDueDaysForRepaymentEvent': [''],
'loanScheduleType': [LoanProducts.LOAN_SCHEDULE_TYPE_CUMULATIVE, Validators.required], 'loanScheduleType': [LoanProducts.LOAN_SCHEDULE_TYPE_CUMULATIVE, Validators.required],
'loanScheduleProcessingType': [LoanProducts.LOAN_SCHEDULE_PROCESSING_TYPE_HORIZONTAL, Validators.required]
}); });
} }
@@ -395,6 +403,13 @@ export class LoanProductSettingsStepComponent implements OnInit {
this.loanProductSettingsForm.get('transactionProcessingStrategyCode').valueChanges this.loanProductSettingsForm.get('transactionProcessingStrategyCode').valueChanges
.subscribe((transactionProcessingStrategyCode: string) => { .subscribe((transactionProcessingStrategyCode: string) => {
this.advancePaymentStrategy.emit(transactionProcessingStrategyCode); this.advancePaymentStrategy.emit(transactionProcessingStrategyCode);
this.isAdvancedTransactionProcessingStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(transactionProcessingStrategyCode);
if (this.isAdvancedTransactionProcessingStrategy) {
this.loanProductSettingsForm.addControl('loanScheduleProcessingType', new UntypedFormControl(
LoanProducts.LOAN_SCHEDULE_PROCESSING_TYPE_HORIZONTAL, [Validators.required]));
} else {
this.loanProductSettingsForm.removeControl('loanScheduleProcessingType');
}
}); });
this.loanProductSettingsForm.get('allowAttributeConfiguration').valueChanges this.loanProductSettingsForm.get('allowAttributeConfiguration').valueChanges
@@ -452,6 +467,7 @@ export class LoanProductSettingsStepComponent implements OnInit {
'transactionProcessingStrategyCode': this.transactionProcessingStrategyData[0].code 'transactionProcessingStrategyCode': this.transactionProcessingStrategyData[0].code
}); });
} }
this.advancedTransactionProcessingStrategyDisabled = false;
} else { } else {
// Only Advanced Payment Allocation Strategy // Only Advanced Payment Allocation Strategy
this.transactionProcessingStrategyDataBase.some( this.transactionProcessingStrategyDataBase.some(
@@ -460,6 +476,10 @@ export class LoanProductSettingsStepComponent implements OnInit {
this.transactionProcessingStrategyData.push(cn); this.transactionProcessingStrategyData.push(cn);
} }
}); });
this.advancedTransactionProcessingStrategyDisabled = true;
this.loanProductSettingsForm.patchValue({
'transactionProcessingStrategyCode': this.transactionProcessingStrategyData[0].code
});
} }
}); });
} }
@@ -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 {
}
}
@@ -1,16 +0,0 @@
@use '@angular/material' as mat;
@mixin savings-account-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-savings-account-view {
.savings-account-card {
.header {
background-color: mat.get-color-from-palette($primary, 500);
}
.table-headers {
background-color: mat.get-color-from-palette($primary, 500);
color: mat.get-contrast-color-from-palette($primary, 500);
}
}
}
}
@@ -1,4 +1,4 @@
<mat-card class="savings-account-card"> <mat-card class="account-card">
<mat-card-header fxLayout="column" class="header"> <mat-card-header fxLayout="column" class="header">
@@ -13,14 +13,42 @@
<div class="mat-typography account-card-title"> <div class="mat-typography account-card-title">
<mat-card-title fxLayout="row" fxLayout.lt-md="column"> <mat-card-title fxLayout="row" fxLayout.lt-md="column">
<h3 fxFlex="95%"> <div fxFlex="60%">
<i class="fa fa-stop" [ngClass]="savingsAccountData.status.code | statusLookup" <h3>
[matTooltip]="savingsAccountData.status.value" *ngIf="!savingsAccountData.subStatus.block"></i> <i class="fa fa-stop" [ngClass]="savingsAccountData.status.code | statusLookup"
<i class="fa fa-stop" [ngClass]="savingsAccountData.subStatus.value | statusLookup" [matTooltip]="savingsAccountData.status.value" *ngIf="!savingsAccountData.subStatus.block"></i>
[matTooltip]="savingsAccountData.subStatus.value" *ngIf="savingsAccountData.subStatus.block"></i> <i class="fa fa-stop" [ngClass]="savingsAccountData.subStatus.value | statusLookup"
{{'labels.inputs.Savings Product' | translate}} : {{savingsAccountData.savingsProductName}}<span class="m-l-10"> [matTooltip]="savingsAccountData.subStatus.value" *ngIf="savingsAccountData.subStatus.block"></i>
<mifosx-account-number accountNo="{{savingsAccountData.accountNo}}"></mifosx-account-number></span> {{'labels.inputs.Savings Product' | translate}} : {{savingsAccountData.savingsProductName}}<span class="m-l-10">
</h3> <mifosx-account-number accountNo="{{savingsAccountData.accountNo}}"></mifosx-account-number></span>
</h3>
<span class="account-overview">
{{'labels.text.' + entityType | translate}} {{"labels.inputs.name" | translate}}: {{savingsAccountData.clientName ||
savingsAccountData.groupName}}
<span class="m-l-10" *ngIf="savingsAccountData.clientAccountNo">
<mifosx-account-number accountNo="{{savingsAccountData.clientAccountNo}}"></mifosx-account-number>
</span>
</span>
</div>
<div *ngIf="!savingsAccountData.status.rejected && !savingsAccountData.status.submittedAndPendingApproval">
<h3> {{"labels.heading.Account Overview" | translate}} </h3>
<table class="account-overview">
<tbody>
<tr>
<td>{{"labels.inputs.Current Balance" | translate }}</td>
<td class="r-amount">{{savingsAccountData.summary.accountBalance | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr>
<td>{{"labels.inputs.Available Balance" | translate }}</td>
<td class="r-amount">{{savingsAccountData.summary.availableBalance | currency:currency.code:'symbol-narrow':'1.2-2'}}</td>
</tr>
</tbody>
</table>
</div>
<span fxFlex="auto"></span>
<div fxFlex="5%"> <div fxFlex="5%">
<button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Loan account actions" <button mat-icon-button [matMenuTriggerFor]="accountMenu" aria-label="Loan account actions"
yPosition="below"> yPosition="below">
@@ -30,20 +58,6 @@
</button> </button>
</div> </div>
</mat-card-title> </mat-card-title>
<mat-card-subtitle>
<p>
{{entityType}} {{'labels.inputs.name' | translate}}: {{savingsAccountData.clientName || savingsAccountData.groupName}}
<span class="m-l-10" *ngIf="savingsAccountData.clientAccountNo">({{savingsAccountData.clientAccountNo}})</span><br />
<span *ngIf="!savingsAccountData.status.rejected && !savingsAccountData.status.submittedAndPendingApproval">
{{'labels.inputs.Current Balances' | translate}} :
{{savingsAccountData.currency.displaySymbol}}<span class="m-l-10">{{savingsAccountData.summary.accountBalance |
number}}</span><br />
{{'labels.inputs.Available Balance' | translate}} :
{{savingsAccountData.currency.displaySymbol}}<span class="m-l-10">{{savingsAccountData.summary.availableBalance |
number}}</span>
</span>
</p>
</mat-card-subtitle>
</div> </div>
<mat-menu #accountMenu="matMenu"> <mat-menu #accountMenu="matMenu">
@@ -73,232 +87,11 @@
<mat-card-content class="content"> <mat-card-content class="content">
<div class="savings-account-tables" fxLayout="row" fxLayoutGap="2%">
<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>{{savingsAccountData.summary.totalWithdrawals | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalWithdrawalFees">
<td>{{'labels.inputs.Withdrawals Fees' | translate}}</td>
<td>{{savingsAccountData.summary.totalWithdrawalFees | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalAnnualFees">
<td>{{'labels.inputs.Annual Fees' | translate}}</td>
<td>{{savingsAccountData.summary.totalAnnualFees | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalInterestEarned >= 0">
<td>{{'labels.inputs.Interest Earned' | translate}}</td>
<td>{{savingsAccountData.summary.totalInterestEarned | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalInterestPosted">
<td>{{'labels.inputs.Interest Posted' | translate}}</td>
<td>{{savingsAccountData.summary.totalInterestPosted | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.interestNotPosted >= 0">
<td>{{'labels.inputs.Interest Earned Not Posted' | translate}}</td>
<td>{{savingsAccountData.summary.interestNotPosted | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalOverdraftInterestDerived">
<td>{{'labels.inputs.Interest On Overdraft' | translate}}</td>
<td>
{{savingsAccountData.summary.totalOverdraftInterestDerived | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.interestNotPosted < 0">
<td>{{'labels.inputs.Overdraft Interest Not Posted' | translate}}</td>
<td>{{savingsAccountData.summary.interestNotPosted | currency:currencyCode:'symbol-narrow':'1.2-2'}}</td>
</tr>
<tr *ngIf="savingsAccountData.nominalAnnualInterestRate">
<td>{{'labels.inputs.Nominal Interest Rate' | translate}}</td>
<td>{{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>{{savingsAccountData.withdrawalFee.amount | currency:currencyCode:'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>{{savingsAccountData.annualFee.amount | currency:currencyCode:'symbol-narrow':'1.2-2'}}
</td>
</tr>
<tr *ngIf="savingsAccountData.allowOverdraft">
<td>{{'labels.inputs.Over Draft Limit' | translate}}</td>
<td>{{savingsAccountData.overdraftLimit | currency:currencyCode:'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:currencyCode:'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:currencyCode:'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 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>{{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>{{savingsAccountData.summary.accountBalance}}</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>{{savingsAccountData.currency.displaySymbol}}&nbsp;{{savingsAccountData.summary.totalDeposits |
number}}</td>
</tr>
<tr *ngIf="savingsAccountData.summary.totalInterestEarned >= 0">
<td>{{'labels.inputs.Total Interest Earned' | translate}}</td>
<td>{{savingsAccountData.currency.displaySymbol}}&nbsp;{{savingsAccountData.summary.totalInterestEarned
| formatNumber}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<nav mat-tab-nav-bar class="navigation-tabs" *ngIf="isActive"> <nav mat-tab-nav-bar class="navigation-tabs" *ngIf="isActive">
<a mat-tab-link [routerLink]="['./general']" routerLinkActive #general="routerLinkActive"
[active]="general.isActive">
{{'labels.inputs.General' | translate}}
</a>
<a mat-tab-link [routerLink]="['./transactions']" routerLinkActive #transactions="routerLinkActive" <a mat-tab-link [routerLink]="['./transactions']" routerLinkActive #transactions="routerLinkActive"
[active]="transactions.isActive"> [active]="transactions.isActive">
{{'labels.inputs.Transactions' | translate}} {{'labels.inputs.Transactions' | translate}}
@@ -1,53 +0,0 @@
.savings-account-card {
margin: 0 auto;
max-width: 80rem;
width: 90%;
padding: 0;
.header {
padding: 1%;
.header-title-group {
.account-card-title {
color: white;
width: 90%;
p {
color: white;
}
}
}
.profile-image-container {
margin: 1%;
.profile-image {
object-fit: cover;
border-radius: 20px;
}
}
.account-actions {
align-self: flex-end;
margin: 0 1%;
i {
margin-bottom: 2px;
margin-right: 4px;
}
}
}
.navigation-tabs {
background-color: #f2f2f2;
overflow: auto;
}
.content {
.savings-account-tables {
padding: 1%;
margin: 1%;
.table-headers {
margin: 0;
padding: 6px;
}
td {
padding: 3px;
}
}
}
i, img:hover {
cursor: pointer;
}
}
@@ -13,6 +13,7 @@ import { ToggleWithholdTaxDialogComponent } from './custom-dialogs/toggle-withho
import { SavingsButtonsConfiguration } from './savings-buttons.config'; import { SavingsButtonsConfiguration } from './savings-buttons.config';
import { SavingsService } from '../savings.service'; import { SavingsService } from '../savings.service';
import { ConfirmationDialogComponent } from 'app/shared/confirmation-dialog/confirmation-dialog.component'; import { ConfirmationDialogComponent } from 'app/shared/confirmation-dialog/confirmation-dialog.component';
import { Currency } from 'app/shared/models/general.model';
/** /**
* Savings Account View Component * Savings Account View Component
@@ -34,7 +35,7 @@ export class SavingsAccountViewComponent implements OnInit {
entityType: string; entityType: string;
isActive = false; isActive = false;
currencyCode: string; currency: Currency;
/** /**
* Fetches savings account data from `resolve` * Fetches savings account data from `resolve`
@@ -48,7 +49,7 @@ export class SavingsAccountViewComponent implements OnInit {
public dialog: MatDialog) { public dialog: MatDialog) {
this.route.data.subscribe((data: { savingsAccountData: any, savingsDatatables: any }) => { this.route.data.subscribe((data: { savingsAccountData: any, savingsDatatables: any }) => {
this.savingsAccountData = data.savingsAccountData; this.savingsAccountData = data.savingsAccountData;
this.currencyCode = this.savingsAccountData.currency.code; this.currency = this.savingsAccountData.currency;
this.savingsDatatables = data.savingsDatatables; this.savingsDatatables = data.savingsDatatables;
}); });
if (this.router.url.includes('clients')) { if (this.router.url.includes('clients')) {
@@ -51,10 +51,10 @@
<i class="fa fa-file" matTooltip="View Reciept"></i> <i class="fa fa-file" matTooltip="View Reciept"></i>
</button> </button>
<button class="account-action-button" mat-raised-button color="primary" matTooltip="View Journal Entries" <button class="account-action-button" mat-raised-button color="primary" matTooltip="View Journal Entries"
matTooltipPosition="left" (click)="routeEdit($event)" matTooltipPosition="left" (click)="routeEdit($event)"
[routerLink]="['/','journal-entry', 'view', 'S'+transaction.id ]"> [routerLink]="['/','journal-entry', 'view', 'S'+transaction.id ]">
<i class="fa fa-arrow-circle-right"></i> <i class="fa fa-arrow-circle-right"></i>
</button> </button>
</td> </td>
</ng-container> </ng-container>
@@ -1,5 +1,5 @@
.container { .container {
max-width: 50rem; max-width: 37rem;
.content { .content {
div { div {
margin: 1rem 0; margin: 1rem 0;
+12 -1
View File
@@ -42,6 +42,7 @@ import { NotesTabComponent } from './savings-account-view/notes-tab/notes-tab.co
import { SavingNotesResolver } from './common-resolvers/saving-notes.resolver'; import { SavingNotesResolver } from './common-resolvers/saving-notes.resolver';
import { SavingDocumentsResolver } from './common-resolvers/saving-documents.resolver'; import { SavingDocumentsResolver } from './common-resolvers/saving-documents.resolver';
import { SavingsTransactionGeneralTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-general-tab/savings-transaction-general-tab.component'; import { SavingsTransactionGeneralTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-general-tab/savings-transaction-general-tab.component';
import { GeneralTabComponent } from './savings-account-view/general-tab/general-tab.component';
/** Savings Routes */ /** Savings Routes */
const routes: Routes = [ const routes: Routes = [
@@ -68,9 +69,19 @@ const routes: Routes = [
children: [ children: [
{ {
path: '', path: '',
redirectTo: 'transactions', redirectTo: 'general',
pathMatch: 'full' pathMatch: 'full'
}, },
{
path: 'general',
data: { title: 'Savings Account Details', breadcrumb: 'General', routeParamBreadcrumb: false },
children: [
{
path: '',
component: GeneralTabComponent
}
]
},
{ {
path: 'transactions', path: 'transactions',
data: { title: 'Savings Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false }, data: { title: 'Savings Account Transactions', breadcrumb: 'Transactions', routeParamBreadcrumb: false },
+3 -1
View File
@@ -52,6 +52,7 @@ import { NotesTabComponent } from './savings-account-view/notes-tab/notes-tab.co
import { DatatableTransactionTabComponent } from './savings-account-view/transactions/view-transaction/datatable-transaction-tab/datatable-transaction-tab.component'; import { DatatableTransactionTabComponent } from './savings-account-view/transactions/view-transaction/datatable-transaction-tab/datatable-transaction-tab.component';
import { SavingsTransactionGeneralTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-general-tab/savings-transaction-general-tab.component'; import { SavingsTransactionGeneralTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-general-tab/savings-transaction-general-tab.component';
import { SavingsTransactionDatatableTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-datatable-tab/savings-transaction-datatable-tab.component'; import { SavingsTransactionDatatableTabComponent } from './savings-account-view/transactions/view-transaction/savings-transaction-datatable-tab/savings-transaction-datatable-tab.component';
import { GeneralTabComponent } from './savings-account-view/general-tab/general-tab.component';
/** /**
@@ -110,7 +111,8 @@ import { SavingsTransactionDatatableTabComponent } from './savings-account-view/
NotesTabComponent, NotesTabComponent,
DatatableTransactionTabComponent, DatatableTransactionTabComponent,
SavingsTransactionGeneralTabComponent, SavingsTransactionGeneralTabComponent,
SavingsTransactionDatatableTabComponent SavingsTransactionDatatableTabComponent,
GeneralTabComponent
], ],
providers: [ ] providers: [ ]
}) })
@@ -1,13 +1,16 @@
<div fxLayout="row" fxLayoutAlign="end" class="container m-b-20" *ngIf="dataSource?.data[0].manualEntry"> <div *ngIf="isJournalEntryLoaded">
<button mat-raised-button color="primary" (click)="revertTransaction()" *mifosxHasPermission="'REVERSE_JOURNALENTRY'" [disabled]="dataSource?.data[0].reversed">
<span *ngIf="!dataSource.data[0].reversed">
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'labels.buttons.Revert Transaction' | translate }}
</span>
<span *ngIf="dataSource.data[0].reversed">{{ 'labels.buttons.Transaction Reverted' | translate }}</span>
</button>
</div>
<div class="container m-b-20" *ngIf="isViewTransaction()"> <div fxLayout="row" fxLayoutAlign="end" class="container m-b-20" *ngIf="dataSource?.data[0].manualEntry">
<button mat-raised-button color="primary" (click)="revertTransaction()"
*mifosxHasPermission="'REVERSE_JOURNALENTRY'" [disabled]="dataSource?.data[0].reversed">
<span *ngIf="!dataSource.data[0].reversed">
<fa-icon icon="undo" class="m-r-10"></fa-icon>{{ 'labels.buttons.Revert Transaction' | translate }}
</span>
<span *ngIf="dataSource.data[0].reversed">{{ 'labels.buttons.Transaction Reverted' | translate }}</span>
</button>
</div>
<div class="container m-b-20" *ngIf="isViewTransaction()">
<mat-card class="mat-elevation-z8" *ngIf="dataSource"> <mat-card class="mat-elevation-z8" *ngIf="dataSource">
@@ -53,49 +56,71 @@
</mat-card> </mat-card>
</div>
<div class="mat-elevation-z8 container" fxLayoutAlign="center" fxLayout="row wrap">
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="id">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Entry ID' | translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.id }} </td>
</ng-container>
<ng-container matColumnDef="glAccountType">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Type' | translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountType.value }} </td>
</ng-container>
<ng-container matColumnDef="glAccountCode">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Account Code' | translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountCode }} </td>
</ng-container>
<ng-container matColumnDef="glAccountName">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Account Name' | translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountName }} </td>
</ng-container>
<ng-container matColumnDef="debit">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Debit' | translate }} </th>
<td mat-cell *matCellDef="let transaction"><span *ngIf="transaction.entryType.value === 'DEBIT'"> {{ (transaction.currency.displaySymbol || transaction.currency.code) }} {{ transaction.amount | formatNumber }} </span></td>
</ng-container>
<ng-container matColumnDef="credit">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Credit' | translate }} </th>
<td mat-cell *matCellDef="let transaction"><span *ngIf="transaction.entryType.value === 'CREDIT'"> {{ (transaction.currency.displaySymbol || transaction.currency.code) }} {{ transaction.amount | formatNumber }} </span></td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="viewJournalEntry(row)" class="select-row"></tr>
</table>
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px" class="m-t-15 m-b-15">
<button type="button" color="primary" mat-raised-button (click)="goBack()">{{ 'labels.buttons.Back' | translate }}</button>
</div> </div>
<div class="mat-elevation-z8 container" fxLayoutAlign="center" fxLayout="row wrap">
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="id">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Entry ID' | translate }}
</th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.id }} </td>
</ng-container>
<ng-container matColumnDef="glAccountType">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Type' | translate }}
</th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountType.value }} </td>
</ng-container>
<ng-container matColumnDef="glAccountCode">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Account Code' |
translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountCode }} </td>
</ng-container>
<ng-container matColumnDef="glAccountName">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Account Name' |
translate }} </th>
<td mat-cell *matCellDef="let transaction"> {{ transaction.glAccountName }} </td>
</ng-container>
<ng-container matColumnDef="debit">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Debit' | translate }}
</th>
<td mat-cell *matCellDef="let transaction"><span *ngIf="transaction.entryType.value === 'DEBIT'"> {{
(transaction.currency.displaySymbol || transaction.currency.code) }} {{ transaction.amount | formatNumber }}
</span></td>
</ng-container>
<ng-container matColumnDef="credit">
<th mat-header-cell class="center" *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Credit' | translate }}
</th>
<td mat-cell *matCellDef="let transaction"><span *ngIf="transaction.entryType.value === 'CREDIT'"> {{
(transaction.currency.displaySymbol || transaction.currency.code) }} {{ transaction.amount | formatNumber }}
</span></td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="viewJournalEntry(row)" class="select-row">
</tr>
</table>
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px" class="m-t-15 m-b-15">
<button type="button" color="primary" mat-raised-button (click)="goBack()">{{ 'labels.buttons.Back' | translate
}}</button>
</div>
</div>
</div>
<div class="container m-b-20" *ngIf="!isJournalEntryLoaded">
<div class="alert">
<div class="message">
<i class="fa fa-exclamation-circle alert-check"></i>
{{"labels.text.No data found" | translate}}
</div>
</div>
</div> </div>
@@ -32,6 +32,8 @@ export class ViewJournalEntryTransactionComponent implements OnInit {
/** Sorter for transaction table. */ /** Sorter for transaction table. */
@ViewChild(MatSort, { static: true }) sort: MatSort; @ViewChild(MatSort, { static: true }) sort: MatSort;
isJournalEntryLoaded = false;
/** /**
* @param {AccountingService} accountingService Accounting Service. * @param {AccountingService} accountingService Accounting Service.
* @param {ActivatedRoute} route Activated Route. * @param {ActivatedRoute} route Activated Route.
@@ -50,11 +52,16 @@ export class ViewJournalEntryTransactionComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.route.data.subscribe((data: { title: string, transaction: any, transferJournalEntryData: any }) => { this.route.data.subscribe((data: { title: string, transaction: any, transferJournalEntryData: any }) => {
this.title = data.title; this.title = data.title;
this.isJournalEntryLoaded = false;
if (this.isViewTransaction()) { if (this.isViewTransaction()) {
this.transaction = data.transaction; this.transaction = data.transaction;
this.transactionId = data.transaction.pageItems[0].transactionId; if (data.transaction.pageItems.length > 0) {
this.isJournalEntryLoaded = true;
this.transactionId = data.transaction.pageItems[0].transactionId;
}
} else if (this.isViewTransfer()) { } else if (this.isViewTransfer()) {
this.journalEntriesData = data.transferJournalEntryData.journalEntryData.content; this.journalEntriesData = data.transferJournalEntryData.journalEntryData.content;
this.isJournalEntryLoaded = true;
} }
this.setTransaction(); this.setTransaction();
}); });
+6 -1
View File
@@ -105,7 +105,9 @@ import {
faCoins, faCoins,
faPiggyBank, faPiggyBank,
faFileExcel, faFileExcel,
faFileExport faFileExport,
faCalculator,
faCalendarCheck
} from '@fortawesome/free-solid-svg-icons'; } from '@fortawesome/free-solid-svg-icons';
/** /**
@@ -124,13 +126,16 @@ export class IconsModule {
faArchive, faArchive,
faArrowLeft, faArrowLeft,
faArrowRight, faArrowRight,
faBan,
faBars, faBars,
faBell, faBell,
faBook, faBook,
faBriefcase, faBriefcase,
faBuilding, faBuilding,
faCalculator,
faCalendar, faCalendar,
faCalendarAlt, faCalendarAlt,
faCalendarCheck,
faChartBar, faChartBar,
faCheck, faCheck,
faCheckCircle, faCheckCircle,
+10
View File
@@ -864,6 +864,7 @@
"Account No": "Číslo účtu.", "Account No": "Číslo účtu.",
"Account Number": "Číslo účtu", "Account Number": "Číslo účtu",
"Account Number Preferences": "Předvolby čísla účtu", "Account Number Preferences": "Předvolby čísla účtu",
"Account Overview": "Přehled účtu",
"Account Type": "Typ účtu", "Account Type": "Typ účtu",
"Account Usage": "Využití účtu", "Account Usage": "Využití účtu",
"Account action": "Akce účtu", "Account action": "Akce účtu",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Název datové tabulky", "Data Table Name": "Název datové tabulky",
"Date": "datum", "Date": "datum",
"Date Of Birth": "Datum narození", "Date Of Birth": "Datum narození",
"Date of Deposit": "Datum vkladu",
"Date Type": "Typ data", "Date Type": "Typ data",
"Date Value": "Hodnota data", "Date Value": "Hodnota data",
"Date of Birth": "Datum narození", "Date of Birth": "Datum narození",
@@ -1163,6 +1165,7 @@
"Deposit Period Frequency": "Frekvence období vkladu", "Deposit Period Frequency": "Frekvence období vkladu",
"Deposit Period Type": "Typ období vkladu", "Deposit Period Type": "Typ období vkladu",
"Deposit Start Date": "Datum zahájení vkladu", "Deposit Start Date": "Datum zahájení vkladu",
"Deposits till Date": "Vklady do data",
"Deposits Frequency": "Frekvence vkladů", "Deposits Frequency": "Frekvence vkladů",
"Description": "Popis", "Description": "Popis",
"Description/Notes": "Popis/Poznámky", "Description/Notes": "Popis/Poznámky",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Mezera mezi splátkami: (min", "Gap between Installments": "Mezera mezi splátkami: (min",
"Gender": "Rod", "Gender": "Rod",
"General": "Všeobecné", "General": "Všeobecné",
"Generate Repayment Schedule": "Generovat plán splácení",
"Global Configurations": "Globální konfigurace", "Global Configurations": "Globální konfigurace",
"Goodwill credit": "Úvěr dobré vůle", "Goodwill credit": "Úvěr dobré vůle",
"Grace on Arrears Ageing": "Grace on Rerears Stárnutí", "Grace on Arrears Ageing": "Grace on Rerears Stárnutí",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Úroková sazba", "Interest Rate": "Úroková sazba",
"Interest Rate Chart": "Graf úrokových sazeb", "Interest Rate Chart": "Graf úrokových sazeb",
"Interest Rate Differential": "Úrokový rozdíl", "Interest Rate Differential": "Úrokový rozdíl",
"Interest Recalculation Date": "Datum přepočtu",
"Interest Receivable": "Pohledávka z úroků", "Interest Receivable": "Pohledávka z úroků",
"Interest Type": "Typ úroku", "Interest Type": "Typ úroku",
"Interest calculated using": "Úrok vypočítaný pomocí", "Interest calculated using": "Úrok vypočítaný pomocí",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Frekvence opakování", "Recurrence Frequency": "Frekvence opakování",
"Recurrence Interval": "Interval opakování", "Recurrence Interval": "Interval opakování",
"Recurrence Type": "Typ opakování", "Recurrence Type": "Typ opakování",
"Recurring Deposit": "Opakující se vklad",
"Recurring Deposit Amount": "Částka opakovaného vkladu", "Recurring Deposit Amount": "Částka opakovaného vkladu",
"Recurring Deposit Product": "Produkt s opakovaným vkladem", "Recurring Deposit Product": "Produkt s opakovaným vkladem",
"Recurring Deposit Products": "Produkty s opakovaným vkladem", "Recurring Deposit Products": "Produkty s opakovaným vkladem",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Výběr peněz ze spořicího účtu", "Withdraw Money From Saving Account": "Výběr peněz ze spořicího účtu",
"Withdrawal Date": "Datum výběru", "Withdrawal Date": "Datum výběru",
"Withdrawal Fee": "Poplatek za výběr", "Withdrawal Fee": "Poplatek za výběr",
"Withdrawals Fees": "Výběry poplatků",
"Withdrawal Reason": "Důvod stažení", "Withdrawal Reason": "Důvod stažení",
"Withdrawn On": "Staženo na", "Withdrawn On": "Staženo na",
"Withdrawn On Date": "Staženo k datu", "Withdrawn On Date": "Staženo k datu",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Účetnictví", "Accounting": "Účetnictví",
"Account Overview": "Přehled účtu",
"Activate": "aktivovat",
"Add Charge": "Přidat poplatek", "Add Charge": "Přidat poplatek",
"Add Collateral": "Přidat kolaterál", "Add Collateral": "Přidat kolaterál",
"Add Loan Charge": "Přidejte poplatek za půjčku", "Add Loan Charge": "Přidejte poplatek za půjčku",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Vrácení platby", "Payout Refund": "Vrácení platby",
"Post Interest": "Post Interest", "Post Interest": "Post Interest",
"Post Interest As On": "Post Interest As On", "Post Interest As On": "Post Interest As On",
"Premature Close": "Předčasné uzavření",
"Prepay Loan": "Půjčka před výplatou", "Prepay Loan": "Půjčka před výplatou",
"Products": "produkty", "Products": "produkty",
"Profile": "Profil", "Profile": "Profil",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Liste der Konten, die mit verschiedenen Finanzaktivitäten verknüpft sind. Um mehr zu erfahren, klicken Sie:", "Account Linked Financial": "Liste der Konten, die mit verschiedenen Finanzaktivitäten verknüpft sind. Um mehr zu erfahren, klicken Sie:",
"Account Name": "Kontoname", "Account Name": "Kontoname",
"Account Number Preferences": "Kontonummerneinstellungen", "Account Number Preferences": "Kontonummerneinstellungen",
"Account Overview": "Kontoübersicht",
"Account Summary": "Kontoübersicht", "Account Summary": "Kontoübersicht",
"Accounting": "Buchhaltung", "Accounting": "Buchhaltung",
"Accounting Rules": "Rechnungslegungsregeln", "Accounting Rules": "Rechnungslegungsregeln",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Name der Datentabelle", "Data Table Name": "Name der Datentabelle",
"Date": "Datum", "Date": "Datum",
"Date Of Birth": "Geburtsdatum", "Date Of Birth": "Geburtsdatum",
"Date of Deposit": "Datum der Einzahlung",
"Date Type": "Datumstyp", "Date Type": "Datumstyp",
"Date Value": "Datumswert", "Date Value": "Datumswert",
"Date of Birth": "Geburtsdatum", "Date of Birth": "Geburtsdatum",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Art der Einzahlungsperiode", "Deposit Period Type": "Art der Einzahlungsperiode",
"Deposit Start Date": "Startdatum der Einzahlung", "Deposit Start Date": "Startdatum der Einzahlung",
"Deposits Frequency": "Häufigkeit der Einzahlungen", "Deposits Frequency": "Häufigkeit der Einzahlungen",
"Deposits till Date": "Einlagen bis heute",
"Description": "Beschreibung", "Description": "Beschreibung",
"Description/Notes": "Beschreibung/Anmerkungen", "Description/Notes": "Beschreibung/Anmerkungen",
"Destination": "Ziel", "Destination": "Ziel",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Abstand zwischen den Raten: (Min", "Gap between Installments": "Abstand zwischen den Raten: (Min",
"Gender": "Geschlecht", "Gender": "Geschlecht",
"General": "Allgemein", "General": "Allgemein",
"Generate Repayment Schedule": "Rückzahlungsplan erstellen",
"Global Configurations": "Globale Konfigurationen", "Global Configurations": "Globale Konfigurationen",
"Goodwill credit": "Kulanzgutschrift", "Goodwill credit": "Kulanzgutschrift",
"Grace on Arrears Ageing": "Kulanz bei Fälligkeit von Zahlungsrückständen", "Grace on Arrears Ageing": "Kulanz bei Fälligkeit von Zahlungsrückständen",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Zinsrate", "Interest Rate": "Zinsrate",
"Interest Rate Chart": "Zinsdiagramm", "Interest Rate Chart": "Zinsdiagramm",
"Interest Rate Differential": "Zinsdifferenz", "Interest Rate Differential": "Zinsdifferenz",
"Interest Recalculation Date": "Interessenrekulationsdatum",
"Interest Receivable": "Zinsforderung", "Interest Receivable": "Zinsforderung",
"Interest Type": "Interessentyp", "Interest Type": "Interessentyp",
"Interest calculated using": "Zinsen berechnet mit", "Interest calculated using": "Zinsen berechnet mit",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Wiederholungshäufigkeit", "Recurrence Frequency": "Wiederholungshäufigkeit",
"Recurrence Interval": "Wiederholungsintervall", "Recurrence Interval": "Wiederholungsintervall",
"Recurrence Type": "Wiederholungstyp", "Recurrence Type": "Wiederholungstyp",
"Recurring Deposit": "Wiederkehrende Einzahlung",
"Recurring Deposit Amount": "Wiederkehrender Einzahlungsbetrag", "Recurring Deposit Amount": "Wiederkehrender Einzahlungsbetrag",
"Recurring Deposit Product": "Produkt mit wiederkehrender Einzahlung", "Recurring Deposit Product": "Produkt mit wiederkehrender Einzahlung",
"Recurring Deposit Products": "Produkte mit wiederkehrender Einzahlung", "Recurring Deposit Products": "Produkte mit wiederkehrender Einzahlung",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Geld vom Sparkonto abheben", "Withdraw Money From Saving Account": "Geld vom Sparkonto abheben",
"Withdrawal Date": "Widerrufsdatum", "Withdrawal Date": "Widerrufsdatum",
"Withdrawal Fee": "Abhebegebühr", "Withdrawal Fee": "Abhebegebühr",
"Withdrawals Fees": "Abhebungsgebühren",
"Withdrawal Reason": "Widerrufsgrund", "Withdrawal Reason": "Widerrufsgrund",
"Withdrawn On": "Zurückgezogen am", "Withdrawn On": "Zurückgezogen am",
"Withdrawn On Date": "Am Datum zurückgezogen", "Withdrawn On Date": "Am Datum zurückgezogen",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Buchhaltung", "Accounting": "Buchhaltung",
"Account Overview": "Kontoübersicht",
"Activate": "aktivieren Sie",
"Add Charge": "Gebühr hinzufügen", "Add Charge": "Gebühr hinzufügen",
"Add Collateral": "Sicherheiten hinzufügen", "Add Collateral": "Sicherheiten hinzufügen",
"Add Loan Charge": "Kreditgebühr hinzufügen", "Add Loan Charge": "Kreditgebühr hinzufügen",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Auszahlungsrückerstattung", "Payout Refund": "Auszahlungsrückerstattung",
"Post Interest": "Interesse posten", "Post Interest": "Interesse posten",
"Post Interest As On": "Interesse posten wie am", "Post Interest As On": "Interesse posten wie am",
"Premature Close": "Frühgeborener",
"Prepay Loan": "Darlehen mit Vorauszahlung", "Prepay Loan": "Darlehen mit Vorauszahlung",
"Products": "Produkte", "Products": "Produkte",
"Profile": "Profil", "Profile": "Profil",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "List of accounts linked to different financial activities. To know more click:", "Account Linked Financial": "List of accounts linked to different financial activities. To know more click:",
"Account Name": "Account Name", "Account Name": "Account Name",
"Account Number Preferences": "Account Number Preferences", "Account Number Preferences": "Account Number Preferences",
"Account Overview": "Account Overview",
"Account Summary": "Account Summary", "Account Summary": "Account Summary",
"Accounting": "Accounting", "Accounting": "Accounting",
"Accounting Rules": "Accounting Rules", "Accounting Rules": "Accounting Rules",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Data Table Name", "Data Table Name": "Data Table Name",
"Date": "Date", "Date": "Date",
"Date Of Birth": "Date Of Birth", "Date Of Birth": "Date Of Birth",
"Date of Deposit": "Date of Deposit",
"Date Type": "Date Type", "Date Type": "Date Type",
"Date Value": "Date Value", "Date Value": "Date Value",
"Date of Birth": "Date of Birth", "Date of Birth": "Date of Birth",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Deposit Period Type", "Deposit Period Type": "Deposit Period Type",
"Deposit Start Date": "Deposit Start Date", "Deposit Start Date": "Deposit Start Date",
"Deposits Frequency": "Deposits Frequency", "Deposits Frequency": "Deposits Frequency",
"Deposits till Date": "Deposits till Date",
"Description": "Description", "Description": "Description",
"Description/Notes": "Description/Notes", "Description/Notes": "Description/Notes",
"Destination": "Destination", "Destination": "Destination",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Gap between Installments:(Min", "Gap between Installments": "Gap between Installments:(Min",
"Gender": "Gender", "Gender": "Gender",
"General": "General", "General": "General",
"Generate Repayment Schedule": "Generate Repayment Schedule",
"Global Configurations": "Global Configurations", "Global Configurations": "Global Configurations",
"Goodwill credit": "Goodwill credit", "Goodwill credit": "Goodwill credit",
"Grace on Arrears Ageing": "Grace on Arrears Ageing", "Grace on Arrears Ageing": "Grace on Arrears Ageing",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Interest Rate", "Interest Rate": "Interest Rate",
"Interest Rate Chart": "Interest Rate Chart", "Interest Rate Chart": "Interest Rate Chart",
"Interest Rate Differential": "Interest Rate Differential", "Interest Rate Differential": "Interest Rate Differential",
"Interest Recalculation Date": "Interest Recalculation Date",
"Interest Receivable": "Interest Receivable", "Interest Receivable": "Interest Receivable",
"Interest Type": "Interest Type", "Interest Type": "Interest Type",
"Interest calculated using": "Interest calculated using", "Interest calculated using": "Interest calculated using",
@@ -1712,6 +1717,7 @@
"Recurrence Frequency": "Recurrence Frequency", "Recurrence Frequency": "Recurrence Frequency",
"Recurrence Interval": "Recurrence Interval", "Recurrence Interval": "Recurrence Interval",
"Recurrence Type": "Recurrence Type", "Recurrence Type": "Recurrence Type",
"Recurring Deposit": "Recurring Deposit",
"Recurring Deposit Amount": "Recurring Deposit Amount", "Recurring Deposit Amount": "Recurring Deposit Amount",
"Recurring Deposit Product": "Recurring Deposit Product", "Recurring Deposit Product": "Recurring Deposit Product",
"Recurring Deposit Products": "Recurring Deposit Products", "Recurring Deposit Products": "Recurring Deposit Products",
@@ -1980,6 +1986,7 @@
"Withdraw Money From Saving Account": "Withdraw Money From Saving Account", "Withdraw Money From Saving Account": "Withdraw Money From Saving Account",
"Withdrawal Date": "Withdrawal Date", "Withdrawal Date": "Withdrawal Date",
"Withdrawal Fee": "Withdrawal Fee", "Withdrawal Fee": "Withdrawal Fee",
"Withdrawals Fees": "Withdrawals Fees",
"Withdrawal Reason": "Withdrawal Reason", "Withdrawal Reason": "Withdrawal Reason",
"Withdrawn On": "Withdrawn On", "Withdrawn On": "Withdrawn On",
"Withdrawn On Date": "Withdrawn On Date", "Withdrawn On Date": "Withdrawn On Date",
@@ -2036,6 +2043,8 @@
}, },
"menus": { "menus": {
"Accounting": "Accounting", "Accounting": "Accounting",
"Account Overview": "Account Overview",
"Activate": "Activate",
"Add Charge": "Add Charge", "Add Charge": "Add Charge",
"Add Collateral": "Add Collateral", "Add Collateral": "Add Collateral",
"Add Loan Charge": "Add Loan Charge", "Add Loan Charge": "Add Loan Charge",
@@ -2094,6 +2103,7 @@
"Payout Refund": "Payout Refund", "Payout Refund": "Payout Refund",
"Post Interest": "Post Interest", "Post Interest": "Post Interest",
"Post Interest As On": "Post Interest As On", "Post Interest As On": "Post Interest As On",
"Premature Close": "Premature Close",
"Prepay Loan": "Prepay Loan", "Prepay Loan": "Prepay Loan",
"Products": "Products", "Products": "Products",
"Profile": "Profile", "Profile": "Profile",
+11 -1
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Listado de cuentas vinculadas a diferentes actividades financieras. Para saber más haga clic en:", "Account Linked Financial": "Listado de cuentas vinculadas a diferentes actividades financieras. Para saber más haga clic en:",
"Account Name": "Nombre de la cuenta", "Account Name": "Nombre de la cuenta",
"Account Number Preferences": "Preferencias de número de cuenta", "Account Number Preferences": "Preferencias de número de cuenta",
"Account Overview": "Descripción de cuenta",
"Account Summary": "Resumen de la cuenta", "Account Summary": "Resumen de la cuenta",
"Accounting": "Contabilidad", "Accounting": "Contabilidad",
"Accounting Rules": "Reglas de contabilidad", "Accounting Rules": "Reglas de contabilidad",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Nombre de la tabla de datos", "Data Table Name": "Nombre de la tabla de datos",
"Date": "Fecha", "Date": "Fecha",
"Date Of Birth": "Fecha de nacimiento", "Date Of Birth": "Fecha de nacimiento",
"Date of Deposit": "Fecha de depósito",
"Date Type": "Tipo de fecha", "Date Type": "Tipo de fecha",
"Date Value": "Valor de fecha", "Date Value": "Valor de fecha",
"Date of Birth": "Fecha de nacimiento", "Date of Birth": "Fecha de nacimiento",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Tipo de período de depósito", "Deposit Period Type": "Tipo de período de depósito",
"Deposit Start Date": "Fecha de inicio del depósito", "Deposit Start Date": "Fecha de inicio del depósito",
"Deposits Frequency": "Frecuencia de depósitos", "Deposits Frequency": "Frecuencia de depósitos",
"Deposits till Date": "Depósitos a la fecha",
"Description": "Descripción", "Description": "Descripción",
"Description/Notes": "Descripción/Notas", "Description/Notes": "Descripción/Notas",
"Destination": "Destino", "Destination": "Destino",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Brecha entre Cuotas:(Mínimo", "Gap between Installments": "Brecha entre Cuotas:(Mínimo",
"Gender": "Género", "Gender": "Género",
"General": "General", "General": "General",
"Generate Repayment Schedule": "Generar Calendario de Reembolso",
"Global Configurations": "Configuraciones globales", "Global Configurations": "Configuraciones globales",
"Goodwill credit": "crédito de buena voluntad", "Goodwill credit": "crédito de buena voluntad",
"Grace on Arrears Ageing": "Gracia sobre el envejecimiento de los atrasos", "Grace on Arrears Ageing": "Gracia sobre el envejecimiento de los atrasos",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Tasa de interés", "Interest Rate": "Tasa de interés",
"Interest Rate Chart": "Gráfico de tasas de interés", "Interest Rate Chart": "Gráfico de tasas de interés",
"Interest Rate Differential": "Diferencial de tasa de interés", "Interest Rate Differential": "Diferencial de tasa de interés",
"Interest Recalculation Date": "Fecha de recalculación de intereses",
"Interest Receivable": "Intereses por cobrar", "Interest Receivable": "Intereses por cobrar",
"Interest Type": "Tipo de interés", "Interest Type": "Tipo de interés",
"Interest calculated using": "Interés calculado usando", "Interest calculated using": "Interés calculado usando",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Frecuencia de recurrencia", "Recurrence Frequency": "Frecuencia de recurrencia",
"Recurrence Interval": "Intervalo de recurrencia", "Recurrence Interval": "Intervalo de recurrencia",
"Recurrence Type": "Tipo de recurrencia", "Recurrence Type": "Tipo de recurrencia",
"Recurring Deposit": "Deposito recurrente",
"Recurring Deposit Amount": "Monto del depósito recurrente", "Recurring Deposit Amount": "Monto del depósito recurrente",
"Recurring Deposit Product": "Producto de depósito recurrente", "Recurring Deposit Product": "Producto de depósito recurrente",
"Recurring Deposit Products": "Productos de depósito recurrentes", "Recurring Deposit Products": "Productos de depósito recurrentes",
@@ -1977,7 +1983,8 @@
"Withdraw Balance": "Retirar saldo", "Withdraw Balance": "Retirar saldo",
"Withdraw Money From Saving Account": "Retirar dinero de una cuenta de ahorro", "Withdraw Money From Saving Account": "Retirar dinero de una cuenta de ahorro",
"Withdrawal Date": "Fecha de retiro", "Withdrawal Date": "Fecha de retiro",
"Withdrawal Fee": "Cargo por retiro", "Withdrawal Fee": "Comisión por retiro",
"Withdrawals Fees": "Comisiones de retiros",
"Withdrawal Reason": "Motivo del retiro", "Withdrawal Reason": "Motivo del retiro",
"Withdrawn On": "Retirado el", "Withdrawn On": "Retirado el",
"Withdrawn On Date": "Retirado el día", "Withdrawn On Date": "Retirado el día",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Contabilidad", "Accounting": "Contabilidad",
"Account Overview": "Descripción de cuenta",
"Activate": "Activar",
"Add Charge": "Agregar cargo", "Add Charge": "Agregar cargo",
"Add Collateral": "Agregar garantía", "Add Collateral": "Agregar garantía",
"Add Loan Charge": "Agregar cargo de Crédito", "Add Loan Charge": "Agregar cargo de Crédito",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Reembolso de pago", "Payout Refund": "Reembolso de pago",
"Post Interest": "Publicar interés", "Post Interest": "Publicar interés",
"Post Interest As On": "Publicar interés como en", "Post Interest As On": "Publicar interés como en",
"Premature Close": "Cierre prematuro",
"Prepay Loan": "Crédito Prepago", "Prepay Loan": "Crédito Prepago",
"Products": "Productos", "Products": "Productos",
"Profile": "Perfil", "Profile": "Perfil",
+11 -1
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Liste des comptes liés aux différentes activités financières. Pour en savoir plus cliquez :", "Account Linked Financial": "Liste des comptes liés aux différentes activités financières. Pour en savoir plus cliquez :",
"Account Name": "Nom du compte", "Account Name": "Nom du compte",
"Account Number Preferences": "Préférences de numéro de compte", "Account Number Preferences": "Préférences de numéro de compte",
"Account Overview": "Aperçu du compte",
"Account Summary": "Relevé de compte", "Account Summary": "Relevé de compte",
"Accounting": "Comptabilité", "Accounting": "Comptabilité",
"Accounting Rules": "Règles comptables", "Accounting Rules": "Règles comptables",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Nom de la table de données", "Data Table Name": "Nom de la table de données",
"Date": "Date", "Date": "Date",
"Date Of Birth": "Date de naissance", "Date Of Birth": "Date de naissance",
"Date of Deposit": "Date de dépôt",
"Date Type": "Type de date", "Date Type": "Type de date",
"Date Value": "Valeur de date", "Date Value": "Valeur de date",
"Date of Birth": "Date de naissance", "Date of Birth": "Date de naissance",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Type de période de dépôt", "Deposit Period Type": "Type de période de dépôt",
"Deposit Start Date": "Date de début du dépôt", "Deposit Start Date": "Date de début du dépôt",
"Deposits Frequency": "Fréquence des dépôts", "Deposits Frequency": "Fréquence des dépôts",
"Deposits till Date": "Dépôts jusqu'à ce jour",
"Description": "Description", "Description": "Description",
"Description/Notes": "Description/Remarques", "Description/Notes": "Description/Remarques",
"Destination": "Destination", "Destination": "Destination",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Écart entre les versements :(Min", "Gap between Installments": "Écart entre les versements :(Min",
"Gender": "Genre", "Gender": "Genre",
"General": "Général", "General": "Général",
"Generate Repayment Schedule": "Générer un calendrier de remboursement",
"Global Configurations": "Configurations globales", "Global Configurations": "Configurations globales",
"Goodwill credit": "Crédit de bonne volonté", "Goodwill credit": "Crédit de bonne volonté",
"Grace on Arrears Ageing": "Grâce au vieillissement des arriérés", "Grace on Arrears Ageing": "Grâce au vieillissement des arriérés",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Taux d'intérêt", "Interest Rate": "Taux d'intérêt",
"Interest Rate Chart": "Graphique des taux d'intérêt", "Interest Rate Chart": "Graphique des taux d'intérêt",
"Interest Rate Differential": "Différentiel de taux d'intérêt", "Interest Rate Differential": "Différentiel de taux d'intérêt",
"Interest Recalculation Date": "Date de recalcul des intérêts",
"Interest Receivable": "Intérêts à recevoir", "Interest Receivable": "Intérêts à recevoir",
"Interest Type": "Type d'intérêt", "Interest Type": "Type d'intérêt",
"Interest calculated using": "Intérêts calculés selon", "Interest calculated using": "Intérêts calculés selon",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Fréquence de récidive", "Recurrence Frequency": "Fréquence de récidive",
"Recurrence Interval": "Intervalle de récurrence", "Recurrence Interval": "Intervalle de récurrence",
"Recurrence Type": "Type de récurrence", "Recurrence Type": "Type de récurrence",
"Recurring Deposit": "Dépôt récurrent",
"Recurring Deposit Amount": "Montant du dépôt récurrent", "Recurring Deposit Amount": "Montant du dépôt récurrent",
"Recurring Deposit Product": "Produit de dépôt récurrent", "Recurring Deposit Product": "Produit de dépôt récurrent",
"Recurring Deposit Products": "Produits de dépôt récurrents", "Recurring Deposit Products": "Produits de dépôt récurrents",
@@ -1977,7 +1983,8 @@
"Withdraw Balance": "Retirer le solde", "Withdraw Balance": "Retirer le solde",
"Withdraw Money From Saving Account": "Retirer de l'argent d'un compte d'épargne", "Withdraw Money From Saving Account": "Retirer de l'argent d'un compte d'épargne",
"Withdrawal Date": "Date de retrait", "Withdrawal Date": "Date de retrait",
"Withdrawal Fee": "frais de retrait", "Withdrawal Fee": "Frais de retrait",
"Withdrawals Fees": "Frais de retrait",
"Withdrawal Reason": "Raison du retrait", "Withdrawal Reason": "Raison du retrait",
"Withdrawn On": "Retiré le", "Withdrawn On": "Retiré le",
"Withdrawn On Date": "Date de retrait", "Withdrawn On Date": "Date de retrait",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Comptabilité", "Accounting": "Comptabilité",
"Account Overview": "Aperçu du compte",
"Activate": "Activer",
"Add Charge": "Ajouter des frais", "Add Charge": "Ajouter des frais",
"Add Collateral": "Ajouter une garantie", "Add Collateral": "Ajouter une garantie",
"Add Loan Charge": "Ajouter des frais de prêt", "Add Loan Charge": "Ajouter des frais de prêt",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Remboursement des paiements", "Payout Refund": "Remboursement des paiements",
"Post Interest": "Intérêt pour les publications", "Post Interest": "Intérêt pour les publications",
"Post Interest As On": "Publier les intérêts au fur et à mesure", "Post Interest As On": "Publier les intérêts au fur et à mesure",
"Premature Close": "Close prématurée",
"Prepay Loan": "Prêt à remboursement anticipé", "Prepay Loan": "Prêt à remboursement anticipé",
"Products": "Des produits", "Products": "Des produits",
"Profile": "Profil", "Profile": "Profil",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Elenco dei conti collegati a diverse attività finanziarie. Per saperne di più clicca:", "Account Linked Financial": "Elenco dei conti collegati a diverse attività finanziarie. Per saperne di più clicca:",
"Account Name": "Nome utente", "Account Name": "Nome utente",
"Account Number Preferences": "Preferenze numero di conto", "Account Number Preferences": "Preferenze numero di conto",
"Account Overview": "Panoramica dell'Account",
"Account Summary": "Riepilogo account", "Account Summary": "Riepilogo account",
"Accounting": "Contabilità", "Accounting": "Contabilità",
"Accounting Rules": "Regole contabili", "Accounting Rules": "Regole contabili",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Nome della tabella dati", "Data Table Name": "Nome della tabella dati",
"Date": "Data", "Date": "Data",
"Date Of Birth": "Data di nascita", "Date Of Birth": "Data di nascita",
"Date of Deposit": "Data del deposito",
"Date Type": "Tipo di data", "Date Type": "Tipo di data",
"Date Value": "Valore data", "Date Value": "Valore data",
"Date of Birth": "Data di nascita", "Date of Birth": "Data di nascita",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Tipo di periodo di deposito", "Deposit Period Type": "Tipo di periodo di deposito",
"Deposit Start Date": "Data di inizio deposito", "Deposit Start Date": "Data di inizio deposito",
"Deposits Frequency": "Frequenza dei depositi", "Deposits Frequency": "Frequenza dei depositi",
"Deposits till Date": "Depositi fino ad oggi",
"Description": "Descrizione", "Description": "Descrizione",
"Description/Notes": "Descrizione/Note", "Description/Notes": "Descrizione/Note",
"Destination": "Destinazione", "Destination": "Destinazione",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Intervallo tra le rate: (Min", "Gap between Installments": "Intervallo tra le rate: (Min",
"Gender": "Genere", "Gender": "Genere",
"General": "Generale", "General": "Generale",
"Generate Repayment Schedule": "Generare il programma di rimborso",
"Global Configurations": "Configurazioni globali", "Global Configurations": "Configurazioni globali",
"Goodwill credit": "Credito di buona volontà", "Goodwill credit": "Credito di buona volontà",
"Grace on Arrears Ageing": "Grazia sull'invecchiamento arretrato", "Grace on Arrears Ageing": "Grazia sull'invecchiamento arretrato",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Tasso d'interesse", "Interest Rate": "Tasso d'interesse",
"Interest Rate Chart": "Grafico dei tassi di interesse", "Interest Rate Chart": "Grafico dei tassi di interesse",
"Interest Rate Differential": "Differenziale del tasso di interesse", "Interest Rate Differential": "Differenziale del tasso di interesse",
"Interest Recalculation Date": "Data di ricalcolo degli interessi",
"Interest Receivable": "Interessi attivi", "Interest Receivable": "Interessi attivi",
"Interest Type": "Tipo di interesse", "Interest Type": "Tipo di interesse",
"Interest calculated using": "Interesse calcolato utilizzando", "Interest calculated using": "Interesse calcolato utilizzando",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Frequenza di ricorrenza", "Recurrence Frequency": "Frequenza di ricorrenza",
"Recurrence Interval": "Intervallo di ricorrenza", "Recurrence Interval": "Intervallo di ricorrenza",
"Recurrence Type": "Tipo di ricorrenza", "Recurrence Type": "Tipo di ricorrenza",
"Recurring Deposit": "Deposito ricorrente",
"Recurring Deposit Amount": "Importo del deposito ricorrente", "Recurring Deposit Amount": "Importo del deposito ricorrente",
"Recurring Deposit Product": "Prodotto con deposito ricorrente", "Recurring Deposit Product": "Prodotto con deposito ricorrente",
"Recurring Deposit Products": "Prodotti con deposito ricorrente", "Recurring Deposit Products": "Prodotti con deposito ricorrente",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Prelevare denaro dal conto di risparmio", "Withdraw Money From Saving Account": "Prelevare denaro dal conto di risparmio",
"Withdrawal Date": "Data di ritiro", "Withdrawal Date": "Data di ritiro",
"Withdrawal Fee": "Commissione di prelievo", "Withdrawal Fee": "Commissione di prelievo",
"Withdrawals Fees": "Commissioni di prelievo",
"Withdrawal Reason": "Motivo del recesso", "Withdrawal Reason": "Motivo del recesso",
"Withdrawn On": "Ritirato il", "Withdrawn On": "Ritirato il",
"Withdrawn On Date": "Ritirato in data", "Withdrawn On Date": "Ritirato in data",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Contabilità", "Accounting": "Contabilità",
"Account Overview": "Panoramica dell'Account",
"Activate": "Attivare",
"Add Charge": "Aggiungi addebito", "Add Charge": "Aggiungi addebito",
"Add Collateral": "Aggiungi garanzia", "Add Collateral": "Aggiungi garanzia",
"Add Loan Charge": "Aggiungi addebito sul prestito", "Add Loan Charge": "Aggiungi addebito sul prestito",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Rimborso del pagamento", "Payout Refund": "Rimborso del pagamento",
"Post Interest": "Pubblica interesse", "Post Interest": "Pubblica interesse",
"Post Interest As On": "Pubblica interesse come attivo", "Post Interest As On": "Pubblica interesse come attivo",
"Premature Close": "Close precoce",
"Prepay Loan": "Prestito con pagamento anticipato", "Prepay Loan": "Prestito con pagamento anticipato",
"Products": "Prodotti", "Products": "Prodotti",
"Profile": "Profilo", "Profile": "Profilo",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "다양한 금융 활동과 연결된 계정 목록입니다. 자세한 내용을 보려면 다음을 클릭하세요.", "Account Linked Financial": "다양한 금융 활동과 연결된 계정 목록입니다. 자세한 내용을 보려면 다음을 클릭하세요.",
"Account Name": "계정 이름", "Account Name": "계정 이름",
"Account Number Preferences": "계좌번호 기본 설정", "Account Number Preferences": "계좌번호 기본 설정",
"Account Overview": "계정 개요",
"Account Summary": "계정 요약", "Account Summary": "계정 요약",
"Accounting": "회계", "Accounting": "회계",
"Accounting Rules": "회계 규칙", "Accounting Rules": "회계 규칙",
@@ -1121,6 +1122,7 @@
"Data Table Name": "데이터 테이블 이름", "Data Table Name": "데이터 테이블 이름",
"Date": "날짜", "Date": "날짜",
"Date Of Birth": "생일", "Date Of Birth": "생일",
"Date of Deposit": "예금일",
"Date Type": "날짜 유형", "Date Type": "날짜 유형",
"Date Value": "날짜 값", "Date Value": "날짜 값",
"Date of Birth": "생일", "Date of Birth": "생일",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "예금기간 종류", "Deposit Period Type": "예금기간 종류",
"Deposit Start Date": "입금 시작일", "Deposit Start Date": "입금 시작일",
"Deposits Frequency": "예금 빈도", "Deposits Frequency": "예금 빈도",
"Deposits till Date": "날짜까지 입금합니다",
"Description": "설명", "Description": "설명",
"Description/Notes": "설명/참고", "Description/Notes": "설명/참고",
"Destination": "목적지", "Destination": "목적지",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "할부 간 간격:(최소", "Gap between Installments": "할부 간 간격:(최소",
"Gender": "성별", "Gender": "성별",
"General": "일반적인", "General": "일반적인",
"Generate Repayment Schedule": "상환 일정을 생성합니다",
"Global Configurations": "글로벌 구성", "Global Configurations": "글로벌 구성",
"Goodwill credit": "영업권 신용", "Goodwill credit": "영업권 신용",
"Grace on Arrears Ageing": "연체 노화에 대한 유예", "Grace on Arrears Ageing": "연체 노화에 대한 유예",
@@ -1372,6 +1376,7 @@
"Interest Rate": "이자율", "Interest Rate": "이자율",
"Interest Rate Chart": "금리 차트", "Interest Rate Chart": "금리 차트",
"Interest Rate Differential": "금리차이", "Interest Rate Differential": "금리차이",
"Interest Recalculation Date": "이자 재 계산 날짜",
"Interest Receivable": "미수이자", "Interest Receivable": "미수이자",
"Interest Type": "관심분야 유형", "Interest Type": "관심분야 유형",
"Interest calculated using": "다음을 사용하여 계산된 이자", "Interest calculated using": "다음을 사용하여 계산된 이자",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "재발 빈도", "Recurrence Frequency": "재발 빈도",
"Recurrence Interval": "반복 간격", "Recurrence Interval": "반복 간격",
"Recurrence Type": "반복 유형", "Recurrence Type": "반복 유형",
"Recurring Deposit": "반복 예금",
"Recurring Deposit Amount": "정기입금액", "Recurring Deposit Amount": "정기입금액",
"Recurring Deposit Product": "정기예금 상품", "Recurring Deposit Product": "정기예금 상품",
"Recurring Deposit Products": "정기예금 상품", "Recurring Deposit Products": "정기예금 상품",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "저축 계좌에서 돈을 인출하세요", "Withdraw Money From Saving Account": "저축 계좌에서 돈을 인출하세요",
"Withdrawal Date": "탈퇴일", "Withdrawal Date": "탈퇴일",
"Withdrawal Fee": "인출 수수료", "Withdrawal Fee": "인출 수수료",
"Withdrawals Fees": "인출 수수료",
"Withdrawal Reason": "탈퇴사유", "Withdrawal Reason": "탈퇴사유",
"Withdrawn On": "철회 날짜", "Withdrawn On": "철회 날짜",
"Withdrawn On Date": "철회 날짜", "Withdrawn On Date": "철회 날짜",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "회계", "Accounting": "회계",
"Account Overview": "계정 개요",
"Activate": "활성화",
"Add Charge": "요금 추가", "Add Charge": "요금 추가",
"Add Collateral": "담보 추가", "Add Collateral": "담보 추가",
"Add Loan Charge": "대출 수수료 추가", "Add Loan Charge": "대출 수수료 추가",
@@ -2092,6 +2101,7 @@
"Payout Refund": "지불금 환불", "Payout Refund": "지불금 환불",
"Post Interest": "관심 게시", "Post Interest": "관심 게시",
"Post Interest As On": "이자 게시를 현재 상태로 유지", "Post Interest As On": "이자 게시를 현재 상태로 유지",
"Premature Close": "조기 가까운 곳",
"Prepay Loan": "선불대출", "Prepay Loan": "선불대출",
"Products": "제품", "Products": "제품",
"Profile": "프로필", "Profile": "프로필",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Sąskaitų, susietų su įvairia finansine veikla, sąrašas. Norėdami sužinoti daugiau, spustelėkite:", "Account Linked Financial": "Sąskaitų, susietų su įvairia finansine veikla, sąrašas. Norėdami sužinoti daugiau, spustelėkite:",
"Account Name": "Paskyros vardas", "Account Name": "Paskyros vardas",
"Account Number Preferences": "Sąskaitos numerio nuostatos", "Account Number Preferences": "Sąskaitos numerio nuostatos",
"Account Overview": "Sąskaitos apžvalga",
"Account Summary": "Sąskaitos suvestinė", "Account Summary": "Sąskaitos suvestinė",
"Accounting": "Apskaita", "Accounting": "Apskaita",
"Accounting Rules": "Buhalterinės apskaitos taisyklės", "Accounting Rules": "Buhalterinės apskaitos taisyklės",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Duomenų lentelės pavadinimas", "Data Table Name": "Duomenų lentelės pavadinimas",
"Date": "Data", "Date": "Data",
"Date Of Birth": "Gimimo data", "Date Of Birth": "Gimimo data",
"Date of Deposit": "Indėlio data",
"Date Type": "Datos tipas", "Date Type": "Datos tipas",
"Date Value": "Datos vertė", "Date Value": "Datos vertė",
"Date of Birth": "Gimimo data", "Date of Birth": "Gimimo data",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Indėlio laikotarpio tipas", "Deposit Period Type": "Indėlio laikotarpio tipas",
"Deposit Start Date": "Indėlio pradžios data", "Deposit Start Date": "Indėlio pradžios data",
"Deposits Frequency": "Indėlių dažnumas", "Deposits Frequency": "Indėlių dažnumas",
"Deposits till Date": "Indėliai iki datos",
"Description": "apibūdinimas", "Description": "apibūdinimas",
"Description/Notes": "Aprašymas/Pastabos", "Description/Notes": "Aprašymas/Pastabos",
"Destination": "Kelionės tikslas", "Destination": "Kelionės tikslas",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Tarpas tarp įmokų: (min", "Gap between Installments": "Tarpas tarp įmokų: (min",
"Gender": "Lytis", "Gender": "Lytis",
"General": "Generolas", "General": "Generolas",
"Generate Repayment Schedule": "Generuoti grąžinimo grafiką",
"Global Configurations": "Pasaulinės konfigūracijos", "Global Configurations": "Pasaulinės konfigūracijos",
"Goodwill credit": "Geros valios kreditas", "Goodwill credit": "Geros valios kreditas",
"Grace on Arrears Ageing": "Grace on Ararar Aging", "Grace on Arrears Ageing": "Grace on Ararar Aging",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Palūkanų norma", "Interest Rate": "Palūkanų norma",
"Interest Rate Chart": "Palūkanų normų diagrama", "Interest Rate Chart": "Palūkanų normų diagrama",
"Interest Rate Differential": "Palūkanų normos skirtumas", "Interest Rate Differential": "Palūkanų normos skirtumas",
"Interest Recalculation Date": "Palūkanų apskaičiavimo data",
"Interest Receivable": "Gautinos palūkanos", "Interest Receivable": "Gautinos palūkanos",
"Interest Type": "Pomėgių tipas", "Interest Type": "Pomėgių tipas",
"Interest calculated using": "Palūkanos skaičiuojamos naudojant", "Interest calculated using": "Palūkanos skaičiuojamos naudojant",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Pasikartojimo dažnis", "Recurrence Frequency": "Pasikartojimo dažnis",
"Recurrence Interval": "Pasikartojimo intervalas", "Recurrence Interval": "Pasikartojimo intervalas",
"Recurrence Type": "Pasikartojimo tipas", "Recurrence Type": "Pasikartojimo tipas",
"Recurring Deposit": "Pasikartojantis indėlis",
"Recurring Deposit Amount": "Pasikartojanti indėlio suma", "Recurring Deposit Amount": "Pasikartojanti indėlio suma",
"Recurring Deposit Product": "Pasikartojančio indėlio produktas", "Recurring Deposit Product": "Pasikartojančio indėlio produktas",
"Recurring Deposit Products": "Pasikartojančių indėlių produktai", "Recurring Deposit Products": "Pasikartojančių indėlių produktai",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Išimkite pinigus iš taupomosios sąskaitos", "Withdraw Money From Saving Account": "Išimkite pinigus iš taupomosios sąskaitos",
"Withdrawal Date": "Pasitraukimo data", "Withdrawal Date": "Pasitraukimo data",
"Withdrawal Fee": "Išėmimo mokestis", "Withdrawal Fee": "Išėmimo mokestis",
"Withdrawals Fees": "Išėmimo mokesčiai",
"Withdrawal Reason": "Pasitraukimo priežastis", "Withdrawal Reason": "Pasitraukimo priežastis",
"Withdrawn On": "Atšauktas Įjungtas", "Withdrawn On": "Atšauktas Įjungtas",
"Withdrawn On Date": "Išimta datą", "Withdrawn On Date": "Išimta datą",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Apskaita", "Accounting": "Apskaita",
"Account Overview": "Sąskaitos apžvalga",
"Activate": "Suaktyvinti",
"Add Charge": "Pridėti mokestį", "Add Charge": "Pridėti mokestį",
"Add Collateral": "Pridėti užstatą", "Add Collateral": "Pridėti užstatą",
"Add Loan Charge": "Pridėti paskolos mokestį", "Add Loan Charge": "Pridėti paskolos mokestį",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Išmokų grąžinimas", "Payout Refund": "Išmokų grąžinimas",
"Post Interest": "Paskelbti susidomėjimą", "Post Interest": "Paskelbti susidomėjimą",
"Post Interest As On": "Paskelbkite susidomėjimą", "Post Interest As On": "Paskelbkite susidomėjimą",
"Premature Close": "Per anksti arti",
"Prepay Loan": "Išankstinio mokėjimo paskola", "Prepay Loan": "Išankstinio mokėjimo paskola",
"Products": "Produktai", "Products": "Produktai",
"Profile": "Profilis", "Profile": "Profilis",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Ar dažādām finanšu darbībām saistīto kontu saraksts. Lai uzzinātu vairāk, noklikšķiniet:", "Account Linked Financial": "Ar dažādām finanšu darbībām saistīto kontu saraksts. Lai uzzinātu vairāk, noklikšķiniet:",
"Account Name": "Konta vārds", "Account Name": "Konta vārds",
"Account Number Preferences": "Konta numura preferences", "Account Number Preferences": "Konta numura preferences",
"Account Overview": "Konta pārskats",
"Account Summary": "Konta kopsavilkums", "Account Summary": "Konta kopsavilkums",
"Accounting": "Grāmatvedība", "Accounting": "Grāmatvedība",
"Accounting Rules": "Grāmatvedības noteikumi", "Accounting Rules": "Grāmatvedības noteikumi",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Datu tabulas nosaukums", "Data Table Name": "Datu tabulas nosaukums",
"Date": "Datums", "Date": "Datums",
"Date Of Birth": "Dzimšanas datums", "Date Of Birth": "Dzimšanas datums",
"Date of Deposit": "Depozīta datums",
"Date Type": "Datuma veids", "Date Type": "Datuma veids",
"Date Value": "Datuma vērtība", "Date Value": "Datuma vērtība",
"Date of Birth": "Dzimšanas datums", "Date of Birth": "Dzimšanas datums",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Depozīta perioda veids", "Deposit Period Type": "Depozīta perioda veids",
"Deposit Start Date": "Depozīta sākuma datums", "Deposit Start Date": "Depozīta sākuma datums",
"Deposits Frequency": "Noguldījumu biežums", "Deposits Frequency": "Noguldījumu biežums",
"Deposits till Date": "Noguldījumi līdz datumam",
"Description": "Apraksts", "Description": "Apraksts",
"Description/Notes": "Apraksts/piezīmes", "Description/Notes": "Apraksts/piezīmes",
"Destination": "Galamērķis", "Destination": "Galamērķis",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Starpība starp maksājumiem: (min", "Gap between Installments": "Starpība starp maksājumiem: (min",
"Gender": "Dzimums", "Gender": "Dzimums",
"General": "Ģenerālis", "General": "Ģenerālis",
"Generate Repayment Schedule": "Ģenerēt atmaksas grafiku",
"Global Configurations": "Globālās konfigurācijas", "Global Configurations": "Globālās konfigurācijas",
"Goodwill credit": "Labas gribas kredīts", "Goodwill credit": "Labas gribas kredīts",
"Grace on Arrears Ageing": "Grace on Arrears Aging", "Grace on Arrears Ageing": "Grace on Arrears Aging",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Procentu likme", "Interest Rate": "Procentu likme",
"Interest Rate Chart": "Procentu likmju diagramma", "Interest Rate Chart": "Procentu likmju diagramma",
"Interest Rate Differential": "Procentu likmju starpība", "Interest Rate Differential": "Procentu likmju starpība",
"Interest Recalculation Date": "Procentu pārrēķināšanas datums",
"Interest Receivable": "Saņemamie procenti", "Interest Receivable": "Saņemamie procenti",
"Interest Type": "Interešu veids", "Interest Type": "Interešu veids",
"Interest calculated using": "Procenti aprēķināti izmantojot", "Interest calculated using": "Procenti aprēķināti izmantojot",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Atkārtošanās biežums", "Recurrence Frequency": "Atkārtošanās biežums",
"Recurrence Interval": "Atkārtošanās intervāls", "Recurrence Interval": "Atkārtošanās intervāls",
"Recurrence Type": "Atkārtošanās veids", "Recurrence Type": "Atkārtošanās veids",
"Recurring Deposit": "Atkārtots depozīts",
"Recurring Deposit Amount": "Periodiskā depozīta summa", "Recurring Deposit Amount": "Periodiskā depozīta summa",
"Recurring Deposit Product": "Atkārtota depozīta produkts", "Recurring Deposit Product": "Atkārtota depozīta produkts",
"Recurring Deposit Products": "Atkārtota depozīta produkti", "Recurring Deposit Products": "Atkārtota depozīta produkti",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Izņemiet naudu no krājkonta", "Withdraw Money From Saving Account": "Izņemiet naudu no krājkonta",
"Withdrawal Date": "Izstāšanās datums", "Withdrawal Date": "Izstāšanās datums",
"Withdrawal Fee": "Izņemšanas maksa", "Withdrawal Fee": "Izņemšanas maksa",
"Withdrawals Fees": "Izņemšanas maksa",
"Withdrawal Reason": "Izstāšanās iemesls", "Withdrawal Reason": "Izstāšanās iemesls",
"Withdrawn On": "Izņemts On", "Withdrawn On": "Izņemts On",
"Withdrawn On Date": "Izņemts datumā", "Withdrawn On Date": "Izņemts datumā",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Grāmatvedība", "Accounting": "Grāmatvedība",
"Account Overview": "Konta pārskats",
"Activate": "Aktivizēt",
"Add Charge": "Pievienot maksu", "Add Charge": "Pievienot maksu",
"Add Collateral": "Pievienot nodrošinājumu", "Add Collateral": "Pievienot nodrošinājumu",
"Add Loan Charge": "Pievienot aizdevuma maksu", "Add Loan Charge": "Pievienot aizdevuma maksu",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Izmaksas atmaksa", "Payout Refund": "Izmaksas atmaksa",
"Post Interest": "Post Interese", "Post Interest": "Post Interese",
"Post Interest As On": "Post Interes as On", "Post Interest As On": "Post Interes as On",
"Premature Close": "Priekšlaicīgi aizveras",
"Prepay Loan": "Priekšapmaksas aizdevums", "Prepay Loan": "Priekšapmaksas aizdevums",
"Products": "Produkti", "Products": "Produkti",
"Profile": "Profils", "Profile": "Profils",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "विभिन्न वित्तीय गतिविधिहरु संग जोडिएको खाताहरु को सूची। थप जान्नको लागि क्लिक गर्नुहोस्:", "Account Linked Financial": "विभिन्न वित्तीय गतिविधिहरु संग जोडिएको खाताहरु को सूची। थप जान्नको लागि क्लिक गर्नुहोस्:",
"Account Name": "खाताको नाम", "Account Name": "खाताको नाम",
"Account Number Preferences": "खाता नम्बर प्राथमिकताहरू", "Account Number Preferences": "खाता नम्बर प्राथमिकताहरू",
"Account Overview": "खाता अवलोकन",
"Account Summary": "खाता सारांश", "Account Summary": "खाता सारांश",
"Accounting": "लेखा", "Accounting": "लेखा",
"Accounting Rules": "लेखा नियम", "Accounting Rules": "लेखा नियम",
@@ -1121,6 +1122,7 @@
"Data Table Name": "डाटा तालिका नाम", "Data Table Name": "डाटा तालिका नाम",
"Date": "मिति", "Date": "मिति",
"Date Of Birth": "जन्म मिति", "Date Of Birth": "जन्म मिति",
"Date of Deposit": "निक्षेपको मिति",
"Date Type": "मिति प्रकार", "Date Type": "मिति प्रकार",
"Date Value": "मिति मान", "Date Value": "मिति मान",
"Date of Birth": "जन्म मिति", "Date of Birth": "जन्म मिति",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "जम्मा अवधि प्रकार", "Deposit Period Type": "जम्मा अवधि प्रकार",
"Deposit Start Date": "जम्मा सुरु मिति", "Deposit Start Date": "जम्मा सुरु मिति",
"Deposits Frequency": "निक्षेप आवृत्ति", "Deposits Frequency": "निक्षेप आवृत्ति",
"Deposits till Date": "मिति सम्म निक्षेप",
"Description": "विवरण", "Description": "विवरण",
"Description/Notes": "विवरण/टिप्पणीहरू", "Description/Notes": "विवरण/टिप्पणीहरू",
"Destination": "गन्तव्य", "Destination": "गन्तव्य",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "किस्ताहरू बीचको अन्तर: (न्यूनतम", "Gap between Installments": "किस्ताहरू बीचको अन्तर: (न्यूनतम",
"Gender": "लिङ्ग", "Gender": "लिङ्ग",
"General": "सामान्य", "General": "सामान्य",
"Generate Repayment Schedule": "भुक्तानी तालिका उत्पन्न गर्नुहोस्",
"Global Configurations": "ग्लोबल कन्फिगरेसनहरू", "Global Configurations": "ग्लोबल कन्फिगरेसनहरू",
"Goodwill credit": "सद्भावना क्रेडिट", "Goodwill credit": "सद्भावना क्रेडिट",
"Grace on Arrears Ageing": "बकाया एजिंग मा अनुग्रह", "Grace on Arrears Ageing": "बकाया एजिंग मा अनुग्रह",
@@ -1372,6 +1376,7 @@
"Interest Rate": "ब्याजदर", "Interest Rate": "ब्याजदर",
"Interest Rate Chart": "ब्याज दर चार्ट", "Interest Rate Chart": "ब्याज दर चार्ट",
"Interest Rate Differential": "ब्याज दर भिन्नता", "Interest Rate Differential": "ब्याज दर भिन्नता",
"Interest Recalculation Date": "ब्याज पुन: गणना मिति",
"Interest Receivable": "ब्याज प्राप्य", "Interest Receivable": "ब्याज प्राप्य",
"Interest Type": "ब्याज प्रकार", "Interest Type": "ब्याज प्रकार",
"Interest calculated using": "प्रयोग गरेर ब्याज गणना", "Interest calculated using": "प्रयोग गरेर ब्याज गणना",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "पुनरावृत्ति आवृत्ति", "Recurrence Frequency": "पुनरावृत्ति आवृत्ति",
"Recurrence Interval": "पुनरावृत्ति अन्तराल", "Recurrence Interval": "पुनरावृत्ति अन्तराल",
"Recurrence Type": "पुनरावृत्ति प्रकार", "Recurrence Type": "पुनरावृत्ति प्रकार",
"Recurring Deposit": "पुनरावलोकन निक्षेप",
"Recurring Deposit Amount": "आवर्ती जम्मा रकम", "Recurring Deposit Amount": "आवर्ती जम्मा रकम",
"Recurring Deposit Product": "आवर्ती जम्मा उत्पादन", "Recurring Deposit Product": "आवर्ती जम्मा उत्पादन",
"Recurring Deposit Products": "आवर्ती जम्मा उत्पादनहरू", "Recurring Deposit Products": "आवर्ती जम्मा उत्पादनहरू",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "बचत खाताबाट पैसा निकाल्नुहोस्", "Withdraw Money From Saving Account": "बचत खाताबाट पैसा निकाल्नुहोस्",
"Withdrawal Date": "फिर्ता लिने मिति", "Withdrawal Date": "फिर्ता लिने मिति",
"Withdrawal Fee": "निकासी शुल्क", "Withdrawal Fee": "निकासी शुल्क",
"Withdrawals Fees": "निकासी शुल्क",
"Withdrawal Reason": "फिर्ता लिने कारण", "Withdrawal Reason": "फिर्ता लिने कारण",
"Withdrawn On": "मा फिर्ता गरियो", "Withdrawn On": "मा फिर्ता गरियो",
"Withdrawn On Date": "मितिमा फिर्ता गरियो", "Withdrawn On Date": "मितिमा फिर्ता गरियो",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "लेखा", "Accounting": "लेखा",
"Account Overview": "खाता अवलोकन",
"Activate": "अलग गर्नु",
"Add Charge": "चार्ज थप्नुहोस्", "Add Charge": "चार्ज थप्नुहोस्",
"Add Collateral": "संपार्श्विक थप्नुहोस्", "Add Collateral": "संपार्श्विक थप्नुहोस्",
"Add Loan Charge": "ऋण शुल्क थप्नुहोस्", "Add Loan Charge": "ऋण शुल्क थप्नुहोस्",
@@ -2092,6 +2101,7 @@
"Payout Refund": "भुक्तानी फिर्ता", "Payout Refund": "भुक्तानी फिर्ता",
"Post Interest": "पोस्ट ब्याज", "Post Interest": "पोस्ट ब्याज",
"Post Interest As On": "पोष्ट ब्याज यथा", "Post Interest As On": "पोष्ट ब्याज यथा",
"Premature Close": "असामान्य नजिक",
"Prepay Loan": "पूर्व भुक्तानी ऋण", "Prepay Loan": "पूर्व भुक्तानी ऋण",
"Products": "उत्पादनहरू", "Products": "उत्पादनहरू",
"Profile": "प्रोफाइल", "Profile": "प्रोफाइल",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Lista de contas vinculadas a diferentes atividades financeiras. Para saber mais clique:", "Account Linked Financial": "Lista de contas vinculadas a diferentes atividades financeiras. Para saber mais clique:",
"Account Name": "Nome da conta", "Account Name": "Nome da conta",
"Account Number Preferences": "Preferências de número de conta", "Account Number Preferences": "Preferências de número de conta",
"Account Overview": "visão geral da conta",
"Account Summary": "Resumo da conta", "Account Summary": "Resumo da conta",
"Accounting": "Contabilidade", "Accounting": "Contabilidade",
"Accounting Rules": "Regras contábeis", "Accounting Rules": "Regras contábeis",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Nome da tabela de dados", "Data Table Name": "Nome da tabela de dados",
"Date": "Data", "Date": "Data",
"Date Of Birth": "Data de nascimento", "Date Of Birth": "Data de nascimento",
"Date of Deposit": "Data de depósito",
"Date Type": "Tipo de data", "Date Type": "Tipo de data",
"Date Value": "Valor da data", "Date Value": "Valor da data",
"Date of Birth": "Data de nascimento", "Date of Birth": "Data de nascimento",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Tipo de período de depósito", "Deposit Period Type": "Tipo de período de depósito",
"Deposit Start Date": "Data de início do depósito", "Deposit Start Date": "Data de início do depósito",
"Deposits Frequency": "Frequência de Depósitos", "Deposits Frequency": "Frequência de Depósitos",
"Deposits till Date": "Depósitos até a data",
"Description": "Descrição", "Description": "Descrição",
"Description/Notes": "Descrição/Notas", "Description/Notes": "Descrição/Notas",
"Destination": "Destino", "Destination": "Destino",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Intervalo entre as parcelas:(mín.", "Gap between Installments": "Intervalo entre as parcelas:(mín.",
"Gender": "Gênero", "Gender": "Gênero",
"General": "Em geral", "General": "Em geral",
"Generate Repayment Schedule": "Gerar cronograma de pagamento",
"Global Configurations": "Configurações globais", "Global Configurations": "Configurações globais",
"Goodwill credit": "Crédito de boa vontade", "Goodwill credit": "Crédito de boa vontade",
"Grace on Arrears Ageing": "Graça sobre o envelhecimento em atraso", "Grace on Arrears Ageing": "Graça sobre o envelhecimento em atraso",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Taxa de juro", "Interest Rate": "Taxa de juro",
"Interest Rate Chart": "Gráfico de taxas de juros", "Interest Rate Chart": "Gráfico de taxas de juros",
"Interest Rate Differential": "Diferencial de taxa de juros", "Interest Rate Differential": "Diferencial de taxa de juros",
"Interest Recalculation Date": "Data de recálculo de juros",
"Interest Receivable": "Juros a receber", "Interest Receivable": "Juros a receber",
"Interest Type": "Tipo de interesse", "Interest Type": "Tipo de interesse",
"Interest calculated using": "Juros calculados usando", "Interest calculated using": "Juros calculados usando",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Frequência de recorrência", "Recurrence Frequency": "Frequência de recorrência",
"Recurrence Interval": "Intervalo de recorrência", "Recurrence Interval": "Intervalo de recorrência",
"Recurrence Type": "Tipo de recorrência", "Recurrence Type": "Tipo de recorrência",
"Recurring Deposit": "Depósito recorrente",
"Recurring Deposit Amount": "Valor do depósito recorrente", "Recurring Deposit Amount": "Valor do depósito recorrente",
"Recurring Deposit Product": "Produto de Depósito Recorrente", "Recurring Deposit Product": "Produto de Depósito Recorrente",
"Recurring Deposit Products": "Produtos de Depósito Recorrente", "Recurring Deposit Products": "Produtos de Depósito Recorrente",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Retirar dinheiro da conta poupança", "Withdraw Money From Saving Account": "Retirar dinheiro da conta poupança",
"Withdrawal Date": "Data de retirada", "Withdrawal Date": "Data de retirada",
"Withdrawal Fee": "Taxa de retirada", "Withdrawal Fee": "Taxa de retirada",
"Withdrawals Fees": "Taxas de retirada",
"Withdrawal Reason": "Motivo da retirada", "Withdrawal Reason": "Motivo da retirada",
"Withdrawn On": "Retirado em", "Withdrawn On": "Retirado em",
"Withdrawn On Date": "Retirado na data", "Withdrawn On Date": "Retirado na data",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Contabilidade", "Accounting": "Contabilidade",
"Account Overview": "visão geral da conta",
"Activate": "Ativar",
"Add Charge": "Adicionar cobrança", "Add Charge": "Adicionar cobrança",
"Add Collateral": "Adicionar garantia", "Add Collateral": "Adicionar garantia",
"Add Loan Charge": "Adicionar taxa de empréstimo", "Add Loan Charge": "Adicionar taxa de empréstimo",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Reembolso de pagamento", "Payout Refund": "Reembolso de pagamento",
"Post Interest": "Publicar interesse", "Post Interest": "Publicar interesse",
"Post Interest As On": "Publicar juros como ativado", "Post Interest As On": "Publicar juros como ativado",
"Premature Close": "Fechamento prematuro",
"Prepay Loan": "Empréstimo pré-pago", "Prepay Loan": "Empréstimo pré-pago",
"Products": "Produtos", "Products": "Produtos",
"Profile": "Perfil", "Profile": "Perfil",
+10
View File
@@ -535,6 +535,7 @@
"Account Linked Financial": "Orodha ya akaunti zilizounganishwa na shughuli tofauti za kifedha. Kujua zaidi bofya:", "Account Linked Financial": "Orodha ya akaunti zilizounganishwa na shughuli tofauti za kifedha. Kujua zaidi bofya:",
"Account Name": "Jina la Akaunti", "Account Name": "Jina la Akaunti",
"Account Number Preferences": "Mapendeleo ya Nambari ya Akaunti", "Account Number Preferences": "Mapendeleo ya Nambari ya Akaunti",
"Account Overview": "Muhtasari wa akaunti",
"Account Summary": "Muhtasari wa Akaunti", "Account Summary": "Muhtasari wa Akaunti",
"Accounting": "Uhasibu", "Accounting": "Uhasibu",
"Accounting Rules": "Kanuni za Uhasibu", "Accounting Rules": "Kanuni za Uhasibu",
@@ -1121,6 +1122,7 @@
"Data Table Name": "Jina la Jedwali la Data", "Data Table Name": "Jina la Jedwali la Data",
"Date": "Tarehe", "Date": "Tarehe",
"Date Of Birth": "Tarehe ya kuzaliwa", "Date Of Birth": "Tarehe ya kuzaliwa",
"Date of Deposit": "Tarehe ya amana",
"Date Type": "Aina ya Tarehe", "Date Type": "Aina ya Tarehe",
"Date Value": "Thamani ya Tarehe", "Date Value": "Thamani ya Tarehe",
"Date of Birth": "Tarehe ya kuzaliwa", "Date of Birth": "Tarehe ya kuzaliwa",
@@ -1164,6 +1166,7 @@
"Deposit Period Type": "Aina ya Kipindi cha Amana", "Deposit Period Type": "Aina ya Kipindi cha Amana",
"Deposit Start Date": "Tarehe ya Kuanza kwa Amana", "Deposit Start Date": "Tarehe ya Kuanza kwa Amana",
"Deposits Frequency": "Mzunguko wa Amana", "Deposits Frequency": "Mzunguko wa Amana",
"Deposits till Date": "Amana hadi leo",
"Description": "Maelezo", "Description": "Maelezo",
"Description/Notes": "Maelezo/Vidokezo", "Description/Notes": "Maelezo/Vidokezo",
"Destination": "Marudio", "Destination": "Marudio",
@@ -1298,6 +1301,7 @@
"Gap between Installments": "Pengo kati ya Mikopo:(Min", "Gap between Installments": "Pengo kati ya Mikopo:(Min",
"Gender": "Jinsia", "Gender": "Jinsia",
"General": "Mkuu", "General": "Mkuu",
"Generate Repayment Schedule": "Tengeneza ratiba ya ulipaji",
"Global Configurations": "Mipangilio ya Ulimwenguni", "Global Configurations": "Mipangilio ya Ulimwenguni",
"Goodwill credit": "Mikopo ya nia njema", "Goodwill credit": "Mikopo ya nia njema",
"Grace on Arrears Ageing": "Grace juu ya Madeni ya Kuzeeka", "Grace on Arrears Ageing": "Grace juu ya Madeni ya Kuzeeka",
@@ -1372,6 +1376,7 @@
"Interest Rate": "Kiwango cha Riba", "Interest Rate": "Kiwango cha Riba",
"Interest Rate Chart": "Chati ya Kiwango cha Riba", "Interest Rate Chart": "Chati ya Kiwango cha Riba",
"Interest Rate Differential": "Tofauti ya Kiwango cha Riba", "Interest Rate Differential": "Tofauti ya Kiwango cha Riba",
"Interest Recalculation Date": "Tarehe ya kumbukumbu ya riba",
"Interest Receivable": "Riba Inayopatikana", "Interest Receivable": "Riba Inayopatikana",
"Interest Type": "Aina ya riba", "Interest Type": "Aina ya riba",
"Interest calculated using": "Riba inakokotolewa kwa kutumia", "Interest calculated using": "Riba inakokotolewa kwa kutumia",
@@ -1711,6 +1716,7 @@
"Recurrence Frequency": "Mzunguko wa Kujirudia", "Recurrence Frequency": "Mzunguko wa Kujirudia",
"Recurrence Interval": "Muda wa Kurudia", "Recurrence Interval": "Muda wa Kurudia",
"Recurrence Type": "Aina ya Kujirudia", "Recurrence Type": "Aina ya Kujirudia",
"Recurring Deposit": "Amana inayorudiwa",
"Recurring Deposit Amount": "Kiasi cha Amana ya Mara kwa Mara", "Recurring Deposit Amount": "Kiasi cha Amana ya Mara kwa Mara",
"Recurring Deposit Product": "Bidhaa ya Amana ya Mara kwa Mara", "Recurring Deposit Product": "Bidhaa ya Amana ya Mara kwa Mara",
"Recurring Deposit Products": "Bidhaa za Amana za Mara kwa Mara", "Recurring Deposit Products": "Bidhaa za Amana za Mara kwa Mara",
@@ -1978,6 +1984,7 @@
"Withdraw Money From Saving Account": "Toa Pesa kwenye Akaunti ya Kuokoa", "Withdraw Money From Saving Account": "Toa Pesa kwenye Akaunti ya Kuokoa",
"Withdrawal Date": "Tarehe ya Kujitoa", "Withdrawal Date": "Tarehe ya Kujitoa",
"Withdrawal Fee": "Ada ya Kuondoa", "Withdrawal Fee": "Ada ya Kuondoa",
"Withdrawals Fees": "Ada ya kujiondoa",
"Withdrawal Reason": "Sababu ya Kujitoa", "Withdrawal Reason": "Sababu ya Kujitoa",
"Withdrawn On": "Imetolewa", "Withdrawn On": "Imetolewa",
"Withdrawn On Date": "Imetolewa Tarehe", "Withdrawn On Date": "Imetolewa Tarehe",
@@ -2034,6 +2041,8 @@
}, },
"menus": { "menus": {
"Accounting": "Uhasibu", "Accounting": "Uhasibu",
"Account Overview": "Muhtasari wa akaunti",
"Activate": "Amilisha",
"Add Charge": "Ongeza Malipo", "Add Charge": "Ongeza Malipo",
"Add Collateral": "Ongeza Dhamana", "Add Collateral": "Ongeza Dhamana",
"Add Loan Charge": "Ongeza Malipo ya Mkopo", "Add Loan Charge": "Ongeza Malipo ya Mkopo",
@@ -2092,6 +2101,7 @@
"Payout Refund": "Marejesho ya Malipo", "Payout Refund": "Marejesho ya Malipo",
"Post Interest": "Chapisha Maslahi", "Post Interest": "Chapisha Maslahi",
"Post Interest As On": "Chapisha Maslahi Kama Imewashwa", "Post Interest As On": "Chapisha Maslahi Kama Imewashwa",
"Premature Close": "Premutoure Karibu",
"Prepay Loan": "Lipa Mkopo", "Prepay Loan": "Lipa Mkopo",
"Products": "Bidhaa", "Products": "Bidhaa",
"Profile": "Wasifu", "Profile": "Wasifu",
+77
View File
@@ -0,0 +1,77 @@
@use "@angular/material" as mat;
@mixin account-view-component-theme($theme) {
$primary: map-get($theme, primary);
mifosx-clients-view,
mifosx-fixed-deposit-account-view,
mifosx-loans-view,
mifosx-recurring-deposits-account-view,
mifosx-savings-account-view {
.account-card {
margin: 0 auto;
max-width: 80rem;
width: 90%;
padding: 0;
.header {
background-color: mat.get-color-from-palette($primary, 500);
padding: 1%;
.header-title-group {
.account-card-title {
color: white;
width: 90%;
p {
color: white;
}
.account-overview {
max-width: 240px;
font-size: 14px;
tr:nth-child(even) {
background-color: transparent;
}
}
}
}
.profile-image-container {
margin: 1%;
.profile-image {
object-fit: cover;
border-radius: 20px;
}
}
.account-actions {
align-self: flex-end;
margin: 0 1%;
i {
margin-bottom: 2px;
margin-right: 4px;
}
}
}
.navigation-tabs {
background-color: #f2f2f2;
overflow: auto;
}
.content {
.savings-account-tables {
padding: 1%;
margin: 1%;
.table-headers {
margin: 0;
padding: 6px;
}
td {
padding: 3px;
}
}
}
i,
img:hover {
cursor: pointer;
}
}
}
}
+2 -10
View File
@@ -4,15 +4,11 @@
@import 'material-palette'; @import 'material-palette';
// Plus imports for other components in your app. // Plus imports for other components in your app.
@import '../app/clients/clients-view/clients-view.component-theme.scss';
@import '../app/groups/groups-view/groups-view.component-theme.scss'; @import '../app/groups/groups-view/groups-view.component-theme.scss';
@import '../app/centers/centers-view/centers-view.component-theme.scss'; @import '../app/centers/centers-view/centers-view.component-theme.scss';
@import '../app/home/dashboard/dashboard.component-theme.scss'; @import '../app/home/dashboard/dashboard.component-theme.scss';
@import '../app/loans/loans-view/loans-view.component-theme.scss';
@import '../app/savings/savings-account-view/savings-account-view.component-theme.scss';
@import '../app/shares/shares-account-view/shares-account-view.component-theme.scss'; @import '../app/shares/shares-account-view/shares-account-view.component-theme.scss';
@import '../app/deposits/fixed-deposits/fixed-deposit-account-view/fixed-deposit-account-view.component-theme.scss'; @import 'content';
@import '../app/deposits/recurring-deposits/recurring-deposits-account-view/recurring-deposits-account-view.component-theme.scss';
// Include the common styles for Angular Material. We include this here so that you only // Include the common styles for Angular Material. We include this here so that you only
// have to load a single css file for Angular Material in your app. // have to load a single css file for Angular Material in your app.
@@ -35,12 +31,8 @@ $mifosx-app-theme: mat.define-light-theme($mifosx-app-primary, $mifosx-app-accen
// Alternatively, you can import and @include the theme mixins for each component // Alternatively, you can import and @include the theme mixins for each component
// that you are using. // that you are using.
@include mat.all-component-themes($mifosx-app-theme); @include mat.all-component-themes($mifosx-app-theme);
@include clients-view-component-theme($mifosx-app-theme);
@include groups-view-component-theme($mifosx-app-theme); @include groups-view-component-theme($mifosx-app-theme);
@include centers-view-component-theme($mifosx-app-theme); @include centers-view-component-theme($mifosx-app-theme);
@include dashboard-component-theme($mifosx-app-theme); @include dashboard-component-theme($mifosx-app-theme);
@include loans-view-component-theme($mifosx-app-theme);
@include savings-account-view-component-theme($mifosx-app-theme);
@include shares-account-view-component-theme($mifosx-app-theme); @include shares-account-view-component-theme($mifosx-app-theme);
@include fixed-deposits-account-view-component-theme($mifosx-app-theme); @include account-view-component-theme($mifosx-app-theme);
@include recurring-deposits-account-view-component-theme($mifosx-app-theme);