feat: add create, edit tax groups (#1173)

Fixes: #589
Fixes: #600
This commit is contained in:
Muskan Khedia
2020-08-04 17:50:02 +05:30
committed by GitHub
parent 30a354c153
commit b94857c39c
16 changed files with 744 additions and 9 deletions
@@ -0,0 +1,75 @@
<div class="container">
<mat-card>
<form [formGroup]="taxGroupForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="100%">
<mat-label>Name</mat-label>
<input matInput required formControlName="name">
<mat-error *ngIf="taxGroupForm.controls.name.hasError('required')">
Name is <strong>required</strong>
</mat-error>
</mat-form-field>
<h3 fxFlex="40%" class="mat-h3">Tax Components</h3>
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
<button type="button" mat-raised-button color="primary" (click)="addTaxGroup()">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;
Add
</button>
</div>
<table mat-table [dataSource]="taxComponentsDataSource" [hidden]="taxComponentsDataSource.length === 0">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let taxComponent">
{{ taxComponent.taxComponentId | find: taxComponentOptions:'id':'name'}} </td>
</ng-container>
<ng-container matColumnDef="startDate">
<th mat-header-cell *matHeaderCellDef> Start Date </th>
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.startDate | date }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let taxComponent; let taxComponentIndex = index">
<button type="button" mat-icon-button color="primary" (click)="editTaxGroup(taxComponent, taxComponentIndex)"
matTooltip="Edit" matTooltipPosition="left">
<fa-icon icon="edit"></fa-icon>
</button>
<button type="button" mat-icon-button color="warn"
(click)="delete(taxComponentIndex)" matTooltip="Delete"
matTooltipPosition="left">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../']">Cancel</button>
<button mat-raised-button color="primary" [disabled]="!taxGroupForm.valid">Submit</button>
</mat-card-actions>
</form>
</mat-card>
</div>
@@ -0,0 +1,7 @@
.container {
max-width: 37rem;
}
table {
width: 100%;
}
@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CreateTaxGroupComponent } from './create-tax-group.component';
describe('CreateTaxGroupComponent', () => {
let component: CreateTaxGroupComponent;
let fixture: ComponentFixture<CreateTaxGroupComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ CreateTaxGroupComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CreateTaxGroupComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,190 @@
/** Angular Imports */
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl, FormArray } from '@angular/forms';
import { Router, ActivatedRoute } from '@angular/router';
import { DatePipe } from '@angular/common';
import { MatDialog } from '@angular/material';
/** Custom Services */
import { ProductsService } from '../../products.service';
/** Dialog Components */
import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base';
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
import { DatepickerBase } from 'app/shared/form-dialog/formfield/model/datepicker-base';
import { FormDialogComponent } from 'app/shared/form-dialog/form-dialog.component';
import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component';
/**
* Create Tax Group component.
*/
@Component({
selector: 'mifosx-create-tax-group',
templateUrl: './create-tax-group.component.html',
styleUrls: ['./create-tax-group.component.scss']
})
export class CreateTaxGroupComponent implements OnInit {
/** Minimum start date allowed. */
minDate = new Date(2000, 0, 1);
/** Maximum start date allowed. */
maxDate = new Date(2100, 0, 1);
/** Tax Group form. */
taxGroupForm: FormGroup;
/** Tax Group template data. */
taxGroupTemplateData: any;
/** Tax Component Data Source */
taxComponentsDataSource: {}[];
/** Tax Component Options */
taxComponentOptions: any;
/** Tax Component Displayed Columns */
displayedColumns: string[] = ['name', 'startDate', 'actions'];
/**
* Retrieves the tax Group template data from `resolve`.
* @param {FormBuilder} formBuilder Form Builder.
* @param {ProductsService} productsService Products Service.
* @param {ActivatedRoute} route Activated Route.
* @param {Router} router Router for navigation.
* @param {DatePipe} datePipe Date Pipe to format date.
*/
constructor(private formBuilder: FormBuilder,
private productsService: ProductsService,
private route: ActivatedRoute,
private router: Router,
private datePipe: DatePipe,
public dialog: MatDialog) {
this.route.data.subscribe((data: { taxGroupTemplate: any }) => {
this.taxGroupTemplateData = data.taxGroupTemplate;
this.taxComponentOptions = this.taxGroupTemplateData.taxComponents;
});
}
ngOnInit() {
this.createTaxGroupForm();
this.taxComponentsDataSource = [];
}
/**
* Creates the tax Group form
*/
createTaxGroupForm() {
this.taxGroupForm = this.formBuilder.group({
'name': ['', Validators.required]
});
}
/**
* Add Tax Component in Tax Group
*/
addTaxGroup() {
const formfields: FormfieldBase[] = [
new SelectBase({
controlName: 'taxComponentId',
label: 'Tax Component',
options: { label: 'name', value: 'id', data: this.taxComponentOptions },
order: 1
}),
new DatepickerBase({
controlName: 'startDate',
label: 'Start Date',
minDate: this.minDate,
maxDate: this.maxDate,
order: 2
})
];
const data = {
title: 'Add Tax Component',
layout: { addButtonText: 'Add' },
formfields: formfields
};
const memberAttendanceDialogRef = this.dialog.open(FormDialogComponent, { data });
memberAttendanceDialogRef.afterClosed().subscribe((response: any) => {
if (response.data) {
// this.taxComponents.push(response.data.value);
this.taxComponentsDataSource = this.taxComponentsDataSource.concat(response.data.value);
console.log('tjos.taxComponents: ', this.taxComponentsDataSource);
}
});
}
/**
* Edit Tax Component in Tax Group
*/
editTaxGroup(taxComponent: any, index: any) {
const formfields: FormfieldBase[] = [
new SelectBase({
controlName: 'taxComponentId',
value: taxComponent.taxComponentId ? taxComponent.taxComponentId : '',
label: 'Tax Component',
options: { label: 'name', value: 'id', data: this.taxComponentOptions },
order: 1
}),
new DatepickerBase({
controlName: 'startDate',
value: taxComponent.startDate ? new Date(taxComponent.startDate) : new Date(),
label: 'Start Date',
minDate: this.minDate,
maxDate: this.maxDate,
order: 2
})
];
const data = {
title: 'Edit Tax Component',
layout: { addButtonText: 'Submit' },
formfields: formfields
};
const memberAttendanceDialogRef = this.dialog.open(FormDialogComponent, { data });
memberAttendanceDialogRef.afterClosed().subscribe((response: any) => {
if (response.data) {
// this.taxComponents.push(response.data.value);
// this.taxComponentsDataSource = this.taxComponentsDataSource.concat(response.data.value);
const updatedMemeber = { ...taxComponent, ...response.data.value };
this.taxComponentsDataSource.splice(this.taxComponentsDataSource.indexOf(taxComponent), 1, updatedMemeber);
this.taxComponentsDataSource = this.taxComponentsDataSource.concat([]);
console.log('tjos.taxComponents: ', this.taxComponentsDataSource);
}
});
}
/**
* Delete particular Tax Component in Tax Group
*/
delete(index: number) {
const dialogRef = this.dialog.open(DeleteDialogComponent, {
data: { deleteContext: `this` }
});
dialogRef.afterClosed().subscribe((response: any) => {
if (response.delete) {
this.taxComponentsDataSource.splice(index, 1);
this.taxComponentsDataSource = this.taxComponentsDataSource.concat([]);
}
});
}
/**
* Submits the tax Group form and creates the tax Group,
* if successful redirects to Tax Groups.
*/
submit() {
const dateFormat = 'yyyy-MM-dd';
const locale = 'en';
const taxGroup = {
...this.taxGroupForm.value,
taxComponents: this.taxComponentsDataSource,
dateFormat,
locale
};
console.log(taxGroup);
for (const taxComponent of taxGroup.taxComponents) {
taxComponent.startDate = this.datePipe.transform(taxComponent.startDate, dateFormat) || '';
}
this.productsService.createTaxGroup(taxGroup).subscribe((response: any) => {
this.router.navigate(['../', response.resourceId], { relativeTo: this.route });
});
}
}
@@ -0,0 +1,30 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
/** Custom Services */
import { ProductsService } from '../../products.service';
/**
* Tax Group template data resolver.
*/
@Injectable()
export class ManageTaxGroupTemplateResolver implements Resolve<Object> {
/**
* @param {ProductsService} productsService Products service.
*/
constructor(private productsService: ProductsService) { }
/**
* Returns the tax groups template data.
* @returns {Observable<any>}
*/
resolve(): Observable<any> {
return this.productsService.getTaxGroupTemplate();
}
}
@@ -0,0 +1,81 @@
<div class="container">
<mat-card>
<form [formGroup]="taxGroupForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="100%">
<mat-label>Name</mat-label>
<input matInput required formControlName="name">
<mat-error *ngIf="taxGroupForm.controls.name.hasError('required')">
Name is <strong>required</strong>
</mat-error>
</mat-form-field>
<h3 fxFlex="40%" class="mat-h3">Tax Components</h3>
<div fxFlex="40%" fxLayout="row" fxLayoutAlign="start center">
<button type="button" mat-raised-button color="primary" (click)="addTaxGroup()">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;
Add
</button>
</div>
<table mat-table [dataSource]="taxComponentsDataSource" [hidden]="taxComponentsDataSource.length === 0">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let taxComponent">
{{ taxComponent.taxComponentId | find: taxComponentOptions:'id':'name'}} </td>
</ng-container>
<ng-container matColumnDef="startDate">
<th mat-header-cell *matHeaderCellDef> Start Date </th>
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.startDate | date }}
</td>
</ng-container>
<ng-container matColumnDef="endDate">
<th mat-header-cell *matHeaderCellDef> End Date </th>
<td mat-cell *matCellDef="let taxComponent"> {{ taxComponent.endDate ? (taxComponent.endDate | date) : '' }}
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let taxComponent; let taxComponentIndex = index">
<button type="button" mat-icon-button color="primary" (click)="editTaxGroup(taxComponent, taxComponentIndex)"
matTooltip="Edit" matTooltipPosition="left">
<fa-icon icon="edit"></fa-icon>
</button>
<button type="button" mat-icon-button color="warn" *ngIf="taxComponent.isNew"
(click)="delete(taxComponentIndex)" matTooltip="Delete Interest Rate Chart"
matTooltipPosition="left">
<fa-icon icon="trash"></fa-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../']">Cancel</button>
<button mat-raised-button color="primary" [disabled]="!taxGroupForm.valid">Submit</button>
</mat-card-actions>
</form>
</mat-card>
</div>
@@ -0,0 +1,3 @@
.container {
max-width: 37rem;
}
@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { EditTaxGroupComponent } from './edit-tax-group.component';
describe('EditTaxGroupComponent', () => {
let component: EditTaxGroupComponent;
let fixture: ComponentFixture<EditTaxGroupComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EditTaxGroupComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(EditTaxGroupComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,217 @@
/** Angular Imports */
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl, FormArray } from '@angular/forms';
import { Router, ActivatedRoute } from '@angular/router';
import { DatePipe } from '@angular/common';
import { MatDialog } from '@angular/material';
/** Custom Services */
import { ProductsService } from '../../products.service';
/** Dialog Components */
import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base';
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
import { DatepickerBase } from 'app/shared/form-dialog/formfield/model/datepicker-base';
import { FormDialogComponent } from 'app/shared/form-dialog/form-dialog.component';
import { DeleteDialogComponent } from 'app/shared/delete-dialog/delete-dialog.component';
/**
* Edit Tax Group component.
*/
@Component({
selector: 'mifosx-edit-tax-group',
templateUrl: './edit-tax-group.component.html',
styleUrls: ['./edit-tax-group.component.scss']
})
export class EditTaxGroupComponent implements OnInit {
/** Minimum start date allowed. */
minDate = new Date(2000, 0, 1);
/** Maximum start date allowed. */
maxDate = new Date(2100, 0, 1);
/** Tax Group form. */
taxGroupForm: FormGroup;
/** Tax Group template data. */
taxGroupData: any;
/** Tax Component Data Source */
taxComponentsDataSource: {}[];
/** Tax Component Options */
taxComponentOptions: any;
/** Tax Component Displayed Columns */
displayedColumns: string[] = ['name', 'startDate', 'actions'];
/**
* Retrieves the tax Group template data from `resolve`.
* @param {FormBuilder} formBuilder Form Builder.
* @param {ProductsService} productsService Products Service.
* @param {ActivatedRoute} route Activated Route.
* @param {Router} router Router for navigation.
* @param {DatePipe} datePipe Date Pipe to format date.
*/
constructor(private formBuilder: FormBuilder,
private productsService: ProductsService,
private route: ActivatedRoute,
private router: Router,
private datePipe: DatePipe,
public dialog: MatDialog) {
this.route.data.subscribe((data: { taxGroup: any }) => {
this.taxGroupData = data.taxGroup;
this.taxComponentOptions = this.taxGroupData.taxComponents;
});
}
ngOnInit() {
this.taxComponentsDataSource = [];
this.createTaxGroupForm();
this.assignFormData();
}
/**
* Creates the tax Group form
*/
createTaxGroupForm() {
this.taxGroupForm = this.formBuilder.group({
'name': [this.taxGroupData.name, Validators.required]
});
}
/**
* Add Tax Component in Tax Group
*/
addTaxGroup() {
const formfields: FormfieldBase[] = [
new SelectBase({
controlName: 'taxComponentId',
label: 'Tax Component',
options: { label: 'name', value: 'id', data: this.taxComponentOptions },
order: 1
}),
new DatepickerBase({
controlName: 'startDate',
label: 'Start Date',
minDate: this.minDate,
maxDate: this.maxDate,
order: 2
})
];
const data = {
title: 'Add Tax Component',
layout: { addButtonText: 'Add' },
formfields: formfields
};
const taxComponentDialogRef = this.dialog.open(FormDialogComponent, { data });
taxComponentDialogRef.afterClosed().subscribe((response: any) => {
if (response.data) {
const val = {
...response.data.value,
isNew: true
};
this.taxComponentsDataSource = this.taxComponentsDataSource.concat(val);
}
});
}
/**
* Edit Tax Component in Tax Group
*/
editTaxGroup(taxComponent: any, index: any) {
const formfields: FormfieldBase[] = [
new SelectBase({
controlName: 'taxComponentId',
value: taxComponent.taxComponentId ? taxComponent.taxComponentId : '',
label: 'Tax Component',
options: { label: 'name', value: 'id', data: this.taxComponentOptions },
order: 1
}),
new DatepickerBase({
controlName: 'startDate',
value: taxComponent.startDate ? new Date(taxComponent.startDate) : new Date(),
label: 'Start Date',
minDate: this.minDate,
maxDate: this.maxDate,
order: 2
})
];
if (!taxComponent.isNew) {
formfields.push(new DatepickerBase({
controlName: 'endDate',
label: 'End Date',
minDate: this.minDate,
maxDate: this.maxDate,
order: 3
}));
}
const data = {
title: 'Edit Tax Component',
layout: { addButtonText: 'Submit' },
formfields: formfields
};
const taxComponentDialogRef = this.dialog.open(FormDialogComponent, { data });
taxComponentDialogRef.afterClosed().subscribe((response: any) => {
if (response.data) {
const updatedTaxComponent = { ...taxComponent, ...response.data.value };
this.taxComponentsDataSource.splice(this.taxComponentsDataSource.indexOf(taxComponent), 1, updatedTaxComponent);
this.taxComponentsDataSource = this.taxComponentsDataSource.concat([]);
}
});
}
/**
* Assign form data with the existing incoming data
*/
assignFormData() {
this.taxGroupData.taxAssociations.forEach((taxComponentData: any) => {
const chart = {
id: taxComponentData.id,
startDate: taxComponentData.startDate ? new Date(taxComponentData.startDate) : '',
endDate: taxComponentData.endDate ? new Date(taxComponentData.endDate) : '',
taxComponentId: taxComponentData.taxComponent.id,
isNew: false
};
this.taxComponentsDataSource = this.taxComponentsDataSource.concat(chart);
});
}
/**
* Deletes the tax component
*/
delete(index: number) {
const dialogRef = this.dialog.open(DeleteDialogComponent, {
data: { deleteContext: `this` }
});
dialogRef.afterClosed().subscribe((response: any) => {
if (response.delete) {
this.taxComponentsDataSource.splice(index, 1);
this.taxComponentsDataSource = this.taxComponentsDataSource.concat([]);
}
});
}
/**
* Submits the tax Group form and edits the tax Group,
* if successful redirects to Tax Groups.
*/
submit() {
const dateFormat = 'yyyy-MM-dd';
const locale = 'en';
const taxGroup = {
...this.taxGroupForm.value,
taxComponents: this.taxComponentsDataSource,
dateFormat,
locale
};
for (const taxComponent of taxGroup.taxComponents) {
taxComponent.startDate = this.datePipe.transform(taxComponent.startDate, dateFormat) || '';
if (taxComponent.endDate) {
delete taxComponent.startDate;
taxComponent.endDate = this.datePipe.transform(taxComponent.endDate, dateFormat) || '';
}
delete taxComponent.isNew;
}
this.productsService.updateTaxGroup(this.taxGroupData.id, taxGroup).subscribe((response: any) => {
this.router.navigate(['../'], { relativeTo: this.route });
});
}
}
@@ -0,0 +1,30 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
/** Custom Services */
import { ProductsService } from '../../products.service';
/**
* tax Group data resolver.
*/
@Injectable()
export class EditTaxGroupResolver implements Resolve<Object> {
/**
* @param {ProductsService} productsService Products service.
*/
constructor(private productsService: ProductsService) { }
/**
* Returns the tax Group data.
* @returns {Observable<any>}
*/
resolve(route: ActivatedRouteSnapshot): Observable<any> {
const taxGroupId = route.parent.paramMap.get('id');
return this.productsService.getTaxGroup(taxGroupId, 'true');
}
}
@@ -1,5 +1,5 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<button mat-raised-button color="primary">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_TAXGROUP'">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;
Create Tax Groups
</button>
@@ -25,6 +25,6 @@ export class TaxGroupResolver implements Resolve<Object> {
*/
resolve(route: ActivatedRouteSnapshot): Observable<any> {
const taxGroupId = route.paramMap.get('id');
return this.productsService.getTaxGroup(taxGroupId);
return this.productsService.getTaxGroup(taxGroupId, 'false');
}
}
@@ -1,5 +1,5 @@
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
<button mat-raised-button color="primary">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_TAXGROUP'">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;
Edit
</button>
+25 -3
View File
@@ -45,6 +45,9 @@ import { ShareProductsDividendsComponent } from './share-products/dividends-shar
import { CreateRecurringDepositProductComponent } from './recurring-deposit-products/create-recurring-deposit-product/create-recurring-deposit-product.component';
import { CreateDividendComponent } from './share-products/create-dividend/create-dividend.component';
import { ViewFixedDepositProductComponent } from './fixed-deposit-products/view-fixed-deposit-product/view-fixed-deposit-product.component';
import { ViewDividendComponent } from './share-products/view-dividend/view-dividend.component';
import { CreateTaxGroupComponent } from './manage-tax-groups/create-tax-group/create-tax-group.component';
import { EditTaxGroupComponent } from './manage-tax-groups/edit-tax-group/edit-tax-group.component';
/** Custom Resolvers */
import { LoanProductsResolver } from './loan-products/loan-products.resolver';
@@ -80,9 +83,10 @@ import { DividendsResolver } from './share-products/dividends-share-product/divi
import { RecurringDepositProductsTemplateResolver } from './recurring-deposit-products/recurring-deposit-products-template.resolver';
import { EditRecurringDepositProductComponent } from './recurring-deposit-products/edit-recurring-deposit-product/edit-recurring-deposit-product.component';
import { RecurringDepositProductAndTemplateResolver } from './recurring-deposit-products/edit-recurring-deposit-product/recurring-deposit-product-and-template.resolver';
import { ViewDividendComponent } from './share-products/view-dividend/view-dividend.component';
import { ViewDividendDataResolver } from './share-products/view-dividend/view-dividend-data.resolver';
import { FixedDepositProductResolver } from './fixed-deposit-products/fixed-deposit-product.resolver';
import { ManageTaxGroupTemplateResolver } from './manage-tax-groups/create-tax-group/manage-tax-group-template.resolver';
import { EditTaxGroupResolver } from './manage-tax-groups/edit-tax-group/edit-tax-group.resolver';
/** Products Routes */
const routes: Routes = [
@@ -311,6 +315,14 @@ const routes: Routes = [
taxGroups: ManageTaxGroupsResolver
}
},
{
path: 'create',
component: CreateTaxGroupComponent,
data: { title: extract('Create Tax Group'), breadcrumb: 'Create' },
resolve: {
taxGroupTemplate: ManageTaxGroupTemplateResolver
}
},
{
path: ':id',
data: { title: extract('View Tax Group'), routeParamBreadcrumb: 'id' },
@@ -321,7 +333,15 @@ const routes: Routes = [
resolve: {
taxGroup: TaxGroupResolver
}
}
},
{
path: 'edit',
data: { title: extract('Edit Tax Group'), breadcrumb: 'Edit', routeParamBreadcrumb: false },
component: EditTaxGroupComponent,
resolve: {
taxGroup: EditTaxGroupResolver
}
},
]
}
]
@@ -548,7 +568,9 @@ const routes: Routes = [
RecurringDepositProductsTemplateResolver,
RecurringDepositProductAndTemplateResolver,
ViewDividendDataResolver,
FixedDepositProductResolver
FixedDepositProductResolver,
ManageTaxGroupTemplateResolver,
EditTaxGroupResolver
]
})
export class ProductsRoutingModule { }
+5 -1
View File
@@ -90,6 +90,8 @@ import { EditRecurringDepositProductComponent } from './recurring-deposit-produc
import { CreateDividendComponent } from './share-products/create-dividend/create-dividend.component';
import { ViewDividendComponent } from './share-products/view-dividend/view-dividend.component';
import { ViewFixedDepositProductComponent } from './fixed-deposit-products/view-fixed-deposit-product/view-fixed-deposit-product.component';
import { CreateTaxGroupComponent } from './manage-tax-groups/create-tax-group/create-tax-group.component';
import { EditTaxGroupComponent } from './manage-tax-groups/edit-tax-group/edit-tax-group.component';
/**
* Products Module
@@ -183,7 +185,9 @@ import { ViewFixedDepositProductComponent } from './fixed-deposit-products/view-
EditRecurringDepositProductComponent,
CreateDividendComponent,
ViewDividendComponent,
ViewFixedDepositProductComponent
ViewFixedDepositProductComponent,
CreateTaxGroupComponent,
EditTaxGroupComponent
],
entryComponents: [
DepositProductIncentiveFormDialogComponent,
+28 -2
View File
@@ -245,10 +245,36 @@ export class ProductsService {
/**
* @param {string} taxGroupId Tax Component ID of Tax Component.
* @param {string} template Template
* @returns {Observable<any>} Tax Component.
*/
getTaxGroup(taxGroupId: string): Observable<any> {
return this.http.get(`/taxes/group/${taxGroupId}`);
getTaxGroup(taxGroupId: string, template: string): Observable<any> {
const httpParams = new HttpParams().set('template', template);
return this.http.get(`/taxes/group/${taxGroupId}`, { params: httpParams });
}
/**
* @returns {Observable<any>} Tax Group Template
*/
getTaxGroupTemplate(): Observable<any> {
return this.http.get('/taxes/group/template');
}
/**
* @param {any} taxGroup Tax Group
* @returns {Observable<any>} Tax Group Resource Id
*/
createTaxGroup(taxGroup: any): Observable<any> {
return this.http.post('/taxes/group', taxGroup);
}
/**
* @param {any} taxGroupId Tax Group ID
* @param {any} taxGroup Tax Group
* @returns {Observable<any>} Changes in the Tax Group
*/
updateTaxGroup(taxGroupId: any, taxGroup: any): Observable<any> {
return this.http.put(`/taxes/group/${taxGroupId}`, taxGroup);
}
/**