@unchainedshop/core-orders 4.0.0-rc.16 → 4.0.0-rc.18
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 +1 -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/configureOrderDeliveriesModule.d.ts +6 -6
- package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.js +7 -8
- 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 +7 -7
- package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPaymentsModule.js +11 -8
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule.d.ts +14 -16
- package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPositionsModule.js +6 -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 +16 -8
- 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 +4 -6
- package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
- 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 +17 -17
- 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 +27 -22
- package/src/module/configureOrderDeliveriesModule.ts +15 -14
- package/src/module/configureOrderDiscountsModule.ts +11 -11
- package/src/module/configureOrderPaymentsModule.ts +17 -18
- package/src/module/configureOrderPositionsModule.ts +21 -27
- package/src/module/configureOrdersModule-mutations.ts +43 -41
- package/src/module/configureOrdersModule-queries.ts +5 -7
- package/src/module/configureOrdersModule.ts +28 -49
- package/src/orders-settings.ts +20 -19
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-orders",
|
|
3
|
-
"version": "4.0.0-rc.
|
|
3
|
+
"version": "4.0.0-rc.18",
|
|
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-rc.
|
|
36
|
-
"@unchainedshop/logger": "^4.0.0-rc.
|
|
37
|
-
"@unchainedshop/utils": "^4.0.0-rc.
|
|
35
|
+
"@unchainedshop/events": "^4.0.0-rc.18",
|
|
36
|
+
"@unchainedshop/logger": "^4.0.0-rc.18",
|
|
37
|
+
"@unchainedshop/utils": "^4.0.0-rc.18"
|
|
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
|
};
|
|
@@ -17,7 +17,7 @@ export enum OrderStatus {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export type Order = {
|
|
20
|
-
_id
|
|
20
|
+
_id: string;
|
|
21
21
|
billingAddress?: Address;
|
|
22
22
|
calculation: any[];
|
|
23
23
|
confirmed?: Date;
|
|
@@ -50,32 +50,37 @@ export interface OrderQuery extends mongodb.Filter<Order> {
|
|
|
50
50
|
export const OrdersCollection = async (db: mongodb.Db) => {
|
|
51
51
|
const Orders = db.collection<Order>('orders');
|
|
52
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
|
+
|
|
53
79
|
// Order Indexes
|
|
54
80
|
await buildDbIndexes<Order>(Orders, [
|
|
55
81
|
{ index: { userId: 1 } },
|
|
56
82
|
{ index: { status: 1 } },
|
|
57
83
|
{ index: { orderNumber: 1 } },
|
|
58
|
-
!isDocumentDBCompatModeEnabled() && {
|
|
59
|
-
index: {
|
|
60
|
-
_id: 'text',
|
|
61
|
-
userId: 'text',
|
|
62
|
-
orderNumber: 'text',
|
|
63
|
-
status: 'text',
|
|
64
|
-
'contact.emailAddress': 'text',
|
|
65
|
-
'contact.telNumber': 'text',
|
|
66
|
-
} as any,
|
|
67
|
-
options: {
|
|
68
|
-
weights: {
|
|
69
|
-
_id: 8,
|
|
70
|
-
userId: 3,
|
|
71
|
-
orderNumber: 6,
|
|
72
|
-
'contact.telNumber': 5,
|
|
73
|
-
'contact.emailAddress': 4,
|
|
74
|
-
status: 1,
|
|
75
|
-
},
|
|
76
|
-
name: 'order_fulltext_search',
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
84
|
]);
|
|
80
85
|
|
|
81
86
|
return Orders;
|
|
@@ -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,7 +51,7 @@ 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
|
|
|
@@ -70,7 +70,9 @@ export const configureOrderDeliveriesModule = ({
|
|
|
70
70
|
|
|
71
71
|
// Mutations
|
|
72
72
|
|
|
73
|
-
create: async (
|
|
73
|
+
create: async (
|
|
74
|
+
doc: Omit<OrderDelivery, '_id' | 'created'> & Pick<Partial<OrderDelivery>, '_id' | 'created'>,
|
|
75
|
+
) => {
|
|
74
76
|
const { insertedId: orderDeliveryId } = await OrderDeliveries.insertOne({
|
|
75
77
|
_id: generateDbObjectId(),
|
|
76
78
|
created: new Date(),
|
|
@@ -79,7 +81,9 @@ export const configureOrderDeliveriesModule = ({
|
|
|
79
81
|
status: null,
|
|
80
82
|
});
|
|
81
83
|
|
|
82
|
-
const orderDelivery = await OrderDeliveries.findOne(
|
|
84
|
+
const orderDelivery = (await OrderDeliveries.findOne(
|
|
85
|
+
buildFindByIdSelector(orderDeliveryId),
|
|
86
|
+
)) as OrderDelivery;
|
|
83
87
|
return orderDelivery;
|
|
84
88
|
},
|
|
85
89
|
|
|
@@ -98,7 +102,7 @@ export const configureOrderDeliveriesModule = ({
|
|
|
98
102
|
return updatedOrderDelivery;
|
|
99
103
|
},
|
|
100
104
|
|
|
101
|
-
updateContext: async (orderDeliveryId: string, context: any)
|
|
105
|
+
updateContext: async (orderDeliveryId: string, context: any) => {
|
|
102
106
|
const selector = buildFindByIdSelector(orderDeliveryId);
|
|
103
107
|
if (!context || Object.keys(context).length === 0) return OrderDeliveries.findOne(selector, {});
|
|
104
108
|
const contextSetters = Object.fromEntries(
|
|
@@ -116,14 +120,11 @@ export const configureOrderDeliveriesModule = ({
|
|
|
116
120
|
{ returnDocument: 'after' },
|
|
117
121
|
);
|
|
118
122
|
|
|
119
|
-
if (orderDelivery)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return null;
|
|
123
|
+
if (!orderDelivery) return null;
|
|
124
|
+
await emit('ORDER_UPDATE_DELIVERY', {
|
|
125
|
+
orderDelivery,
|
|
126
|
+
});
|
|
127
|
+
return orderDelivery;
|
|
127
128
|
},
|
|
128
129
|
|
|
129
130
|
updateStatus,
|
|
@@ -131,7 +132,7 @@ export const configureOrderDeliveriesModule = ({
|
|
|
131
132
|
updateCalculation: async <T extends PricingCalculation>(
|
|
132
133
|
orderDeliveryId: string,
|
|
133
134
|
calculation: T[],
|
|
134
|
-
)
|
|
135
|
+
) => {
|
|
135
136
|
return OrderDeliveries.findOneAndUpdate(
|
|
136
137
|
{ _id: orderDeliveryId },
|
|
137
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,7 +82,7 @@ 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
88
|
|
|
@@ -104,9 +104,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
104
104
|
context: any;
|
|
105
105
|
},
|
|
106
106
|
options?: mongodb.FindOptions,
|
|
107
|
-
)
|
|
107
|
+
) => {
|
|
108
108
|
const selector = buildFindByContextDataSelector(context);
|
|
109
|
-
|
|
109
|
+
if (!selector) return null;
|
|
110
110
|
return OrderPayments.findOne(selector, options);
|
|
111
111
|
},
|
|
112
112
|
countOrderPaymentsByContextData: async (
|
|
@@ -118,7 +118,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
118
118
|
options?: mongodb.FindOptions,
|
|
119
119
|
) => {
|
|
120
120
|
const selector = buildFindByContextDataSelector(context);
|
|
121
|
-
|
|
121
|
+
if (!selector) return 0;
|
|
122
122
|
return OrderPayments.countDocuments(selector, options);
|
|
123
123
|
},
|
|
124
124
|
|
|
@@ -126,7 +126,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
126
126
|
|
|
127
127
|
// Mutations
|
|
128
128
|
|
|
129
|
-
create: async (
|
|
129
|
+
create: async (
|
|
130
|
+
doc: Omit<OrderPayment, '_id' | 'created'> & Pick<Partial<OrderPayment>, '_id' | 'created'>,
|
|
131
|
+
): Promise<OrderPayment> => {
|
|
130
132
|
const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
|
|
131
133
|
_id: generateDbObjectId(),
|
|
132
134
|
created: new Date(),
|
|
@@ -135,9 +137,9 @@ export const configureOrderPaymentsModule = ({
|
|
|
135
137
|
context: doc.context || {},
|
|
136
138
|
});
|
|
137
139
|
|
|
138
|
-
const orderPayment = await OrderPayments.findOne(
|
|
140
|
+
const orderPayment = (await OrderPayments.findOne(
|
|
139
141
|
buildFindOrderPaymentByIdSelector(orderPaymentId),
|
|
140
|
-
);
|
|
142
|
+
)) as OrderPayment;
|
|
141
143
|
|
|
142
144
|
return orderPayment;
|
|
143
145
|
},
|
|
@@ -168,7 +170,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
168
170
|
await emit('ORDER_PAY', { orderPayment });
|
|
169
171
|
},
|
|
170
172
|
|
|
171
|
-
updateContext: async (orderPaymentId: string, context: any)
|
|
173
|
+
updateContext: async (orderPaymentId: string, context: any) => {
|
|
172
174
|
const selector = buildFindOrderPaymentByIdSelector(orderPaymentId);
|
|
173
175
|
if (!context || Object.keys(context).length === 0) return OrderPayments.findOne(selector, {});
|
|
174
176
|
|
|
@@ -186,14 +188,11 @@ export const configureOrderPaymentsModule = ({
|
|
|
186
188
|
{ returnDocument: 'after' },
|
|
187
189
|
);
|
|
188
190
|
|
|
189
|
-
if (orderPayment)
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return null;
|
|
191
|
+
if (!orderPayment) return null;
|
|
192
|
+
await emit('ORDER_UPDATE_PAYMENT', {
|
|
193
|
+
orderPayment,
|
|
194
|
+
});
|
|
195
|
+
return orderPayment;
|
|
197
196
|
},
|
|
198
197
|
|
|
199
198
|
updateStatus,
|
|
@@ -2,7 +2,6 @@ import { emit, registerEvents } from '@unchainedshop/events';
|
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
3
3
|
import { PricingCalculation } from '@unchainedshop/utils';
|
|
4
4
|
import { OrderPosition } from '../db/OrderPositionsCollection.js';
|
|
5
|
-
import { Document } from 'mongodb';
|
|
6
5
|
|
|
7
6
|
const ORDER_POSITION_EVENTS: string[] = [
|
|
8
7
|
'ORDER_UPDATE_CART_ITEM',
|
|
@@ -11,15 +10,15 @@ const ORDER_POSITION_EVENTS: string[] = [
|
|
|
11
10
|
'ORDER_ADD_PRODUCT',
|
|
12
11
|
];
|
|
13
12
|
|
|
14
|
-
interface OrderPositionAggregateParams {
|
|
15
|
-
match?: Document;
|
|
16
|
-
matchAfterGroup?: Document;
|
|
17
|
-
project?: Document;
|
|
18
|
-
group?: Document;
|
|
19
|
-
addFields?: Document;
|
|
20
|
-
sort?: Document;
|
|
13
|
+
export interface OrderPositionAggregateParams {
|
|
14
|
+
match?: mongodb.Document;
|
|
15
|
+
matchAfterGroup?: mongodb.Document;
|
|
16
|
+
project?: mongodb.Document;
|
|
17
|
+
group?: mongodb.Document;
|
|
18
|
+
addFields?: mongodb.Document;
|
|
19
|
+
sort?: mongodb.Document;
|
|
21
20
|
limit?: number;
|
|
22
|
-
pipeline?: Document[];
|
|
21
|
+
pipeline?: mongodb.Document[];
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
export const buildFindOrderPositionByIdSelector = (orderPositionId: string, orderId?: string) =>
|
|
@@ -37,10 +36,7 @@ export const configureOrderPositionsModule = ({
|
|
|
37
36
|
|
|
38
37
|
return {
|
|
39
38
|
// Queries
|
|
40
|
-
findOrderPosition: async (
|
|
41
|
-
{ itemId }: { itemId: string },
|
|
42
|
-
options?: mongodb.FindOptions,
|
|
43
|
-
): Promise<OrderPosition> => {
|
|
39
|
+
findOrderPosition: async ({ itemId }: { itemId: string }, options?: mongodb.FindOptions) => {
|
|
44
40
|
return OrderPositions.findOne(buildFindOrderPositionByIdSelector(itemId), options);
|
|
45
41
|
},
|
|
46
42
|
|
|
@@ -49,13 +45,13 @@ export const configureOrderPositionsModule = ({
|
|
|
49
45
|
return positions.toArray();
|
|
50
46
|
},
|
|
51
47
|
|
|
52
|
-
delete: async (orderPositionId: string)
|
|
48
|
+
delete: async (orderPositionId: string) => {
|
|
53
49
|
const selector = buildFindOrderPositionByIdSelector(orderPositionId);
|
|
54
50
|
const orderPosition = await OrderPositions.findOneAndDelete(selector, {});
|
|
55
51
|
await emit('ORDER_REMOVE_CART_ITEM', {
|
|
56
52
|
orderPosition,
|
|
57
53
|
});
|
|
58
|
-
return
|
|
54
|
+
return orderPosition;
|
|
59
55
|
},
|
|
60
56
|
|
|
61
57
|
removePositions: async ({ orderId }: { orderId: string }): Promise<number> => {
|
|
@@ -72,7 +68,7 @@ export const configureOrderPositionsModule = ({
|
|
|
72
68
|
orderPositionId: string;
|
|
73
69
|
configuration?: { key: string; value: string }[];
|
|
74
70
|
quantity?: number;
|
|
75
|
-
})
|
|
71
|
+
}) => {
|
|
76
72
|
const modifier: any = {
|
|
77
73
|
$set: {
|
|
78
74
|
updated: new Date(),
|
|
@@ -97,6 +93,7 @@ export const configureOrderPositionsModule = ({
|
|
|
97
93
|
},
|
|
98
94
|
);
|
|
99
95
|
|
|
96
|
+
if (!updatedOrderPosition) return null;
|
|
100
97
|
await emit('ORDER_UPDATE_CART_ITEM', {
|
|
101
98
|
orderPosition: updatedOrderPosition,
|
|
102
99
|
});
|
|
@@ -140,7 +137,7 @@ export const configureOrderPositionsModule = ({
|
|
|
140
137
|
return orderIdsToRecalculate;
|
|
141
138
|
},
|
|
142
139
|
|
|
143
|
-
updateScheduling: async (orderPositionId, scheduling)
|
|
140
|
+
updateScheduling: async (orderPositionId, scheduling) => {
|
|
144
141
|
return OrderPositions.findOneAndUpdate(
|
|
145
142
|
generateDbFilterById(orderPositionId),
|
|
146
143
|
{
|
|
@@ -155,7 +152,7 @@ export const configureOrderPositionsModule = ({
|
|
|
155
152
|
updateCalculation: async <T extends PricingCalculation>(
|
|
156
153
|
orderPositionId: string,
|
|
157
154
|
calculation: T[],
|
|
158
|
-
)
|
|
155
|
+
) => {
|
|
159
156
|
return OrderPositions.findOneAndUpdate(
|
|
160
157
|
{ _id: orderPositionId },
|
|
161
158
|
{
|
|
@@ -183,11 +180,11 @@ export const configureOrderPositionsModule = ({
|
|
|
183
180
|
orderId,
|
|
184
181
|
productId,
|
|
185
182
|
originalProductId,
|
|
186
|
-
configuration: configuration || { $
|
|
183
|
+
configuration: configuration || { $exists: false },
|
|
187
184
|
...scope,
|
|
188
185
|
};
|
|
189
186
|
|
|
190
|
-
await OrderPositions.
|
|
187
|
+
const upsertedOrderPosition = (await OrderPositions.findOneAndUpdate(
|
|
191
188
|
selector,
|
|
192
189
|
{
|
|
193
190
|
$set: {
|
|
@@ -206,13 +203,10 @@ export const configureOrderPositionsModule = ({
|
|
|
206
203
|
...scope,
|
|
207
204
|
},
|
|
208
205
|
},
|
|
209
|
-
{ upsert: true },
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
const upsertedOrderPosition = await OrderPositions.findOne(selector);
|
|
206
|
+
{ upsert: true, returnDocument: 'after' },
|
|
207
|
+
)) as OrderPosition;
|
|
213
208
|
|
|
214
209
|
await emit('ORDER_ADD_PRODUCT', { orderPosition: upsertedOrderPosition });
|
|
215
|
-
|
|
216
210
|
return upsertedOrderPosition;
|
|
217
211
|
},
|
|
218
212
|
deleteOrderPositions: async (orderId: string) => {
|
|
@@ -228,8 +222,8 @@ export const configureOrderPositionsModule = ({
|
|
|
228
222
|
sort,
|
|
229
223
|
limit,
|
|
230
224
|
pipeline,
|
|
231
|
-
}: OrderPositionAggregateParams): Promise<Document[]> => {
|
|
232
|
-
const stages: Document[] = [];
|
|
225
|
+
}: OrderPositionAggregateParams): Promise<mongodb.Document[]> => {
|
|
226
|
+
const stages: mongodb.Document[] = [];
|
|
233
227
|
|
|
234
228
|
if (pipeline?.length) {
|
|
235
229
|
return await OrderPositions.aggregate(pipeline).toArray();
|