Compare commits

..

29 Commits

Author SHA1 Message Date
dependabot[bot]
28045c3a12 Bump async from 2.6.3 to 2.6.4
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 17:48:56 +00:00
Patrick Nagurny
ef36779afc fix transaction constructor 2020-08-26 10:30:34 -06:00
Patrick Nagurny
1dc3a849ba Merge pull request #29 from pnagurny/enhance/update-deps20200821
update deps
2020-08-21 12:24:53 -06:00
Patrick Nagurny
dce3701171 update deps 2020-08-21 12:23:00 -06:00
Patrick Nagurny
9a3a2e06c1 Merge pull request #27 from pnagurny/feature/business-accounts
default business accounts
2020-07-23 11:54:58 -06:00
Patrick Nagurny
ead6777089 business accounts 2020-07-23 11:45:26 -06:00
Patrick Nagurny
8133927c4b Merge pull request #25 from pnagurny/fix/copyright-2020
copyright 2020
2020-06-18 11:35:44 -06:00
Patrick Nagurny
8559b96c02 copyright 2020 2020-06-18 11:34:27 -06:00
Patrick Nagurny
f61f59c801 Merge pull request #20 from pnagurny/feature/debit-credit-labels
make easier to understand labels for debits and credits
2020-01-15 15:02:07 -05:00
Patrick Nagurny
8a1d62dd44 make easier to understand labels for debits and credits 2020-01-15 15:01:15 -05:00
Patrick Nagurny
486feef2c4 Merge pull request #13 from openaccounting/dependabot/npm_and_yarn/bootstrap-4.3.1
Bump bootstrap from 4.1.3 to 4.3.1
2020-01-08 10:58:14 -05:00
Patrick Nagurny
2340c2f208 Merge pull request #19 from openaccounting/dependabot/npm_and_yarn/webpack-dev-server-3.10.1
Bump webpack-dev-server from 3.1.9 to 3.10.1
2020-01-08 10:46:48 -05:00
dependabot[bot]
e4e63e1b5f Bump bootstrap from 4.1.3 to 4.3.1
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 4.1.3 to 4.3.1.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v4.1.3...v4.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:46:02 +00:00
Patrick Nagurny
ca125f2e13 Merge pull request #18 from openaccounting/dependabot/npm_and_yarn/lodash-4.17.15
Bump lodash from 4.17.11 to 4.17.15
2020-01-08 10:45:49 -05:00
Patrick Nagurny
3e104bfa6c Merge pull request #17 from openaccounting/dependabot/npm_and_yarn/tar-2.2.2
Bump tar from 2.2.1 to 2.2.2
2020-01-08 10:45:26 -05:00
dependabot[bot]
9d2e7f3131 Bump lodash from 4.17.11 to 4.17.15
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:44:45 +00:00
Patrick Nagurny
cf46c3f0fd Merge pull request #16 from openaccounting/dependabot/npm_and_yarn/fstream-1.0.12
Bump fstream from 1.0.11 to 1.0.12
2020-01-08 10:44:30 -05:00
Patrick Nagurny
5875dfcb65 Merge pull request #15 from openaccounting/dependabot/npm_and_yarn/lodash.mergewith-4.6.2
Bump lodash.mergewith from 4.6.1 to 4.6.2
2020-01-08 10:43:57 -05:00
Patrick Nagurny
7245741c8b Merge pull request #14 from openaccounting/dependabot/npm_and_yarn/js-yaml-3.13.1
Bump js-yaml from 3.12.0 to 3.13.1
2020-01-08 10:43:19 -05:00
Patrick Nagurny
1aeed8ef97 Merge pull request #12 from openaccounting/dependabot/npm_and_yarn/mixin-deep-1.3.2
Bump mixin-deep from 1.3.1 to 1.3.2
2020-01-08 10:41:56 -05:00
dependabot[bot]
0a370adf6c Bump tar from 2.2.1 to 2.2.2
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:40:55 +00:00
dependabot[bot]
37634fe970 Bump fstream from 1.0.11 to 1.0.12
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:40:53 +00:00
dependabot[bot]
851a43e6fc Bump webpack-dev-server from 3.1.9 to 3.10.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.1.9 to 3.10.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/v3.10.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.1.9...v3.10.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:40:48 +00:00
Patrick Nagurny
d3f8e6c3ab Merge pull request #10 from openaccounting/dependabot/npm_and_yarn/handlebars-4.5.3
Bump handlebars from 4.0.12 to 4.5.3
2020-01-08 10:40:00 -05:00
dependabot[bot]
ab62ff7d17 Bump lodash.mergewith from 4.6.1 to 4.6.2
Bumps [lodash.mergewith](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:37:59 +00:00
dependabot[bot]
096147855e Bump js-yaml from 3.12.0 to 3.13.1
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.12.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:37:59 +00:00
dependabot[bot]
cd5ddf5e63 Bump mixin-deep from 1.3.1 to 1.3.2
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-01-08 15:37:58 +00:00
Patrick Nagurny
ce1afb221d Merge pull request #11 from openaccounting/bug/api-new-tx
create new Transaction object from API data
2020-01-08 10:37:23 -05:00
dependabot[bot]
f31572737b Bump handlebars from 4.0.12 to 4.5.3
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.12 to 4.5.3.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-27 16:08:17 +00:00
15 changed files with 2895 additions and 2008 deletions

4670
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -29,7 +29,7 @@
"@angular/router": "^6.1.0", "@angular/router": "^6.1.0",
"@ng-bootstrap/ng-bootstrap": "^3.3.1", "@ng-bootstrap/ng-bootstrap": "^3.3.1",
"@types/moment-timezone": "^0.5.12", "@types/moment-timezone": "^0.5.12",
"bootstrap": "^4.1.3", "bootstrap": "^4.3.1",
"core-js": "^2.5.4", "core-js": "^2.5.4",
"moment-timezone": "^0.5.25", "moment-timezone": "^0.5.25",
"rxjs": "~6.2.0", "rxjs": "~6.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.8.26" "zone.js": "~0.8.26"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~0.8.0", "@angular-devkit/build-angular": "^0.13.10",
"@angular/cli": "~6.2.5", "@angular/cli": "~6.2.5",
"@angular/compiler-cli": "^6.1.0", "@angular/compiler-cli": "^6.1.0",
"@angular/language-service": "^6.1.0", "@angular/language-service": "^6.1.0",

View File

@@ -71,7 +71,7 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<p>Copyright &copy; 2019 Open Accounting, LLC<br> <p>Copyright &copy; 2020 Open Accounting, LLC<br>
<a href="/tou">Terms of Use</a> | <a href="/privacy-policy">Privacy Policy</a></p> <a href="/tou">Terms of Use</a> | <a href="/privacy-policy">Privacy Policy</a></p>
</div> </div>

View File

@@ -23,6 +23,7 @@ import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/take'; import 'rxjs/add/operator/take';
import { Util } from '../shared/util'; import { Util } from '../shared/util';
import { businessAccounts } from '../fixtures/businessAccounts';
import { personalAccounts } from '../fixtures/personalAccounts'; import { personalAccounts } from '../fixtures/personalAccounts';
import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
@@ -62,7 +63,7 @@ export class AccountService {
if(options.createDefaultAccounts) { if(options.createDefaultAccounts) {
this.getAccountTree().take(1).switchMap(tree => { this.getAccountTree().take(1).switchMap(tree => {
return this.createDefaultAccounts(tree); return this.createDefaultAccounts(tree, options.createDefaultAccounts);
}).subscribe(accounts => { }).subscribe(accounts => {
log.debug('Created default accounts'); log.debug('Created default accounts');
log.debug(accounts); log.debug(accounts);
@@ -590,7 +591,7 @@ export class AccountService {
return this.apiService.deleteAccount(id); return this.apiService.deleteAccount(id);
} }
createDefaultAccounts(tree: AccountTree): Observable<any> { createDefaultAccounts(tree: AccountTree, type: string): Observable<any> {
let assetAccount = tree.getAccountByName('Assets', 1); let assetAccount = tree.getAccountByName('Assets', 1);
let equityAccount = tree.getAccountByName('Equity', 1); let equityAccount = tree.getAccountByName('Equity', 1);
let liabilityAccount = tree.getAccountByName('Liabilities', 1); let liabilityAccount = tree.getAccountByName('Liabilities', 1);
@@ -608,10 +609,10 @@ export class AccountService {
'Expenses': [expenseAccount.id, true] 'Expenses': [expenseAccount.id, true]
}; };
let newAccounts; let newAccounts = type === 'business' ? businessAccounts : personalAccounts;
try { try {
newAccounts = personalAccounts.map(data => { newAccounts = newAccounts.map(data => {
let id = Util.newGuid(); let id = Util.newGuid();
let [parentId, debitBalance] = accountNameMap[data.parent]; let [parentId, debitBalance] = accountNameMap[data.parent];

View File

@@ -37,7 +37,7 @@ export class OrgService {
return this.apiService.getOrgs(); return this.apiService.getOrgs();
} }
newOrg(org: Org, createDefaultAccounts: boolean): Observable<Org> { newOrg(org: Org, createDefaultAccounts: string): Observable<Org> {
let sessionOptions = new SessionOptions({ let sessionOptions = new SessionOptions({
createDefaultAccounts: createDefaultAccounts createDefaultAccounts: createDefaultAccounts
}); });

View File

@@ -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"
}
];

View File

@@ -41,9 +41,20 @@
</option> </option>
</select> </select>
</div> </div>
<p>Create default accounts (can be customized later)</p>
<div class="form-group"> <div class="form-group">
<label for="createDefaultAccounts">Create default accounts<br>(can be customized later)</label> <div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts" type="checkbox" class="form-control" /> <input formControlName="createDefaultAccounts" id="createDefaultAccounts1" type="radio" class="form-check-input" value="" />
<label for="createDefaultAccounts1" class="form-check-label">None</label>
</div>
<div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts2" type="radio" class="form-check-input" value="business" />
<label for="createDefaultAccounts2" class="form-check-label">Business accounts</label>
</div>
<div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts3" type="radio" class="form-check-input" value="personal" />
<label for="createDefaultAccounts2" class="form-check-label">Personal accounts</label>
</div>
</div> </div>
<p *ngIf="error" class="error"> <p *ngIf="error" class="error">
{{error.message}} {{error.message}}

View File

@@ -39,7 +39,7 @@ export class NewOrgPage {
'currency': ['USD', Validators.required], 'currency': ['USD', Validators.required],
'precision': [2, Validators.required], 'precision': [2, Validators.required],
'timezone': [this.defaultTz, Validators.required], 'timezone': [this.defaultTz, Validators.required],
'createDefaultAccounts': [true, Validators.required] 'createDefaultAccounts': ['business']
}); });
this.joinOrgForm = fb.group({ this.joinOrgForm = fb.group({

View File

@@ -148,10 +148,19 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group row"> <p>Create default accounts (can be customized later)</p>
<label for="createDefaultAccounts" class="col-sm-3 col-form-label">Create default accounts<br>(can be customized later)</label> <div class="form-group">
<div class="col-sm-9"> <div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts" type="checkbox" class="form-control" /> <input formControlName="createDefaultAccounts" id="createDefaultAccounts1" type="radio" class="form-check-input" value="" />
<label for="createDefaultAccounts1" class="form-check-label">None</label>
</div>
<div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts2" type="radio" class="form-check-input" value="business" />
<label for="createDefaultAccounts2" class="form-check-label">Business accounts</label>
</div>
<div class="form-check">
<input formControlName="createDefaultAccounts" id="createDefaultAccounts3" type="radio" class="form-check-input" value="personal" />
<label for="createDefaultAccounts2" class="form-check-label">Personal accounts</label>
</div> </div>
</div> </div>
<p *ngIf="newOrgError" class="error">{{newOrgError.message}}</p> <p *ngIf="newOrgError" class="error">{{newOrgError.message}}</p>

View File

@@ -72,7 +72,7 @@ export class OrgPage {
'currency': ['', Validators.required], 'currency': ['', Validators.required],
'precision': [null, Validators.required], 'precision': [null, Validators.required],
'timezone': [this.defaultTz, Validators.required], 'timezone': [this.defaultTz, Validators.required],
'createDefaultAccounts': [true, Validators.required] 'createDefaultAccounts': ['']
}); });
} }
@@ -95,7 +95,7 @@ export class OrgPage {
currency: this.currentOrg.currency, currency: this.currentOrg.currency,
precision: this.currentOrg.precision, precision: this.currentOrg.precision,
timezone: this.defaultTz, timezone: this.defaultTz,
createDefaultAccounts: true createDefaultAccounts: ''
} }
); );

View File

@@ -0,0 +1,40 @@
import { Pipe, PipeTransform } from '@angular/core';
import { Account } from './account';
@Pipe({name: 'debitCredit'})
export class DebitCreditPipe implements PipeTransform {
debitNames: any;
creditNames: any;
constructor() {
this.debitNames = {
'Assets': 'Deposit',
'Liabilities': 'Payment',
'Equity': 'Decrease',
'Income': 'Deduction',
'Expenses': 'Expense'
};
this.creditNames = {
'Assets': 'Withdrawal',
'Liabilities': 'Charge',
'Equity': 'Increase',
'Income': 'Income',
'Expenses': 'Refund'
};
}
transform(account: Account, type: string): string {
if(!account) {
return type === 'credit' ? 'Credit' : 'Debit';
}
let parent = account.fullName.split(':')[0];
if(type === 'credit') {
return this.creditNames[parent];
} else {
return this.debitNames[parent];
}
}
}

View File

@@ -1,5 +1,5 @@
export class SessionOptions { export class SessionOptions {
createDefaultAccounts: boolean; createDefaultAccounts: string;
constructor(options: any = {}) { constructor(options: any = {}) {
this.createDefaultAccounts = options.createDefaultAccounts; this.createDefaultAccounts = options.createDefaultAccounts;
} }

View File

@@ -4,11 +4,12 @@ import { CurrencyFormatPipe } from './currency-format.pipe';
import { AccountNamePipe } from './account-name.pipe'; import { AccountNamePipe } from './account-name.pipe';
import { AccountBalancePipe } from './account-balance.pipe'; import { AccountBalancePipe } from './account-balance.pipe';
import { DateTzPipe } from './datetz.pipe'; import { DateTzPipe } from './datetz.pipe';
import { DebitCreditPipe } from './debit-credit.pipe';
@NgModule({ @NgModule({
imports: [], imports: [],
declarations: [CurrencyFormatPipe, AccountNamePipe, AccountBalancePipe, DateTzPipe], declarations: [CurrencyFormatPipe, AccountNamePipe, AccountBalancePipe, DateTzPipe, DebitCreditPipe],
exports: [CurrencyFormatPipe, AccountNamePipe, AccountBalancePipe, DateTzPipe], exports: [CurrencyFormatPipe, AccountNamePipe, AccountBalancePipe, DateTzPipe, DebitCreditPipe],
providers: [DecimalPipe, CurrencyFormatPipe] providers: [DecimalPipe, CurrencyFormatPipe]
}) })
export class SharedModule { } export class SharedModule { }

View File

@@ -11,8 +11,8 @@ export class Transaction {
splits: Split[]; splits: Split[];
constructor(options: any = {}) { constructor(options: any = {}) {
this.id = options.id; this.id = options.id;
this.orgId = options.id; this.orgId = options.orgId;
this.userId = options.id; this.userId = options.userId;
this.date = options.date ? new Date(options.date) : null; this.date = options.date ? new Date(options.date) : null;
this.inserted = options.inserted ? new Date(options.inserted) : null; this.inserted = options.inserted ? new Date(options.inserted) : null;
this.updated = options.updated ? new Date(options.updated) : null; this.updated = options.updated ? new Date(options.updated) : null;

View File

@@ -19,10 +19,10 @@
<span>Transfer</span> <span>Transfer</span>
</div> </div>
<div class="col custom-3"> <div class="col custom-3">
<span>Debit</span> <span>{{account | debitCredit:'debit'}}</span>
</div> </div>
<div class="col custom-3"> <div class="col custom-3">
<span>Credit</span> <span>{{account | debitCredit:'credit'}}</span>
</div> </div>
<div class="col custom-3"> <div class="col custom-3">
<span>Balance</span> <span>Balance</span>