Savings and Deposit products using Accrual periodic accounting
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
<span fxFlex="40%">Type:</span>
|
||||
<span fxFlex="60%">{{ accountingRule.value }}</span>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="isCashOrAccrualAccounting()" fxLayout="row wrap" fxLayout.lt-md="column">
|
||||
|
||||
<h4 fxFlexFill class="mat-h4">{{'labels.heading.Assets' | translate}}</h4>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Saving reference'"
|
||||
[glAccount]="accountingMappings.savingsReferenceAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Overdraft portfolio'" *ngIf="accountingMappings.overdraftPortfolioControl"
|
||||
[glAccount]="accountingMappings.overdraftPortfolioControl" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Fees Receivable'" *ngIf="isAccrualAccounting()"
|
||||
[glAccount]="accountingMappings.feeReceivableAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Penalties Receivable'" *ngIf="isAccrualAccounting()"
|
||||
[glAccount]="accountingMappings.penaltyReceivableAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
|
||||
<h4 fxFlexFill class="mat-h4">{{'labels.heading.Liabilities' | translate}}</h4>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Saving control'"
|
||||
[glAccount]="accountingMappings.savingsControlAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Savings transfers in suspense'"
|
||||
[glAccount]="accountingMappings.transfersInSuspenseAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Interest Payable'" *ngIf="isAccrualAccounting()"
|
||||
[glAccount]="accountingMappings.interestPayableAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Escheat liability'"
|
||||
*ngIf="accountingMappings.escheatLiabilityAccount" [glAccount]="accountingMappings.escheatLiabilityAccount"
|
||||
[withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
|
||||
<h4 fxFlexFill class="mat-h4">{{'labels.heading.Income' | translate}}</h4>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Income from fees'"
|
||||
[glAccount]="accountingMappings.incomeFromFeeAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Income from penalties'"
|
||||
[glAccount]="accountingMappings.incomeFromPenaltyAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Income from Interest'" *ngIf="accountingMappings.incomeFromInterest"
|
||||
[glAccount]="accountingMappings.incomeFromInterest" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
|
||||
<h4 fxFlexFill class="mat-h4">{{'labels.heading.Expenses' | translate}}</h4>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Interest on savings'"
|
||||
[glAccount]="accountingMappings.interestOnSavingsAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
<mifosx-gl-account-display fxFlex="100%" [accountTitle]="'Write-off'" *ngIf="accountingMappings.writeOffAccount"
|
||||
[glAccount]="accountingMappings.writeOffAccount" [withTitle]="'40%'">
|
||||
</mifosx-gl-account-display>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
@import "assets/styles/colours";
|
||||
|
||||
.container {
|
||||
padding: 1%;
|
||||
margin: 1%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
|
||||
tr.incentives-row {
|
||||
height: 0;
|
||||
|
||||
> td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.incentives {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mat-card {
|
||||
border-radius: 0;
|
||||
|
||||
> h4 {
|
||||
font-weight: 500;
|
||||
margin: 0.5em 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mat-h4 {
|
||||
margin-top: 10px !important;
|
||||
font-weight: 200;
|
||||
color: $status-approved;
|
||||
}
|
||||
|
||||
.mat-elevation-z1 {
|
||||
margin: 1em 0 1.5em 0;
|
||||
}
|
||||
|
||||
h2, h3, h4 {
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
span {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
mat-divider {
|
||||
margin: 0 0 0.5em 0;
|
||||
}
|
||||
|
||||
.margin-t {
|
||||
margin-top: 1em;
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ViewSavingsAccountingDetailsComponent } from './view-savings-accounting-details.component';
|
||||
|
||||
describe('ViewSavingsAccountingDetailsComponent', () => {
|
||||
let component: ViewSavingsAccountingDetailsComponent;
|
||||
let fixture: ComponentFixture<ViewSavingsAccountingDetailsComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ ViewSavingsAccountingDetailsComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(ViewSavingsAccountingDetailsComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { Accounting } from 'app/core/utils/accounting';
|
||||
import { OptionData } from 'app/shared/models/option-data.model';
|
||||
|
||||
@Component({
|
||||
selector: 'mifosx-view-savings-accounting-details',
|
||||
templateUrl: './view-savings-accounting-details.component.html',
|
||||
styleUrls: ['./view-savings-accounting-details.component.scss']
|
||||
})
|
||||
export class ViewSavingsAccountingDetailsComponent implements OnInit {
|
||||
|
||||
@Input() accountingRule: OptionData;
|
||||
@Input() accountingMappings: any[] = [];
|
||||
|
||||
constructor(private accounting: Accounting) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
isCashOrAccrualAccounting(): boolean {
|
||||
return this.accounting.isCashOrAccrualAccounting(this.accountingRule);
|
||||
}
|
||||
|
||||
isAccrualAccounting(): boolean {
|
||||
return this.accounting.isAccrualAccounting(this.accountingRule);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user