@unchainedshop/core-orders 4.0.0-rc.8 → 4.0.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/lib/db/OrderDeliveriesCollection.d.ts +2 -2
- package/lib/db/OrderDeliveriesCollection.d.ts.map +1 -1
- package/lib/db/OrderDeliveriesSchema.d.ts +3 -0
- package/lib/db/OrderDeliveriesSchema.d.ts.map +1 -0
- package/lib/db/OrderDeliveriesSchema.js +20 -0
- package/lib/db/OrderDeliveriesSchema.js.map +1 -0
- package/lib/db/OrderDiscountTrigger.d.ts +5 -0
- package/lib/db/OrderDiscountTrigger.d.ts.map +1 -0
- package/lib/db/OrderDiscountTrigger.js +6 -0
- package/lib/db/OrderDiscountTrigger.js.map +1 -0
- package/lib/db/OrderDiscountsCollection.d.ts +2 -2
- package/lib/db/OrderDiscountsCollection.d.ts.map +1 -1
- package/lib/db/OrderDiscountsSchema.d.ts +3 -0
- package/lib/db/OrderDiscountsSchema.d.ts.map +1 -0
- package/lib/db/OrderDiscountsSchema.js +12 -0
- package/lib/db/OrderDiscountsSchema.js.map +1 -0
- package/lib/db/OrderPaymentsCollection.d.ts +3 -3
- package/lib/db/OrderPaymentsCollection.d.ts.map +1 -1
- package/lib/db/OrderPaymentsSchema.d.ts +3 -0
- package/lib/db/OrderPaymentsSchema.d.ts.map +1 -0
- package/lib/db/OrderPaymentsSchema.js +20 -0
- package/lib/db/OrderPaymentsSchema.js.map +1 -0
- package/lib/db/OrderPositionsCollection.d.ts +1 -2
- package/lib/db/OrderPositionsCollection.d.ts.map +1 -1
- package/lib/db/OrderPositionsCollection.js.map +1 -1
- package/lib/db/OrderPositionsSchema.d.ts +3 -0
- package/lib/db/OrderPositionsSchema.d.ts.map +1 -0
- package/lib/db/OrderPositionsSchema.js +37 -0
- package/lib/db/OrderPositionsSchema.js.map +1 -0
- package/lib/db/OrdersCollection.d.ts +5 -1
- package/lib/db/OrdersCollection.d.ts.map +1 -1
- package/lib/db/OrdersCollection.js +25 -21
- package/lib/db/OrdersCollection.js.map +1 -1
- package/lib/db/OrdersSchema.d.ts +3 -0
- package/lib/db/OrdersSchema.d.ts.map +1 -0
- package/lib/db/OrdersSchema.js +30 -0
- package/lib/db/OrdersSchema.js.map +1 -0
- package/lib/director/OrderDiscountAdapter.d.ts +4 -0
- package/lib/director/OrderDiscountAdapter.d.ts.map +1 -0
- package/lib/director/OrderDiscountAdapter.js +3 -0
- package/lib/director/OrderDiscountAdapter.js.map +1 -0
- package/lib/director/OrderDiscountConfiguration.d.ts +6 -0
- package/lib/director/OrderDiscountConfiguration.d.ts.map +1 -0
- package/lib/director/OrderDiscountConfiguration.js +2 -0
- package/lib/director/OrderDiscountConfiguration.js.map +1 -0
- package/lib/director/OrderDiscountDirector.d.ts +3 -0
- package/lib/director/OrderDiscountDirector.d.ts.map +1 -0
- package/lib/director/OrderDiscountDirector.js +3 -0
- package/lib/director/OrderDiscountDirector.js.map +1 -0
- package/lib/director/OrderPricingAdapter.d.ts +4 -0
- package/lib/director/OrderPricingAdapter.d.ts.map +1 -0
- package/lib/director/OrderPricingAdapter.js +25 -0
- package/lib/director/OrderPricingAdapter.js.map +1 -0
- package/lib/director/OrderPricingDirector.d.ts +3 -0
- package/lib/director/OrderPricingDirector.d.ts.map +1 -0
- package/lib/director/OrderPricingDirector.js +39 -0
- package/lib/director/OrderPricingDirector.js.map +1 -0
- package/lib/director/OrderPricingSheet.d.ts +4 -0
- package/lib/director/OrderPricingSheet.d.ts.map +1 -0
- package/lib/director/OrderPricingSheet.js +101 -0
- package/lib/director/OrderPricingSheet.js.map +1 -0
- package/lib/module/buildFindSelector.d.ts +1 -1
- package/lib/module/buildFindSelector.d.ts.map +1 -1
- package/lib/module/buildFindSelector.js +17 -1
- package/lib/module/buildFindSelector.js.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.d.ts +9 -6
- package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.js +14 -10
- package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
- package/lib/module/configureOrderDiscountsModule.d.ts +5 -5
- package/lib/module/configureOrderDiscountsModule.d.ts.map +1 -1
- package/lib/module/configureOrderDiscountsModule.js +3 -3
- package/lib/module/configureOrderDiscountsModule.js.map +1 -1
- package/lib/module/configureOrderPaymentsModule.d.ts +10 -7
- package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPaymentsModule.js +18 -10
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule.d.ts +16 -5
- package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPositionsModule.js +25 -5
- package/lib/module/configureOrderPositionsModule.js.map +1 -1
- package/lib/module/configureOrdersModule-mutations.d.ts +14 -13
- package/lib/module/configureOrdersModule-mutations.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-mutations.js +19 -11
- package/lib/module/configureOrdersModule-mutations.js.map +1 -1
- package/lib/module/configureOrdersModule-processing.d.ts +14 -0
- package/lib/module/configureOrdersModule-processing.d.ts.map +1 -0
- package/lib/module/configureOrdersModule-processing.js +348 -0
- package/lib/module/configureOrdersModule-processing.js.map +1 -0
- package/lib/module/configureOrdersModule-queries.d.ts +21 -6
- package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-queries.js +19 -84
- package/lib/module/configureOrdersModule-queries.js.map +1 -1
- package/lib/module/configureOrdersModule-transformations.d.ts +6 -0
- package/lib/module/configureOrdersModule-transformations.d.ts.map +1 -0
- package/lib/module/configureOrdersModule-transformations.js +112 -0
- package/lib/module/configureOrdersModule-transformations.js.map +1 -0
- package/lib/module/configureOrdersModule.d.ts +154 -21
- package/lib/module/configureOrdersModule.d.ts.map +1 -1
- package/lib/module/configureOrdersModule.js +9 -3
- package/lib/module/configureOrdersModule.js.map +1 -1
- package/lib/orders-settings.d.ts +8 -12
- package/lib/orders-settings.d.ts.map +1 -1
- package/lib/orders-settings.js +8 -8
- package/lib/orders-settings.js.map +1 -1
- package/lib/service/migrateOrderCartService.d.ts +3 -0
- package/lib/service/migrateOrderCartService.d.ts.map +1 -0
- package/lib/service/migrateOrderCartService.js +32 -0
- package/lib/service/migrateOrderCartService.js.map +1 -0
- package/lib/service/nextUserCartService.d.ts +3 -0
- package/lib/service/nextUserCartService.d.ts.map +1 -0
- package/lib/service/nextUserCartService.js +34 -0
- package/lib/service/nextUserCartService.js.map +1 -0
- package/lib/service/orderServices.d.ts +3 -0
- package/lib/service/orderServices.d.ts.map +1 -0
- package/lib/service/orderServices.js +7 -0
- package/lib/service/orderServices.js.map +1 -0
- package/package.json +4 -4
- package/src/db/OrderDeliveriesCollection.ts +2 -2
- package/src/db/OrderDiscountsCollection.ts +2 -2
- package/src/db/OrderPaymentsCollection.ts +3 -3
- package/src/db/OrderPositionsCollection.ts +1 -2
- package/src/db/OrdersCollection.ts +31 -22
- package/src/module/buildFindSelector.ts +19 -1
- package/src/module/configureOrderDeliveriesModule.ts +28 -16
- package/src/module/configureOrderDiscountsModule.ts +11 -11
- package/src/module/configureOrderPaymentsModule.ts +31 -20
- package/src/module/configureOrderPositionsModule.ts +47 -16
- package/src/module/configureOrdersModule-mutations.ts +46 -44
- package/src/module/configureOrdersModule-queries.ts +42 -91
- package/src/module/configureOrdersModule.ts +21 -33
- package/src/orders-settings.ts +20 -19
package/lib/orders-settings.js
CHANGED
|
@@ -5,15 +5,15 @@ export const defaultValidateOrderPosition = async ({ product }, { modules }) =>
|
|
|
5
5
|
}
|
|
6
6
|
};
|
|
7
7
|
export const ordersSettings = {
|
|
8
|
-
ensureUserHasCart:
|
|
9
|
-
orderNumberHashFn:
|
|
10
|
-
validateOrderPosition:
|
|
8
|
+
ensureUserHasCart: false,
|
|
9
|
+
orderNumberHashFn: generateRandomHash,
|
|
10
|
+
validateOrderPosition: defaultValidateOrderPosition,
|
|
11
11
|
lockOrderDuringCheckout: false,
|
|
12
|
-
configureSettings({ ensureUserHasCart
|
|
13
|
-
this.ensureUserHasCart = ensureUserHasCart;
|
|
14
|
-
this.orderNumberHashFn = orderNumberHashFn;
|
|
15
|
-
this.validateOrderPosition = validateOrderPosition;
|
|
16
|
-
this.lockOrderDuringCheckout = lockOrderDuringCheckout;
|
|
12
|
+
configureSettings({ ensureUserHasCart, orderNumberHashFn, validateOrderPosition, lockOrderDuringCheckout, } = {}) {
|
|
13
|
+
this.ensureUserHasCart = ensureUserHasCart || false;
|
|
14
|
+
this.orderNumberHashFn = orderNumberHashFn || generateRandomHash;
|
|
15
|
+
this.validateOrderPosition = validateOrderPosition || defaultValidateOrderPosition;
|
|
16
|
+
this.lockOrderDuringCheckout = lockOrderDuringCheckout || false;
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=orders-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders-settings.js","sourceRoot":"","sources":["../src/orders-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"orders-settings.js","sourceRoot":"","sources":["../src/orders-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAsB1D,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAO,EAAE,EAAE;IAClF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,4BAA4B;IACnD,uBAAuB,EAAE,KAAK;IAC9B,iBAAiB,CAAC,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GACxB,GAAG,EAAE;QACJ,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,kBAAkB,CAAC;QACjE,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,IAAI,4BAA4B,CAAC;QACnF,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,IAAI,KAAK,CAAC;IAClE,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateOrderCartService.d.ts","sourceRoot":"","sources":["../../src/service/migrateOrderCartService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,eAAO,MAAM,wBAAwB,EAAE,wBA2CtC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const migrateOrderCartsService = async ({ fromUserId, toUserId, shouldMerge, countryContext }, unchainedAPI) => {
|
|
2
|
+
const fromCart = await unchainedAPI.modules.orders.cart({
|
|
3
|
+
countryContext,
|
|
4
|
+
userId: fromUserId,
|
|
5
|
+
});
|
|
6
|
+
const toCart = await unchainedAPI.modules.orders.cart({
|
|
7
|
+
countryContext,
|
|
8
|
+
userId: toUserId,
|
|
9
|
+
});
|
|
10
|
+
if (!fromCart) {
|
|
11
|
+
// No cart, don't copy
|
|
12
|
+
return toCart;
|
|
13
|
+
}
|
|
14
|
+
if (!toCart || !shouldMerge) {
|
|
15
|
+
// No destination cart, move whole cart
|
|
16
|
+
unchainedAPI.modules.orders.setCartOwner({ orderId: fromCart._id, userId: toUserId });
|
|
17
|
+
return unchainedAPI.modules.orders.updateCalculation(fromCart._id, unchainedAPI);
|
|
18
|
+
}
|
|
19
|
+
// Move positions
|
|
20
|
+
unchainedAPI.modules.orders.moveCartPositions({ fromOrderId: fromCart._id, toOrderId: toCart._id });
|
|
21
|
+
// Move billing address if target order has none
|
|
22
|
+
if (fromCart.billingAddress && !toCart.billingAddress) {
|
|
23
|
+
await unchainedAPI.modules.orders.updateBillingAddress(toCart._id, fromCart.billingAddress, unchainedAPI);
|
|
24
|
+
}
|
|
25
|
+
// Move contact data if target order has none
|
|
26
|
+
if (fromCart.contact && !toCart.contact) {
|
|
27
|
+
await unchainedAPI.modules.orders.updateContact(toCart._id, fromCart.contact, unchainedAPI);
|
|
28
|
+
}
|
|
29
|
+
await unchainedAPI.modules.orders.updateCalculation(fromCart._id, unchainedAPI);
|
|
30
|
+
return unchainedAPI.modules.orders.updateCalculation(toCart._id, unchainedAPI);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=migrateOrderCartService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateOrderCartService.js","sourceRoot":"","sources":["../../src/service/migrateOrderCartService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAA6B,KAAK,EACrE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,EACrD,YAAY,EACZ,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACtD,cAAc;QACd,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACpD,cAAc;QACd,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,sBAAsB;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,uCAAuC;QACvC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtF,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IAED,iBAAiB;IACjB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAEpG,gDAAgD;IAChD,IAAI,QAAQ,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACtD,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CACpD,MAAM,CAAC,GAAG,EACV,QAAQ,CAAC,cAAc,EACvB,YAAY,CACb,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAChF,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACjF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextUserCartService.d.ts","sourceRoot":"","sources":["../../src/service/nextUserCartService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,eAAO,MAAM,mBAAmB,EAAE,mBAqCjC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ordersSettings } from '../orders-settings.js';
|
|
2
|
+
import { resolveBestCurrency } from '@unchainedshop/utils';
|
|
3
|
+
export const nextUserCartService = async ({ user, orderNumber, countryCode, forceCartCreation }, unchainedAPI) => {
|
|
4
|
+
const { modules } = unchainedAPI;
|
|
5
|
+
const cart = await modules.orders.cart({
|
|
6
|
+
countryContext: countryCode || user.lastLogin?.countryCode,
|
|
7
|
+
orderNumber,
|
|
8
|
+
userId: user._id,
|
|
9
|
+
});
|
|
10
|
+
if (cart)
|
|
11
|
+
return cart;
|
|
12
|
+
const shouldCreateNewCart = forceCartCreation || ordersSettings.ensureUserHasCart;
|
|
13
|
+
if (!shouldCreateNewCart)
|
|
14
|
+
return null;
|
|
15
|
+
const countryObject = await modules.countries.findCountry({ isoCode: countryCode });
|
|
16
|
+
const currencies = await modules.currencies.findCurrencies({ includeInactive: false });
|
|
17
|
+
const currency = resolveBestCurrency(countryObject.defaultCurrencyCode, currencies);
|
|
18
|
+
const order = await modules.orders.create({
|
|
19
|
+
userId: user._id,
|
|
20
|
+
orderNumber,
|
|
21
|
+
currency,
|
|
22
|
+
countryCode,
|
|
23
|
+
billingAddress: user.lastBillingAddress || user.profile?.address,
|
|
24
|
+
contact: user.lastContact ||
|
|
25
|
+
(!user.guest
|
|
26
|
+
? {
|
|
27
|
+
telNumber: user.profile?.phoneMobile,
|
|
28
|
+
emailAddress: modules.users.primaryEmail(user)?.address,
|
|
29
|
+
}
|
|
30
|
+
: {}),
|
|
31
|
+
});
|
|
32
|
+
return modules.orders.initProviders(order, unchainedAPI);
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=nextUserCartService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextUserCartService.js","sourceRoot":"","sources":["../../src/service/nextUserCartService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAwB,KAAK,EAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,EACrD,YAAY,EACZ,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAEjC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,cAAc,EAAE,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW;QAC1D,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,mBAAmB,GAAG,iBAAiB,IAAI,cAAc,CAAC,iBAAiB,CAAC;IAClF,IAAI,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAEpF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC,GAAG;QAChB,WAAW;QACX,QAAQ;QACR,WAAW;QACX,cAAc,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;QAChE,OAAO,EACL,IAAI,CAAC,WAAW;YAChB,CAAC,CAAC,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW;oBACpC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;iBACxD;gBACH,CAAC,CAAC,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderServices.d.ts","sourceRoot":"","sources":["../../src/service/orderServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,eAAO,MAAM,aAAa,EAAE,aAG3B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { migrateOrderCartsService } from './migrateOrderCartService.js';
|
|
2
|
+
import { nextUserCartService } from './nextUserCartService.js';
|
|
3
|
+
export const orderServices = {
|
|
4
|
+
migrateOrderCarts: migrateOrderCartsService,
|
|
5
|
+
nextUserCart: nextUserCartService,
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=orderServices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderServices.js","sourceRoot":"","sources":["../../src/service/orderServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,iBAAiB,EAAE,wBAAwB;IAC3C,YAAY,EAAE,mBAAmB;CAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-orders",
|
|
3
|
-
"version": "4.0.0
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"main": "lib/orders-index.js",
|
|
5
5
|
"types": "lib/orders-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@kontsedal/locco": "0.1.0",
|
|
35
|
-
"@unchainedshop/events": "^4.0.0
|
|
36
|
-
"@unchainedshop/logger": "^4.0.0
|
|
37
|
-
"@unchainedshop/utils": "^4.0.0
|
|
35
|
+
"@unchainedshop/events": "^4.0.0",
|
|
36
|
+
"@unchainedshop/logger": "^4.0.0",
|
|
37
|
+
"@unchainedshop/utils": "^4.0.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^24.0.13",
|
|
@@ -8,7 +8,7 @@ export enum OrderDeliveryStatus {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export type OrderDelivery = {
|
|
11
|
-
_id
|
|
11
|
+
_id: string;
|
|
12
12
|
orderId: string;
|
|
13
13
|
deliveryProviderId: string;
|
|
14
14
|
delivered?: Date;
|
|
@@ -19,7 +19,7 @@ export type OrderDelivery = {
|
|
|
19
19
|
TimestampFields;
|
|
20
20
|
|
|
21
21
|
export type OrderDeliveryDiscount = Omit<Price, '_id'> & {
|
|
22
|
-
_id
|
|
22
|
+
_id: string;
|
|
23
23
|
discountId: string;
|
|
24
24
|
item: OrderDelivery;
|
|
25
25
|
};
|
|
@@ -2,12 +2,12 @@ import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb
|
|
|
2
2
|
import { Price } from '@unchainedshop/utils';
|
|
3
3
|
|
|
4
4
|
export type OrderDiscount = {
|
|
5
|
-
_id
|
|
5
|
+
_id: string;
|
|
6
6
|
orderId: string;
|
|
7
7
|
code?: string;
|
|
8
8
|
total?: Price;
|
|
9
9
|
trigger?: OrderDiscountTrigger;
|
|
10
|
-
discountKey
|
|
10
|
+
discountKey: string;
|
|
11
11
|
reservation?: any;
|
|
12
12
|
context?: any;
|
|
13
13
|
} & TimestampFields;
|
|
@@ -8,19 +8,19 @@ export enum OrderPaymentStatus {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export type OrderPayment = {
|
|
11
|
-
_id
|
|
11
|
+
_id: string;
|
|
12
12
|
orderId: string;
|
|
13
13
|
context?: any;
|
|
14
14
|
paid?: Date;
|
|
15
15
|
transactionId?: string;
|
|
16
|
-
paymentProviderId
|
|
16
|
+
paymentProviderId: string;
|
|
17
17
|
status?: OrderPaymentStatus | null;
|
|
18
18
|
calculation?: any[];
|
|
19
19
|
} & LogFields &
|
|
20
20
|
TimestampFields;
|
|
21
21
|
|
|
22
22
|
export type OrderPaymentDiscount = Omit<Price, '_id'> & {
|
|
23
|
-
_id
|
|
23
|
+
_id: string;
|
|
24
24
|
discountId: string;
|
|
25
25
|
item: OrderPayment;
|
|
26
26
|
};
|
|
@@ -2,7 +2,7 @@ import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb
|
|
|
2
2
|
import { Price } from '@unchainedshop/utils';
|
|
3
3
|
|
|
4
4
|
export type OrderPosition = {
|
|
5
|
-
_id
|
|
5
|
+
_id: string;
|
|
6
6
|
calculation: any[];
|
|
7
7
|
configuration: { key: string; value: string }[];
|
|
8
8
|
context?: any;
|
|
@@ -15,7 +15,6 @@ export type OrderPosition = {
|
|
|
15
15
|
} & TimestampFields;
|
|
16
16
|
|
|
17
17
|
export type OrderPositionDiscount = Omit<Price, '_id'> & {
|
|
18
|
-
_id?: string;
|
|
19
18
|
discountId: string;
|
|
20
19
|
item: OrderPosition;
|
|
21
20
|
};
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
TimestampFields,
|
|
8
8
|
isDocumentDBCompatModeEnabled,
|
|
9
9
|
} from '@unchainedshop/mongodb';
|
|
10
|
+
import { DateFilterInput } from '@unchainedshop/utils';
|
|
10
11
|
|
|
11
12
|
export enum OrderStatus {
|
|
12
13
|
PENDING = 'PENDING',
|
|
@@ -16,7 +17,7 @@ export enum OrderStatus {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export type Order = {
|
|
19
|
-
_id
|
|
20
|
+
_id: string;
|
|
20
21
|
billingAddress?: Address;
|
|
21
22
|
calculation: any[];
|
|
22
23
|
confirmed?: Date;
|
|
@@ -41,37 +42,45 @@ export interface OrderQuery extends mongodb.Filter<Order> {
|
|
|
41
42
|
queryString?: string;
|
|
42
43
|
status?: OrderStatus[];
|
|
43
44
|
userId?: string;
|
|
45
|
+
deliveryIds?: string[];
|
|
46
|
+
paymentIds?: string[];
|
|
47
|
+
dateRange?: DateFilterInput;
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
export const OrdersCollection = async (db: mongodb.Db) => {
|
|
47
51
|
const Orders = db.collection<Order>('orders');
|
|
48
52
|
|
|
53
|
+
if (!isDocumentDBCompatModeEnabled()) {
|
|
54
|
+
await buildDbIndexes<Order>(Orders, [
|
|
55
|
+
{
|
|
56
|
+
index: {
|
|
57
|
+
_id: 'text',
|
|
58
|
+
userId: 'text',
|
|
59
|
+
orderNumber: 'text',
|
|
60
|
+
status: 'text',
|
|
61
|
+
'contact.emailAddress': 'text',
|
|
62
|
+
'contact.telNumber': 'text',
|
|
63
|
+
} as any,
|
|
64
|
+
options: {
|
|
65
|
+
weights: {
|
|
66
|
+
_id: 8,
|
|
67
|
+
userId: 3,
|
|
68
|
+
orderNumber: 6,
|
|
69
|
+
'contact.telNumber': 5,
|
|
70
|
+
'contact.emailAddress': 4,
|
|
71
|
+
status: 1,
|
|
72
|
+
},
|
|
73
|
+
name: 'order_fulltext_search',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
|
|
49
79
|
// Order Indexes
|
|
50
80
|
await buildDbIndexes<Order>(Orders, [
|
|
51
81
|
{ index: { userId: 1 } },
|
|
52
82
|
{ index: { status: 1 } },
|
|
53
83
|
{ index: { orderNumber: 1 } },
|
|
54
|
-
!isDocumentDBCompatModeEnabled() && {
|
|
55
|
-
index: {
|
|
56
|
-
_id: 'text',
|
|
57
|
-
userId: 'text',
|
|
58
|
-
orderNumber: 'text',
|
|
59
|
-
status: 'text',
|
|
60
|
-
'contact.emailAddress': 'text',
|
|
61
|
-
'contact.telNumber': 'text',
|
|
62
|
-
} as any,
|
|
63
|
-
options: {
|
|
64
|
-
weights: {
|
|
65
|
-
_id: 8,
|
|
66
|
-
userId: 3,
|
|
67
|
-
orderNumber: 6,
|
|
68
|
-
'contact.telNumber': 5,
|
|
69
|
-
'contact.emailAddress': 4,
|
|
70
|
-
status: 1,
|
|
71
|
-
},
|
|
72
|
-
name: 'order_fulltext_search',
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
84
|
]);
|
|
76
85
|
|
|
77
86
|
return Orders;
|
|
@@ -6,6 +6,9 @@ export const buildFindSelector = ({
|
|
|
6
6
|
status,
|
|
7
7
|
userId,
|
|
8
8
|
queryString,
|
|
9
|
+
paymentIds,
|
|
10
|
+
deliveryIds,
|
|
11
|
+
dateRange,
|
|
9
12
|
...rest
|
|
10
13
|
}: OrderQuery) => {
|
|
11
14
|
const selector: mongodb.Filter<Order> = { ...rest };
|
|
@@ -13,13 +16,28 @@ export const buildFindSelector = ({
|
|
|
13
16
|
if (userId) {
|
|
14
17
|
selector.userId = userId;
|
|
15
18
|
}
|
|
19
|
+
if (dateRange) {
|
|
20
|
+
const dateFilter: mongodb.Filter<Order> = {};
|
|
21
|
+
if (dateRange.start) dateFilter.$gte = new Date(dateRange.start);
|
|
22
|
+
if (dateRange.end) dateFilter.$lte = new Date(dateRange.end);
|
|
23
|
+
if (Object.keys(dateFilter).length > 0) {
|
|
24
|
+
selector.ordered = dateFilter;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (Array.isArray(deliveryIds) && deliveryIds?.length) {
|
|
29
|
+
selector.deliveryId = { $in: deliveryIds };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (Array.isArray(paymentIds) && paymentIds?.length) {
|
|
33
|
+
selector.paymentId = { $in: paymentIds };
|
|
34
|
+
}
|
|
16
35
|
|
|
17
36
|
if (Array.isArray(status) && status?.length) {
|
|
18
37
|
selector.status = { $in: status };
|
|
19
38
|
} else if (!includeCarts) {
|
|
20
39
|
selector.status = { $ne: null }; // TODO: Slow performance! IDXSCAN in common query!
|
|
21
40
|
}
|
|
22
|
-
|
|
23
41
|
if (queryString) {
|
|
24
42
|
assertDocumentDBCompatMode();
|
|
25
43
|
(selector as any).$text = { $search: queryString };
|
|
@@ -24,7 +24,7 @@ export const configureOrderDeliveriesModule = ({
|
|
|
24
24
|
const updateStatus = async (
|
|
25
25
|
orderDeliveryId: string,
|
|
26
26
|
{ status, info }: { status: OrderDeliveryStatus; info?: string },
|
|
27
|
-
)
|
|
27
|
+
) => {
|
|
28
28
|
const date = new Date();
|
|
29
29
|
const modifier: mongodb.UpdateFilter<OrderDelivery> = {
|
|
30
30
|
$set: { status, updated: new Date() },
|
|
@@ -51,15 +51,28 @@ export const configureOrderDeliveriesModule = ({
|
|
|
51
51
|
findDelivery: async (
|
|
52
52
|
{ orderDeliveryId }: { orderDeliveryId: string },
|
|
53
53
|
options?: mongodb.FindOptions,
|
|
54
|
-
)
|
|
54
|
+
) => {
|
|
55
55
|
return OrderDeliveries.findOne(buildFindByIdSelector(orderDeliveryId), options);
|
|
56
56
|
},
|
|
57
57
|
|
|
58
|
+
findDeliveryByProvidersId: async (
|
|
59
|
+
{ deliveryProviderIds }: { deliveryProviderIds: string[] },
|
|
60
|
+
options?: mongodb.FindOptions,
|
|
61
|
+
): Promise<OrderDelivery[]> => {
|
|
62
|
+
if (!deliveryProviderIds?.length) return [];
|
|
63
|
+
return OrderDeliveries.find(
|
|
64
|
+
{ deliveryProviderId: { $in: deliveryProviderIds } },
|
|
65
|
+
options,
|
|
66
|
+
).toArray();
|
|
67
|
+
},
|
|
68
|
+
|
|
58
69
|
normalizedStatus,
|
|
59
70
|
|
|
60
71
|
// Mutations
|
|
61
72
|
|
|
62
|
-
create: async (
|
|
73
|
+
create: async (
|
|
74
|
+
doc: Omit<OrderDelivery, '_id' | 'created'> & Pick<Partial<OrderDelivery>, '_id' | 'created'>,
|
|
75
|
+
) => {
|
|
63
76
|
const { insertedId: orderDeliveryId } = await OrderDeliveries.insertOne({
|
|
64
77
|
_id: generateDbObjectId(),
|
|
65
78
|
created: new Date(),
|
|
@@ -68,7 +81,9 @@ export const configureOrderDeliveriesModule = ({
|
|
|
68
81
|
status: null,
|
|
69
82
|
});
|
|
70
83
|
|
|
71
|
-
const orderDelivery = await OrderDeliveries.findOne(
|
|
84
|
+
const orderDelivery = (await OrderDeliveries.findOne(
|
|
85
|
+
buildFindByIdSelector(orderDeliveryId),
|
|
86
|
+
)) as OrderDelivery;
|
|
72
87
|
return orderDelivery;
|
|
73
88
|
},
|
|
74
89
|
|
|
@@ -87,14 +102,14 @@ export const configureOrderDeliveriesModule = ({
|
|
|
87
102
|
return updatedOrderDelivery;
|
|
88
103
|
},
|
|
89
104
|
|
|
90
|
-
updateContext: async (orderDeliveryId: string, context: any)
|
|
105
|
+
updateContext: async (orderDeliveryId: string, context: any) => {
|
|
91
106
|
const selector = buildFindByIdSelector(orderDeliveryId);
|
|
92
107
|
if (!context || Object.keys(context).length === 0) return OrderDeliveries.findOne(selector, {});
|
|
93
108
|
const contextSetters = Object.fromEntries(
|
|
94
109
|
Object.entries(context).map(([key, value]) => [`context.${key}`, value]),
|
|
95
110
|
);
|
|
96
111
|
|
|
97
|
-
const
|
|
112
|
+
const orderDelivery = await OrderDeliveries.findOneAndUpdate(
|
|
98
113
|
selector,
|
|
99
114
|
{
|
|
100
115
|
$set: {
|
|
@@ -102,17 +117,14 @@ export const configureOrderDeliveriesModule = ({
|
|
|
102
117
|
updated: new Date(),
|
|
103
118
|
},
|
|
104
119
|
},
|
|
105
|
-
{
|
|
120
|
+
{ returnDocument: 'after' },
|
|
106
121
|
);
|
|
107
122
|
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return null;
|
|
123
|
+
if (!orderDelivery) return null;
|
|
124
|
+
await emit('ORDER_UPDATE_DELIVERY', {
|
|
125
|
+
orderDelivery,
|
|
126
|
+
});
|
|
127
|
+
return orderDelivery;
|
|
116
128
|
},
|
|
117
129
|
|
|
118
130
|
updateStatus,
|
|
@@ -120,7 +132,7 @@ export const configureOrderDeliveriesModule = ({
|
|
|
120
132
|
updateCalculation: async <T extends PricingCalculation>(
|
|
121
133
|
orderDeliveryId: string,
|
|
122
134
|
calculation: T[],
|
|
123
|
-
)
|
|
135
|
+
) => {
|
|
124
136
|
return OrderDeliveries.findOneAndUpdate(
|
|
125
137
|
{ _id: orderDeliveryId },
|
|
126
138
|
{
|
|
@@ -20,10 +20,7 @@ export const configureOrderDiscountsModule = ({
|
|
|
20
20
|
|
|
21
21
|
return {
|
|
22
22
|
// Queries
|
|
23
|
-
findOrderDiscount: async (
|
|
24
|
-
{ discountId }: { discountId: string },
|
|
25
|
-
options?: mongodb.FindOptions,
|
|
26
|
-
): Promise<OrderDiscount> => {
|
|
23
|
+
findOrderDiscount: async ({ discountId }: { discountId: string }, options?: mongodb.FindOptions) => {
|
|
27
24
|
return OrderDiscounts.findOne(buildFindOrderDiscountByIdSelector(discountId), options);
|
|
28
25
|
},
|
|
29
26
|
|
|
@@ -32,7 +29,10 @@ export const configureOrderDiscountsModule = ({
|
|
|
32
29
|
return discounts.toArray();
|
|
33
30
|
},
|
|
34
31
|
|
|
35
|
-
create: async (
|
|
32
|
+
create: async (
|
|
33
|
+
doc: Omit<OrderDiscount, '_id' | 'created' | 'trigger'> &
|
|
34
|
+
Pick<Partial<OrderDiscount>, '_id' | 'created' | 'trigger'>,
|
|
35
|
+
): Promise<OrderDiscount> => {
|
|
36
36
|
const normalizedTrigger = doc.trigger || OrderDiscountTrigger.USER;
|
|
37
37
|
const { insertedId: discountId } = await OrderDiscounts.insertOne({
|
|
38
38
|
_id: generateDbObjectId(),
|
|
@@ -40,14 +40,14 @@ export const configureOrderDiscountsModule = ({
|
|
|
40
40
|
...doc,
|
|
41
41
|
trigger: normalizedTrigger,
|
|
42
42
|
});
|
|
43
|
-
const discount = await OrderDiscounts.findOne({
|
|
43
|
+
const discount = (await OrderDiscounts.findOne({
|
|
44
44
|
_id: discountId,
|
|
45
|
-
});
|
|
45
|
+
})) as OrderDiscount;
|
|
46
46
|
await emit('ORDER_CREATE_DISCOUNT', { discount });
|
|
47
47
|
return discount;
|
|
48
48
|
},
|
|
49
49
|
|
|
50
|
-
delete: async (orderDiscountId: string)
|
|
50
|
+
delete: async (orderDiscountId: string) => {
|
|
51
51
|
const selector = buildFindOrderDiscountByIdSelector(orderDiscountId);
|
|
52
52
|
const orderDiscount = await OrderDiscounts.findOneAndDelete(selector);
|
|
53
53
|
await emit('ORDER_REMOVE_DISCOUNT', { discount: orderDiscount });
|
|
@@ -63,14 +63,14 @@ export const configureOrderDiscountsModule = ({
|
|
|
63
63
|
);
|
|
64
64
|
},
|
|
65
65
|
|
|
66
|
-
findSpareDiscount: async ({ code })
|
|
66
|
+
findSpareDiscount: async ({ code }) => {
|
|
67
67
|
return OrderDiscounts.findOne({
|
|
68
68
|
code,
|
|
69
|
-
orderId: { $
|
|
69
|
+
orderId: { $exists: false },
|
|
70
70
|
});
|
|
71
71
|
},
|
|
72
72
|
|
|
73
|
-
update: async (orderDiscountId: string, doc:
|
|
73
|
+
update: async (orderDiscountId: string, doc: Partial<OrderDiscount>) => {
|
|
74
74
|
const discount = await OrderDiscounts.findOneAndUpdate(
|
|
75
75
|
{ _id: orderDiscountId },
|
|
76
76
|
{
|
|
@@ -8,7 +8,7 @@ const ORDER_PAYMENT_EVENTS: string[] = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYM
|
|
|
8
8
|
export const buildFindOrderPaymentByIdSelector = (orderPaymentId: string) =>
|
|
9
9
|
generateDbFilterById(orderPaymentId) as mongodb.Filter<OrderPayment>;
|
|
10
10
|
|
|
11
|
-
export const buildFindByContextDataSelector = (context: any)
|
|
11
|
+
export const buildFindByContextDataSelector = (context: any) => {
|
|
12
12
|
const contextKeys = Object.keys(context);
|
|
13
13
|
|
|
14
14
|
if (contextKeys.length === 0) return null;
|
|
@@ -46,7 +46,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
46
46
|
status,
|
|
47
47
|
info,
|
|
48
48
|
}: { transactionId?: string; status: OrderPaymentStatus; info?: string },
|
|
49
|
-
)
|
|
49
|
+
) => {
|
|
50
50
|
const date = new Date();
|
|
51
51
|
const modifier: mongodb.UpdateFilter<OrderPayment> = {
|
|
52
52
|
$set: { status, updated: new Date() },
|
|
@@ -82,9 +82,21 @@ export const configureOrderPaymentsModule = ({
|
|
|
82
82
|
orderPaymentId: string;
|
|
83
83
|
},
|
|
84
84
|
options?: mongodb.FindOptions,
|
|
85
|
-
)
|
|
85
|
+
) => {
|
|
86
86
|
return OrderPayments.findOne(buildFindOrderPaymentByIdSelector(orderPaymentId), options);
|
|
87
87
|
},
|
|
88
|
+
|
|
89
|
+
findOrderPaymentsByProviderIds: async (
|
|
90
|
+
{
|
|
91
|
+
paymentProviderIds,
|
|
92
|
+
}: {
|
|
93
|
+
paymentProviderIds: string[];
|
|
94
|
+
},
|
|
95
|
+
options?: mongodb.FindOptions,
|
|
96
|
+
): Promise<OrderPayment[]> => {
|
|
97
|
+
if (!paymentProviderIds?.length) return [];
|
|
98
|
+
return OrderPayments.find({ paymentProviderId: { $in: paymentProviderIds } }, options).toArray();
|
|
99
|
+
},
|
|
88
100
|
findOrderPaymentByContextData: async (
|
|
89
101
|
{
|
|
90
102
|
context,
|
|
@@ -92,9 +104,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
92
104
|
context: any;
|
|
93
105
|
},
|
|
94
106
|
options?: mongodb.FindOptions,
|
|
95
|
-
)
|
|
107
|
+
) => {
|
|
96
108
|
const selector = buildFindByContextDataSelector(context);
|
|
97
|
-
|
|
109
|
+
if (!selector) return null;
|
|
98
110
|
return OrderPayments.findOne(selector, options);
|
|
99
111
|
},
|
|
100
112
|
countOrderPaymentsByContextData: async (
|
|
@@ -106,7 +118,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
106
118
|
options?: mongodb.FindOptions,
|
|
107
119
|
) => {
|
|
108
120
|
const selector = buildFindByContextDataSelector(context);
|
|
109
|
-
|
|
121
|
+
if (!selector) return 0;
|
|
110
122
|
return OrderPayments.countDocuments(selector, options);
|
|
111
123
|
},
|
|
112
124
|
|
|
@@ -114,7 +126,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
114
126
|
|
|
115
127
|
// Mutations
|
|
116
128
|
|
|
117
|
-
create: async (
|
|
129
|
+
create: async (
|
|
130
|
+
doc: Omit<OrderPayment, '_id' | 'created'> & Pick<Partial<OrderPayment>, '_id' | 'created'>,
|
|
131
|
+
): Promise<OrderPayment> => {
|
|
118
132
|
const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
|
|
119
133
|
_id: generateDbObjectId(),
|
|
120
134
|
created: new Date(),
|
|
@@ -123,9 +137,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
123
137
|
context: doc.context || {},
|
|
124
138
|
});
|
|
125
139
|
|
|
126
|
-
const orderPayment = await OrderPayments.findOne(
|
|
140
|
+
const orderPayment = (await OrderPayments.findOne(
|
|
127
141
|
buildFindOrderPaymentByIdSelector(orderPaymentId),
|
|
128
|
-
);
|
|
142
|
+
)) as OrderPayment;
|
|
129
143
|
|
|
130
144
|
return orderPayment;
|
|
131
145
|
},
|
|
@@ -156,14 +170,14 @@ export const configureOrderPaymentsModule = ({
|
|
|
156
170
|
await emit('ORDER_PAY', { orderPayment });
|
|
157
171
|
},
|
|
158
172
|
|
|
159
|
-
updateContext: async (orderPaymentId: string, context: any)
|
|
173
|
+
updateContext: async (orderPaymentId: string, context: any) => {
|
|
160
174
|
const selector = buildFindOrderPaymentByIdSelector(orderPaymentId);
|
|
161
175
|
if (!context || Object.keys(context).length === 0) return OrderPayments.findOne(selector, {});
|
|
162
176
|
|
|
163
177
|
const contextSetters = Object.fromEntries(
|
|
164
178
|
Object.entries(context).map(([key, value]) => [`context.${key}`, value]),
|
|
165
179
|
);
|
|
166
|
-
const
|
|
180
|
+
const orderPayment = await OrderPayments.findOneAndUpdate(
|
|
167
181
|
selector,
|
|
168
182
|
{
|
|
169
183
|
$set: {
|
|
@@ -171,17 +185,14 @@ export const configureOrderPaymentsModule = ({
|
|
|
171
185
|
updated: new Date(),
|
|
172
186
|
},
|
|
173
187
|
},
|
|
174
|
-
{
|
|
188
|
+
{ returnDocument: 'after' },
|
|
175
189
|
);
|
|
176
190
|
|
|
177
|
-
if (
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return null;
|
|
191
|
+
if (!orderPayment) return null;
|
|
192
|
+
await emit('ORDER_UPDATE_PAYMENT', {
|
|
193
|
+
orderPayment,
|
|
194
|
+
});
|
|
195
|
+
return orderPayment;
|
|
185
196
|
},
|
|
186
197
|
|
|
187
198
|
updateStatus,
|