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']); + }); + } + +}