diff --git a/src/app/core/account.service.ts b/src/app/core/account.service.ts index b313dc1..6169040 100644 --- a/src/app/core/account.service.ts +++ b/src/app/core/account.service.ts @@ -23,6 +23,7 @@ import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/take'; import { Util } from '../shared/util'; +import { businessAccounts } from '../fixtures/businessAccounts'; import { personalAccounts } from '../fixtures/personalAccounts'; import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; @@ -62,7 +63,7 @@ export class AccountService { if(options.createDefaultAccounts) { this.getAccountTree().take(1).switchMap(tree => { - return this.createDefaultAccounts(tree); + return this.createDefaultAccounts(tree, options.createDefaultAccounts); }).subscribe(accounts => { log.debug('Created default accounts'); log.debug(accounts); @@ -590,7 +591,7 @@ export class AccountService { return this.apiService.deleteAccount(id); } - createDefaultAccounts(tree: AccountTree): Observable { + createDefaultAccounts(tree: AccountTree, type: string): Observable { let assetAccount = tree.getAccountByName('Assets', 1); let equityAccount = tree.getAccountByName('Equity', 1); let liabilityAccount = tree.getAccountByName('Liabilities', 1); @@ -608,10 +609,10 @@ export class AccountService { 'Expenses': [expenseAccount.id, true] }; - let newAccounts; + let newAccounts = type === 'business' ? businessAccounts : personalAccounts; try { - newAccounts = personalAccounts.map(data => { + newAccounts = newAccounts.map(data => { let id = Util.newGuid(); let [parentId, debitBalance] = accountNameMap[data.parent]; diff --git a/src/app/core/org.service.ts b/src/app/core/org.service.ts index b54478d..a52e2b0 100644 --- a/src/app/core/org.service.ts +++ b/src/app/core/org.service.ts @@ -37,7 +37,7 @@ export class OrgService { return this.apiService.getOrgs(); } - newOrg(org: Org, createDefaultAccounts: boolean): Observable { + newOrg(org: Org, createDefaultAccounts: string): Observable { let sessionOptions = new SessionOptions({ createDefaultAccounts: createDefaultAccounts }); diff --git a/src/app/fixtures/businessAccounts.ts b/src/app/fixtures/businessAccounts.ts new file mode 100644 index 0000000..8bc3e61 --- /dev/null +++ b/src/app/fixtures/businessAccounts.ts @@ -0,0 +1,123 @@ +export const businessAccounts: any = +[ + { + "name": "Checking", + "parent": "Assets" + }, + { + "name": "Petty Cash", + "parent": "Assets" + }, + { + "name": "Accounting", + "parent": "Expenses" + }, + { + "name": "Accounts Receivable", + "parent": "Assets" + }, + { + "name": "Capital", + "parent": "Equity" + }, + { + "name": "Drawing", + "parent": "Equity" + }, + { + "name": "Accounts Payable", + "parent": "Liabilities" + }, + { + "name": "Credit Card", + "parent": "Liabilities" + }, + { + "name": "Auto", + "parent": "Expenses" + }, + { + "name": "Bank Fees", + "parent": "Expenses" + }, + { + "name": "Computer Equipment", + "parent": "Expenses" + }, + { + "name": "Cost of Goods Sold", + "parent": "Expenses" + }, + { + "name": "Dining / Entertainment", + "parent": "Expenses" + }, + { + "name": "Internet", + "parent": "Expenses" + }, + { + "name": "Legal", + "parent": "Expenses" + }, + { + "name": "Licenses / Fees", + "parent": "Expenses" + }, + { + "name": "Marketing", + "parent": "Expenses" + }, + { + "name": "Miscellaneous", + "parent": "Expenses" + }, + { + "name": "Office Furniture", + "parent": "Expenses" + }, + { + "name": "Office Rent", + "parent": "Expenses" + }, + { + "name": "Office Supplies", + "parent": "Expenses" + }, + { + "name": "Payment Processing", + "parent": "Expenses" + }, + { + "name": "Payroll", + "parent": "Expenses" + }, + { + "name": "Phone", + "parent": "Expenses" + }, + { + "name": "Shipping", + "parent": "Expenses" + }, + { + "name": "Software", + "parent": "Expenses" + }, + { + "name": "Tax Preparation", + "parent": "Expenses" + }, + { + "name": "Travel", + "parent": "Expenses" + }, + { + "name": "Web Domains / Hosting", + "parent": "Expenses" + }, + { + "name": "Sales", + "parent": "Income" + } +]; \ No newline at end of file diff --git a/src/app/org/neworg.html b/src/app/org/neworg.html index 9db3078..b16fc27 100644 --- a/src/app/org/neworg.html +++ b/src/app/org/neworg.html @@ -41,9 +41,20 @@ +

Create default accounts (can be customized later)

- - +
+ + +
+
+ + +
+
+ + +

{{error.message}} diff --git a/src/app/org/neworg.ts b/src/app/org/neworg.ts index f2a0d9a..1d2818d 100644 --- a/src/app/org/neworg.ts +++ b/src/app/org/neworg.ts @@ -39,7 +39,7 @@ export class NewOrgPage { 'currency': ['USD', Validators.required], 'precision': [2, Validators.required], 'timezone': [this.defaultTz, Validators.required], - 'createDefaultAccounts': [true, Validators.required] + 'createDefaultAccounts': ['business'] }); this.joinOrgForm = fb.group({ diff --git a/src/app/org/org.html b/src/app/org/org.html index 68cb22f..2ce4d28 100644 --- a/src/app/org/org.html +++ b/src/app/org/org.html @@ -148,10 +148,19 @@ -

- -
- +

Create default accounts (can be customized later)

+
+
+ + +
+
+ + +
+
+ +

{{newOrgError.message}}

diff --git a/src/app/org/org.ts b/src/app/org/org.ts index 188aeb9..9406f18 100644 --- a/src/app/org/org.ts +++ b/src/app/org/org.ts @@ -72,7 +72,7 @@ export class OrgPage { 'currency': ['', Validators.required], 'precision': [null, Validators.required], 'timezone': [this.defaultTz, Validators.required], - 'createDefaultAccounts': [true, Validators.required] + 'createDefaultAccounts': [''] }); } @@ -95,7 +95,7 @@ export class OrgPage { currency: this.currentOrg.currency, precision: this.currentOrg.precision, timezone: this.defaultTz, - createDefaultAccounts: true + createDefaultAccounts: '' } ); diff --git a/src/app/shared/session-options.ts b/src/app/shared/session-options.ts index a107b79..b51c669 100644 --- a/src/app/shared/session-options.ts +++ b/src/app/shared/session-options.ts @@ -1,5 +1,5 @@ export class SessionOptions { - createDefaultAccounts: boolean; + createDefaultAccounts: string; constructor(options: any = {}) { this.createDefaultAccounts = options.createDefaultAccounts; }