taxtank-core 0.33.25 → 0.33.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,13 +1,32 @@
1
1
  import { Collection } from '../../collection';
2
2
  import { TransactionReportItem } from '../../../models/report';
3
+ import { ChartAccountsCategoryEnum } from '../../../db/Enums';
3
4
  export class TransactionReportItemCollection extends Collection {
4
5
  static fromTransactions(transactions, priorTransactions) {
5
6
  const transactionsByChartAccounts = transactions.groupBy('chartAccounts.id');
6
7
  const priorTransactionsByChartAccounts = priorTransactions.groupBy('chartAccounts.id');
7
- return new TransactionReportItemCollection(transactionsByChartAccounts.keys.map(chartAccountsId => new TransactionReportItem(transactionsByChartAccounts.get(chartAccountsId), priorTransactionsByChartAccounts.get(chartAccountsId))));
8
+ console.log(transactionsByChartAccounts.keys);
9
+ console.log(priorTransactionsByChartAccounts.keys);
10
+ const items = new TransactionReportItemCollection([...new Set([...transactionsByChartAccounts.keys, ...priorTransactionsByChartAccounts.keys])].map(chartAccountsId => new TransactionReportItem(transactionsByChartAccounts.get(chartAccountsId), priorTransactionsByChartAccounts.get(chartAccountsId))));
11
+ const categoriesOrder = [
12
+ ChartAccountsCategoryEnum.PROPERTY_INCOME,
13
+ ChartAccountsCategoryEnum.WORK_INCOME,
14
+ ChartAccountsCategoryEnum.SOLE_INCOME,
15
+ ChartAccountsCategoryEnum.HOLDING_INCOME,
16
+ ChartAccountsCategoryEnum.OTHER_INCOME,
17
+ ChartAccountsCategoryEnum.PERSONAL_INCOME,
18
+ ChartAccountsCategoryEnum.PROPERTY_EXPENSE,
19
+ ChartAccountsCategoryEnum.WORK_EXPENSE,
20
+ ChartAccountsCategoryEnum.SOLE_EXPENSE,
21
+ ChartAccountsCategoryEnum.HOLDING_EXPENSE,
22
+ ChartAccountsCategoryEnum.OTHER_EXPENSE,
23
+ ChartAccountsCategoryEnum.PERSONAL_EXPENSE,
24
+ ];
25
+ items.sort((a, b) => categoriesOrder.indexOf(a.category) - categoriesOrder.indexOf(b.category));
26
+ return items;
8
27
  }
9
28
  sumBy(path, abs = false) {
10
29
  return super.sumBy(path, abs);
11
30
  }
12
31
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy9yZXBvcnQvaW5jb21lLWV4cGVuc2UvdHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHL0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFVBQWlDO0lBQ3BGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFtQyxFQUFFLGlCQUF3QztRQUNuRyxNQUFNLDJCQUEyQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RSxNQUFNLGdDQUFnQyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXZGLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM3RSxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUkscUJBQXFCLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUN0SixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxHQUFHLEdBQUcsS0FBSztRQUM3QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVwb3J0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXBvcnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25SZXBvcnRJdGVtQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248VHJhbnNhY3Rpb25SZXBvcnRJdGVtPiB7XG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBwcmlvclRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zQnlDaGFydEFjY291bnRzID0gdHJhbnNhY3Rpb25zLmdyb3VwQnkoJ2NoYXJ0QWNjb3VudHMuaWQnKTtcbiAgICBjb25zdCBwcmlvclRyYW5zYWN0aW9uc0J5Q2hhcnRBY2NvdW50cyA9IHByaW9yVHJhbnNhY3Rpb25zLmdyb3VwQnkoJ2NoYXJ0QWNjb3VudHMuaWQnKTtcblxuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25SZXBvcnRJdGVtQ29sbGVjdGlvbih0cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5cy5tYXAoXG4gICAgICBjaGFydEFjY291bnRzSWQgPT4gbmV3IFRyYW5zYWN0aW9uUmVwb3J0SXRlbSh0cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMuZ2V0KGNoYXJ0QWNjb3VudHNJZCksIHByaW9yVHJhbnNhY3Rpb25zQnlDaGFydEFjY291bnRzLmdldChjaGFydEFjY291bnRzSWQpKVxuICAgICkpO1xuICB9XG5cbiAgc3VtQnkocGF0aDogc3RyaW5nLCBhYnMgPSBmYWxzZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN1cGVyLnN1bUJ5KHBhdGgsIGFicyk7XG4gIH1cbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy9yZXBvcnQvaW5jb21lLWV4cGVuc2UvdHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFVBQWlDO0lBQ3BGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFtQyxFQUFFLGlCQUF3QztRQUNuRyxNQUFNLDJCQUEyQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RSxNQUFNLGdDQUFnQyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxNQUFNLEtBQUssR0FBRyxJQUFJLCtCQUErQixDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEdBQUcsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDakosZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FDdEosQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUc7WUFDdEIseUJBQXlCLENBQUMsZUFBZTtZQUN6Qyx5QkFBeUIsQ0FBQyxXQUFXO1lBQ3JDLHlCQUF5QixDQUFDLFdBQVc7WUFDckMseUJBQXlCLENBQUMsY0FBYztZQUN4Qyx5QkFBeUIsQ0FBQyxZQUFZO1lBQ3RDLHlCQUF5QixDQUFDLGVBQWU7WUFDekMseUJBQXlCLENBQUMsZ0JBQWdCO1lBQzFDLHlCQUF5QixDQUFDLFlBQVk7WUFDdEMseUJBQXlCLENBQUMsWUFBWTtZQUN0Qyx5QkFBeUIsQ0FBQyxlQUFlO1lBQ3pDLHlCQUF5QixDQUFDLGFBQWE7WUFDdkMseUJBQXlCLENBQUMsZ0JBQWdCO1NBQzNDLENBQUM7UUFFRixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVoRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWSxFQUFFLEdBQUcsR0FBRyxLQUFLO1FBQzdCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXBvcnRJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3JlcG9ydCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25SZXBvcnRJdGVtQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248VHJhbnNhY3Rpb25SZXBvcnRJdGVtPiB7XG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBwcmlvclRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zQnlDaGFydEFjY291bnRzID0gdHJhbnNhY3Rpb25zLmdyb3VwQnkoJ2NoYXJ0QWNjb3VudHMuaWQnKTtcbiAgICBjb25zdCBwcmlvclRyYW5zYWN0aW9uc0J5Q2hhcnRBY2NvdW50cyA9IHByaW9yVHJhbnNhY3Rpb25zLmdyb3VwQnkoJ2NoYXJ0QWNjb3VudHMuaWQnKTtcbiAgICBjb25zb2xlLmxvZyh0cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5cyk7XG4gICAgY29uc29sZS5sb2cocHJpb3JUcmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5cyk7XG5cbiAgICBjb25zdCBpdGVtcyA9IG5ldyBUcmFuc2FjdGlvblJlcG9ydEl0ZW1Db2xsZWN0aW9uKFsuLi5uZXcgU2V0KFsuLi50cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5cywgLi4ucHJpb3JUcmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5c10pXS5tYXAoXG4gICAgICBjaGFydEFjY291bnRzSWQgPT4gbmV3IFRyYW5zYWN0aW9uUmVwb3J0SXRlbSh0cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMuZ2V0KGNoYXJ0QWNjb3VudHNJZCksIHByaW9yVHJhbnNhY3Rpb25zQnlDaGFydEFjY291bnRzLmdldChjaGFydEFjY291bnRzSWQpKVxuICAgICkpO1xuXG4gICAgY29uc3QgY2F0ZWdvcmllc09yZGVyID0gW1xuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5QUk9QRVJUWV9JTkNPTUUsXG4gICAgICBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLldPUktfSU5DT01FLFxuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5TT0xFX0lOQ09NRSxcbiAgICAgIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uSE9MRElOR19JTkNPTUUsXG4gICAgICBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLk9USEVSX0lOQ09NRSxcbiAgICAgIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uUEVSU09OQUxfSU5DT01FLFxuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5QUk9QRVJUWV9FWFBFTlNFLFxuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5XT1JLX0VYUEVOU0UsXG4gICAgICBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLlNPTEVfRVhQRU5TRSxcbiAgICAgIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uSE9MRElOR19FWFBFTlNFLFxuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5PVEhFUl9FWFBFTlNFLFxuICAgICAgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5QRVJTT05BTF9FWFBFTlNFLFxuICAgIF07XG5cbiAgICBpdGVtcy5zb3J0KChhLCBiKSA9PiBjYXRlZ29yaWVzT3JkZXIuaW5kZXhPZihhLmNhdGVnb3J5KSAtIGNhdGVnb3JpZXNPcmRlci5pbmRleE9mKGIuY2F0ZWdvcnkpKTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHN1bUJ5KHBhdGg6IHN0cmluZywgYWJzID0gZmFsc2UpOiBudW1iZXIge1xuICAgIHJldHVybiBzdXBlci5zdW1CeShwYXRoLCBhYnMpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { FinancialYear } from '../../financial-year';
2
2
  export class TransactionReportItem {
3
3
  constructor(transactions, priorTransactions) {
4
- const firstTransaction = transactions.first;
4
+ const firstTransaction = transactions.first ?? priorTransactions.first;
5
5
  this.category = firstTransaction.chartAccounts.category;
6
6
  this.name = firstTransaction.chartAccounts.name;
7
7
  new FinancialYear().getPastMonths().forEach(month => {
@@ -13,4 +13,4 @@ export class TransactionReportItem {
13
13
  this.priorClaimAmount = priorTransactions.sumBy('grossClaimAmountWithoutGst');
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3JlcG9ydC9pbmNvbWUtZXhwZW5zZS90cmFuc2FjdGlvbi1yZXBvcnQtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckQsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUFZLFlBQW1DLEVBQUUsaUJBQXdDO1FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ2hELElBQUksYUFBYSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRmluYW5jaWFsWWVhciB9IGZyb20gJy4uLy4uL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblJlcG9ydEl0ZW0ge1xuICBjYXRlZ29yeTogQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bTtcbiAgbmFtZTogc3RyaW5nO1xuICBhbW91bnQ6IG51bWJlcjtcbiAgY2xhaW1BbW91bnQ6IG51bWJlcjtcbiAgcHJpb3JBbW91bnQ6IG51bWJlcjtcbiAgcHJpb3JDbGFpbUFtb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBwcmlvclRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uKSB7XG4gICAgY29uc3QgZmlyc3RUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9ucy5maXJzdDtcbiAgICB0aGlzLmNhdGVnb3J5ID0gZmlyc3RUcmFuc2FjdGlvbi5jaGFydEFjY291bnRzLmNhdGVnb3J5O1xuICAgIHRoaXMubmFtZSA9IGZpcnN0VHJhbnNhY3Rpb24uY2hhcnRBY2NvdW50cy5uYW1lO1xuICAgIG5ldyBGaW5hbmNpYWxZZWFyKCkuZ2V0UGFzdE1vbnRocygpLmZvckVhY2gobW9udGggPT4ge1xuICAgICAgdGhpc1ttb250aF0gPSB0cmFuc2FjdGlvbnMuZ2V0QnlNb250aChtb250aCkuc3VtQnkoJ2dyb3NzQW1vdW50V2l0aG91dEdzdCcpO1xuICAgIH0pO1xuICAgIHRoaXMuYW1vdW50ID0gdHJhbnNhY3Rpb25zLnN1bUJ5KCdncm9zc0Ftb3VudFdpdGhvdXRHc3QnKTtcbiAgICB0aGlzLmNsYWltQW1vdW50ID0gdHJhbnNhY3Rpb25zLnN1bUJ5KCdncm9zc0NsYWltQW1vdW50V2l0aG91dEdzdCcpO1xuICAgIHRoaXMucHJpb3JBbW91bnQgPSBwcmlvclRyYW5zYWN0aW9ucy5zdW1CeSgnZ3Jvc3NBbW91bnRXaXRob3V0R3N0Jyk7XG4gICAgdGhpcy5wcmlvckNsYWltQW1vdW50ID0gcHJpb3JUcmFuc2FjdGlvbnMuc3VtQnkoJ2dyb3NzQ2xhaW1BbW91bnRXaXRob3V0R3N0Jyk7XG4gIH1cbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVwb3J0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3JlcG9ydC9pbmNvbWUtZXhwZW5zZS90cmFuc2FjdGlvbi1yZXBvcnQtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckQsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUFZLFlBQW1DLEVBQUUsaUJBQXdDO1FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUNoRCxJQUFJLGFBQWEsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi8uLi9maW5hbmNpYWwteWVhcic7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25SZXBvcnRJdGVtIHtcbiAgY2F0ZWdvcnk6IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW07XG4gIG5hbWU6IHN0cmluZztcbiAgYW1vdW50OiBudW1iZXI7XG4gIGNsYWltQW1vdW50OiBudW1iZXI7XG4gIHByaW9yQW1vdW50OiBudW1iZXI7XG4gIHByaW9yQ2xhaW1BbW91bnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgcHJpb3JUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbikge1xuICAgIGNvbnN0IGZpcnN0VHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbnMuZmlyc3QgPz8gcHJpb3JUcmFuc2FjdGlvbnMuZmlyc3Q7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGZpcnN0VHJhbnNhY3Rpb24uY2hhcnRBY2NvdW50cy5jYXRlZ29yeTtcbiAgICB0aGlzLm5hbWUgPSBmaXJzdFRyYW5zYWN0aW9uLmNoYXJ0QWNjb3VudHMubmFtZTtcbiAgICBuZXcgRmluYW5jaWFsWWVhcigpLmdldFBhc3RNb250aHMoKS5mb3JFYWNoKG1vbnRoID0+IHtcbiAgICAgIHRoaXNbbW9udGhdID0gdHJhbnNhY3Rpb25zLmdldEJ5TW9udGgobW9udGgpLnN1bUJ5KCdncm9zc0Ftb3VudFdpdGhvdXRHc3QnKTtcbiAgICB9KTtcbiAgICB0aGlzLmFtb3VudCA9IHRyYW5zYWN0aW9ucy5zdW1CeSgnZ3Jvc3NBbW91bnRXaXRob3V0R3N0Jyk7XG4gICAgdGhpcy5jbGFpbUFtb3VudCA9IHRyYW5zYWN0aW9ucy5zdW1CeSgnZ3Jvc3NDbGFpbUFtb3VudFdpdGhvdXRHc3QnKTtcbiAgICB0aGlzLnByaW9yQW1vdW50ID0gcHJpb3JUcmFuc2FjdGlvbnMuc3VtQnkoJ2dyb3NzQW1vdW50V2l0aG91dEdzdCcpO1xuICAgIHRoaXMucHJpb3JDbGFpbUFtb3VudCA9IHByaW9yVHJhbnNhY3Rpb25zLnN1bUJ5KCdncm9zc0NsYWltQW1vdW50V2l0aG91dEdzdCcpO1xuICB9XG59XG4iXX0=
@@ -8266,7 +8266,7 @@ const REPORTS = {
8266
8266
 
8267
8267
  class TransactionReportItem {
8268
8268
  constructor(transactions, priorTransactions) {
8269
- const firstTransaction = transactions.first;
8269
+ const firstTransaction = transactions.first ?? priorTransactions.first;
8270
8270
  this.category = firstTransaction.chartAccounts.category;
8271
8271
  this.name = firstTransaction.chartAccounts.name;
8272
8272
  new FinancialYear().getPastMonths().forEach(month => {
@@ -8348,7 +8348,25 @@ class TransactionReportItemCollection extends Collection {
8348
8348
  static fromTransactions(transactions, priorTransactions) {
8349
8349
  const transactionsByChartAccounts = transactions.groupBy('chartAccounts.id');
8350
8350
  const priorTransactionsByChartAccounts = priorTransactions.groupBy('chartAccounts.id');
8351
- return new TransactionReportItemCollection(transactionsByChartAccounts.keys.map(chartAccountsId => new TransactionReportItem(transactionsByChartAccounts.get(chartAccountsId), priorTransactionsByChartAccounts.get(chartAccountsId))));
8351
+ console.log(transactionsByChartAccounts.keys);
8352
+ console.log(priorTransactionsByChartAccounts.keys);
8353
+ const items = new TransactionReportItemCollection([...new Set([...transactionsByChartAccounts.keys, ...priorTransactionsByChartAccounts.keys])].map(chartAccountsId => new TransactionReportItem(transactionsByChartAccounts.get(chartAccountsId), priorTransactionsByChartAccounts.get(chartAccountsId))));
8354
+ const categoriesOrder = [
8355
+ ChartAccountsCategoryEnum.PROPERTY_INCOME,
8356
+ ChartAccountsCategoryEnum.WORK_INCOME,
8357
+ ChartAccountsCategoryEnum.SOLE_INCOME,
8358
+ ChartAccountsCategoryEnum.HOLDING_INCOME,
8359
+ ChartAccountsCategoryEnum.OTHER_INCOME,
8360
+ ChartAccountsCategoryEnum.PERSONAL_INCOME,
8361
+ ChartAccountsCategoryEnum.PROPERTY_EXPENSE,
8362
+ ChartAccountsCategoryEnum.WORK_EXPENSE,
8363
+ ChartAccountsCategoryEnum.SOLE_EXPENSE,
8364
+ ChartAccountsCategoryEnum.HOLDING_EXPENSE,
8365
+ ChartAccountsCategoryEnum.OTHER_EXPENSE,
8366
+ ChartAccountsCategoryEnum.PERSONAL_EXPENSE,
8367
+ ];
8368
+ items.sort((a, b) => categoriesOrder.indexOf(a.category) - categoriesOrder.indexOf(b.category));
8369
+ return items;
8352
8370
  }
8353
8371
  sumBy(path, abs = false) {
8354
8372
  return super.sumBy(path, abs);