@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
|
@@ -9,28 +9,6 @@ import {
|
|
|
9
9
|
import { Order, OrderStatus } from '../db/OrdersCollection.js';
|
|
10
10
|
import { OrderPosition } from '../db/OrderPositionsCollection.js';
|
|
11
11
|
|
|
12
|
-
export interface OrderMutations {
|
|
13
|
-
create: (doc: {
|
|
14
|
-
userId: string;
|
|
15
|
-
billingAddress?: Address;
|
|
16
|
-
contact?: Contact;
|
|
17
|
-
countryCode: string;
|
|
18
|
-
currencyCode: string;
|
|
19
|
-
orderNumber?: string;
|
|
20
|
-
originEnrollmentId?: string;
|
|
21
|
-
}) => Promise<Order>;
|
|
22
|
-
|
|
23
|
-
delete: (orderId: string) => Promise<number>;
|
|
24
|
-
|
|
25
|
-
setCartOwner: (params: { orderId: string; userId: string }) => Promise<void>;
|
|
26
|
-
moveCartPositions: (params: { fromOrderId: string; toOrderId: string }) => Promise<void>;
|
|
27
|
-
|
|
28
|
-
updateBillingAddress: (orderId: string, billingAddress: Address) => Promise<Order>;
|
|
29
|
-
updateContact: (orderId: string, contact: Contact) => Promise<Order>;
|
|
30
|
-
updateContext: (orderId: string, context: any) => Promise<Order>;
|
|
31
|
-
updateCalculationSheet: (orderId: string, calculation) => Promise<Order>;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
12
|
const ORDER_EVENTS: string[] = [
|
|
35
13
|
'ORDER_CREATE',
|
|
36
14
|
'ORDER_REMOVE',
|
|
@@ -45,11 +23,28 @@ export const configureOrderModuleMutations = ({
|
|
|
45
23
|
}: {
|
|
46
24
|
Orders: mongodb.Collection<Order>;
|
|
47
25
|
OrderPositions: mongodb.Collection<OrderPosition>;
|
|
48
|
-
})
|
|
26
|
+
}) => {
|
|
49
27
|
registerEvents(ORDER_EVENTS);
|
|
50
28
|
|
|
51
29
|
return {
|
|
52
|
-
create: async ({
|
|
30
|
+
create: async ({
|
|
31
|
+
userId,
|
|
32
|
+
orderNumber,
|
|
33
|
+
currencyCode,
|
|
34
|
+
countryCode,
|
|
35
|
+
billingAddress,
|
|
36
|
+
contact,
|
|
37
|
+
context,
|
|
38
|
+
}: {
|
|
39
|
+
userId: string;
|
|
40
|
+
billingAddress?: Address;
|
|
41
|
+
contact?: Contact;
|
|
42
|
+
countryCode: string;
|
|
43
|
+
currencyCode: string;
|
|
44
|
+
orderNumber?: string;
|
|
45
|
+
originEnrollmentId?: string;
|
|
46
|
+
context?: Record<string, any>;
|
|
47
|
+
}) => {
|
|
53
48
|
const { insertedId: orderId } = await Orders.insertOne({
|
|
54
49
|
_id: generateDbObjectId(),
|
|
55
50
|
created: new Date(),
|
|
@@ -62,21 +57,23 @@ export const configureOrderModuleMutations = ({
|
|
|
62
57
|
calculation: [],
|
|
63
58
|
log: [],
|
|
64
59
|
orderNumber,
|
|
60
|
+
context: context || {},
|
|
65
61
|
});
|
|
66
62
|
|
|
67
|
-
const order = await Orders.findOne(generateDbFilterById(orderId), {});
|
|
63
|
+
const order = (await Orders.findOne(generateDbFilterById(orderId), {})) as Order;
|
|
68
64
|
|
|
69
65
|
await emit('ORDER_CREATE', { order });
|
|
70
66
|
return order;
|
|
71
67
|
},
|
|
72
68
|
|
|
73
|
-
delete: async (orderId) => {
|
|
69
|
+
delete: async (orderId: string) => {
|
|
74
70
|
const { deletedCount } = await Orders.deleteOne({ _id: orderId });
|
|
71
|
+
if (!deletedCount) return 0;
|
|
75
72
|
await emit('ORDER_REMOVE', { orderId });
|
|
76
73
|
return deletedCount;
|
|
77
74
|
},
|
|
78
75
|
|
|
79
|
-
setCartOwner: async ({ orderId, userId }) => {
|
|
76
|
+
setCartOwner: async ({ orderId, userId }: { orderId: string; userId: string }) => {
|
|
80
77
|
await Orders.updateOne(generateDbFilterById(orderId), {
|
|
81
78
|
$set: {
|
|
82
79
|
userId,
|
|
@@ -84,7 +81,13 @@ export const configureOrderModuleMutations = ({
|
|
|
84
81
|
});
|
|
85
82
|
},
|
|
86
83
|
|
|
87
|
-
moveCartPositions: async ({
|
|
84
|
+
moveCartPositions: async ({
|
|
85
|
+
fromOrderId,
|
|
86
|
+
toOrderId,
|
|
87
|
+
}: {
|
|
88
|
+
fromOrderId: string;
|
|
89
|
+
toOrderId: string;
|
|
90
|
+
}) => {
|
|
88
91
|
await OrderPositions.updateMany(
|
|
89
92
|
{ orderId: fromOrderId },
|
|
90
93
|
{
|
|
@@ -95,7 +98,7 @@ export const configureOrderModuleMutations = ({
|
|
|
95
98
|
);
|
|
96
99
|
},
|
|
97
100
|
|
|
98
|
-
updateBillingAddress: async (orderId, billingAddress) => {
|
|
101
|
+
updateBillingAddress: async (orderId: string, billingAddress: Address) => {
|
|
99
102
|
const selector = generateDbFilterById(orderId);
|
|
100
103
|
const order = await Orders.findOneAndUpdate(
|
|
101
104
|
selector,
|
|
@@ -107,12 +110,12 @@ export const configureOrderModuleMutations = ({
|
|
|
107
110
|
},
|
|
108
111
|
{ returnDocument: 'after' },
|
|
109
112
|
);
|
|
110
|
-
|
|
113
|
+
if (!order) return null;
|
|
111
114
|
await emit('ORDER_UPDATE', { order, field: 'billingAddress' });
|
|
112
115
|
return order;
|
|
113
116
|
},
|
|
114
117
|
|
|
115
|
-
updateContact: async (orderId, contact) => {
|
|
118
|
+
updateContact: async (orderId: string, contact: Contact) => {
|
|
116
119
|
const selector = generateDbFilterById(orderId);
|
|
117
120
|
const order = await Orders.findOneAndUpdate(
|
|
118
121
|
selector,
|
|
@@ -124,12 +127,12 @@ export const configureOrderModuleMutations = ({
|
|
|
124
127
|
},
|
|
125
128
|
{ returnDocument: 'after' },
|
|
126
129
|
);
|
|
127
|
-
|
|
130
|
+
if (!order) return null;
|
|
128
131
|
await emit('ORDER_UPDATE', { order, field: 'contact' });
|
|
129
132
|
return order;
|
|
130
133
|
},
|
|
131
134
|
|
|
132
|
-
updateCalculationSheet: async (orderId, calculation) => {
|
|
135
|
+
updateCalculationSheet: async (orderId: string, calculation: any) => {
|
|
133
136
|
const selector = generateDbFilterById(orderId);
|
|
134
137
|
const order = await Orders.findOneAndUpdate(
|
|
135
138
|
selector,
|
|
@@ -141,12 +144,12 @@ export const configureOrderModuleMutations = ({
|
|
|
141
144
|
},
|
|
142
145
|
{ returnDocument: 'after' },
|
|
143
146
|
);
|
|
144
|
-
|
|
147
|
+
if (!order) return null;
|
|
145
148
|
await emit('ORDER_UPDATE', { order, field: 'calculation' });
|
|
146
149
|
return order;
|
|
147
150
|
},
|
|
148
151
|
|
|
149
|
-
updateContext: async (orderId, context) => {
|
|
152
|
+
updateContext: async (orderId: string, context: any) => {
|
|
150
153
|
const selector = generateDbFilterById<Order>(orderId);
|
|
151
154
|
selector.status = { $in: [null, OrderStatus.PENDING] };
|
|
152
155
|
|
|
@@ -165,12 +168,11 @@ export const configureOrderModuleMutations = ({
|
|
|
165
168
|
},
|
|
166
169
|
{ returnDocument: 'after' },
|
|
167
170
|
);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return order;
|
|
172
|
-
}
|
|
173
|
-
return null;
|
|
171
|
+
if (!order) return null;
|
|
172
|
+
await emit('ORDER_UPDATE', { order, field: 'context' });
|
|
173
|
+
return order;
|
|
174
174
|
},
|
|
175
175
|
};
|
|
176
176
|
};
|
|
177
|
+
|
|
178
|
+
export type OrderMutations = ReturnType<typeof configureOrderModuleMutations>;
|
|
@@ -2,7 +2,6 @@ import { SortDirection, SortOption } from '@unchainedshop/utils';
|
|
|
2
2
|
import { generateDbFilterById, buildSortOptions, mongodb } from '@unchainedshop/mongodb';
|
|
3
3
|
import buildFindSelector from './buildFindSelector.js';
|
|
4
4
|
import { Order, OrderQuery } from '../db/OrdersCollection.js';
|
|
5
|
-
import { Document } from 'mongodb';
|
|
6
5
|
|
|
7
6
|
export interface OrderReport {
|
|
8
7
|
newCount: number;
|
|
@@ -18,8 +17,7 @@ export interface OrderStatisticsRecord {
|
|
|
18
17
|
currency: string;
|
|
19
18
|
};
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
interface OrderAggregateParams {
|
|
20
|
+
export interface OrderAggregateParams {
|
|
23
21
|
match?: Record<string, any>;
|
|
24
22
|
matchAfterGroup?: Record<string, any>;
|
|
25
23
|
project?: Record<string, any>;
|
|
@@ -44,7 +42,7 @@ export const configureOrdersModuleQueries = ({ Orders }: { Orders: mongodb.Colle
|
|
|
44
42
|
countryCode?: string;
|
|
45
43
|
orderNumber?: string;
|
|
46
44
|
userId: string;
|
|
47
|
-
})
|
|
45
|
+
}) => {
|
|
48
46
|
const selector: mongodb.Filter<Order> = {
|
|
49
47
|
countryCode,
|
|
50
48
|
status: { $eq: null },
|
|
@@ -76,7 +74,7 @@ export const configureOrdersModuleQueries = ({ Orders }: { Orders: mongodb.Colle
|
|
|
76
74
|
orderNumber?: string;
|
|
77
75
|
},
|
|
78
76
|
options?: mongodb.FindOptions,
|
|
79
|
-
)
|
|
77
|
+
) => {
|
|
80
78
|
const selector = orderId ? generateDbFilterById(orderId) : { orderNumber };
|
|
81
79
|
return Orders.findOne(selector, options);
|
|
82
80
|
},
|
|
@@ -140,8 +138,8 @@ export const configureOrdersModuleQueries = ({ Orders }: { Orders: mongodb.Colle
|
|
|
140
138
|
limit,
|
|
141
139
|
addFields,
|
|
142
140
|
pipeline,
|
|
143
|
-
}: OrderAggregateParams): Promise<Document[]> => {
|
|
144
|
-
const stages: Document[] = [];
|
|
141
|
+
}: OrderAggregateParams): Promise<mongodb.Document[]> => {
|
|
142
|
+
const stages: mongodb.Document[] = [];
|
|
145
143
|
if (pipeline?.length) {
|
|
146
144
|
return await Orders.aggregate(pipeline).toArray();
|
|
147
145
|
}
|
|
@@ -6,37 +6,16 @@ import { OrderPaymentsCollection } from '../db/OrderPaymentsCollection.js';
|
|
|
6
6
|
import { OrderPositionsCollection } from '../db/OrderPositionsCollection.js';
|
|
7
7
|
import { OrdersCollection, Order, OrderStatus } from '../db/OrdersCollection.js';
|
|
8
8
|
import { ordersSettings, OrdersSettingsOptions } from '../orders-settings.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} from './
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { configureOrderPositionsModule, OrderPositionsModule } from './configureOrderPositionsModule.js';
|
|
16
|
-
import { configureOrderModuleMutations, OrderMutations } from './configureOrdersModule-mutations.js';
|
|
17
|
-
import { configureOrdersModuleQueries, OrderQueries } from './configureOrdersModule-queries.js';
|
|
9
|
+
import { configureOrderDeliveriesModule } from './configureOrderDeliveriesModule.js';
|
|
10
|
+
import { configureOrderDiscountsModule } from './configureOrderDiscountsModule.js';
|
|
11
|
+
import { configureOrderPaymentsModule } from './configureOrderPaymentsModule.js';
|
|
12
|
+
import { configureOrderPositionsModule } from './configureOrderPositionsModule.js';
|
|
13
|
+
import { configureOrderModuleMutations } from './configureOrdersModule-mutations.js';
|
|
14
|
+
import { configureOrdersModuleQueries } from './configureOrdersModule-queries.js';
|
|
18
15
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
19
16
|
|
|
20
17
|
import renameCurrencyCode from '../migrations/20250502111800-currency-code.js';
|
|
21
18
|
|
|
22
|
-
export type OrdersModule = OrderQueries &
|
|
23
|
-
OrderMutations & {
|
|
24
|
-
// Sub entities
|
|
25
|
-
deliveries: OrderDeliveriesModule;
|
|
26
|
-
discounts: OrderDiscountsModule;
|
|
27
|
-
positions: OrderPositionsModule;
|
|
28
|
-
payments: OrderPaymentsModule;
|
|
29
|
-
|
|
30
|
-
updateStatus: (orderId: string, params: { status: OrderStatus; info?: string }) => Promise<Order>;
|
|
31
|
-
acquireLock: (
|
|
32
|
-
orderId: string,
|
|
33
|
-
identifier: string,
|
|
34
|
-
timeout?: number,
|
|
35
|
-
) => Promise<{ release: () => void }>;
|
|
36
|
-
setDeliveryProvider: (orderId: string, deliveryProviderId: string) => Promise<Order | null>;
|
|
37
|
-
setPaymentProvider: (orderId: string, paymentProviderId: string) => Promise<Order | null>;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
19
|
// @kontsedal/locco uses a deprecated way of importing files in ESM (node16 behavior)
|
|
41
20
|
const require = createRequire(import.meta.url);
|
|
42
21
|
const { Locker, MongoAdapter } = require('@kontsedal/locco');
|
|
@@ -52,7 +31,7 @@ export const configureOrdersModule = async ({
|
|
|
52
31
|
db,
|
|
53
32
|
migrationRepository,
|
|
54
33
|
options: orderOptions = {},
|
|
55
|
-
}: ModuleInput<OrdersSettingsOptions>)
|
|
34
|
+
}: ModuleInput<OrdersSettingsOptions>) => {
|
|
56
35
|
// Migration v3 -> v4
|
|
57
36
|
renameCurrencyCode(migrationRepository);
|
|
58
37
|
|
|
@@ -117,10 +96,14 @@ export const configureOrdersModule = async ({
|
|
|
117
96
|
positions: orderPositionsModule,
|
|
118
97
|
payments: orderPaymentsModule,
|
|
119
98
|
|
|
120
|
-
updateStatus: async (
|
|
99
|
+
updateStatus: async (
|
|
100
|
+
orderId: string,
|
|
101
|
+
{ status, info }: { status: OrderStatus | null; info?: string },
|
|
102
|
+
) => {
|
|
121
103
|
const selector = generateDbFilterById(orderId);
|
|
122
104
|
const order = await Orders.findOne(selector, {});
|
|
123
105
|
|
|
106
|
+
if (!order) return null;
|
|
124
107
|
if (order.status === status) return order;
|
|
125
108
|
|
|
126
109
|
const date = new Date();
|
|
@@ -197,7 +180,7 @@ export const configureOrdersModule = async ({
|
|
|
197
180
|
return await locker.lock(`order:${identifier}:${orderId}`, timeout).acquire();
|
|
198
181
|
},
|
|
199
182
|
|
|
200
|
-
setDeliveryProvider: async (orderId, deliveryProviderId) => {
|
|
183
|
+
setDeliveryProvider: async (orderId: string, deliveryProviderId: string) => {
|
|
201
184
|
const delivery = await OrderDeliveries.findOne({
|
|
202
185
|
orderId,
|
|
203
186
|
deliveryProviderId,
|
|
@@ -225,19 +208,16 @@ export const configureOrdersModule = async ({
|
|
|
225
208
|
{ returnDocument: 'after' },
|
|
226
209
|
);
|
|
227
210
|
|
|
228
|
-
if (order)
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
return order;
|
|
235
|
-
}
|
|
211
|
+
if (!order) return null;
|
|
212
|
+
await emit('ORDER_SET_DELIVERY_PROVIDER', {
|
|
213
|
+
order,
|
|
214
|
+
deliveryProviderId,
|
|
215
|
+
});
|
|
236
216
|
|
|
237
|
-
return
|
|
217
|
+
return order;
|
|
238
218
|
},
|
|
239
219
|
|
|
240
|
-
setPaymentProvider: async (orderId, paymentProviderId) => {
|
|
220
|
+
setPaymentProvider: async (orderId: string, paymentProviderId: string) => {
|
|
241
221
|
const payment = await OrderPayments.findOne({
|
|
242
222
|
orderId,
|
|
243
223
|
paymentProviderId,
|
|
@@ -263,16 +243,15 @@ export const configureOrdersModule = async ({
|
|
|
263
243
|
{ returnDocument: 'after' },
|
|
264
244
|
);
|
|
265
245
|
|
|
266
|
-
if (order)
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return order;
|
|
273
|
-
}
|
|
246
|
+
if (!order) return null;
|
|
247
|
+
await emit('ORDER_SET_PAYMENT_PROVIDER', {
|
|
248
|
+
order,
|
|
249
|
+
paymentProviderId,
|
|
250
|
+
});
|
|
274
251
|
|
|
275
|
-
return
|
|
252
|
+
return order;
|
|
276
253
|
},
|
|
277
254
|
};
|
|
278
255
|
};
|
|
256
|
+
|
|
257
|
+
export type OrdersModule = Awaited<ReturnType<typeof configureOrdersModule>>;
|
package/src/orders-settings.ts
CHANGED
|
@@ -8,15 +8,17 @@ export interface OrderSettingsOrderPositionValidation<Product = unknown> {
|
|
|
8
8
|
configuration?: { key: string; value: string }[];
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export interface
|
|
12
|
-
ensureUserHasCart
|
|
13
|
-
orderNumberHashFn
|
|
14
|
-
validateOrderPosition
|
|
11
|
+
export interface OrdersSettings {
|
|
12
|
+
ensureUserHasCart: boolean;
|
|
13
|
+
orderNumberHashFn: (order: Order, index: number) => string;
|
|
14
|
+
validateOrderPosition: <UnchainedAPI = unknown>(
|
|
15
15
|
validationParams: OrderSettingsOrderPositionValidation,
|
|
16
16
|
unchainedAPI: UnchainedAPI,
|
|
17
17
|
) => Promise<void>;
|
|
18
|
-
lockOrderDuringCheckout
|
|
18
|
+
lockOrderDuringCheckout: boolean;
|
|
19
|
+
configureSettings: (options?: OrdersSettingsOptions) => void;
|
|
19
20
|
}
|
|
21
|
+
export type OrdersSettingsOptions = Omit<Partial<OrdersSettings>, 'configureSettings'>;
|
|
20
22
|
|
|
21
23
|
export const defaultValidateOrderPosition = async ({ product }, { modules }: any) => {
|
|
22
24
|
if (!modules.products.isActive(product)) {
|
|
@@ -24,21 +26,20 @@ export const defaultValidateOrderPosition = async ({ product }, { modules }: any
|
|
|
24
26
|
}
|
|
25
27
|
};
|
|
26
28
|
|
|
27
|
-
export const ordersSettings = {
|
|
28
|
-
ensureUserHasCart:
|
|
29
|
-
orderNumberHashFn:
|
|
30
|
-
validateOrderPosition:
|
|
29
|
+
export const ordersSettings: OrdersSettings = {
|
|
30
|
+
ensureUserHasCart: false,
|
|
31
|
+
orderNumberHashFn: generateRandomHash,
|
|
32
|
+
validateOrderPosition: defaultValidateOrderPosition,
|
|
31
33
|
lockOrderDuringCheckout: false,
|
|
32
|
-
|
|
33
34
|
configureSettings({
|
|
34
|
-
ensureUserHasCart
|
|
35
|
-
orderNumberHashFn
|
|
36
|
-
validateOrderPosition
|
|
37
|
-
lockOrderDuringCheckout
|
|
38
|
-
}
|
|
39
|
-
this.ensureUserHasCart = ensureUserHasCart;
|
|
40
|
-
this.orderNumberHashFn = orderNumberHashFn;
|
|
41
|
-
this.validateOrderPosition = validateOrderPosition;
|
|
42
|
-
this.lockOrderDuringCheckout = lockOrderDuringCheckout;
|
|
35
|
+
ensureUserHasCart,
|
|
36
|
+
orderNumberHashFn,
|
|
37
|
+
validateOrderPosition,
|
|
38
|
+
lockOrderDuringCheckout,
|
|
39
|
+
} = {}) {
|
|
40
|
+
this.ensureUserHasCart = ensureUserHasCart || false;
|
|
41
|
+
this.orderNumberHashFn = orderNumberHashFn || generateRandomHash;
|
|
42
|
+
this.validateOrderPosition = validateOrderPosition || defaultValidateOrderPosition;
|
|
43
|
+
this.lockOrderDuringCheckout = lockOrderDuringCheckout || false;
|
|
43
44
|
},
|
|
44
45
|
};
|