diff --git a/src/app/accounting/accounting-routing.module.ts b/src/app/accounting/accounting-routing.module.ts
index 0de73dfca..377f72e36 100644
--- a/src/app/accounting/accounting-routing.module.ts
+++ b/src/app/accounting/accounting-routing.module.ts
@@ -34,6 +34,7 @@ import { PeriodicAccrualsComponent } from './periodic-accruals/periodic-accruals
import { ProvisioningEntriesComponent } from './provisioning-entries/provisioning-entries.component';
import { CreateProvisioningEntryComponent } from './provisioning-entries/create-provisioning-entry/create-provisioning-entry.component';
import { ViewProvisioningEntryComponent } from './provisioning-entries/view-provisioning-entry/view-provisioning-entry.component';
+import { ViewProvisioningJournalEntriesComponent } from './provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component';
const routes: Routes = [
Route.withShell([
@@ -227,6 +228,17 @@ const routes: Routes = [
path: 'view/:id',
component: ViewProvisioningEntryComponent,
data: { title: extract('View Provisioning Entry'), routeParamBreadcrumb: 'id' }
+ },
+ {
+ path: 'journal-entries',
+ data: { title: extract('View Provisioning Journal Entry'), breadcrumb: 'Journal Entries', addBreadcrumbLink: false },
+ children: [
+ {
+ path: 'view/:id',
+ component: ViewProvisioningJournalEntriesComponent,
+ data: { title: extract('View Provisioning Journal Entry'), routeParamBreadcrumb: 'id' }
+ }
+ ]
}
]
}
diff --git a/src/app/accounting/accounting.module.ts b/src/app/accounting/accounting.module.ts
index 28b2e6ea6..41dd5f260 100644
--- a/src/app/accounting/accounting.module.ts
+++ b/src/app/accounting/accounting.module.ts
@@ -32,6 +32,7 @@ import { PeriodicAccrualsComponent } from './periodic-accruals/periodic-accruals
import { ProvisioningEntriesComponent } from './provisioning-entries/provisioning-entries.component';
import { CreateProvisioningEntryComponent } from './provisioning-entries/create-provisioning-entry/create-provisioning-entry.component';
import { ViewProvisioningEntryComponent } from './provisioning-entries/view-provisioning-entry/view-provisioning-entry.component';
+import { ViewProvisioningJournalEntriesComponent } from './provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component';
@NgModule({
imports: [
@@ -68,7 +69,8 @@ import { ViewProvisioningEntryComponent } from './provisioning-entries/view-prov
PeriodicAccrualsComponent,
ProvisioningEntriesComponent,
CreateProvisioningEntryComponent,
- ViewProvisioningEntryComponent
+ ViewProvisioningEntryComponent,
+ ViewProvisioningJournalEntriesComponent
],
entryComponents: [
RevertTransactionComponent,
diff --git a/src/app/accounting/accounting.service.ts b/src/app/accounting/accounting.service.ts
index 7bc813362..0be4a20ce 100644
--- a/src/app/accounting/accounting.service.ts
+++ b/src/app/accounting/accounting.service.ts
@@ -194,4 +194,19 @@ export class AccountingService {
return this.http.get('/provisioningentries/entries', { params: httpParams });
}
+ getProvisioningJournalEntries(entryId: string) {
+ const httpParams = new HttpParams().set('entryId', entryId);
+ return this.http.get('/journalentries/provisioning', { params: httpParams });
+ }
+
+ createProvisioningJournalEntries(provisioningEntryId: string) {
+ const httpParams = new HttpParams().set('command', 'createjournalentry');
+ return this.http.post(`/provisioningentries/${provisioningEntryId}`, {}, { params: httpParams });
+ }
+
+ recreateProvisioningEntries(provisioningEntryId: string) {
+ const httpParams = new HttpParams().set('command', 'recreateprovisioningentry');
+ return this.http.post(`/provisioningentries/${provisioningEntryId}`, {}, { params: httpParams });
+ }
+
}
diff --git a/src/app/accounting/provisioning-entries/provisioning-entries.component.html b/src/app/accounting/provisioning-entries/provisioning-entries.component.html
index 75fa9eaab..5c76edaad 100644
--- a/src/app/accounting/provisioning-entries/provisioning-entries.component.html
+++ b/src/app/accounting/provisioning-entries/provisioning-entries.component.html
@@ -28,27 +28,36 @@
| Journal Entry Created |
- {{ provisioningEntry.journalEntry }} |
+
+
+ |
View Report |
-
+
|
Recreate Provisioning |
-
+
|
View Journal Entry |
-
+
|
diff --git a/src/app/accounting/provisioning-entries/provisioning-entries.component.ts b/src/app/accounting/provisioning-entries/provisioning-entries.component.ts
index 19dac5d51..642299dbd 100644
--- a/src/app/accounting/provisioning-entries/provisioning-entries.component.ts
+++ b/src/app/accounting/provisioning-entries/provisioning-entries.component.ts
@@ -1,5 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { MatSort, MatPaginator, MatTableDataSource } from '@angular/material';
+import { Router } from '@angular/router';
import { AccountingService } from '../accounting.service';
@@ -16,7 +17,8 @@ export class ProvisioningEntriesComponent implements OnInit {
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;
- constructor(private accountingService: AccountingService) { }
+ constructor(private accountingService: AccountingService,
+ private router: Router) { }
ngOnInit() {
this.getProvisioningEntries();
@@ -34,4 +36,22 @@ export class ProvisioningEntriesComponent implements OnInit {
this.dataSource.filter = filterValue.trim().toLowerCase();
}
+ viewReport($event: any, provisioningEntryId: number) {
+ // Tenant Customizable
+ $event.stopPropagation();
+ }
+
+ recreateProvisioning($event: any, provisioningEntryId: string) {
+ this.accountingService.recreateProvisioningEntries(provisioningEntryId)
+ .subscribe((response: any) => {
+ this.router.navigate(['/accounting/provisioning-entries/view', response.resourceId]);
+ });
+ $event.stopPropagation();
+ }
+
+ viewJournalEntry($event: any, provisioningEntryId: number) {
+ this.router.navigate(['/accounting/provisioning-entries/journal-entries/view', provisioningEntryId]);
+ $event.stopPropagation();
+ }
+
}
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.html b/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.html
index c492cb4a2..5df7b031a 100644
--- a/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.html
+++ b/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.html
@@ -1,5 +1,11 @@
+
+
+
+
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.ts b/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.ts
index bc4625b1e..ab88e9f6c 100644
--- a/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.ts
+++ b/src/app/accounting/provisioning-entries/view-provisioning-entry/view-provisioning-entry.component.ts
@@ -1,5 +1,5 @@
import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
+import { ActivatedRoute, Router } from '@angular/router';
import { FormControl } from '@angular/forms';
import { MatPaginator, MatSort, MatTableDataSource } from '@angular/material';
@@ -26,7 +26,7 @@ export class ViewProvisioningEntryComponent implements OnInit, AfterViewInit {
officeName = new FormControl();
officeData: any;
- filteredOfficeData: any
+ filteredOfficeData: any;
loanProduct = new FormControl();
loanProductData: any;
@@ -37,6 +37,7 @@ export class ViewProvisioningEntryComponent implements OnInit, AfterViewInit {
filteredProvisioningCategoryData: any;
constructor(private route: ActivatedRoute,
+ private router: Router,
private accountingService: AccountingService) { }
ngOnInit() {
@@ -84,9 +85,9 @@ export class ViewProvisioningEntryComponent implements OnInit, AfterViewInit {
}
filterPredicate(data: any, filterValue: any) {
- return data.officeName.toLowerCase().indexOf(filterValue['officeName']) != -1
- && data.productName.toLowerCase().indexOf(filterValue['productName']) != -1
- && data.categoryName.toLowerCase().indexOf(filterValue['categoryName']) != -1;
+ return data.officeName.toLowerCase().indexOf(filterValue['officeName']) !== -1
+ && data.productName.toLowerCase().indexOf(filterValue['productName']) !== -1
+ && data.categoryName.toLowerCase().indexOf(filterValue['categoryName']) !== -1;
}
applyFilter(filterValue: string, property: string) {
@@ -159,4 +160,11 @@ export class ViewProvisioningEntryComponent implements OnInit, AfterViewInit {
return provisioningCategoryData.filter((provisioningCategory: any) => provisioningCategory.categoryName.toLowerCase().includes(provisioningCategoryName.toLocaleLowerCase()));
}
+ createProvisioningJournalEntries() {
+ this.accountingService.createProvisioningJournalEntries(this.provisioningEntryId)
+ .subscribe((response: any) => {
+ this.router.navigate(['/accounting/provisioning-entries/journal-entries/view', response.resourceId]);
+ });
+ }
+
}
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.html b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.html
new file mode 100644
index 000000000..3c3fa137e
--- /dev/null
+++ b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Entry ID |
+ {{ provisioningJournalEntry.id }} |
+
+
+
+ Office |
+ {{ provisioningJournalEntry.officeName }} |
+
+
+
+ Transaction Date |
+ {{ provisioningJournalEntry.transactionDate }} |
+
+
+
+ Transaction ID |
+ {{ provisioningJournalEntry.transactionId }} |
+
+
+
+ Type |
+ {{ provisioningJournalEntry.glAccountType.value }} |
+
+
+
+ Type |
+ {{ provisioningJournalEntry.createdByUserName }} |
+
+
+
+ Account Code |
+ {{ provisioningJournalEntry.glAccountCode }} |
+
+
+
+ Account Name |
+ {{ provisioningJournalEntry.glAccountName }} |
+
+
+
+ Debit |
+ {{ (provisioningJournalEntry.currency.displaySymbol || provisioningJournalEntry.currency.code) + ' ' + provisioningJournalEntry.amount }} |
+
+
+
+ Credit |
+ {{ (provisioningJournalEntry.currency.displaySymbol || provisioningJournalEntry.currency.code) + ' ' + provisioningJournalEntry.amount }} |
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.scss b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.scss
new file mode 100644
index 000000000..1922e7ffa
--- /dev/null
+++ b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.scss
@@ -0,0 +1,3 @@
+table {
+ width: 100%;
+}
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.spec.ts b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.spec.ts
new file mode 100644
index 000000000..649e634c6
--- /dev/null
+++ b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ViewProvisioningJournalEntriesComponent } from './view-provisioning-journal-entries.component';
+
+describe('ViewProvisioningJournalEntriesComponent', () => {
+ let component: ViewProvisioningJournalEntriesComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ViewProvisioningJournalEntriesComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ViewProvisioningJournalEntriesComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.ts b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.ts
new file mode 100644
index 000000000..af35f3e28
--- /dev/null
+++ b/src/app/accounting/provisioning-entries/view-provisioning-journal-entries/view-provisioning-journal-entries.component.ts
@@ -0,0 +1,51 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { MatPaginator, MatSort, MatTableDataSource } from '@angular/material';
+
+import { AccountingService } from '../../accounting.service';
+
+@Component({
+ selector: 'mifosx-view-provisioning-journal-entries',
+ templateUrl: './view-provisioning-journal-entries.component.html',
+ styleUrls: ['./view-provisioning-journal-entries.component.scss']
+})
+export class ViewProvisioningJournalEntriesComponent implements OnInit {
+
+ provisioningEntryId: string;
+
+ displayedColumns: string[] = ['id', 'officeName', 'transactionDate', 'transactionId', 'glAccountType', 'createdByUserName', 'glAccountCode', 'glAccountName', 'debit', 'credit'];
+ dataSource: any;
+
+ @ViewChild(MatPaginator) paginator: MatPaginator;
+ @ViewChild(MatSort) sort: MatSort;
+
+ constructor(private route: ActivatedRoute,
+ private accountingService: AccountingService) { }
+
+ ngOnInit() {
+ this.provisioningEntryId = this.route.snapshot.paramMap.get('id');
+ this.getProvisioningJournalEntry();
+ }
+
+ getProvisioningJournalEntry() {
+ this.accountingService.getProvisioningJournalEntries(this.provisioningEntryId)
+ .subscribe((provisioningJournalEntryData: any) => {
+ this.dataSource = new MatTableDataSource(provisioningJournalEntryData.pageItems);
+ this.dataSource.paginator = this.paginator;
+ this.dataSource.sortingDataAccessor = (transaction: any, property: any) => {
+ switch (property) {
+ case 'glAccountType': return transaction.glAccountType.value;
+ case 'debit': return transaction.amount;
+ case 'credit': return transaction.amount;
+ default: return transaction[property];
+ }
+ };
+ this.dataSource.sort = this.sort;
+ });
+ }
+
+ applyFilter(filterValue: string) {
+ this.dataSource.filter = filterValue.trim().toLowerCase();
+ }
+
+}