Files
cbsnexora/src/app/accounting/chart-of-accounts/gl-account-tree.service.ts
T
Abhay Chawla 6f6378aa0e feat: add tree view in chart of accounts component
Add tree view for GL accounts in chart of accounts component.
2018-08-02 01:18:03 +05:30

71 lines
2.4 KiB
TypeScript

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { GLAccountNode } from './gl-account-node.model';
@Injectable({
providedIn: 'root'
})
export class GlAccountTreeService {
glAccountData: any;
treeDataChange = new BehaviorSubject<GLAccountNode[]>([]);
get treeData(): GLAccountNode[] { return this.treeDataChange.value; }
constructor() { }
initialize(glAccountData: any) {
const data = this.buildGLAccountTree(glAccountData);
this.treeDataChange.next(data);
}
buildGLAccountTree(glAccountData: any): GLAccountNode[] {
const glAccountTree: GLAccountNode[] = [];
glAccountTree.push(new GLAccountNode('GL ACCOUNTS'));
glAccountTree[0].children.push(new GLAccountNode('ASSET'));
glAccountTree[0].children.push(new GLAccountNode('EQUITY'));
glAccountTree[0].children.push(new GLAccountNode('EXPENSE'));
glAccountTree[0].children.push(new GLAccountNode('INCOME'));
glAccountTree[0].children.push(new GLAccountNode('LIABILITY'));
glAccountData.sort((glAccountOne: any, glAccountTwo: any) => {
if (!glAccountOne.parentId) {
glAccountOne.parentId = 0;
}
return glAccountOne.parentId - glAccountTwo.parentId;
});
const glAccounts: GLAccountNode[] = [];
for (const glAccount of glAccountData) {
glAccounts[glAccount.id] =
new GLAccountNode(glAccount.name, glAccount.glCode, glAccount.type.value, glAccount.usage.value, glAccount.manualEntriesAllowed, glAccount.description);
}
for (const glAccount of glAccountData) {
if (glAccount.parentId === 0) {
if (glAccount.type.value === 'ASSET') {
glAccountTree[0].children[0].children.push(glAccounts[glAccount.id]);
} else if (glAccount.type.value === 'EQUITY') {
glAccountTree[0].children[1].children.push(glAccounts[glAccount.id]);
} else if (glAccount.type.value === 'EXPENSE') {
glAccountTree[0].children[2].children.push(glAccounts[glAccount.id]);
} else if (glAccount.type.value === 'INCOME') {
glAccountTree[0].children[3].children.push(glAccounts[glAccount.id]);
} else if (glAccount.type.value === 'LIABILITY') {
glAccountTree[0].children[4].children.push(glAccounts[glAccount.id]);
}
} else {
glAccounts[glAccount.parentId].children.push(glAccounts[glAccount.id]);
}
}
return glAccountTree;
}
}