@stamhoofd/models 2.61.1 → 2.63.0
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/dist/src/helpers/WebshopCounter.d.ts +4 -2
- package/dist/src/helpers/WebshopCounter.d.ts.map +1 -1
- package/dist/src/helpers/WebshopCounter.js +18 -6
- package/dist/src/helpers/WebshopCounter.js.map +1 -1
- package/dist/src/migrations/1733909398-balance-items-due-at.sql +2 -0
- package/dist/src/migrations/1733909399-recalculate-at.sql +3 -0
- package/dist/src/migrations/1733994454-balance-item-price-open.sql +2 -0
- package/dist/src/migrations/1734084689-payment-type.sql +2 -0
- package/dist/src/migrations/1734084690-move-payment-column-order.sql +2 -0
- package/dist/src/migrations/1734084691-fill-payment-type-refunds.sql +1 -0
- package/dist/src/migrations/1734084692-fill-payment-type-reallocations.sql +15 -0
- package/dist/src/models/BalanceItem.d.ts +17 -4
- package/dist/src/models/BalanceItem.d.ts.map +1 -1
- package/dist/src/models/BalanceItem.js +59 -59
- package/dist/src/models/BalanceItem.js.map +1 -1
- package/dist/src/models/CachedBalance.d.ts +7 -0
- package/dist/src/models/CachedBalance.d.ts.map +1 -1
- package/dist/src/models/CachedBalance.js +70 -7
- package/dist/src/models/CachedBalance.js.map +1 -1
- package/dist/src/models/DocumentTemplate.js +1 -1
- package/dist/src/models/DocumentTemplate.js.map +1 -1
- package/dist/src/models/Order.d.ts +1 -0
- package/dist/src/models/Order.d.ts.map +1 -1
- package/dist/src/models/Order.js +7 -1
- package/dist/src/models/Order.js.map +1 -1
- package/dist/src/models/Payment.d.ts +11 -1
- package/dist/src/models/Payment.d.ts.map +1 -1
- package/dist/src/models/Payment.js +13 -0
- package/dist/src/models/Payment.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/helpers/WebshopCounter.ts +22 -6
- package/src/migrations/1733909398-balance-items-due-at.sql +2 -0
- package/src/migrations/1733909399-recalculate-at.sql +3 -0
- package/src/migrations/1733994454-balance-item-price-open.sql +2 -0
- package/src/migrations/1734084689-payment-type.sql +2 -0
- package/src/migrations/1734084690-move-payment-column-order.sql +2 -0
- package/src/migrations/1734084691-fill-payment-type-refunds.sql +1 -0
- package/src/migrations/1734084692-fill-payment-type-reallocations.sql +15 -0
- package/src/models/BalanceItem.ts +61 -70
- package/src/models/CachedBalance.ts +105 -30
- package/src/models/DocumentTemplate.ts +1 -1
- package/src/models/Order.ts +8 -1
- package/src/models/Payment.ts +13 -1
- package/dist/src/helpers/WebshopCounter.test.d.ts +0 -2
- package/dist/src/helpers/WebshopCounter.test.d.ts.map +0 -1
- package/dist/src/helpers/WebshopCounter.test.js +0 -17
- package/dist/src/helpers/WebshopCounter.test.js.map +0 -1
- package/src/helpers/WebshopCounter.test.ts +0 -16
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Webshop } from '../models';
|
|
2
2
|
export declare class WebshopCounter {
|
|
3
3
|
static numberCache: Map<string, number>;
|
|
4
|
-
static getNextNumber(
|
|
4
|
+
static getNextNumber(webshop: Webshop): Promise<number>;
|
|
5
|
+
static resetNumbers(webshopId: string): Promise<void>;
|
|
6
|
+
static clearAll(): void;
|
|
5
7
|
}
|
|
6
8
|
//# sourceMappingURL=WebshopCounter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebshopCounter.d.ts","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebshopCounter.d.ts","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAc;IACvB,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;WAEvC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;WA+BhD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,MAAM,CAAC,QAAQ;CAGlB"}
|
|
@@ -6,10 +6,11 @@ const queues_1 = require("@stamhoofd/queues");
|
|
|
6
6
|
const structures_1 = require("@stamhoofd/structures");
|
|
7
7
|
class WebshopCounter {
|
|
8
8
|
static numberCache = new Map();
|
|
9
|
-
static async getNextNumber(
|
|
10
|
-
if (numberingType == structures_1.WebshopNumberingType.Random) {
|
|
11
|
-
return Math.floor(Math.random() * 1000000000);
|
|
9
|
+
static async getNextNumber(webshop) {
|
|
10
|
+
if (webshop.privateMeta.numberingType == structures_1.WebshopNumberingType.Random) {
|
|
11
|
+
return Math.floor(Math.random() * 1000000000) + 100000000;
|
|
12
12
|
}
|
|
13
|
+
const webshopId = webshop.id;
|
|
13
14
|
// Prevent race conditions: create a queue
|
|
14
15
|
// The queue can only run one at a time for the same webshop (so multiple webshops at the same time are allowed)
|
|
15
16
|
return await queues_1.QueueHandler.schedule('webshop/numbers-' + webshopId, async () => {
|
|
@@ -18,19 +19,30 @@ class WebshopCounter {
|
|
|
18
19
|
this.numberCache.set(webshopId, nextNumber + 1);
|
|
19
20
|
return nextNumber;
|
|
20
21
|
}
|
|
21
|
-
const [rows] = await simple_database_1.Database.select(`select max(number) as previousNumber from webshop_orders where webshopId =
|
|
22
|
+
const [rows] = await simple_database_1.Database.select(`select max(number) as previousNumber from webshop_orders where webshopId = ? AND number < 100000000`, [webshopId]);
|
|
22
23
|
let nextNumber;
|
|
23
24
|
if (rows.length == 0) {
|
|
24
|
-
nextNumber = 1;
|
|
25
|
+
nextNumber = webshop.privateMeta.startNumber ?? 1;
|
|
25
26
|
}
|
|
26
27
|
else {
|
|
27
28
|
const previousNumber = rows[0]['']['previousNumber'];
|
|
28
|
-
nextNumber = (previousNumber ??
|
|
29
|
+
nextNumber = (previousNumber ?? ((webshop.privateMeta.startNumber ?? 1) - 1)) + 1;
|
|
29
30
|
}
|
|
30
31
|
this.numberCache.set(webshopId, nextNumber + 1);
|
|
31
32
|
return nextNumber;
|
|
32
33
|
});
|
|
33
34
|
}
|
|
35
|
+
static async resetNumbers(webshopId) {
|
|
36
|
+
// Prevent race conditions: create a queue
|
|
37
|
+
// The queue can only run one at a time for the same webshop (so multiple webshops at the same time are allowed)
|
|
38
|
+
return await queues_1.QueueHandler.schedule('webshop/numbers-' + webshopId, async () => {
|
|
39
|
+
this.numberCache.delete(webshopId);
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
static clearAll() {
|
|
44
|
+
this.numberCache.clear();
|
|
45
|
+
}
|
|
34
46
|
}
|
|
35
47
|
exports.WebshopCounter = WebshopCounter;
|
|
36
48
|
//# sourceMappingURL=WebshopCounter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebshopCounter.js","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,8CAAiD;AACjD,sDAA6D;
|
|
1
|
+
{"version":3,"file":"WebshopCounter.js","sourceRoot":"","sources":["../../../src/helpers/WebshopCounter.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,8CAAiD;AACjD,sDAA6D;AAI7D,MAAa,cAAc;IACvB,MAAM,CAAC,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEpD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAgB;QACvC,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,IAAI,iCAAoB,CAAC,MAAM,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAE7B,0CAA0C;QAC1C,gHAAgH;QAChH,OAAO,MAAM,qBAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;gBAChD,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,qGAAqG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACzJ,IAAI,UAA8B,CAAC;YAEnC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACnB,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;YACtD,CAAC;iBACI,CAAC;gBACF,MAAM,cAAc,GAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAkB,CAAC;gBACrF,UAAU,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAiB;QACvC,0CAA0C;QAC1C,gHAAgH;QAChH,OAAO,MAAM,qBAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;;AA7CL,wCA8CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
UPDATE `payments` set `type` = 'Refund' where `price` < 0;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
UPDATE payments
|
|
2
|
+
SET
|
|
3
|
+
`type` = 'Reallocation'
|
|
4
|
+
WHERE
|
|
5
|
+
price = 0
|
|
6
|
+
AND method = 'Unknown'
|
|
7
|
+
AND EXISTS (
|
|
8
|
+
SELECT
|
|
9
|
+
*
|
|
10
|
+
FROM
|
|
11
|
+
balance_item_payments
|
|
12
|
+
WHERE
|
|
13
|
+
balance_item_payments.paymentId = payments.id
|
|
14
|
+
AND balance_item_payments.price < 0
|
|
15
|
+
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Model } from '@simonbackx/simple-database';
|
|
2
|
-
import { BalanceItemRelation, BalanceItemRelationType, BalanceItemStatus, BalanceItemType, BalanceItemWithPayments, BalanceItemWithPrivatePayments } from '@stamhoofd/structures';
|
|
2
|
+
import { BalanceItem as BalanceItemStruct, BalanceItemRelation, BalanceItemRelationType, BalanceItemStatus, BalanceItemType, BalanceItemWithPayments, BalanceItemWithPrivatePayments } from '@stamhoofd/structures';
|
|
3
3
|
import { SQLSelect } from '@stamhoofd/sql';
|
|
4
4
|
import { Payment } from './';
|
|
5
5
|
/**
|
|
@@ -45,12 +45,24 @@ export declare class BalanceItem extends Model {
|
|
|
45
45
|
* Cached value, for optimizations
|
|
46
46
|
*/
|
|
47
47
|
pricePending: number;
|
|
48
|
+
/**
|
|
49
|
+
* Cached value, for optimizations
|
|
50
|
+
*/
|
|
51
|
+
priceOpen: number;
|
|
52
|
+
/**
|
|
53
|
+
* todo: deprecate ('pending' and 'paid') + 'hidden' status and replace with 'due' + 'hidden'
|
|
54
|
+
* -> maybe add 'due' (due if dueAt is null or <= now), 'hidden' (never due), 'future' (= not due until dueAt - but not possible to pay earlier)
|
|
55
|
+
*/
|
|
48
56
|
status: BalanceItemStatus;
|
|
57
|
+
/**
|
|
58
|
+
* In case the balance item doesn't have to be paid immediately, we can set a due date.
|
|
59
|
+
* When the due date is reached, it is set to null and the cached balance is updated.
|
|
60
|
+
*/
|
|
61
|
+
dueAt: Date | null;
|
|
49
62
|
createdAt: Date;
|
|
50
63
|
updatedAt: Date;
|
|
51
64
|
get price(): number;
|
|
52
|
-
get
|
|
53
|
-
updateStatus(): void;
|
|
65
|
+
get calculatedPriceOpen(): number;
|
|
54
66
|
static deleteItems(items: BalanceItem[]): Promise<void>;
|
|
55
67
|
static reactivateItems(items: BalanceItem[]): Promise<void>;
|
|
56
68
|
static undoForDeletedOrders(orderIds: string[]): Promise<void>;
|
|
@@ -72,13 +84,14 @@ export declare class BalanceItem extends Model {
|
|
|
72
84
|
*/
|
|
73
85
|
static updatePricePaid(balanceItemIds: string[] | 'all'): Promise<void>;
|
|
74
86
|
/**
|
|
75
|
-
*
|
|
87
|
+
* @deprecated
|
|
76
88
|
*/
|
|
77
89
|
static updatePricePending(balanceItemIds: string[] | 'all'): Promise<void>;
|
|
78
90
|
static loadPayments(items: BalanceItem[]): Promise<{
|
|
79
91
|
payments: Payment[];
|
|
80
92
|
balanceItemPayments: import("./BalanceItemPayment").BalanceItemPayment[];
|
|
81
93
|
}>;
|
|
94
|
+
getStructure(): BalanceItemStruct;
|
|
82
95
|
static getStructureWithPayments(items: BalanceItem[]): Promise<BalanceItemWithPayments[]>;
|
|
83
96
|
static getStructureWithPrivatePayments(items: BalanceItem[]): Promise<BalanceItemWithPrivatePayments[]>;
|
|
84
97
|
static balanceItemsForUsersAndMembers(organizationId: string | null, userIds: string[], memberIds: string[]): Promise<BalanceItem[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalanceItem.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAuE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,8BAA8B,EAAyD,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"BalanceItem.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAuE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,8BAA8B,EAAyD,MAAM,uBAAuB,CAAC;AAKhV,OAAO,EAAO,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA0B,OAAO,EAAW,MAAM,IAAI,CAAC;AAG9D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAClC,MAAM,CAAC,KAAK,SAAmB;IAO/B,EAAE,EAAG,MAAM,CAAC;IAKZ,cAAc,EAAE,MAAM,CAAC;IAKvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC;;OAEG;IAEH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9B;;;;OAIG;IAEH,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7C,IAAI,kBAAyB;IAG7B,SAAS,EAAE,GAAG,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAa;IAGzE,WAAW,SAAM;IAEjB;;OAEG;IAEH,MAAM,SAAK;IAEX;;OAEG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IAEH,SAAS,SAAK;IAEd;;OAEG;IAEH,YAAY,SAAK;IAEjB;;OAEG;IAQH,SAAS,SAAK;IAEd;;;OAGG;IAEH,MAAM,oBAAyB;IAE/B;;;OAGG;IAEH,KAAK,EAAE,IAAI,GAAG,IAAI,CAAQ;IAY1B,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;IAEhB,IAAI,KAAK,WAER;IAED,IAAI,mBAAmB,WAKtB;WAEY,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;WA8BhC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE;WAepC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQvC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQzC,sBAAsB,CAAC,QAAQ,EAAE,MAAM;WAKvC,4BAA4B,CAAC,cAAc,EAAE,MAAM;WAKnD,kBAAkB,CAAC,cAAc,EAAE,MAAM;;;;;IAQtD;;;OAGG;WACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE;IAsCnD;;OAEG;WACU,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;IAyD7D;;OAEG;WACU,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;WAInD,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE;;;;IAc9C,YAAY;WAMC,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;WAuBlF,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;WAuBhG,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;WAoD7H,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOxF;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
|
|
@@ -55,18 +55,31 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
55
55
|
* Cached value, for optimizations
|
|
56
56
|
*/
|
|
57
57
|
pricePending = 0;
|
|
58
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Cached value, for optimizations
|
|
60
|
+
*/
|
|
61
|
+
priceOpen = 0;
|
|
62
|
+
/**
|
|
63
|
+
* todo: deprecate ('pending' and 'paid') + 'hidden' status and replace with 'due' + 'hidden'
|
|
64
|
+
* -> maybe add 'due' (due if dueAt is null or <= now), 'hidden' (never due), 'future' (= not due until dueAt - but not possible to pay earlier)
|
|
65
|
+
*/
|
|
66
|
+
status = structures_1.BalanceItemStatus.Due;
|
|
67
|
+
/**
|
|
68
|
+
* In case the balance item doesn't have to be paid immediately, we can set a due date.
|
|
69
|
+
* When the due date is reached, it is set to null and the cached balance is updated.
|
|
70
|
+
*/
|
|
71
|
+
dueAt = null;
|
|
59
72
|
createdAt;
|
|
60
73
|
updatedAt;
|
|
61
74
|
get price() {
|
|
62
75
|
return this.unitPrice * this.amount;
|
|
63
76
|
}
|
|
64
|
-
get
|
|
77
|
+
get calculatedPriceOpen() {
|
|
78
|
+
if (this.status !== structures_1.BalanceItemStatus.Due) {
|
|
79
|
+
return -this.pricePaid - this.pricePending;
|
|
80
|
+
}
|
|
65
81
|
return this.price - this.pricePaid - this.pricePending;
|
|
66
82
|
}
|
|
67
|
-
updateStatus() {
|
|
68
|
-
this.status = (this.pricePaid !== 0 || this.price === 0) && this.pricePaid >= this.price ? structures_1.BalanceItemStatus.Paid : (this.pricePaid !== 0 ? structures_1.BalanceItemStatus.Pending : (this.status === structures_1.BalanceItemStatus.Hidden ? structures_1.BalanceItemStatus.Hidden : structures_1.BalanceItemStatus.Pending));
|
|
69
|
-
}
|
|
70
83
|
static async deleteItems(items) {
|
|
71
84
|
// Find depending items
|
|
72
85
|
const dependingItemIds = utility_1.Formatter.uniqueArray(items.filter(i => !!i.dependingBalanceItemId).map(i => i.dependingBalanceItemId)).filter(id => !items.some(item => item.id === id));
|
|
@@ -75,26 +88,17 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
75
88
|
const dependingItems = await BalanceItem.getByIDs(...dependingItemIds);
|
|
76
89
|
items = [...items, ...dependingItems];
|
|
77
90
|
}
|
|
78
|
-
const { balanceItemPayments } = await BalanceItem.loadPayments(items);
|
|
79
91
|
// todo: in the future we could automatically delete payments that are not needed anymore and weren't paid yet -> to prevent leaving ghost payments
|
|
80
92
|
// for now, an admin can manually cancel those payments
|
|
81
93
|
let needsUpdate = false;
|
|
82
94
|
// Set other items to zero (the balance item payments keep the real price)
|
|
83
95
|
for (const item of items) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// Not using item.paidPrice, since this is cached
|
|
87
|
-
const bip = balanceItemPayments.filter(p => p.balanceItemId === item.id);
|
|
88
|
-
if (bip.length === 0) {
|
|
89
|
-
// No payments associated with this item
|
|
90
|
-
item.status = structures_1.BalanceItemStatus.Hidden;
|
|
91
|
-
item.amount = 0;
|
|
92
|
-
await item.save();
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
item.amount = 0;
|
|
96
|
-
await item.save();
|
|
96
|
+
if (item.status !== structures_1.BalanceItemStatus.Due) {
|
|
97
|
+
continue;
|
|
97
98
|
}
|
|
99
|
+
needsUpdate = true;
|
|
100
|
+
item.status = structures_1.BalanceItemStatus.Canceled;
|
|
101
|
+
await item.save();
|
|
98
102
|
}
|
|
99
103
|
if (needsUpdate) {
|
|
100
104
|
await this.updateOutstanding(items);
|
|
@@ -104,7 +108,7 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
104
108
|
let needsUpdate = false;
|
|
105
109
|
for (const item of items) {
|
|
106
110
|
if (item.status === structures_1.BalanceItemStatus.Hidden) {
|
|
107
|
-
item.status = structures_1.BalanceItemStatus.
|
|
111
|
+
item.status = structures_1.BalanceItemStatus.Due;
|
|
108
112
|
needsUpdate = true;
|
|
109
113
|
await item.save();
|
|
110
114
|
}
|
|
@@ -149,7 +153,6 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
149
153
|
static async updateOutstanding(items) {
|
|
150
154
|
console.log('Update outstanding balance for', items.length, 'items');
|
|
151
155
|
await BalanceItem.updatePricePaid(items.map(i => i.id));
|
|
152
|
-
await BalanceItem.updatePricePending(items.map(i => i.id));
|
|
153
156
|
// Deprecated: the member balances have moved to CachedBalance
|
|
154
157
|
// Update outstanding amount of related members and registrations
|
|
155
158
|
const memberIds = utility_1.Formatter.uniqueArray(items.map(p => p.memberId).filter(id => id !== null));
|
|
@@ -177,7 +180,7 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
177
180
|
* Update the outstanding balance of multiple members in one go (or all members)
|
|
178
181
|
*/
|
|
179
182
|
static async updatePricePaid(balanceItemIds) {
|
|
180
|
-
if (balanceItemIds !== 'all' && balanceItemIds.length
|
|
183
|
+
if (balanceItemIds !== 'all' && balanceItemIds.length === 0) {
|
|
181
184
|
return;
|
|
182
185
|
}
|
|
183
186
|
const params = [];
|
|
@@ -186,11 +189,11 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
186
189
|
if (balanceItemIds !== 'all') {
|
|
187
190
|
firstWhere = ` AND balanceItemId IN (?)`;
|
|
188
191
|
params.push(balanceItemIds);
|
|
192
|
+
params.push(balanceItemIds);
|
|
189
193
|
secondWhere = `WHERE balance_items.id IN (?)`;
|
|
190
194
|
params.push(balanceItemIds);
|
|
191
195
|
}
|
|
192
|
-
// Note:
|
|
193
|
-
// this method will set the balance item to paid once, and only call the handlers once
|
|
196
|
+
// Note: this query only works in MySQL because of the SET assignment behaviour allowing to reference newly set values
|
|
194
197
|
const query = `
|
|
195
198
|
UPDATE
|
|
196
199
|
balance_items
|
|
@@ -205,35 +208,7 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
205
208
|
payments.status = 'Succeeded'${firstWhere}
|
|
206
209
|
GROUP BY
|
|
207
210
|
balanceItemId
|
|
208
|
-
)
|
|
209
|
-
SET balance_items.pricePaid = coalesce(i.price, 0), balance_items.status = (CASE
|
|
210
|
-
WHEN balance_items.status = '${structures_1.BalanceItemStatus.Paid}' AND balance_items.pricePaid != 0 AND balance_items.pricePaid >= (balance_items.unitPrice * balance_items.amount) THEN '${structures_1.BalanceItemStatus.Paid}'
|
|
211
|
-
WHEN balance_items.pricePaid != 0 THEN '${structures_1.BalanceItemStatus.Pending}'
|
|
212
|
-
WHEN balance_items.status = '${structures_1.BalanceItemStatus.Hidden}' THEN '${structures_1.BalanceItemStatus.Hidden}'
|
|
213
|
-
ELSE '${structures_1.BalanceItemStatus.Pending}'
|
|
214
|
-
END)
|
|
215
|
-
${secondWhere}`;
|
|
216
|
-
await simple_database_1.Database.update(query, params);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Call this after updating the pricePaid
|
|
220
|
-
*/
|
|
221
|
-
static async updatePricePending(balanceItemIds) {
|
|
222
|
-
if (balanceItemIds !== 'all' && balanceItemIds.length == 0) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
const params = [];
|
|
226
|
-
let firstWhere = '';
|
|
227
|
-
let secondWhere = '';
|
|
228
|
-
if (balanceItemIds !== 'all') {
|
|
229
|
-
firstWhere = ` AND balanceItemId IN (?)`;
|
|
230
|
-
params.push(balanceItemIds);
|
|
231
|
-
secondWhere = `WHERE balance_items.id IN (?)`;
|
|
232
|
-
params.push(balanceItemIds);
|
|
233
|
-
}
|
|
234
|
-
const query = `
|
|
235
|
-
UPDATE
|
|
236
|
-
balance_items
|
|
211
|
+
) paid ON paid.balanceItemId = balance_items.id
|
|
237
212
|
LEFT JOIN (
|
|
238
213
|
SELECT
|
|
239
214
|
balanceItemId,
|
|
@@ -245,14 +220,22 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
245
220
|
payments.status != 'Succeeded' AND payments.status != 'Failed'${firstWhere}
|
|
246
221
|
GROUP BY
|
|
247
222
|
balanceItemId
|
|
248
|
-
)
|
|
249
|
-
SET balance_items.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
223
|
+
) pending ON pending.balanceItemId = balance_items.id
|
|
224
|
+
SET balance_items.pricePaid = coalesce(paid.price, 0),
|
|
225
|
+
balance_items.pricePending = coalesce(pending.price, 0),
|
|
226
|
+
balance_items.priceOpen = (CASE
|
|
227
|
+
WHEN balance_items.status = '${structures_1.BalanceItemStatus.Due}' THEN (balance_items.unitPrice * balance_items.amount - balance_items.pricePaid - balance_items.pricePending)
|
|
228
|
+
ELSE (-balance_items.pricePaid - balance_items.pricePending)
|
|
229
|
+
END)
|
|
253
230
|
${secondWhere}`;
|
|
254
231
|
await simple_database_1.Database.update(query, params);
|
|
255
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* @deprecated
|
|
235
|
+
*/
|
|
236
|
+
static async updatePricePending(balanceItemIds) {
|
|
237
|
+
// deprecated
|
|
238
|
+
}
|
|
256
239
|
static async loadPayments(items) {
|
|
257
240
|
if (items.length == 0) {
|
|
258
241
|
return { balanceItemPayments: [], payments: [] };
|
|
@@ -263,8 +246,13 @@ class BalanceItem extends simple_database_1.Model {
|
|
|
263
246
|
const payments = await _1.Payment.getByIDs(...balanceItemPayments.map(p => p.paymentId));
|
|
264
247
|
return { payments, balanceItemPayments };
|
|
265
248
|
}
|
|
249
|
+
getStructure() {
|
|
250
|
+
return structures_1.BalanceItem.create({
|
|
251
|
+
...this,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
266
254
|
static async getStructureWithPayments(items) {
|
|
267
|
-
if (items.length
|
|
255
|
+
if (items.length === 0) {
|
|
268
256
|
return [];
|
|
269
257
|
}
|
|
270
258
|
const { payments, balanceItemPayments } = await BalanceItem.loadPayments(items);
|
|
@@ -415,9 +403,21 @@ tslib_1.__decorate([
|
|
|
415
403
|
tslib_1.__decorate([
|
|
416
404
|
(0, simple_database_1.column)({ type: 'integer' })
|
|
417
405
|
], BalanceItem.prototype, "pricePending", void 0);
|
|
406
|
+
tslib_1.__decorate([
|
|
407
|
+
(0, simple_database_1.column)({
|
|
408
|
+
type: 'integer',
|
|
409
|
+
beforeSave: function () {
|
|
410
|
+
return this.calculatedPriceOpen;
|
|
411
|
+
},
|
|
412
|
+
skipUpdate: true,
|
|
413
|
+
})
|
|
414
|
+
], BalanceItem.prototype, "priceOpen", void 0);
|
|
418
415
|
tslib_1.__decorate([
|
|
419
416
|
(0, simple_database_1.column)({ type: 'string' })
|
|
420
417
|
], BalanceItem.prototype, "status", void 0);
|
|
418
|
+
tslib_1.__decorate([
|
|
419
|
+
(0, simple_database_1.column)({ type: 'datetime', nullable: true })
|
|
420
|
+
], BalanceItem.prototype, "dueAt", void 0);
|
|
421
421
|
tslib_1.__decorate([
|
|
422
422
|
(0, simple_database_1.column)({
|
|
423
423
|
type: 'datetime', beforeSave(old) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalanceItem.js","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BalanceItem.js","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,14 @@ export declare class CachedBalance extends Model {
|
|
|
18
18
|
*/
|
|
19
19
|
objectType: ReceivableBalanceType;
|
|
20
20
|
amount: number;
|
|
21
|
+
/**
|
|
22
|
+
* The sum of unconfirmed payments
|
|
23
|
+
*/
|
|
21
24
|
amountPending: number;
|
|
25
|
+
/**
|
|
26
|
+
* This is the minimum `dueAt` that lies in the future of all **unpaid** balance items connected to this object.
|
|
27
|
+
*/
|
|
28
|
+
nextDueAt: Date | null;
|
|
22
29
|
createdAt: Date;
|
|
23
30
|
updatedAt: Date;
|
|
24
31
|
static getForObjects(objectIds: string[], limitOrganizationId?: string | null): Promise<CachedBalance[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedBalance.d.ts","sourceRoot":"","sources":["../../../src/models/CachedBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"CachedBalance.d.ts","sourceRoot":"","sources":["../../../src/models/CachedBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAA2F,SAAS,EAA+C,MAAM,gBAAgB,CAAC;AACjL,OAAO,EAAuD,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACpC,MAAM,CAAC,KAAK,SAAiC;IAO7C,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IAEH,UAAU,EAAE,qBAAqB,CAAC;IAGlC,MAAM,SAAK;IAEX;;OAEG;IAEH,aAAa,SAAK;IAElB;;OAEG;IAEH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAY9B,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;WAEH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;WAWjG,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;WAc/F,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;mBAWxF,iBAAiB;mBAiBjB,eAAe;mBAsJf,aAAa;WAwCrB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAQxE,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAQ5D,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;WAQxD,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAOzE,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAO7D,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAOtE;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
|
|
@@ -23,7 +23,14 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
23
23
|
*/
|
|
24
24
|
objectType;
|
|
25
25
|
amount = 0;
|
|
26
|
+
/**
|
|
27
|
+
* The sum of unconfirmed payments
|
|
28
|
+
*/
|
|
26
29
|
amountPending = 0;
|
|
30
|
+
/**
|
|
31
|
+
* This is the minimum `dueAt` that lies in the future of all **unpaid** balance items connected to this object.
|
|
32
|
+
*/
|
|
33
|
+
nextDueAt = null;
|
|
27
34
|
createdAt;
|
|
28
35
|
updatedAt;
|
|
29
36
|
static async getForObjects(objectIds, limitOrganizationId) {
|
|
@@ -62,7 +69,7 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
62
69
|
.where('organizationId', organizationId)
|
|
63
70
|
.where(columnName, objectIds)
|
|
64
71
|
.whereNot('status', structures_1.BalanceItemStatus.Hidden)
|
|
65
|
-
.where(sql_1.SQL.where(
|
|
72
|
+
.where(sql_1.SQL.where(sql_1.SQL.column('priceOpen'), sql_1.SQLWhereSign.NotEqual, 0)
|
|
66
73
|
.or('pricePending', sql_1.SQLWhereSign.NotEqual, 0));
|
|
67
74
|
if (customWhere) {
|
|
68
75
|
query.where(customWhere);
|
|
@@ -70,16 +77,30 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
70
77
|
return await query.fetch();
|
|
71
78
|
}
|
|
72
79
|
static async fetchForObjects(organizationId, objectIds, columnName, customWhere) {
|
|
73
|
-
const
|
|
80
|
+
const dueOffset = structures_1.BalanceItem.getDueOffset();
|
|
81
|
+
const query = sql_1.SQL.select(sql_1.SQL.column(columnName), new sql_1.SQLSelectAs(new sql_1.SQLSum(sql_1.SQL.column('priceOpen')), new sql_1.SQLAlias('data__amount')), new sql_1.SQLSelectAs(new sql_1.SQLSum(sql_1.SQL.column('pricePending')), new sql_1.SQLAlias('data__amountPending')))
|
|
74
82
|
.from(BalanceItem_1.BalanceItem.table)
|
|
75
83
|
.where('organizationId', organizationId)
|
|
76
84
|
.where(columnName, objectIds)
|
|
77
85
|
.whereNot('status', structures_1.BalanceItemStatus.Hidden)
|
|
86
|
+
.where(sql_1.SQL.where('dueAt', null).or('dueAt', sql_1.SQLWhereSign.LessEqual, dueOffset))
|
|
78
87
|
.groupBy(sql_1.SQL.column(columnName));
|
|
79
88
|
if (customWhere) {
|
|
80
89
|
query.where(customWhere);
|
|
81
90
|
}
|
|
82
91
|
const result = await query.fetch();
|
|
92
|
+
// Calculate future due
|
|
93
|
+
const dueQuery = sql_1.SQL.select(sql_1.SQL.column(columnName), new sql_1.SQLSelectAs(new sql_1.SQLMin(sql_1.SQL.column('dueAt')), new sql_1.SQLAlias('data__dueAt')),
|
|
94
|
+
// If the current amount_due is negative, we can ignore that negative part if there is a future due item
|
|
95
|
+
new sql_1.SQLSelectAs(new sql_1.SQLSum(sql_1.SQL.column('priceOpen')), new sql_1.SQLAlias('data__amount')), new sql_1.SQLSelectAs(new sql_1.SQLSum(sql_1.SQL.column('pricePending')), new sql_1.SQLAlias('data__amountPending')))
|
|
96
|
+
.from(BalanceItem_1.BalanceItem.table)
|
|
97
|
+
.where('organizationId', organizationId)
|
|
98
|
+
.where(columnName, objectIds)
|
|
99
|
+
.where('status', structures_1.BalanceItemStatus.Due)
|
|
100
|
+
.whereNot('dueAt', null)
|
|
101
|
+
.where('dueAt', sql_1.SQLWhereSign.Greater, dueOffset)
|
|
102
|
+
.groupBy(sql_1.SQL.column(columnName));
|
|
103
|
+
const dueResult = await dueQuery.fetch();
|
|
83
104
|
const results = [];
|
|
84
105
|
for (const row of result) {
|
|
85
106
|
if (!row['data']) {
|
|
@@ -100,12 +121,50 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
100
121
|
if (typeof amountPending !== 'number') {
|
|
101
122
|
throw new Error('Invalid amountPending');
|
|
102
123
|
}
|
|
103
|
-
results.push([objectId, { amount, amountPending }]);
|
|
124
|
+
results.push([objectId, { amount, amountPending, nextDueAt: null }]);
|
|
125
|
+
}
|
|
126
|
+
for (const row of dueResult) {
|
|
127
|
+
if (!row['data']) {
|
|
128
|
+
throw new Error('Invalid data namespace');
|
|
129
|
+
}
|
|
130
|
+
if (!row[BalanceItem_1.BalanceItem.table]) {
|
|
131
|
+
throw new Error('Invalid ' + BalanceItem_1.BalanceItem.table + ' namespace');
|
|
132
|
+
}
|
|
133
|
+
const objectId = row[BalanceItem_1.BalanceItem.table][columnName];
|
|
134
|
+
const dueAt = row['data']['dueAt'];
|
|
135
|
+
const amount = row['data']['amount'];
|
|
136
|
+
const amountPending = row['data']['amountPending'];
|
|
137
|
+
if (typeof objectId !== 'string') {
|
|
138
|
+
throw new Error('Invalid objectId');
|
|
139
|
+
}
|
|
140
|
+
if (!(dueAt instanceof Date)) {
|
|
141
|
+
throw new Error('Invalid dueAt');
|
|
142
|
+
}
|
|
143
|
+
if (typeof amount !== 'number') {
|
|
144
|
+
throw new Error('Invalid amount');
|
|
145
|
+
}
|
|
146
|
+
if (typeof amountPending !== 'number') {
|
|
147
|
+
throw new Error('Invalid amountPending');
|
|
148
|
+
}
|
|
149
|
+
const result = results.find(r => r[0] === objectId);
|
|
150
|
+
if (result) {
|
|
151
|
+
result[1].nextDueAt = dueAt;
|
|
152
|
+
if (result[1].amount < 0) {
|
|
153
|
+
if (amount > 0) {
|
|
154
|
+
// Let the future due amount fill in the gap until maximum 0
|
|
155
|
+
result[1].amount = Math.min(0, result[1].amount + amount);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
result[1].amountPending += amountPending;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
results.push([objectId, { amount: 0, amountPending: amountPending, nextDueAt: dueAt }]);
|
|
162
|
+
}
|
|
104
163
|
}
|
|
105
164
|
// Add missing object ids (with 0 amount, otherwise we don't reset the amounts back to zero when all the balance items are hidden)
|
|
106
165
|
for (const objectId of objectIds) {
|
|
107
166
|
if (!results.find(([id]) => id === objectId)) {
|
|
108
|
-
results.push([objectId, { amount: 0, amountPending: 0 }]);
|
|
167
|
+
results.push([objectId, { amount: 0, amountPending: 0, nextDueAt: null }]);
|
|
109
168
|
}
|
|
110
169
|
}
|
|
111
170
|
return results;
|
|
@@ -115,8 +174,8 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
115
174
|
return;
|
|
116
175
|
}
|
|
117
176
|
const query = sql_1.SQL.insert(this.table)
|
|
118
|
-
.columns('id', 'organizationId', 'objectId', 'objectType', 'amount', 'amountPending', 'createdAt', 'updatedAt')
|
|
119
|
-
.values(...result.map(([objectId, { amount, amountPending }]) => {
|
|
177
|
+
.columns('id', 'organizationId', 'objectId', 'objectType', 'amount', 'amountPending', 'nextDueAt', 'createdAt', 'updatedAt')
|
|
178
|
+
.values(...result.map(([objectId, { amount, amountPending, nextDueAt }]) => {
|
|
120
179
|
return [
|
|
121
180
|
(0, uuid_1.v4)(),
|
|
122
181
|
organizationId,
|
|
@@ -124,12 +183,13 @@ class CachedBalance extends simple_database_1.Model {
|
|
|
124
183
|
objectType,
|
|
125
184
|
amount,
|
|
126
185
|
amountPending,
|
|
186
|
+
nextDueAt,
|
|
127
187
|
new Date(),
|
|
128
188
|
new Date(),
|
|
129
189
|
];
|
|
130
190
|
}))
|
|
131
191
|
.as('v')
|
|
132
|
-
.onDuplicateKeyUpdate(sql_1.SQL.assignment('amount', sql_1.SQL.column('v', 'amount')), sql_1.SQL.assignment('amountPending', sql_1.SQL.column('v', 'amountPending')), sql_1.SQL.assignment('updatedAt', sql_1.SQL.column('v', 'updatedAt')));
|
|
192
|
+
.onDuplicateKeyUpdate(sql_1.SQL.assignment('amount', sql_1.SQL.column('v', 'amount')), sql_1.SQL.assignment('amountPending', sql_1.SQL.column('v', 'amountPending')), sql_1.SQL.assignment('nextDueAt', sql_1.SQL.column('v', 'nextDueAt')), sql_1.SQL.assignment('updatedAt', sql_1.SQL.column('v', 'updatedAt')));
|
|
133
193
|
await query.insert();
|
|
134
194
|
}
|
|
135
195
|
static async updateForOrganizations(organizationId, organizationIds) {
|
|
@@ -209,6 +269,9 @@ tslib_1.__decorate([
|
|
|
209
269
|
tslib_1.__decorate([
|
|
210
270
|
(0, simple_database_1.column)({ type: 'integer' })
|
|
211
271
|
], CachedBalance.prototype, "amountPending", void 0);
|
|
272
|
+
tslib_1.__decorate([
|
|
273
|
+
(0, simple_database_1.column)({ type: 'datetime', nullable: true })
|
|
274
|
+
], CachedBalance.prototype, "nextDueAt", void 0);
|
|
212
275
|
tslib_1.__decorate([
|
|
213
276
|
(0, simple_database_1.column)({
|
|
214
277
|
type: 'datetime', beforeSave(old) {
|