@unchainedshop/core-orders 3.0.0-alpha7 → 3.0.0-rc10
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 +21 -2
- package/lib/db/OrderDeliveriesCollection.d.ts.map +1 -1
- package/lib/db/OrderDeliveriesCollection.js +6 -0
- package/lib/db/OrderDeliveriesCollection.js.map +1 -1
- package/lib/db/OrderDiscountsCollection.d.ts +16 -2
- package/lib/db/OrderDiscountsCollection.d.ts.map +1 -1
- package/lib/db/OrderDiscountsCollection.js +5 -0
- package/lib/db/OrderDiscountsCollection.js.map +1 -1
- package/lib/db/OrderPaymentsCollection.d.ts +22 -2
- package/lib/db/OrderPaymentsCollection.d.ts.map +1 -1
- package/lib/db/OrderPaymentsCollection.js +6 -0
- package/lib/db/OrderPaymentsCollection.js.map +1 -1
- package/lib/db/OrderPositionsCollection.d.ts +22 -2
- package/lib/db/OrderPositionsCollection.d.ts.map +1 -1
- package/lib/db/OrderPositionsCollection.js.map +1 -1
- package/lib/db/OrdersCollection.d.ts +33 -2
- package/lib/db/OrdersCollection.d.ts.map +1 -1
- package/lib/db/OrdersCollection.js +8 -1
- package/lib/db/OrdersCollection.js.map +1 -1
- package/lib/module/buildFindSelector.d.ts +5 -0
- package/lib/module/buildFindSelector.d.ts.map +1 -0
- package/lib/module/buildFindSelector.js +18 -0
- package/lib/module/buildFindSelector.js.map +1 -0
- package/lib/module/configureOrderDeliveriesModule.d.ts +14 -27
- package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.js +8 -69
- package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
- package/lib/module/configureOrderDiscountsModule.d.ts +17 -18
- package/lib/module/configureOrderDiscountsModule.d.ts.map +1 -1
- package/lib/module/configureOrderDiscountsModule.js +34 -143
- package/lib/module/configureOrderDiscountsModule.js.map +1 -1
- package/lib/module/configureOrderPaymentsModule.d.ts +17 -37
- package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPaymentsModule.js +16 -124
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule.d.ts +22 -41
- package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPositionsModule.js +22 -85
- package/lib/module/configureOrderPositionsModule.js.map +1 -1
- package/lib/module/configureOrdersModule-mutations.d.ts +5 -11
- package/lib/module/configureOrdersModule-mutations.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-mutations.js +11 -50
- package/lib/module/configureOrdersModule-mutations.js.map +1 -1
- package/lib/module/configureOrdersModule-queries.d.ts +18 -6
- package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-queries.js +35 -22
- package/lib/module/configureOrdersModule-queries.js.map +1 -1
- package/lib/module/configureOrdersModule.d.ts +11 -8
- package/lib/module/configureOrdersModule.d.ts.map +1 -1
- package/lib/module/configureOrdersModule.js +134 -154
- package/lib/module/configureOrdersModule.js.map +1 -1
- package/lib/orders-index.d.ts +11 -8
- package/lib/orders-index.d.ts.map +1 -1
- package/lib/orders-index.js +11 -8
- package/lib/orders-index.js.map +1 -1
- package/lib/orders-settings.d.ts +4 -8
- package/lib/orders-settings.d.ts.map +1 -1
- package/lib/orders-settings.js.map +1 -1
- package/package.json +13 -13
- package/src/db/OrderDeliveriesCollection.ts +25 -2
- package/src/db/OrderDiscountsCollection.ts +18 -2
- package/src/db/OrderPaymentsCollection.ts +26 -2
- package/src/db/OrderPositionsCollection.ts +21 -2
- package/src/db/OrdersCollection.ts +44 -2
- package/src/module/buildFindSelector.test.ts +8 -8
- package/src/module/buildFindSelector.ts +24 -0
- package/src/module/configureOrderDeliveriesModule.ts +29 -172
- package/src/module/configureOrderDiscountsModule.ts +46 -213
- package/src/module/configureOrderPaymentsModule.ts +58 -266
- package/src/module/configureOrderPositionsModule.ts +57 -208
- package/src/module/configureOrdersModule-mutations.ts +13 -85
- package/src/module/configureOrdersModule-queries.ts +61 -29
- package/src/module/configureOrdersModule.ts +181 -264
- package/src/orders-index.ts +11 -10
- package/src/orders-settings.ts +5 -7
- package/tsconfig.json +5 -7
- package/lib/db/OrderDiscountTrigger.d.ts +0 -5
- package/lib/db/OrderDiscountTrigger.d.ts.map +0 -1
- package/lib/db/OrderDiscountTrigger.js +0 -6
- package/lib/db/OrderDiscountTrigger.js.map +0 -1
- package/lib/director/OrderDiscountAdapter.d.ts +0 -4
- package/lib/director/OrderDiscountAdapter.d.ts.map +0 -1
- package/lib/director/OrderDiscountAdapter.js +0 -3
- package/lib/director/OrderDiscountAdapter.js.map +0 -1
- package/lib/director/OrderDiscountConfiguration.d.ts +0 -6
- package/lib/director/OrderDiscountConfiguration.d.ts.map +0 -1
- package/lib/director/OrderDiscountConfiguration.js +0 -2
- package/lib/director/OrderDiscountConfiguration.js.map +0 -1
- package/lib/director/OrderDiscountDirector.d.ts +0 -3
- package/lib/director/OrderDiscountDirector.d.ts.map +0 -1
- package/lib/director/OrderDiscountDirector.js +0 -3
- package/lib/director/OrderDiscountDirector.js.map +0 -1
- package/lib/director/OrderPricingAdapter.d.ts +0 -22
- package/lib/director/OrderPricingAdapter.d.ts.map +0 -1
- package/lib/director/OrderPricingAdapter.js +0 -25
- package/lib/director/OrderPricingAdapter.js.map +0 -1
- package/lib/director/OrderPricingDirector.d.ts +0 -18
- package/lib/director/OrderPricingDirector.d.ts.map +0 -1
- package/lib/director/OrderPricingDirector.js +0 -39
- package/lib/director/OrderPricingDirector.js.map +0 -1
- package/lib/director/OrderPricingSheet.d.ts +0 -36
- package/lib/director/OrderPricingSheet.d.ts.map +0 -1
- package/lib/director/OrderPricingSheet.js +0 -108
- package/lib/director/OrderPricingSheet.js.map +0 -1
- package/lib/module/configureOrdersModule-processing.d.ts +0 -32
- package/lib/module/configureOrdersModule-processing.d.ts.map +0 -1
- package/lib/module/configureOrdersModule-processing.js +0 -339
- package/lib/module/configureOrdersModule-processing.js.map +0 -1
- package/lib/module/configureOrdersModule-transformations.d.ts +0 -20
- package/lib/module/configureOrdersModule-transformations.d.ts.map +0 -1
- package/lib/module/configureOrdersModule-transformations.js +0 -111
- package/lib/module/configureOrdersModule-transformations.js.map +0 -1
- package/lib/service/migrateOrderCartService.d.ts +0 -10
- package/lib/service/migrateOrderCartService.d.ts.map +0 -1
- package/lib/service/migrateOrderCartService.js +0 -32
- package/lib/service/migrateOrderCartService.js.map +0 -1
- package/lib/service/nextUserCartService.d.ts +0 -11
- package/lib/service/nextUserCartService.d.ts.map +0 -1
- package/lib/service/nextUserCartService.js +0 -34
- package/lib/service/nextUserCartService.js.map +0 -1
- package/lib/service/orderServices.d.ts +0 -8
- package/lib/service/orderServices.d.ts.map +0 -1
- package/lib/service/orderServices.js +0 -7
- package/lib/service/orderServices.js.map +0 -1
- package/lib/types.d.ts +0 -116
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js +0 -25
- package/lib/types.js.map +0 -1
- package/src/db/OrderDiscountTrigger.ts +0 -4
- package/src/director/OrderDiscountAdapter.ts +0 -8
- package/src/director/OrderDiscountConfiguration.ts +0 -5
- package/src/director/OrderDiscountDirector.ts +0 -5
- package/src/director/OrderPricingAdapter.ts +0 -61
- package/src/director/OrderPricingDirector.ts +0 -72
- package/src/director/OrderPricingSheet.ts +0 -146
- package/src/module/configureOrdersModule-processing.ts +0 -508
- package/src/module/configureOrdersModule-transformations.ts +0 -171
- package/src/service/migrateOrderCartService.ts +0 -53
- package/src/service/nextUserCartService.ts +0 -54
- package/src/service/orderServices.ts +0 -12
- package/src/types.ts +0 -129
|
@@ -1,63 +1,44 @@
|
|
|
1
|
-
import type { OrderDiscount } from '@unchainedshop/core-orders';
|
|
2
|
-
import type { UnchainedCore } from '@unchainedshop/core';
|
|
3
|
-
import { IProductPricingSheet, Product } from '@unchainedshop/core-products';
|
|
4
|
-
import { Order, OrderPosition } from '../types.js';
|
|
5
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
export
|
|
9
|
-
|
|
2
|
+
import { PricingCalculation } from '@unchainedshop/utils';
|
|
3
|
+
import { OrderPosition } from '../db/OrderPositionsCollection.js';
|
|
4
|
+
export declare const buildFindOrderPositionByIdSelector: (orderPositionId: string, orderId?: string) => mongodb.Filter<OrderPosition>;
|
|
5
|
+
export declare const configureOrderPositionsModule: ({ OrderPositions, }: {
|
|
6
|
+
OrderPositions: mongodb.Collection<OrderPosition>;
|
|
7
|
+
}) => {
|
|
8
|
+
findOrderPosition: ({ itemId }: {
|
|
10
9
|
itemId: string;
|
|
11
10
|
}, options?: mongodb.FindOptions) => Promise<OrderPosition>;
|
|
12
|
-
findOrderPositions: (
|
|
11
|
+
findOrderPositions: ({ orderId }: {
|
|
13
12
|
orderId: string;
|
|
14
|
-
}) => Promise<
|
|
15
|
-
discounts: (orderPosition: OrderPosition, params: {
|
|
16
|
-
order: Order;
|
|
17
|
-
orderDiscount: OrderDiscount;
|
|
18
|
-
}, unchainedAPI: UnchainedCore) => Array<OrderPricingDiscount>;
|
|
19
|
-
pricingSheet: (orderPosition: OrderPosition, currency: string, unchainedAPI: UnchainedCore) => IProductPricingSheet;
|
|
13
|
+
}) => Promise<OrderPosition[]>;
|
|
20
14
|
delete: (orderPositionId: string) => Promise<OrderPosition>;
|
|
21
15
|
removePositions: ({ orderId }: {
|
|
22
16
|
orderId: string;
|
|
23
17
|
}) => Promise<number>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
context?: any;
|
|
18
|
+
updateProductItem: ({ orderPositionId, quantity, configuration, }: {
|
|
19
|
+
orderPositionId: string;
|
|
27
20
|
configuration?: Array<{
|
|
28
21
|
key: string;
|
|
29
22
|
value: string;
|
|
30
23
|
}>;
|
|
31
24
|
quantity?: number;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
updateScheduling: (params: {
|
|
38
|
-
order: Order;
|
|
39
|
-
orderDelivery: OrderDelivery;
|
|
40
|
-
orderPosition: OrderPosition;
|
|
41
|
-
}, unchainedAPI: UnchainedCore) => Promise<OrderPosition>;
|
|
42
|
-
updateCalculation: (orderPosition: OrderPosition, unchainedAPI: UnchainedCore) => Promise<OrderPosition>;
|
|
43
|
-
addProductItem: (doc: {
|
|
25
|
+
}) => Promise<OrderPosition>;
|
|
26
|
+
removeProductByIdFromAllOpenPositions: (productId: string) => Promise<Array<string>>;
|
|
27
|
+
updateScheduling: (orderPositionId: any, scheduling: any) => Promise<OrderPosition>;
|
|
28
|
+
updateCalculation: <T extends PricingCalculation>(orderPositionId: string, calculation: Array<T>) => Promise<OrderPosition>;
|
|
29
|
+
addProductItem: (orderPosition: {
|
|
44
30
|
context?: any;
|
|
45
31
|
configuration?: Array<{
|
|
46
32
|
key: string;
|
|
47
33
|
value: string;
|
|
48
34
|
}>;
|
|
49
|
-
orderId
|
|
50
|
-
originalProductId
|
|
51
|
-
productId
|
|
35
|
+
orderId: string;
|
|
36
|
+
originalProductId: string;
|
|
37
|
+
productId: string;
|
|
52
38
|
quantity: number;
|
|
53
39
|
quotationId?: string;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
product: Product;
|
|
57
|
-
}, unchainedAPI: UnchainedCore) => Promise<OrderPosition>;
|
|
40
|
+
}) => Promise<OrderPosition>;
|
|
41
|
+
deleteOrderPositions: (orderId: string) => Promise<number>;
|
|
58
42
|
};
|
|
59
|
-
export
|
|
60
|
-
export declare const configureOrderPositionsModule: ({ OrderPositions, }: {
|
|
61
|
-
OrderPositions: mongodb.Collection<OrderPosition>;
|
|
62
|
-
}) => OrderPositionsModule;
|
|
43
|
+
export type OrderPositionsModule = ReturnType<typeof configureOrderPositionsModule>;
|
|
63
44
|
//# sourceMappingURL=configureOrderPositionsModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrderPositionsModule.d.ts","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configureOrderPositionsModule.d.ts","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AASlE,eAAO,MAAM,kCAAkC,oBAAqB,MAAM,YAAY,MAAM,KAIrF,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAErC,eAAO,MAAM,6BAA6B,wBAEvC;IACD,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;CACnD;oCAMiB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,YACpB,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,aAAa,CAAC;sCAIe;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,aAAa,EAAE,CAAC;8BAKtD,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;mCAS1B;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,MAAM,CAAC;uEAUvE;QACD,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,aAAa,CAAC;uDAgC+B,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iEAoCjC,OAAO,CAAC,aAAa,CAAC;wBAYnD,CAAC,SAAS,kBAAkB,mBACnC,MAAM,eACV,KAAK,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,aAAa,CAAC;oCAYa;QACpC,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,aAAa,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAG,OAAO,CAAC,aAAa,CAAC;oCAwCY,MAAM;CAK/C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
|
|
@@ -1,41 +1,25 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
3
|
-
import { ordersSettings } from '../orders-settings.js';
|
|
4
3
|
const ORDER_POSITION_EVENTS = [
|
|
5
4
|
'ORDER_UPDATE_CART_ITEM',
|
|
6
5
|
'ORDER_REMOVE_CART_ITEM',
|
|
7
6
|
'ORDER_EMPTY_CART',
|
|
8
7
|
'ORDER_ADD_PRODUCT',
|
|
9
8
|
];
|
|
10
|
-
export const
|
|
9
|
+
export const buildFindOrderPositionByIdSelector = (orderPositionId, orderId) => generateDbFilterById(orderPositionId, orderId ? { orderId } : undefined);
|
|
11
10
|
export const configureOrderPositionsModule = ({ OrderPositions, }) => {
|
|
12
11
|
registerEvents(ORDER_POSITION_EVENTS);
|
|
13
12
|
return {
|
|
14
13
|
// Queries
|
|
15
14
|
findOrderPosition: async ({ itemId }, options) => {
|
|
16
|
-
return OrderPositions.findOne(
|
|
15
|
+
return OrderPositions.findOne(buildFindOrderPositionByIdSelector(itemId), options);
|
|
17
16
|
},
|
|
18
17
|
findOrderPositions: async ({ orderId }) => {
|
|
19
18
|
const positions = OrderPositions.find({ orderId, quantity: { $gt: 0 } });
|
|
20
19
|
return positions.toArray();
|
|
21
20
|
},
|
|
22
|
-
// Transformations
|
|
23
|
-
discounts: (orderPosition, { order, orderDiscount }, unchainedAPI) => {
|
|
24
|
-
const pricingSheet = unchainedAPI.modules.orders.positions.pricingSheet(orderPosition, order.currency, unchainedAPI);
|
|
25
|
-
return pricingSheet.discountPrices(orderDiscount._id).map((discount) => ({
|
|
26
|
-
item: orderPosition,
|
|
27
|
-
...discount,
|
|
28
|
-
}));
|
|
29
|
-
},
|
|
30
|
-
pricingSheet: (orderPosition, currency, { modules }) => {
|
|
31
|
-
return modules.products.pricingSheet({
|
|
32
|
-
calculation: orderPosition.calculation,
|
|
33
|
-
currency,
|
|
34
|
-
quantity: orderPosition.quantity,
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
21
|
delete: async (orderPositionId) => {
|
|
38
|
-
const selector =
|
|
22
|
+
const selector = buildFindOrderPositionByIdSelector(orderPositionId);
|
|
39
23
|
const orderPosition = await OrderPositions.findOneAndDelete(selector, {});
|
|
40
24
|
await emit('ORDER_REMOVE_CART_ITEM', {
|
|
41
25
|
orderPosition,
|
|
@@ -47,28 +31,21 @@ export const configureOrderPositionsModule = ({ OrderPositions, }) => {
|
|
|
47
31
|
await emit('ORDER_EMPTY_CART', { orderId, count: result.deletedCount });
|
|
48
32
|
return result.deletedCount;
|
|
49
33
|
},
|
|
50
|
-
updateProductItem: async ({ quantity, configuration
|
|
51
|
-
const selector = buildFindByIdSelector(orderPosition._id, order._id);
|
|
34
|
+
updateProductItem: async ({ orderPositionId, quantity, configuration, }) => {
|
|
52
35
|
const modifier = {
|
|
53
36
|
$set: {
|
|
54
37
|
updated: new Date(),
|
|
55
38
|
},
|
|
56
39
|
};
|
|
57
|
-
if (quantity !== null
|
|
40
|
+
if (quantity !== null) {
|
|
58
41
|
modifier.$set.quantity = quantity;
|
|
59
42
|
}
|
|
60
43
|
if (configuration !== null) {
|
|
61
|
-
const resolvedProduct = await unchainedAPI.modules.products.resolveOrderableProduct(product, { configuration }, unchainedAPI);
|
|
62
|
-
modifier.$set.productId = resolvedProduct._id;
|
|
63
44
|
modifier.$set.configuration = configuration;
|
|
64
45
|
}
|
|
65
|
-
await
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
configuration,
|
|
69
|
-
quantityDiff: quantity - orderPosition.quantity,
|
|
70
|
-
}, unchainedAPI);
|
|
71
|
-
const updatedOrderPosition = await OrderPositions.findOneAndUpdate(selector, modifier, {
|
|
46
|
+
const updatedOrderPosition = await OrderPositions.findOneAndUpdate({
|
|
47
|
+
_id: orderPositionId,
|
|
48
|
+
}, modifier, {
|
|
72
49
|
returnDocument: 'after',
|
|
73
50
|
});
|
|
74
51
|
await emit('ORDER_UPDATE_CART_ITEM', {
|
|
@@ -107,71 +84,27 @@ export const configureOrderPositionsModule = ({ OrderPositions, }) => {
|
|
|
107
84
|
const orderIdsToRecalculate = positions.map((o) => o.orderId);
|
|
108
85
|
return orderIdsToRecalculate;
|
|
109
86
|
},
|
|
110
|
-
updateScheduling: async (
|
|
111
|
-
|
|
112
|
-
// scheduling (store in db for auditing)
|
|
113
|
-
const product = await modules.products.findProduct({
|
|
114
|
-
productId: orderPosition.productId,
|
|
115
|
-
});
|
|
116
|
-
const deliveryProvider = orderDelivery &&
|
|
117
|
-
(await modules.delivery.findProvider({
|
|
118
|
-
deliveryProviderId: orderDelivery.deliveryProviderId,
|
|
119
|
-
}));
|
|
120
|
-
const { countryCode, userId } = order;
|
|
121
|
-
const scheduling = await Promise.all((await modules.warehousing.findSupported({
|
|
122
|
-
product,
|
|
123
|
-
deliveryProvider,
|
|
124
|
-
}, unchainedAPI)).map(async (warehousingProvider) => {
|
|
125
|
-
const context = {
|
|
126
|
-
warehousingProvider,
|
|
127
|
-
deliveryProvider,
|
|
128
|
-
product,
|
|
129
|
-
item: orderPosition,
|
|
130
|
-
delivery: deliveryProvider,
|
|
131
|
-
order,
|
|
132
|
-
userId,
|
|
133
|
-
country: countryCode,
|
|
134
|
-
referenceDate: order.ordered,
|
|
135
|
-
quantity: orderPosition.quantity,
|
|
136
|
-
};
|
|
137
|
-
const dispatch = await unchainedAPI.modules.warehousing.estimatedDispatch(warehousingProvider, context, unchainedAPI);
|
|
138
|
-
return {
|
|
139
|
-
warehousingProviderId: warehousingProvider._id,
|
|
140
|
-
...dispatch,
|
|
141
|
-
};
|
|
142
|
-
}));
|
|
143
|
-
return OrderPositions.findOneAndUpdate(generateDbFilterById(orderPosition._id), {
|
|
87
|
+
updateScheduling: async (orderPositionId, scheduling) => {
|
|
88
|
+
return OrderPositions.findOneAndUpdate(generateDbFilterById(orderPositionId), {
|
|
144
89
|
$set: { scheduling },
|
|
145
90
|
}, {
|
|
146
91
|
returnDocument: 'after',
|
|
147
92
|
});
|
|
148
93
|
},
|
|
149
|
-
updateCalculation: async (
|
|
150
|
-
|
|
151
|
-
return OrderPositions.findOneAndUpdate(buildFindByIdSelector(orderPosition._id), {
|
|
94
|
+
updateCalculation: async (orderPositionId, calculation) => {
|
|
95
|
+
return OrderPositions.findOneAndUpdate({ _id: orderPositionId }, {
|
|
152
96
|
$set: { calculation },
|
|
153
97
|
}, {
|
|
154
98
|
returnDocument: 'after',
|
|
155
99
|
});
|
|
156
100
|
},
|
|
157
|
-
addProductItem: async (orderPosition
|
|
158
|
-
const {
|
|
159
|
-
const { configuration, orderId: positionOrderId, quantity, ...scope } = orderPosition;
|
|
160
|
-
const orderId = order._id || positionOrderId;
|
|
161
|
-
// Resolve product
|
|
162
|
-
const resolvedProduct = await modules.products.resolveOrderableProduct(product, { configuration }, unchainedAPI);
|
|
163
|
-
// Validate add to cart mutation
|
|
164
|
-
await ordersSettings.validateOrderPosition({
|
|
165
|
-
order,
|
|
166
|
-
product,
|
|
167
|
-
configuration,
|
|
168
|
-
quantityDiff: quantity,
|
|
169
|
-
}, unchainedAPI);
|
|
101
|
+
addProductItem: async (orderPosition) => {
|
|
102
|
+
const { configuration, orderId, originalProductId, productId, quantity, ...scope } = orderPosition;
|
|
170
103
|
// Search for existing position
|
|
171
104
|
const selector = {
|
|
172
105
|
orderId,
|
|
173
|
-
productId
|
|
174
|
-
originalProductId
|
|
106
|
+
productId,
|
|
107
|
+
originalProductId,
|
|
175
108
|
configuration: configuration || { $in: [null, undefined] },
|
|
176
109
|
...scope,
|
|
177
110
|
};
|
|
@@ -186,8 +119,8 @@ export const configureOrderPositionsModule = ({ OrderPositions, }) => {
|
|
|
186
119
|
calculation: [],
|
|
187
120
|
scheduling: [],
|
|
188
121
|
orderId,
|
|
189
|
-
productId
|
|
190
|
-
originalProductId
|
|
122
|
+
productId,
|
|
123
|
+
originalProductId,
|
|
191
124
|
configuration,
|
|
192
125
|
...scope,
|
|
193
126
|
},
|
|
@@ -196,6 +129,10 @@ export const configureOrderPositionsModule = ({ OrderPositions, }) => {
|
|
|
196
129
|
await emit('ORDER_ADD_PRODUCT', { orderPosition: upsertedOrderPosition });
|
|
197
130
|
return upsertedOrderPosition;
|
|
198
131
|
},
|
|
132
|
+
deleteOrderPositions: async (orderId) => {
|
|
133
|
+
const { deletedCount } = await OrderPositions.deleteMany({ orderId });
|
|
134
|
+
return deletedCount;
|
|
135
|
+
},
|
|
199
136
|
};
|
|
200
137
|
};
|
|
201
138
|
//# sourceMappingURL=configureOrderPositionsModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrderPositionsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configureOrderPositionsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAW,MAAM,wBAAwB,CAAC;AAI3F,MAAM,qBAAqB,GAAa;IACtC,wBAAwB;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,eAAuB,EAAE,OAAgB,EAAE,EAAE,CAC9F,oBAAoB,CAClB,eAAe,EACf,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CACD,CAAC;AAErC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,cAAc,GAGf,EAAE,EAAE;IACH,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtC,OAAO;QACL,UAAU;QACV,iBAAiB,EAAE,KAAK,EACtB,EAAE,MAAM,EAAsB,EAC9B,OAA6B,EACL,EAAE;YAC1B,OAAO,cAAc,CAAC,OAAO,CAAC,kCAAkC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;QAED,kBAAkB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAuB,EAA4B,EAAE;YACvF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzE,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,eAAuB,EAA0B,EAAE;YAChE,MAAM,QAAQ,GAAG,kCAAkC,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,wBAAwB,EAAE;gBACnC,aAAa;aACd,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,aAAa,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC/C,CAAC;QAED,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAuB,EAAmB,EAAE;YAC3E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5D,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;QAED,iBAAiB,EAAE,KAAK,EAAE,EACxB,eAAe,EACf,QAAQ,EACR,aAAa,GAKd,EAA0B,EAAE;YAC3B,MAAM,QAAQ,GAAQ;gBACpB,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB;aACF,CAAC;YAEF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACpC,CAAC;YAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YAC9C,CAAC;YAED,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAChE;gBACE,GAAG,EAAE,eAAe;aACrB,EACD,QAAQ,EACR;gBACE,cAAc,EAAE,OAAO;aACxB,CACF,CAAC;YAEF,MAAM,IAAI,CAAC,wBAAwB,EAAE;gBACnC,aAAa,EAAE,oBAAoB;aACpC,CAAC,CAAC;YAEH,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,qCAAqC,EAAE,KAAK,EAAE,SAAiB,EAA0B,EAAE;YACzF,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC;gBAC/C;oBACE,MAAM,EAAE;wBACN,SAAS;qBACV;iBACF;gBACD;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,SAAS;wBACrB,YAAY,EAAE,KAAK;wBACnB,EAAE,EAAE,OAAO;qBACZ;iBACF;gBACD;oBACE,MAAM,EAAE;wBACN,cAAc,EAAE,IAAI;qBACrB;iBACF;aACF,CAAC,CAAC,OAAO,EAAE,CAAC;YAEb,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACpC,MAAM,IAAI,CAAC,wBAAwB,EAAE;oBACnC,aAAa;iBACd,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,qBAAqB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QAED,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAA0B,EAAE;YAC9E,OAAO,cAAc,CAAC,gBAAgB,CACpC,oBAAoB,CAAC,eAAe,CAAC,EACrC;gBACE,IAAI,EAAE,EAAE,UAAU,EAAE;aACrB,EACD;gBACE,cAAc,EAAE,OAAO;aACxB,CACF,CAAC;QACJ,CAAC;QAED,iBAAiB,EAAE,KAAK,EACtB,eAAuB,EACvB,WAAqB,EACG,EAAE;YAC1B,OAAO,cAAc,CAAC,gBAAgB,CACpC,EAAE,GAAG,EAAE,eAAe,EAAE,EACxB;gBACE,IAAI,EAAE,EAAE,WAAW,EAAE;aACtB,EACD;gBACE,cAAc,EAAE,OAAO;aACxB,CACF,CAAC;QACJ,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,aAQtB,EAA0B,EAAE;YAC3B,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,aAAa,CAAC;YAEnG,+BAA+B;YAC/B,MAAM,QAAQ,GAAkC;gBAC9C,OAAO;gBACP,SAAS;gBACT,iBAAiB;gBACjB,aAAa,EAAE,aAAa,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;gBAC1D,GAAG,KAAK;aACT,CAAC;YAEF,MAAM,cAAc,CAAC,SAAS,CAC5B,QAAQ,EACR;gBACE,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB;gBACD,IAAI,EAAE,EAAE,QAAQ,EAAE;gBAClB,YAAY,EAAE;oBACZ,GAAG,EAAE,kBAAkB,EAAE;oBACzB,OAAO,EAAE,IAAI,IAAI,EAAE;oBACnB,WAAW,EAAE,EAAE;oBACf,UAAU,EAAE,EAAE;oBACd,OAAO;oBACP,SAAS;oBACT,iBAAiB;oBACjB,aAAa;oBACb,GAAG,KAAK;iBACT;aACF,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;YAEF,MAAM,qBAAqB,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAErE,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAE1E,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,oBAAoB,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;YAC9C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACtE,OAAO,YAAY,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
|
-
import { Order } from '../types.js';
|
|
3
|
-
import { OrderDelivery } from '@unchainedshop/core-orders';
|
|
4
|
-
import { OrderPayment } from '@unchainedshop/core-orders';
|
|
5
1
|
import { Address, Contact, mongodb } from '@unchainedshop/mongodb';
|
|
6
|
-
import {
|
|
2
|
+
import { Order } from '../db/OrdersCollection.js';
|
|
3
|
+
import { OrderPosition } from '../db/OrderPositionsCollection.js';
|
|
7
4
|
export interface OrderMutations {
|
|
8
5
|
create: (doc: {
|
|
9
6
|
userId: string;
|
|
@@ -23,16 +20,13 @@ export interface OrderMutations {
|
|
|
23
20
|
fromOrderId: string;
|
|
24
21
|
toOrderId: string;
|
|
25
22
|
}) => Promise<void>;
|
|
26
|
-
setDeliveryProvider: (orderId: string, deliveryProviderId: string, unchainedAPI: UnchainedCore) => Promise<Order>;
|
|
27
|
-
setPaymentProvider: (orderId: string, paymentProviderId: string, unchainedAPI: UnchainedCore) => Promise<Order>;
|
|
28
23
|
updateBillingAddress: (orderId: string, billingAddress: Address) => Promise<Order>;
|
|
29
24
|
updateContact: (orderId: string, contact: Contact) => Promise<Order>;
|
|
30
|
-
updateContext: (orderId: string, context: any) => Promise<Order
|
|
25
|
+
updateContext: (orderId: string, context: any) => Promise<Order>;
|
|
26
|
+
updateCalculationSheet: (orderId: string, calculation: any) => Promise<Order>;
|
|
31
27
|
}
|
|
32
|
-
export declare const configureOrderModuleMutations: ({ Orders,
|
|
28
|
+
export declare const configureOrderModuleMutations: ({ Orders, OrderPositions, }: {
|
|
33
29
|
Orders: mongodb.Collection<Order>;
|
|
34
|
-
OrderDeliveries: mongodb.Collection<OrderDelivery>;
|
|
35
|
-
OrderPayments: mongodb.Collection<OrderPayment>;
|
|
36
30
|
OrderPositions: mongodb.Collection<OrderPosition>;
|
|
37
31
|
}) => OrderMutations;
|
|
38
32
|
//# sourceMappingURL=configureOrdersModule-mutations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrdersModule-mutations.d.ts","sourceRoot":"","sources":["../../src/module/configureOrdersModule-mutations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configureOrdersModule-mutations.d.ts","sourceRoot":"","sources":["../../src/module/configureOrdersModule-mutations.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,OAAO,EAGP,OAAO,EACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAe,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAErB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,YAAY,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzF,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACjE,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,KAAA,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;CAC1E;AAUD,eAAO,MAAM,6BAA6B,gCAGvC;IACD,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;CACnD,KAAG,cAgIH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { OrderStatus } from '../types.js';
|
|
2
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
3
2
|
import { generateDbFilterById, generateDbObjectId, } from '@unchainedshop/mongodb';
|
|
3
|
+
import { OrderStatus } from '../db/OrdersCollection.js';
|
|
4
4
|
const ORDER_EVENTS = [
|
|
5
5
|
'ORDER_CREATE',
|
|
6
6
|
'ORDER_REMOVE',
|
|
@@ -8,7 +8,7 @@ const ORDER_EVENTS = [
|
|
|
8
8
|
'ORDER_SET_PAYMENT_PROVIDER',
|
|
9
9
|
'ORDER_UPDATE',
|
|
10
10
|
];
|
|
11
|
-
export const configureOrderModuleMutations = ({ Orders,
|
|
11
|
+
export const configureOrderModuleMutations = ({ Orders, OrderPositions, }) => {
|
|
12
12
|
registerEvents(ORDER_EVENTS);
|
|
13
13
|
return {
|
|
14
14
|
create: async ({ userId, orderNumber, currency, countryCode, billingAddress, contact }) => {
|
|
@@ -48,76 +48,37 @@ export const configureOrderModuleMutations = ({ Orders, OrderDeliveries, OrderPa
|
|
|
48
48
|
},
|
|
49
49
|
});
|
|
50
50
|
},
|
|
51
|
-
|
|
52
|
-
const delivery = await OrderDeliveries.findOne({
|
|
53
|
-
orderId,
|
|
54
|
-
deliveryProviderId,
|
|
55
|
-
});
|
|
56
|
-
const deliveryId = delivery?._id ||
|
|
57
|
-
(await modules.orders.deliveries.create({
|
|
58
|
-
calculation: [],
|
|
59
|
-
deliveryProviderId,
|
|
60
|
-
log: [],
|
|
61
|
-
orderId,
|
|
62
|
-
status: null,
|
|
63
|
-
}))._id;
|
|
51
|
+
updateBillingAddress: async (orderId, billingAddress) => {
|
|
64
52
|
const selector = generateDbFilterById(orderId);
|
|
65
53
|
const order = await Orders.findOneAndUpdate(selector, {
|
|
66
54
|
$set: {
|
|
67
|
-
|
|
55
|
+
billingAddress,
|
|
68
56
|
updated: new Date(),
|
|
69
57
|
},
|
|
70
58
|
}, { returnDocument: 'after' });
|
|
71
|
-
await emit('
|
|
72
|
-
order,
|
|
73
|
-
deliveryProviderId,
|
|
74
|
-
});
|
|
75
|
-
return order;
|
|
76
|
-
},
|
|
77
|
-
setPaymentProvider: async (orderId, paymentProviderId, unchainedAPI) => {
|
|
78
|
-
const { modules } = unchainedAPI;
|
|
79
|
-
const payment = await OrderPayments.findOne({
|
|
80
|
-
orderId,
|
|
81
|
-
paymentProviderId,
|
|
82
|
-
});
|
|
83
|
-
const paymentId = payment?._id ||
|
|
84
|
-
(await modules.orders.payments.create({
|
|
85
|
-
calculation: [],
|
|
86
|
-
paymentProviderId,
|
|
87
|
-
log: [],
|
|
88
|
-
orderId,
|
|
89
|
-
status: null,
|
|
90
|
-
}))._id;
|
|
91
|
-
const selector = generateDbFilterById(orderId);
|
|
92
|
-
const order = await Orders.findOneAndUpdate(selector, {
|
|
93
|
-
$set: { paymentId, updated: new Date() },
|
|
94
|
-
}, { returnDocument: 'after' });
|
|
95
|
-
await emit('ORDER_SET_PAYMENT_PROVIDER', {
|
|
96
|
-
order,
|
|
97
|
-
paymentProviderId,
|
|
98
|
-
});
|
|
59
|
+
await emit('ORDER_UPDATE', { order, field: 'billing' });
|
|
99
60
|
return order;
|
|
100
61
|
},
|
|
101
|
-
|
|
62
|
+
updateContact: async (orderId, contact) => {
|
|
102
63
|
const selector = generateDbFilterById(orderId);
|
|
103
64
|
const order = await Orders.findOneAndUpdate(selector, {
|
|
104
65
|
$set: {
|
|
105
|
-
|
|
66
|
+
contact,
|
|
106
67
|
updated: new Date(),
|
|
107
68
|
},
|
|
108
69
|
}, { returnDocument: 'after' });
|
|
109
|
-
await emit('ORDER_UPDATE', { order, field: '
|
|
70
|
+
await emit('ORDER_UPDATE', { order, field: 'contact' });
|
|
110
71
|
return order;
|
|
111
72
|
},
|
|
112
|
-
|
|
73
|
+
updateCalculationSheet: async (orderId, calculation) => {
|
|
113
74
|
const selector = generateDbFilterById(orderId);
|
|
114
75
|
const order = await Orders.findOneAndUpdate(selector, {
|
|
115
76
|
$set: {
|
|
116
|
-
|
|
77
|
+
calculation,
|
|
117
78
|
updated: new Date(),
|
|
118
79
|
},
|
|
119
80
|
}, { returnDocument: 'after' });
|
|
120
|
-
await emit('ORDER_UPDATE', { order, field: '
|
|
81
|
+
await emit('ORDER_UPDATE', { order, field: 'calculation' });
|
|
121
82
|
return order;
|
|
122
83
|
},
|
|
123
84
|
updateContext: async (orderId, context) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrdersModule-mutations.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-mutations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configureOrdersModule-mutations.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
import { SortOption } from '@unchainedshop/utils';
|
|
2
|
-
import { Order, OrderQuery, OrderReport } from '../types.js';
|
|
1
|
+
import { SortOption, DateFilterInput } from '@unchainedshop/utils';
|
|
3
2
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
4
|
-
|
|
3
|
+
import { Order, OrderQuery } from '../db/OrdersCollection.js';
|
|
4
|
+
export type OrderReport = {
|
|
5
|
+
newCount: number;
|
|
6
|
+
checkoutCount: number;
|
|
7
|
+
rejectCount: number;
|
|
8
|
+
confirmCount: number;
|
|
9
|
+
fulfillCount: number;
|
|
10
|
+
};
|
|
5
11
|
export declare const configureOrdersModuleQueries: ({ Orders }: {
|
|
6
12
|
Orders: mongodb.Collection<Order>;
|
|
7
13
|
}) => {
|
|
14
|
+
isCart: (order: Order) => boolean;
|
|
15
|
+
cart: ({ orderNumber, countryCode, userId, }: {
|
|
16
|
+
countryCode?: string;
|
|
17
|
+
orderNumber?: string;
|
|
18
|
+
userId: string;
|
|
19
|
+
}) => Promise<Order>;
|
|
8
20
|
count: (query: OrderQuery) => Promise<number>;
|
|
9
21
|
findOrder: ({ orderId, orderNumber, }: {
|
|
10
22
|
orderId?: string;
|
|
11
23
|
orderNumber?: string;
|
|
12
24
|
}, options?: mongodb.FindOptions) => Promise<Order>;
|
|
25
|
+
findCartsToInvalidate: (maxAgeDays?: number) => Promise<mongodb.WithId<Order>[]>;
|
|
13
26
|
findOrders: ({ limit, offset, queryString, sort, ...query }: OrderQuery & {
|
|
14
27
|
limit?: number;
|
|
15
28
|
offset?: number;
|
|
16
29
|
sort?: Array<SortOption>;
|
|
17
30
|
}, options?: mongodb.FindOptions) => Promise<Array<Order>>;
|
|
18
|
-
getReport: (params
|
|
19
|
-
|
|
20
|
-
to?: Date;
|
|
31
|
+
getReport: (params: {
|
|
32
|
+
dateRange?: DateFilterInput;
|
|
21
33
|
}) => Promise<OrderReport>;
|
|
22
34
|
orderExists: ({ orderId }: {
|
|
23
35
|
orderId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrdersModule-queries.d.ts","sourceRoot":"","sources":["../../src/module/configureOrdersModule-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"configureOrdersModule-queries.d.ts","sourceRoot":"","sources":["../../src/module/configureOrdersModule-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAA0C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAiBF,eAAO,MAAM,4BAA4B,eAAgB;IAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;CAAE;oBAE1E,KAAK;kDAQlB;QACD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,KAAG,OAAO,CAAC,KAAK,CAAC;mBAmBG,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC;2CAQ5C;QACD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,KAAK,CAAC;;iEAyBZ,UAAU,GAAG;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;KAC1B,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAoBE;QAAE,SAAS,CAAC,EAAE,eAAe,CAAA;KAAE,KAAG,OAAO,CAAC,WAAW,CAAC;+BAyE/C;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;CAO1E,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
import { SortDirection } from '@unchainedshop/utils';
|
|
2
2
|
import { generateDbFilterById, buildSortOptions } from '@unchainedshop/mongodb';
|
|
3
|
-
|
|
4
|
-
const selector = {};
|
|
5
|
-
if (userId) {
|
|
6
|
-
selector.userId = userId;
|
|
7
|
-
}
|
|
8
|
-
if (Array.isArray(status) && status?.length) {
|
|
9
|
-
selector.status = { $in: status };
|
|
10
|
-
}
|
|
11
|
-
else if (!includeCarts) {
|
|
12
|
-
selector.status = { $ne: null }; // TODO: Slow performance! IDXSCAN in common query!
|
|
13
|
-
}
|
|
14
|
-
if (queryString) {
|
|
15
|
-
selector.$text = { $search: queryString };
|
|
16
|
-
}
|
|
17
|
-
return selector;
|
|
18
|
-
};
|
|
3
|
+
import buildFindSelector from './buildFindSelector.js';
|
|
19
4
|
const normalizeOrderAggregateResult = (data = {}) => {
|
|
20
5
|
const statusToFieldMap = {
|
|
21
6
|
newCount: 0,
|
|
@@ -31,6 +16,25 @@ const normalizeOrderAggregateResult = (data = {}) => {
|
|
|
31
16
|
};
|
|
32
17
|
export const configureOrdersModuleQueries = ({ Orders }) => {
|
|
33
18
|
return {
|
|
19
|
+
isCart: (order) => {
|
|
20
|
+
return order.status === null;
|
|
21
|
+
},
|
|
22
|
+
cart: async ({ orderNumber, countryCode, userId, }) => {
|
|
23
|
+
const selector = {
|
|
24
|
+
countryCode,
|
|
25
|
+
status: { $eq: null },
|
|
26
|
+
userId,
|
|
27
|
+
};
|
|
28
|
+
if (orderNumber) {
|
|
29
|
+
selector.orderNumber = orderNumber;
|
|
30
|
+
}
|
|
31
|
+
const options = {
|
|
32
|
+
sort: {
|
|
33
|
+
updated: -1,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
return Orders.findOne(selector, options);
|
|
37
|
+
},
|
|
34
38
|
count: async (query) => {
|
|
35
39
|
const orderCount = await Orders.countDocuments(buildFindSelector(query));
|
|
36
40
|
return orderCount;
|
|
@@ -39,6 +43,15 @@ export const configureOrdersModuleQueries = ({ Orders }) => {
|
|
|
39
43
|
const selector = orderId ? generateDbFilterById(orderId) : { orderNumber };
|
|
40
44
|
return Orders.findOne(selector, options);
|
|
41
45
|
},
|
|
46
|
+
findCartsToInvalidate: async (maxAgeDays = 30) => {
|
|
47
|
+
const ONE_DAY_IN_MILLISECONDS = 86400000;
|
|
48
|
+
const minValidDate = new Date(new Date().getTime() - maxAgeDays * ONE_DAY_IN_MILLISECONDS);
|
|
49
|
+
const orders = await Orders.find({
|
|
50
|
+
status: { $eq: null },
|
|
51
|
+
updated: { $gte: minValidDate },
|
|
52
|
+
}).toArray();
|
|
53
|
+
return orders;
|
|
54
|
+
},
|
|
42
55
|
findOrders: async ({ limit, offset, queryString, sort, ...query }, options) => {
|
|
43
56
|
const defaultSortOption = [{ key: 'created', value: SortDirection.DESC }];
|
|
44
57
|
const findOptions = {
|
|
@@ -57,15 +70,15 @@ export const configureOrdersModuleQueries = ({ Orders }) => {
|
|
|
57
70
|
return Orders.find(selector, findOptions).toArray();
|
|
58
71
|
},
|
|
59
72
|
getReport: async (params) => {
|
|
60
|
-
const {
|
|
73
|
+
const { dateRange } = params || {};
|
|
61
74
|
const selector = { $exists: true };
|
|
62
|
-
if (
|
|
63
|
-
if (
|
|
64
|
-
const fromDate = new Date(
|
|
75
|
+
if (dateRange?.end || dateRange?.start) {
|
|
76
|
+
if (dateRange?.start) {
|
|
77
|
+
const fromDate = new Date(dateRange?.start);
|
|
65
78
|
selector.$gte = fromDate;
|
|
66
79
|
}
|
|
67
|
-
if (
|
|
68
|
-
const toDate = new Date(
|
|
80
|
+
if (dateRange?.end) {
|
|
81
|
+
const toDate = new Date(dateRange?.end);
|
|
69
82
|
selector.$lte = toDate;
|
|
70
83
|
}
|
|
71
84
|
}
|