diff --git a/src/app/accounting/accounting-routing.module.ts b/src/app/accounting/accounting-routing.module.ts
index db6f3e96c..4b2603c4d 100644
--- a/src/app/accounting/accounting-routing.module.ts
+++ b/src/app/accounting/accounting-routing.module.ts
@@ -30,6 +30,7 @@ import { CreateRuleComponent } from './accounting-rules/create-rule/create-rule.
import { ViewRuleComponent } from './accounting-rules/view-rule/view-rule.component';
import { ViewAccountingRuleResolver } from './accounting-rules/view-rule/view-rule.resolver';
import { EditRuleComponent } from './accounting-rules/edit-rule/edit-rule.component';
+import { PeriodicAccrualsComponent } from './periodic-accruals/periodic-accruals.component';
const routes: Routes = [
Route.withShell([
@@ -200,6 +201,11 @@ const routes: Routes = [
]
}
]
+ },
+ {
+ path: 'periodic-accruals',
+ component: PeriodicAccrualsComponent,
+ data: { title: extract('Periodic Accrual Accounting'), breadcrumb: 'Execute Periodic Accrual Accounting' }
}
]
}
diff --git a/src/app/accounting/accounting.component.html b/src/app/accounting/accounting.component.html
index 59728b759..3cad92948 100644
--- a/src/app/accounting/accounting.component.html
+++ b/src/app/accounting/accounting.component.html
@@ -64,11 +64,9 @@
List of all accounting rules
-
+
calendar_today
-
- Accruals
-
+ Accruals
Accrues income, expenses and liabilities as on the provided date
diff --git a/src/app/accounting/accounting.module.ts b/src/app/accounting/accounting.module.ts
index 0a5853ea6..2258bbac4 100644
--- a/src/app/accounting/accounting.module.ts
+++ b/src/app/accounting/accounting.module.ts
@@ -28,6 +28,7 @@ import { AccountingRulesComponent } from './accounting-rules/accounting-rules.co
import { CreateRuleComponent } from './accounting-rules/create-rule/create-rule.component';
import { ViewRuleComponent } from './accounting-rules/view-rule/view-rule.component';
import { EditRuleComponent } from './accounting-rules/edit-rule/edit-rule.component';
+import { PeriodicAccrualsComponent } from './periodic-accruals/periodic-accruals.component';
@NgModule({
imports: [
@@ -60,7 +61,8 @@ import { EditRuleComponent } from './accounting-rules/edit-rule/edit-rule.compon
AccountingRulesComponent,
CreateRuleComponent,
ViewRuleComponent,
- EditRuleComponent
+ EditRuleComponent,
+ PeriodicAccrualsComponent
],
entryComponents: [
RevertTransactionComponent,
diff --git a/src/app/accounting/accounting.service.ts b/src/app/accounting/accounting.service.ts
index 53f7757de..e22a6c985 100644
--- a/src/app/accounting/accounting.service.ts
+++ b/src/app/accounting/accounting.service.ts
@@ -165,4 +165,8 @@ export class AccountingService {
return this.http.put(`/accountingrules/${accoutingRuleId}`, accountingRule);
}
+ executePeriodicAccruals(periodicAccruals: any) {
+ return this.http.post('/runaccruals', periodicAccruals);
+ }
+
}
diff --git a/src/app/accounting/periodic-accruals/periodic-accruals.component.html b/src/app/accounting/periodic-accruals/periodic-accruals.component.html
new file mode 100644
index 000000000..8d32a85ae
--- /dev/null
+++ b/src/app/accounting/periodic-accruals/periodic-accruals.component.html
@@ -0,0 +1,30 @@
+
diff --git a/src/app/accounting/periodic-accruals/periodic-accruals.component.scss b/src/app/accounting/periodic-accruals/periodic-accruals.component.scss
new file mode 100644
index 000000000..d774f68da
--- /dev/null
+++ b/src/app/accounting/periodic-accruals/periodic-accruals.component.scss
@@ -0,0 +1,3 @@
+.container {
+ max-width: 37rem;
+}
diff --git a/src/app/accounting/periodic-accruals/periodic-accruals.component.spec.ts b/src/app/accounting/periodic-accruals/periodic-accruals.component.spec.ts
new file mode 100644
index 000000000..e3b1d1254
--- /dev/null
+++ b/src/app/accounting/periodic-accruals/periodic-accruals.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PeriodicAccrualsComponent } from './periodic-accruals.component';
+
+describe('PeriodicAccrualsComponent', () => {
+ let component: PeriodicAccrualsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ PeriodicAccrualsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(PeriodicAccrualsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/accounting/periodic-accruals/periodic-accruals.component.ts b/src/app/accounting/periodic-accruals/periodic-accruals.component.ts
new file mode 100644
index 000000000..e83c52f28
--- /dev/null
+++ b/src/app/accounting/periodic-accruals/periodic-accruals.component.ts
@@ -0,0 +1,43 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+
+import { AccountingService } from '../accounting.service';
+
+@Component({
+ selector: 'mifosx-periodic-accruals',
+ templateUrl: './periodic-accruals.component.html',
+ styleUrls: ['./periodic-accruals.component.scss']
+})
+export class PeriodicAccrualsComponent implements OnInit {
+
+ minDate = new Date(2000, 0, 1);
+ maxDate = new Date();
+ periodicAccrualsForm: FormGroup;
+
+ constructor(private formBuilder: FormBuilder,
+ private accountingService: AccountingService,
+ private router: Router) { }
+
+ ngOnInit() {
+ this.createPeriodicAccrualsForm();
+ }
+
+ createPeriodicAccrualsForm() {
+ this.periodicAccrualsForm = this.formBuilder.group({
+ 'tillDate': ['', Validators.required]
+ });
+ }
+
+ submit() {
+ const periodicAccruals = this.periodicAccrualsForm.value;
+ // TODO: Update once language and date settings are setup
+ periodicAccruals.locale = 'en';
+ periodicAccruals.dateFormat = 'dd MMMM yyyy';
+ periodicAccruals.tillDate = '06 August 2018';
+ this.accountingService.executePeriodicAccruals(periodicAccruals).subscribe(response => {
+ this.router.navigate(['/accounting']);
+ });
+ }
+
+}