@fin.cx/skr 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{npmextra.json → .smartconfig.json} +12 -6
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +21 -15
- package/dist_ts/index.js +16 -16
- package/dist_ts/plugins.d.ts +15 -5
- package/dist_ts/plugins.js +42 -6
- package/dist_ts/skr.api.js +20 -13
- package/dist_ts/skr.classes.account.d.ts +8 -3
- package/dist_ts/skr.classes.account.js +358 -285
- package/dist_ts/skr.classes.chartofaccounts.d.ts +1 -1
- package/dist_ts/skr.classes.chartofaccounts.js +13 -6
- package/dist_ts/skr.classes.journalentry.d.ts +9 -4
- package/dist_ts/skr.classes.journalentry.js +424 -355
- package/dist_ts/skr.classes.ledger.js +3 -1
- package/dist_ts/skr.classes.reports.js +4 -1
- package/dist_ts/skr.classes.transaction.d.ts +9 -4
- package/dist_ts/skr.classes.transaction.js +315 -244
- package/dist_ts/skr.export.accounts.js +3 -2
- package/dist_ts/skr.export.balances.js +4 -2
- package/dist_ts/skr.export.js +6 -3
- package/dist_ts/skr.export.ledger.js +4 -3
- package/dist_ts/skr.export.pdf.js +6 -3
- package/dist_ts/skr.invoice.adapter.d.ts +2 -0
- package/dist_ts/skr.invoice.adapter.js +22 -10
- package/dist_ts/skr.invoice.booking.js +8 -3
- package/dist_ts/skr.invoice.mapper.js +84 -82
- package/dist_ts/skr.invoice.storage.js +10 -5
- package/dist_ts/skr.security.js +24 -21
- package/license.md +21 -0
- package/package.json +31 -23
- package/readme.md +215 -632
- package/readme.plan.md +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +43 -15
- package/ts/plugins.ts +52 -15
- package/ts/skr.api.ts +9 -5
- package/ts/skr.classes.account.ts +39 -21
- package/ts/skr.classes.chartofaccounts.ts +8 -3
- package/ts/skr.classes.journalentry.ts +40 -22
- package/ts/skr.classes.reports.ts +22 -2
- package/ts/skr.classes.transaction.ts +40 -22
- package/ts/skr.export.pdf.ts +4 -3
- package/ts/skr.invoice.adapter.ts +31 -11
- package/ts/skr.invoice.booking.ts +5 -3
- package/ts/skr.invoice.storage.ts +3 -2
- package/ts/skr.security.ts +23 -22
|
@@ -1,263 +1,334 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
6
27
|
};
|
|
7
|
-
var
|
|
8
|
-
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
9
34
|
};
|
|
10
|
-
var Transaction_1;
|
|
11
35
|
import * as plugins from './plugins.js';
|
|
12
36
|
import { getDbSync } from './skr.database.js';
|
|
13
37
|
import { Account } from './skr.classes.account.js';
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
38
|
+
const SmartDataDbDoc = plugins.smartdata.SmartDataDbDoc;
|
|
39
|
+
const Collection = plugins.smartdata.Collection;
|
|
40
|
+
const svDb = plugins.smartdata.svDb;
|
|
41
|
+
const unI = plugins.smartdata.unI;
|
|
42
|
+
const index = plugins.smartdata.index;
|
|
43
|
+
const searchable = plugins.smartdata.searchable;
|
|
44
|
+
let Transaction = (() => {
|
|
45
|
+
let _classDecorators = [Collection(() => getDbSync())];
|
|
46
|
+
let _classDescriptor;
|
|
47
|
+
let _classExtraInitializers = [];
|
|
48
|
+
let _classThis;
|
|
49
|
+
let _classSuper = SmartDataDbDoc;
|
|
50
|
+
let _id_decorators;
|
|
51
|
+
let _id_initializers = [];
|
|
52
|
+
let _id_extraInitializers = [];
|
|
53
|
+
let _transactionNumber_decorators;
|
|
54
|
+
let _transactionNumber_initializers = [];
|
|
55
|
+
let _transactionNumber_extraInitializers = [];
|
|
56
|
+
let _date_decorators;
|
|
57
|
+
let _date_initializers = [];
|
|
58
|
+
let _date_extraInitializers = [];
|
|
59
|
+
let _debitAccount_decorators;
|
|
60
|
+
let _debitAccount_initializers = [];
|
|
61
|
+
let _debitAccount_extraInitializers = [];
|
|
62
|
+
let _creditAccount_decorators;
|
|
63
|
+
let _creditAccount_initializers = [];
|
|
64
|
+
let _creditAccount_extraInitializers = [];
|
|
65
|
+
let _amount_decorators;
|
|
66
|
+
let _amount_initializers = [];
|
|
67
|
+
let _amount_extraInitializers = [];
|
|
68
|
+
let _description_decorators;
|
|
69
|
+
let _description_initializers = [];
|
|
70
|
+
let _description_extraInitializers = [];
|
|
71
|
+
let _reference_decorators;
|
|
72
|
+
let _reference_initializers = [];
|
|
73
|
+
let _reference_extraInitializers = [];
|
|
74
|
+
let _skrType_decorators;
|
|
75
|
+
let _skrType_initializers = [];
|
|
76
|
+
let _skrType_extraInitializers = [];
|
|
77
|
+
let _vatAmount_decorators;
|
|
78
|
+
let _vatAmount_initializers = [];
|
|
79
|
+
let _vatAmount_extraInitializers = [];
|
|
80
|
+
let _costCenter_decorators;
|
|
81
|
+
let _costCenter_initializers = [];
|
|
82
|
+
let _costCenter_extraInitializers = [];
|
|
83
|
+
let _status_decorators;
|
|
84
|
+
let _status_initializers = [];
|
|
85
|
+
let _status_extraInitializers = [];
|
|
86
|
+
let _reversalOf_decorators;
|
|
87
|
+
let _reversalOf_initializers = [];
|
|
88
|
+
let _reversalOf_extraInitializers = [];
|
|
89
|
+
let _reversedBy_decorators;
|
|
90
|
+
let _reversedBy_initializers = [];
|
|
91
|
+
let _reversedBy_extraInitializers = [];
|
|
92
|
+
let _period_decorators;
|
|
93
|
+
let _period_initializers = [];
|
|
94
|
+
let _period_extraInitializers = [];
|
|
95
|
+
let _fiscalYear_decorators;
|
|
96
|
+
let _fiscalYear_initializers = [];
|
|
97
|
+
let _fiscalYear_extraInitializers = [];
|
|
98
|
+
let _createdAt_decorators;
|
|
99
|
+
let _createdAt_initializers = [];
|
|
100
|
+
let _createdAt_extraInitializers = [];
|
|
101
|
+
let _postedAt_decorators;
|
|
102
|
+
let _postedAt_initializers = [];
|
|
103
|
+
let _postedAt_extraInitializers = [];
|
|
104
|
+
let _createdBy_decorators;
|
|
105
|
+
let _createdBy_initializers = [];
|
|
106
|
+
let _createdBy_extraInitializers = [];
|
|
107
|
+
var Transaction = class extends _classSuper {
|
|
108
|
+
static { _classThis = this; }
|
|
109
|
+
static {
|
|
110
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
111
|
+
_id_decorators = [unI()];
|
|
112
|
+
_transactionNumber_decorators = [svDb(), index()];
|
|
113
|
+
_date_decorators = [svDb(), index()];
|
|
114
|
+
_debitAccount_decorators = [svDb(), index()];
|
|
115
|
+
_creditAccount_decorators = [svDb(), index()];
|
|
116
|
+
_amount_decorators = [svDb()];
|
|
117
|
+
_description_decorators = [svDb(), searchable()];
|
|
118
|
+
_reference_decorators = [svDb(), index()];
|
|
119
|
+
_skrType_decorators = [svDb(), index()];
|
|
120
|
+
_vatAmount_decorators = [svDb()];
|
|
121
|
+
_costCenter_decorators = [svDb()];
|
|
122
|
+
_status_decorators = [svDb(), index()];
|
|
123
|
+
_reversalOf_decorators = [svDb()];
|
|
124
|
+
_reversedBy_decorators = [svDb()];
|
|
125
|
+
_period_decorators = [svDb(), index()];
|
|
126
|
+
_fiscalYear_decorators = [svDb()];
|
|
127
|
+
_createdAt_decorators = [svDb()];
|
|
128
|
+
_postedAt_decorators = [svDb()];
|
|
129
|
+
_createdBy_decorators = [svDb()];
|
|
130
|
+
__esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
131
|
+
__esDecorate(null, null, _transactionNumber_decorators, { kind: "field", name: "transactionNumber", static: false, private: false, access: { has: obj => "transactionNumber" in obj, get: obj => obj.transactionNumber, set: (obj, value) => { obj.transactionNumber = value; } }, metadata: _metadata }, _transactionNumber_initializers, _transactionNumber_extraInitializers);
|
|
132
|
+
__esDecorate(null, null, _date_decorators, { kind: "field", name: "date", static: false, private: false, access: { has: obj => "date" in obj, get: obj => obj.date, set: (obj, value) => { obj.date = value; } }, metadata: _metadata }, _date_initializers, _date_extraInitializers);
|
|
133
|
+
__esDecorate(null, null, _debitAccount_decorators, { kind: "field", name: "debitAccount", static: false, private: false, access: { has: obj => "debitAccount" in obj, get: obj => obj.debitAccount, set: (obj, value) => { obj.debitAccount = value; } }, metadata: _metadata }, _debitAccount_initializers, _debitAccount_extraInitializers);
|
|
134
|
+
__esDecorate(null, null, _creditAccount_decorators, { kind: "field", name: "creditAccount", static: false, private: false, access: { has: obj => "creditAccount" in obj, get: obj => obj.creditAccount, set: (obj, value) => { obj.creditAccount = value; } }, metadata: _metadata }, _creditAccount_initializers, _creditAccount_extraInitializers);
|
|
135
|
+
__esDecorate(null, null, _amount_decorators, { kind: "field", name: "amount", static: false, private: false, access: { has: obj => "amount" in obj, get: obj => obj.amount, set: (obj, value) => { obj.amount = value; } }, metadata: _metadata }, _amount_initializers, _amount_extraInitializers);
|
|
136
|
+
__esDecorate(null, null, _description_decorators, { kind: "field", name: "description", static: false, private: false, access: { has: obj => "description" in obj, get: obj => obj.description, set: (obj, value) => { obj.description = value; } }, metadata: _metadata }, _description_initializers, _description_extraInitializers);
|
|
137
|
+
__esDecorate(null, null, _reference_decorators, { kind: "field", name: "reference", static: false, private: false, access: { has: obj => "reference" in obj, get: obj => obj.reference, set: (obj, value) => { obj.reference = value; } }, metadata: _metadata }, _reference_initializers, _reference_extraInitializers);
|
|
138
|
+
__esDecorate(null, null, _skrType_decorators, { kind: "field", name: "skrType", static: false, private: false, access: { has: obj => "skrType" in obj, get: obj => obj.skrType, set: (obj, value) => { obj.skrType = value; } }, metadata: _metadata }, _skrType_initializers, _skrType_extraInitializers);
|
|
139
|
+
__esDecorate(null, null, _vatAmount_decorators, { kind: "field", name: "vatAmount", static: false, private: false, access: { has: obj => "vatAmount" in obj, get: obj => obj.vatAmount, set: (obj, value) => { obj.vatAmount = value; } }, metadata: _metadata }, _vatAmount_initializers, _vatAmount_extraInitializers);
|
|
140
|
+
__esDecorate(null, null, _costCenter_decorators, { kind: "field", name: "costCenter", static: false, private: false, access: { has: obj => "costCenter" in obj, get: obj => obj.costCenter, set: (obj, value) => { obj.costCenter = value; } }, metadata: _metadata }, _costCenter_initializers, _costCenter_extraInitializers);
|
|
141
|
+
__esDecorate(null, null, _status_decorators, { kind: "field", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status, set: (obj, value) => { obj.status = value; } }, metadata: _metadata }, _status_initializers, _status_extraInitializers);
|
|
142
|
+
__esDecorate(null, null, _reversalOf_decorators, { kind: "field", name: "reversalOf", static: false, private: false, access: { has: obj => "reversalOf" in obj, get: obj => obj.reversalOf, set: (obj, value) => { obj.reversalOf = value; } }, metadata: _metadata }, _reversalOf_initializers, _reversalOf_extraInitializers);
|
|
143
|
+
__esDecorate(null, null, _reversedBy_decorators, { kind: "field", name: "reversedBy", static: false, private: false, access: { has: obj => "reversedBy" in obj, get: obj => obj.reversedBy, set: (obj, value) => { obj.reversedBy = value; } }, metadata: _metadata }, _reversedBy_initializers, _reversedBy_extraInitializers);
|
|
144
|
+
__esDecorate(null, null, _period_decorators, { kind: "field", name: "period", static: false, private: false, access: { has: obj => "period" in obj, get: obj => obj.period, set: (obj, value) => { obj.period = value; } }, metadata: _metadata }, _period_initializers, _period_extraInitializers);
|
|
145
|
+
__esDecorate(null, null, _fiscalYear_decorators, { kind: "field", name: "fiscalYear", static: false, private: false, access: { has: obj => "fiscalYear" in obj, get: obj => obj.fiscalYear, set: (obj, value) => { obj.fiscalYear = value; } }, metadata: _metadata }, _fiscalYear_initializers, _fiscalYear_extraInitializers);
|
|
146
|
+
__esDecorate(null, null, _createdAt_decorators, { kind: "field", name: "createdAt", static: false, private: false, access: { has: obj => "createdAt" in obj, get: obj => obj.createdAt, set: (obj, value) => { obj.createdAt = value; } }, metadata: _metadata }, _createdAt_initializers, _createdAt_extraInitializers);
|
|
147
|
+
__esDecorate(null, null, _postedAt_decorators, { kind: "field", name: "postedAt", static: false, private: false, access: { has: obj => "postedAt" in obj, get: obj => obj.postedAt, set: (obj, value) => { obj.postedAt = value; } }, metadata: _metadata }, _postedAt_initializers, _postedAt_extraInitializers);
|
|
148
|
+
__esDecorate(null, null, _createdBy_decorators, { kind: "field", name: "createdBy", static: false, private: false, access: { has: obj => "createdBy" in obj, get: obj => obj.createdBy, set: (obj, value) => { obj.createdBy = value; } }, metadata: _metadata }, _createdBy_initializers, _createdBy_extraInitializers);
|
|
149
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
150
|
+
Transaction = _classThis = _classDescriptor.value;
|
|
151
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
152
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
102
153
|
}
|
|
103
|
-
|
|
104
|
-
|
|
154
|
+
id = __runInitializers(this, _id_initializers, void 0);
|
|
155
|
+
transactionNumber = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _transactionNumber_initializers, void 0));
|
|
156
|
+
date = (__runInitializers(this, _transactionNumber_extraInitializers), __runInitializers(this, _date_initializers, void 0));
|
|
157
|
+
debitAccount = (__runInitializers(this, _date_extraInitializers), __runInitializers(this, _debitAccount_initializers, void 0));
|
|
158
|
+
creditAccount = (__runInitializers(this, _debitAccount_extraInitializers), __runInitializers(this, _creditAccount_initializers, void 0));
|
|
159
|
+
amount = (__runInitializers(this, _creditAccount_extraInitializers), __runInitializers(this, _amount_initializers, void 0));
|
|
160
|
+
description = (__runInitializers(this, _amount_extraInitializers), __runInitializers(this, _description_initializers, void 0));
|
|
161
|
+
reference = (__runInitializers(this, _description_extraInitializers), __runInitializers(this, _reference_initializers, void 0));
|
|
162
|
+
skrType = (__runInitializers(this, _reference_extraInitializers), __runInitializers(this, _skrType_initializers, void 0));
|
|
163
|
+
vatAmount = (__runInitializers(this, _skrType_extraInitializers), __runInitializers(this, _vatAmount_initializers, void 0));
|
|
164
|
+
costCenter = (__runInitializers(this, _vatAmount_extraInitializers), __runInitializers(this, _costCenter_initializers, void 0));
|
|
165
|
+
status = (__runInitializers(this, _costCenter_extraInitializers), __runInitializers(this, _status_initializers, void 0));
|
|
166
|
+
reversalOf = (__runInitializers(this, _status_extraInitializers), __runInitializers(this, _reversalOf_initializers, void 0));
|
|
167
|
+
reversedBy = (__runInitializers(this, _reversalOf_extraInitializers), __runInitializers(this, _reversedBy_initializers, void 0));
|
|
168
|
+
period = (__runInitializers(this, _reversedBy_extraInitializers), __runInitializers(this, _period_initializers, void 0)); // Format: YYYY-MM
|
|
169
|
+
fiscalYear = (__runInitializers(this, _period_extraInitializers), __runInitializers(this, _fiscalYear_initializers, void 0));
|
|
170
|
+
createdAt = (__runInitializers(this, _fiscalYear_extraInitializers), __runInitializers(this, _createdAt_initializers, void 0));
|
|
171
|
+
postedAt = (__runInitializers(this, _createdAt_extraInitializers), __runInitializers(this, _postedAt_initializers, void 0));
|
|
172
|
+
createdBy = (__runInitializers(this, _postedAt_extraInitializers), __runInitializers(this, _createdBy_initializers, void 0));
|
|
173
|
+
constructor(data) {
|
|
174
|
+
super();
|
|
175
|
+
__runInitializers(this, _createdBy_extraInitializers);
|
|
176
|
+
if (data) {
|
|
177
|
+
this.id = plugins.smartunique.shortId();
|
|
178
|
+
this.transactionNumber = this.generateTransactionNumber();
|
|
179
|
+
this.date = data.date || new Date();
|
|
180
|
+
this.debitAccount = data.debitAccount || '';
|
|
181
|
+
this.creditAccount = data.creditAccount || '';
|
|
182
|
+
this.amount = data.amount || 0;
|
|
183
|
+
this.description = data.description || '';
|
|
184
|
+
this.reference = data.reference || '';
|
|
185
|
+
this.skrType = data.skrType || 'SKR03';
|
|
186
|
+
this.vatAmount = data.vatAmount || 0;
|
|
187
|
+
this.costCenter = data.costCenter || '';
|
|
188
|
+
this.status = 'pending';
|
|
189
|
+
this.reversalOf = '';
|
|
190
|
+
this.reversedBy = '';
|
|
191
|
+
// Set period and fiscal year
|
|
192
|
+
const transDate = new Date(this.date);
|
|
193
|
+
this.period = `${transDate.getFullYear()}-${String(transDate.getMonth() + 1).padStart(2, '0')}`;
|
|
194
|
+
this.fiscalYear = transDate.getFullYear();
|
|
195
|
+
this.createdAt = new Date();
|
|
196
|
+
this.postedAt = null;
|
|
197
|
+
this.createdBy = 'system';
|
|
198
|
+
}
|
|
105
199
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
200
|
+
generateTransactionNumber() {
|
|
201
|
+
const timestamp = Date.now();
|
|
202
|
+
const random = Math.floor(Math.random() * 1000);
|
|
203
|
+
return `TXN-${timestamp}-${random}`;
|
|
109
204
|
}
|
|
110
|
-
|
|
111
|
-
|
|
205
|
+
static async createTransaction(data) {
|
|
206
|
+
const transaction = new Transaction(data);
|
|
207
|
+
await transaction.validateAndPost();
|
|
208
|
+
return transaction;
|
|
112
209
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
210
|
+
static async getTransactionById(id) {
|
|
211
|
+
const transaction = await Transaction.getInstance({ id });
|
|
212
|
+
return transaction;
|
|
116
213
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
214
|
+
static async getTransactionsByAccount(accountNumber, skrType) {
|
|
215
|
+
const transactionsDebit = await Transaction.getInstances({
|
|
216
|
+
debitAccount: accountNumber,
|
|
217
|
+
skrType,
|
|
218
|
+
status: 'posted',
|
|
219
|
+
});
|
|
220
|
+
const transactionsCredit = await Transaction.getInstances({
|
|
221
|
+
creditAccount: accountNumber,
|
|
222
|
+
skrType,
|
|
223
|
+
status: 'posted',
|
|
224
|
+
});
|
|
225
|
+
const transactions = [...transactionsDebit, ...transactionsCredit];
|
|
226
|
+
return transactions;
|
|
120
227
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
228
|
+
static async getTransactionsByPeriod(period, skrType) {
|
|
229
|
+
const transactions = await Transaction.getInstances({
|
|
230
|
+
period,
|
|
231
|
+
skrType,
|
|
232
|
+
status: 'posted',
|
|
233
|
+
});
|
|
234
|
+
return transactions;
|
|
127
235
|
}
|
|
128
|
-
|
|
129
|
-
await
|
|
236
|
+
static async getTransactionsByDateRange(dateFrom, dateTo, skrType) {
|
|
237
|
+
const allTransactions = await Transaction.getInstances({
|
|
238
|
+
skrType,
|
|
239
|
+
status: 'posted',
|
|
240
|
+
});
|
|
241
|
+
const transactions = allTransactions.filter((t) => t.date >= dateFrom && t.date <= dateTo);
|
|
242
|
+
return transactions;
|
|
130
243
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
244
|
+
async validateAndPost() {
|
|
245
|
+
// Validate transaction
|
|
246
|
+
await this.validateTransaction();
|
|
247
|
+
// Update account balances
|
|
248
|
+
await this.updateAccountBalances();
|
|
249
|
+
// Mark as posted
|
|
250
|
+
this.status = 'posted';
|
|
251
|
+
this.postedAt = new Date();
|
|
252
|
+
await this.save();
|
|
135
253
|
}
|
|
136
|
-
|
|
137
|
-
|
|
254
|
+
async validateTransaction() {
|
|
255
|
+
// Check if accounts exist
|
|
256
|
+
const debitAccount = await Account.getAccountByNumber(this.debitAccount, this.skrType);
|
|
257
|
+
const creditAccount = await Account.getAccountByNumber(this.creditAccount, this.skrType);
|
|
258
|
+
if (!debitAccount) {
|
|
259
|
+
throw new Error(`Debit account ${this.debitAccount} not found for ${this.skrType}`);
|
|
260
|
+
}
|
|
261
|
+
if (!creditAccount) {
|
|
262
|
+
throw new Error(`Credit account ${this.creditAccount} not found for ${this.skrType}`);
|
|
263
|
+
}
|
|
264
|
+
// Check if accounts are active
|
|
265
|
+
if (!debitAccount.isActive) {
|
|
266
|
+
throw new Error(`Debit account ${this.debitAccount} is not active`);
|
|
267
|
+
}
|
|
268
|
+
if (!creditAccount.isActive) {
|
|
269
|
+
throw new Error(`Credit account ${this.creditAccount} is not active`);
|
|
270
|
+
}
|
|
271
|
+
// Validate amount
|
|
272
|
+
if (this.amount <= 0) {
|
|
273
|
+
throw new Error('Transaction amount must be greater than zero');
|
|
274
|
+
}
|
|
275
|
+
// Check for same account
|
|
276
|
+
if (this.debitAccount === this.creditAccount) {
|
|
277
|
+
throw new Error('Debit and credit accounts cannot be the same');
|
|
278
|
+
}
|
|
138
279
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
debitAccount
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
vatAmount: this.vatAmount,
|
|
149
|
-
costCenter: this.costCenter,
|
|
150
|
-
};
|
|
151
|
-
const reversalTransaction = new Transaction_1(reversalData);
|
|
152
|
-
reversalTransaction.reversalOf = this.id;
|
|
153
|
-
await reversalTransaction.validateAndPost();
|
|
154
|
-
// Update original transaction
|
|
155
|
-
this.reversedBy = reversalTransaction.id;
|
|
156
|
-
this.status = 'reversed';
|
|
157
|
-
await this.save();
|
|
158
|
-
return reversalTransaction;
|
|
159
|
-
}
|
|
160
|
-
async beforeSave() {
|
|
161
|
-
// Additional validation before saving
|
|
162
|
-
if (!this.debitAccount || !this.creditAccount) {
|
|
163
|
-
throw new Error('Both debit and credit accounts are required');
|
|
280
|
+
async updateAccountBalances() {
|
|
281
|
+
const debitAccount = await Account.getAccountByNumber(this.debitAccount, this.skrType);
|
|
282
|
+
const creditAccount = await Account.getAccountByNumber(this.creditAccount, this.skrType);
|
|
283
|
+
if (debitAccount) {
|
|
284
|
+
await debitAccount.updateBalance(this.amount, 0);
|
|
285
|
+
}
|
|
286
|
+
if (creditAccount) {
|
|
287
|
+
await creditAccount.updateBalance(0, this.amount);
|
|
288
|
+
}
|
|
164
289
|
}
|
|
165
|
-
|
|
166
|
-
|
|
290
|
+
async reverseTransaction() {
|
|
291
|
+
if (this.status !== 'posted') {
|
|
292
|
+
throw new Error('Can only reverse posted transactions');
|
|
293
|
+
}
|
|
294
|
+
if (this.reversedBy) {
|
|
295
|
+
throw new Error('Transaction has already been reversed');
|
|
296
|
+
}
|
|
297
|
+
// Create reversal transaction
|
|
298
|
+
const reversalData = {
|
|
299
|
+
date: new Date(),
|
|
300
|
+
debitAccount: this.creditAccount, // Swap accounts
|
|
301
|
+
creditAccount: this.debitAccount, // Swap accounts
|
|
302
|
+
amount: this.amount,
|
|
303
|
+
description: `Reversal of ${this.transactionNumber}: ${this.description}`,
|
|
304
|
+
reference: `REV-${this.transactionNumber}`,
|
|
305
|
+
skrType: this.skrType,
|
|
306
|
+
vatAmount: this.vatAmount,
|
|
307
|
+
costCenter: this.costCenter,
|
|
308
|
+
};
|
|
309
|
+
const reversalTransaction = new Transaction(reversalData);
|
|
310
|
+
reversalTransaction.reversalOf = this.id;
|
|
311
|
+
await reversalTransaction.validateAndPost();
|
|
312
|
+
// Update original transaction
|
|
313
|
+
this.reversedBy = reversalTransaction.id;
|
|
314
|
+
this.status = 'reversed';
|
|
315
|
+
await this.save();
|
|
316
|
+
return reversalTransaction;
|
|
167
317
|
}
|
|
168
|
-
|
|
169
|
-
|
|
318
|
+
async beforeSave() {
|
|
319
|
+
// Additional validation before saving
|
|
320
|
+
if (!this.debitAccount || !this.creditAccount) {
|
|
321
|
+
throw new Error('Both debit and credit accounts are required');
|
|
322
|
+
}
|
|
323
|
+
if (!this.date) {
|
|
324
|
+
throw new Error('Transaction date is required');
|
|
325
|
+
}
|
|
326
|
+
if (!this.description) {
|
|
327
|
+
throw new Error('Transaction description is required');
|
|
328
|
+
}
|
|
170
329
|
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
unI(),
|
|
175
|
-
__metadata("design:type", String)
|
|
176
|
-
], Transaction.prototype, "id", void 0);
|
|
177
|
-
__decorate([
|
|
178
|
-
svDb(),
|
|
179
|
-
index(),
|
|
180
|
-
__metadata("design:type", String)
|
|
181
|
-
], Transaction.prototype, "transactionNumber", void 0);
|
|
182
|
-
__decorate([
|
|
183
|
-
svDb(),
|
|
184
|
-
index(),
|
|
185
|
-
__metadata("design:type", Date)
|
|
186
|
-
], Transaction.prototype, "date", void 0);
|
|
187
|
-
__decorate([
|
|
188
|
-
svDb(),
|
|
189
|
-
index(),
|
|
190
|
-
__metadata("design:type", String)
|
|
191
|
-
], Transaction.prototype, "debitAccount", void 0);
|
|
192
|
-
__decorate([
|
|
193
|
-
svDb(),
|
|
194
|
-
index(),
|
|
195
|
-
__metadata("design:type", String)
|
|
196
|
-
], Transaction.prototype, "creditAccount", void 0);
|
|
197
|
-
__decorate([
|
|
198
|
-
svDb(),
|
|
199
|
-
__metadata("design:type", Number)
|
|
200
|
-
], Transaction.prototype, "amount", void 0);
|
|
201
|
-
__decorate([
|
|
202
|
-
svDb(),
|
|
203
|
-
searchable(),
|
|
204
|
-
__metadata("design:type", String)
|
|
205
|
-
], Transaction.prototype, "description", void 0);
|
|
206
|
-
__decorate([
|
|
207
|
-
svDb(),
|
|
208
|
-
index(),
|
|
209
|
-
__metadata("design:type", String)
|
|
210
|
-
], Transaction.prototype, "reference", void 0);
|
|
211
|
-
__decorate([
|
|
212
|
-
svDb(),
|
|
213
|
-
index(),
|
|
214
|
-
__metadata("design:type", String)
|
|
215
|
-
], Transaction.prototype, "skrType", void 0);
|
|
216
|
-
__decorate([
|
|
217
|
-
svDb(),
|
|
218
|
-
__metadata("design:type", Number)
|
|
219
|
-
], Transaction.prototype, "vatAmount", void 0);
|
|
220
|
-
__decorate([
|
|
221
|
-
svDb(),
|
|
222
|
-
__metadata("design:type", String)
|
|
223
|
-
], Transaction.prototype, "costCenter", void 0);
|
|
224
|
-
__decorate([
|
|
225
|
-
svDb(),
|
|
226
|
-
index(),
|
|
227
|
-
__metadata("design:type", String)
|
|
228
|
-
], Transaction.prototype, "status", void 0);
|
|
229
|
-
__decorate([
|
|
230
|
-
svDb(),
|
|
231
|
-
__metadata("design:type", String)
|
|
232
|
-
], Transaction.prototype, "reversalOf", void 0);
|
|
233
|
-
__decorate([
|
|
234
|
-
svDb(),
|
|
235
|
-
__metadata("design:type", String)
|
|
236
|
-
], Transaction.prototype, "reversedBy", void 0);
|
|
237
|
-
__decorate([
|
|
238
|
-
svDb(),
|
|
239
|
-
index(),
|
|
240
|
-
__metadata("design:type", String)
|
|
241
|
-
], Transaction.prototype, "period", void 0);
|
|
242
|
-
__decorate([
|
|
243
|
-
svDb(),
|
|
244
|
-
__metadata("design:type", Number)
|
|
245
|
-
], Transaction.prototype, "fiscalYear", void 0);
|
|
246
|
-
__decorate([
|
|
247
|
-
svDb(),
|
|
248
|
-
__metadata("design:type", Date)
|
|
249
|
-
], Transaction.prototype, "createdAt", void 0);
|
|
250
|
-
__decorate([
|
|
251
|
-
svDb(),
|
|
252
|
-
__metadata("design:type", Date)
|
|
253
|
-
], Transaction.prototype, "postedAt", void 0);
|
|
254
|
-
__decorate([
|
|
255
|
-
svDb(),
|
|
256
|
-
__metadata("design:type", String)
|
|
257
|
-
], Transaction.prototype, "createdBy", void 0);
|
|
258
|
-
Transaction = Transaction_1 = __decorate([
|
|
259
|
-
plugins.smartdata.Collection(() => getDbSync()),
|
|
260
|
-
__metadata("design:paramtypes", [Object])
|
|
261
|
-
], Transaction);
|
|
330
|
+
};
|
|
331
|
+
return Transaction = _classThis;
|
|
332
|
+
})();
|
|
262
333
|
export { Transaction };
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tyLmNsYXNzZXMudHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9za3IuY2xhc3Nlcy50cmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU9uRCxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFHcEUsSUFBTSxXQUFXLG1CQUFqQixNQUFNLFdBQVksU0FBUSxjQUF3QztJQW1FdkUsWUFBWSxJQUFnQztRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJ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
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tyLmNsYXNzZXMudHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9za3IuY2xhc3Nlcy50cmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQW9CbkQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFzRCxDQUFDO0FBQ2hHLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBaUIsQ0FBQztBQUN2RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQVcsQ0FBQztBQUMzQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQVUsQ0FBQztBQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQVksQ0FBQztBQUM3QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQWlCLENBQUM7SUFHMUMsV0FBVzs0QkFEdkIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDOzs7O3NCQUNHLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQXRCLFNBQVEsV0FBYzs7Ozs4QkFDNUMsR0FBRyxFQUFFOzZDQUdMLElBQUksRUFBRSxFQUNOLEtBQUssRUFBRTtnQ0FHUCxJQUFJLEVBQUUsRUFDTixLQUFLLEVBQUU7d0NBR1AsSUFBSSxFQUFFLEVBQ04sS0FBSyxFQUFFO3lDQUdQLElBQUksRUFBRSxFQUNOLEtBQUssRUFBRTtrQ0FHUCxJQUFJ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
|