@unchainedshop/core-orders 2.0.0-beta8 → 2.0.0-beta9
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/jest.config.js +9 -0
- package/lib/director/OrderPricingDirector.js +5 -5
- package/lib/director/OrderPricingDirector.js.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.d.ts +2 -1
- package/lib/module/configureOrderDeliveriesModule.js +26 -24
- package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
- package/lib/module/configureOrderDiscountsModule.d.ts +2 -1
- package/lib/module/configureOrderDiscountsModule.js +35 -35
- package/lib/module/configureOrderDiscountsModule.js.map +1 -1
- package/lib/module/configureOrderPaymentsModule.d.ts +3 -1
- package/lib/module/configureOrderPaymentsModule.js +63 -37
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule.d.ts +2 -1
- package/lib/module/configureOrderPositionsModule.js +35 -29
- package/lib/module/configureOrderPositionsModule.js.map +1 -1
- package/lib/module/configureOrdersModule-mutations.js +21 -26
- package/lib/module/configureOrdersModule-mutations.js.map +1 -1
- package/lib/module/configureOrdersModule-processing.js +52 -58
- package/lib/module/configureOrdersModule-processing.js.map +1 -1
- package/lib/module/configureOrdersModule-queries.d.ts +3 -2
- package/lib/module/configureOrdersModule-queries.js +1 -1
- package/lib/module/configureOrdersModule-queries.js.map +1 -1
- package/lib/module/configureOrdersModule-transformations.js +10 -10
- package/lib/module/configureOrdersModule-transformations.js.map +1 -1
- package/lib/module/configureOrdersModule.js +24 -26
- package/lib/module/configureOrdersModule.js.map +1 -1
- package/lib/service/createUserCartService.js +8 -8
- package/lib/service/createUserCartService.js.map +1 -1
- package/lib/service/migrateOrderCartService.js +3 -9
- package/lib/service/migrateOrderCartService.js.map +1 -1
- package/package.json +10 -9
- package/src/director/OrderPricingDirector.ts +5 -5
- package/src/module/configureOrderDeliveriesModule.ts +32 -42
- package/src/module/configureOrderDiscountsModule.ts +42 -54
- package/src/module/configureOrderPaymentsModule.ts +93 -76
- package/src/module/configureOrderPositionsModule.ts +57 -46
- package/src/module/configureOrdersModule-mutations.ts +43 -58
- package/src/module/configureOrdersModule-processing.ts +75 -85
- package/src/module/configureOrdersModule-queries.ts +1 -1
- package/src/module/configureOrdersModule-transformations.ts +10 -10
- package/src/module/configureOrdersModule.ts +29 -42
- package/src/service/createUserCartService.ts +20 -24
- package/src/service/migrateOrderCartService.ts +3 -11
- package/tests/orders-index.test.ts +103 -48
|
@@ -4,8 +4,8 @@ import { log } from '@unchainedshop/logger';
|
|
|
4
4
|
import { generateDbFilterById, generateDbMutations } from '@unchainedshop/utils';
|
|
5
5
|
import { OrderPaymentsSchema } from '../db/OrderPaymentsSchema';
|
|
6
6
|
const ORDER_PAYMENT_EVENTS = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYMENT', 'ORDER_PAY'];
|
|
7
|
-
const buildFindByIdSelector = (orderPaymentId) => generateDbFilterById(orderPaymentId);
|
|
8
|
-
const buildFindByContextDataSelector = (context) => {
|
|
7
|
+
export const buildFindByIdSelector = (orderPaymentId) => generateDbFilterById(orderPaymentId);
|
|
8
|
+
export const buildFindByContextDataSelector = (context) => {
|
|
9
9
|
const contextKeys = Object.keys(context);
|
|
10
10
|
if (contextKeys.length === 0)
|
|
11
11
|
return null;
|
|
@@ -28,21 +28,20 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
28
28
|
? OrderPaymentStatus.OPEN
|
|
29
29
|
: orderPayment.status;
|
|
30
30
|
};
|
|
31
|
-
const buildPaymentProviderActionsContext = (orderPayment, transactionContext) => ({
|
|
31
|
+
const buildPaymentProviderActionsContext = (orderPayment, { transactionContext, ...rest }) => ({
|
|
32
|
+
...rest,
|
|
33
|
+
orderPayment,
|
|
32
34
|
paymentProviderId: orderPayment.paymentProviderId,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
...(transactionContext || {}),
|
|
37
|
-
...(orderPayment.context || {}),
|
|
38
|
-
},
|
|
35
|
+
transactionContext: {
|
|
36
|
+
...(transactionContext || {}),
|
|
37
|
+
...(orderPayment.context || {}),
|
|
39
38
|
},
|
|
40
39
|
});
|
|
41
|
-
const updateStatus = async (orderPaymentId, { status, transactionId, info }
|
|
40
|
+
const updateStatus = async (orderPaymentId, { status, transactionId, info }) => {
|
|
42
41
|
log(`OrderPayment ${orderPaymentId} -> New Status: ${status}`);
|
|
43
42
|
const date = new Date();
|
|
44
43
|
const modifier = {
|
|
45
|
-
$set: { status, updated: new Date()
|
|
44
|
+
$set: { status, updated: new Date() },
|
|
46
45
|
$push: {
|
|
47
46
|
log: {
|
|
48
47
|
date,
|
|
@@ -89,13 +88,13 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
89
88
|
...discount,
|
|
90
89
|
}));
|
|
91
90
|
},
|
|
92
|
-
isBlockingOrderConfirmation: async (orderPayment,
|
|
91
|
+
isBlockingOrderConfirmation: async (orderPayment, unchainedAPI) => {
|
|
93
92
|
if (orderPayment.status === OrderPaymentStatus.PAID)
|
|
94
93
|
return false;
|
|
95
|
-
const provider = await
|
|
94
|
+
const provider = await unchainedAPI.modules.payment.paymentProviders.findProvider({
|
|
96
95
|
paymentProviderId: orderPayment.paymentProviderId,
|
|
97
96
|
});
|
|
98
|
-
const isPayLaterAllowed = await
|
|
97
|
+
const isPayLaterAllowed = await unchainedAPI.modules.payment.paymentProviders.isPayLaterAllowed(provider, unchainedAPI);
|
|
99
98
|
return !isPayLaterAllowed;
|
|
100
99
|
},
|
|
101
100
|
isBlockingOrderFullfillment: (orderPayment) => {
|
|
@@ -111,52 +110,81 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
111
110
|
});
|
|
112
111
|
},
|
|
113
112
|
// Mutations
|
|
114
|
-
create: async (doc
|
|
115
|
-
const orderPaymentId = await mutations.create({
|
|
113
|
+
create: async (doc) => {
|
|
114
|
+
const orderPaymentId = await mutations.create({
|
|
115
|
+
...doc,
|
|
116
|
+
status: null,
|
|
117
|
+
context: doc.context || {},
|
|
118
|
+
});
|
|
116
119
|
const orderPayment = await OrderPayments.findOne(buildFindByIdSelector(orderPaymentId));
|
|
117
120
|
return orderPayment;
|
|
118
121
|
},
|
|
119
|
-
confirm: async (orderPayment,
|
|
120
|
-
const {
|
|
122
|
+
confirm: async (orderPayment, paymentContext, unchainedAPI) => {
|
|
123
|
+
const { modules } = unchainedAPI;
|
|
121
124
|
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
|
|
122
125
|
return orderPayment;
|
|
123
126
|
}
|
|
124
|
-
const arbitraryResponseData = await
|
|
127
|
+
const arbitraryResponseData = await modules.payment.paymentProviders.confirm(orderPayment.paymentProviderId, buildPaymentProviderActionsContext(orderPayment, paymentContext), unchainedAPI);
|
|
125
128
|
if (arbitraryResponseData) {
|
|
126
129
|
return updateStatus(orderPayment._id, {
|
|
127
130
|
status: OrderPaymentStatus.PAID,
|
|
128
131
|
info: JSON.stringify(arbitraryResponseData),
|
|
129
|
-
}
|
|
132
|
+
});
|
|
130
133
|
}
|
|
131
134
|
return orderPayment;
|
|
132
135
|
},
|
|
133
|
-
cancel: async (orderPayment,
|
|
134
|
-
const {
|
|
136
|
+
cancel: async (orderPayment, paymentContext, unchainedAPI) => {
|
|
137
|
+
const { modules } = unchainedAPI;
|
|
135
138
|
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
|
|
136
139
|
return orderPayment;
|
|
137
140
|
}
|
|
138
|
-
const arbitraryResponseData = await
|
|
141
|
+
const arbitraryResponseData = await modules.payment.paymentProviders.cancel(orderPayment.paymentProviderId, buildPaymentProviderActionsContext(orderPayment, paymentContext), unchainedAPI);
|
|
139
142
|
if (arbitraryResponseData) {
|
|
140
143
|
return updateStatus(orderPayment._id, {
|
|
141
144
|
status: OrderPaymentStatus.REFUNDED,
|
|
142
145
|
info: JSON.stringify(arbitraryResponseData),
|
|
143
|
-
}
|
|
146
|
+
});
|
|
144
147
|
}
|
|
145
148
|
return orderPayment;
|
|
146
149
|
},
|
|
147
|
-
charge: async (orderPayment,
|
|
148
|
-
const {
|
|
150
|
+
charge: async (orderPayment, context, unchainedAPI) => {
|
|
151
|
+
const { modules } = unchainedAPI;
|
|
149
152
|
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN) {
|
|
150
153
|
return orderPayment;
|
|
151
154
|
}
|
|
152
|
-
const
|
|
155
|
+
const paymentCredentials = context.transactionContext?.paymentCredentials ||
|
|
156
|
+
(await modules.payment.paymentCredentials.findPaymentCredential({
|
|
157
|
+
userId: context.userId,
|
|
158
|
+
paymentProviderId: orderPayment.paymentProviderId,
|
|
159
|
+
isPreferred: true,
|
|
160
|
+
}));
|
|
161
|
+
const paymentContext = buildPaymentProviderActionsContext(orderPayment, {
|
|
162
|
+
...context,
|
|
163
|
+
transactionContext: {
|
|
164
|
+
...context.transactionContext,
|
|
165
|
+
paymentCredentials,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
const result = await modules.payment.paymentProviders.charge(orderPayment.paymentProviderId, paymentContext, unchainedAPI);
|
|
169
|
+
if (!result)
|
|
170
|
+
return orderPayment;
|
|
171
|
+
const { credentials, ...arbitraryResponseData } = result;
|
|
172
|
+
if (credentials) {
|
|
173
|
+
const { token, ...meta } = credentials;
|
|
174
|
+
await modules.payment.paymentCredentials.upsertCredentials({
|
|
175
|
+
userId: paymentContext.userId,
|
|
176
|
+
paymentProviderId: orderPayment.paymentProviderId,
|
|
177
|
+
token,
|
|
178
|
+
...meta,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
153
181
|
if (arbitraryResponseData) {
|
|
154
182
|
const { transactionId, ...info } = arbitraryResponseData;
|
|
155
183
|
return updateStatus(orderPayment._id, {
|
|
156
184
|
transactionId,
|
|
157
185
|
status: OrderPaymentStatus.PAID,
|
|
158
186
|
info: JSON.stringify(info),
|
|
159
|
-
}
|
|
187
|
+
});
|
|
160
188
|
}
|
|
161
189
|
return orderPayment;
|
|
162
190
|
},
|
|
@@ -174,16 +202,16 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
174
202
|
await OrderPayments.updateOne(generateDbFilterById(orderPaymentId), modifier);
|
|
175
203
|
return true;
|
|
176
204
|
},
|
|
177
|
-
markAsPaid: async (orderPayment, meta
|
|
205
|
+
markAsPaid: async (orderPayment, meta) => {
|
|
178
206
|
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN)
|
|
179
207
|
return;
|
|
180
208
|
await updateStatus(orderPayment._id, {
|
|
181
209
|
status: OrderPaymentStatus.PAID,
|
|
182
210
|
info: meta ? JSON.stringify(meta) : 'mark paid manually',
|
|
183
|
-
}
|
|
211
|
+
});
|
|
184
212
|
await emit('ORDER_PAY', { orderPayment });
|
|
185
213
|
},
|
|
186
|
-
updateContext: async (orderPaymentId, context,
|
|
214
|
+
updateContext: async (orderPaymentId, context, unchainedAPI) => {
|
|
187
215
|
if (!context)
|
|
188
216
|
return false;
|
|
189
217
|
const selector = buildFindByIdSelector(orderPaymentId);
|
|
@@ -197,11 +225,10 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
197
225
|
$set: {
|
|
198
226
|
context: { ...(orderPayment.context || {}), ...context },
|
|
199
227
|
updated: new Date(),
|
|
200
|
-
updatedBy: requestContext.userId,
|
|
201
228
|
},
|
|
202
229
|
});
|
|
203
230
|
if (result.modifiedCount) {
|
|
204
|
-
await updateCalculation(orderId,
|
|
231
|
+
await updateCalculation(orderId, unchainedAPI);
|
|
205
232
|
await emit('ORDER_UPDATE_PAYMENT', {
|
|
206
233
|
orderPayment: {
|
|
207
234
|
...orderPayment,
|
|
@@ -213,19 +240,18 @@ export const configureOrderPaymentsModule = ({ OrderPayments, updateCalculation,
|
|
|
213
240
|
return false;
|
|
214
241
|
},
|
|
215
242
|
updateStatus,
|
|
216
|
-
updateCalculation: async (orderPayment,
|
|
243
|
+
updateCalculation: async (orderPayment, unchainedAPI) => {
|
|
217
244
|
log(`OrderPayment ${orderPayment._id} -> Update Calculation`, {
|
|
218
245
|
orderId: orderPayment.orderId,
|
|
219
246
|
});
|
|
220
|
-
const calculation = await
|
|
247
|
+
const calculation = await unchainedAPI.modules.payment.paymentProviders.calculate({
|
|
221
248
|
item: orderPayment,
|
|
222
|
-
},
|
|
249
|
+
}, unchainedAPI);
|
|
223
250
|
const selector = buildFindByIdSelector(orderPayment._id);
|
|
224
251
|
await OrderPayments.updateOne(selector, {
|
|
225
252
|
$set: {
|
|
226
253
|
calculation,
|
|
227
254
|
updated: new Date(),
|
|
228
|
-
updatedBy: requestContext.userId,
|
|
229
255
|
},
|
|
230
256
|
});
|
|
231
257
|
return OrderPayments.findOne(selector);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrderPaymentsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,oBAAoB,GAAa,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;AAEnG,MAAM,qBAAqB,GAAG,CAAC,cAAsB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"configureOrderPaymentsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Collection } from '@unchainedshop/types/common';
|
|
1
|
+
import { Collection, Filter } from '@unchainedshop/types/common';
|
|
2
2
|
import { OrdersModule } from '@unchainedshop/types/orders';
|
|
3
3
|
import { OrderPosition, OrderPositionsModule } from '@unchainedshop/types/orders.positions';
|
|
4
|
+
export declare const buildFindByIdSelector: (orderPositionId: string, orderId?: string) => Filter<OrderPosition>;
|
|
4
5
|
export declare const configureOrderPositionsModule: ({ OrderPositions, updateCalculation, }: {
|
|
5
6
|
OrderPositions: Collection<OrderPosition>;
|
|
6
7
|
updateCalculation: OrdersModule['updateCalculation'];
|
|
@@ -9,7 +9,7 @@ const ORDER_POSITION_EVENTS = [
|
|
|
9
9
|
'ORDER_EMPTY_CART',
|
|
10
10
|
'ORDER_ADD_PRODUCT',
|
|
11
11
|
];
|
|
12
|
-
const buildFindByIdSelector = (orderPositionId, orderId) => generateDbFilterById(orderPositionId, orderId ? { orderId } : undefined);
|
|
12
|
+
export const buildFindByIdSelector = (orderPositionId, orderId) => generateDbFilterById(orderPositionId, orderId ? { orderId } : undefined);
|
|
13
13
|
export const configureOrderPositionsModule = ({ OrderPositions, updateCalculation, }) => {
|
|
14
14
|
registerEvents(ORDER_POSITION_EVENTS);
|
|
15
15
|
const mutations = generateDbMutations(OrderPositions, OrderPositionsSchema, {
|
|
@@ -26,8 +26,8 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
26
26
|
return positions.toArray();
|
|
27
27
|
},
|
|
28
28
|
// Transformations
|
|
29
|
-
discounts: (orderPosition, { order, orderDiscount },
|
|
30
|
-
const pricingSheet =
|
|
29
|
+
discounts: (orderPosition, { order, orderDiscount }, unchainedAPI) => {
|
|
30
|
+
const pricingSheet = unchainedAPI.modules.orders.positions.pricingSheet(orderPosition, order.currency, unchainedAPI);
|
|
31
31
|
return pricingSheet.discountPrices(orderDiscount._id).map((discount) => ({
|
|
32
32
|
item: orderPosition,
|
|
33
33
|
...discount,
|
|
@@ -41,11 +41,11 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
41
41
|
});
|
|
42
42
|
},
|
|
43
43
|
// Mutations
|
|
44
|
-
create: async ({ configuration, context, quantity, quotationId }, { order, product, originalProduct },
|
|
44
|
+
create: async ({ configuration, context, quantity, quotationId }, { order, product, originalProduct }, unchainedAPI) => {
|
|
45
45
|
const orderId = order._id;
|
|
46
46
|
const productId = product._id;
|
|
47
47
|
const originalProductId = originalProduct ? originalProduct._id : undefined;
|
|
48
|
-
log(`Create ${quantity}x Position with Product ${productId} ${quotationId ? ` (${quotationId})` : ''}`, { orderId, productId, originalProductId
|
|
48
|
+
log(`Create ${quantity}x Position with Product ${productId} ${quotationId ? ` (${quotationId})` : ''}`, { orderId, productId, originalProductId });
|
|
49
49
|
const positionId = await mutations.create({
|
|
50
50
|
orderId,
|
|
51
51
|
productId,
|
|
@@ -56,43 +56,42 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
56
56
|
context,
|
|
57
57
|
calculation: [],
|
|
58
58
|
scheduling: [],
|
|
59
|
-
}
|
|
60
|
-
await updateCalculation(orderId,
|
|
59
|
+
});
|
|
60
|
+
await updateCalculation(orderId, unchainedAPI);
|
|
61
61
|
return OrderPositions.findOne(buildFindByIdSelector(positionId));
|
|
62
62
|
},
|
|
63
|
-
delete: async (orderPositionId,
|
|
63
|
+
delete: async (orderPositionId, unchainedAPI) => {
|
|
64
64
|
const selector = buildFindByIdSelector(orderPositionId);
|
|
65
65
|
const orderPosition = await OrderPositions.findOne(selector, {});
|
|
66
66
|
log(`Remove Position ${orderPositionId}`, {
|
|
67
67
|
orderId: orderPosition.orderId,
|
|
68
68
|
});
|
|
69
69
|
await OrderPositions.deleteOne(selector);
|
|
70
|
-
await updateCalculation(orderPosition.orderId,
|
|
70
|
+
await updateCalculation(orderPosition.orderId, unchainedAPI);
|
|
71
71
|
await emit('ORDER_REMOVE_CART_ITEM', {
|
|
72
72
|
orderPosition,
|
|
73
73
|
});
|
|
74
74
|
return { ...orderPosition, calculation: [] };
|
|
75
75
|
},
|
|
76
|
-
removePositions: async ({ orderId },
|
|
76
|
+
removePositions: async ({ orderId }, unchainedAPI) => {
|
|
77
77
|
log('Remove Positions', { orderId });
|
|
78
78
|
const result = await OrderPositions.deleteMany({ orderId });
|
|
79
|
-
await updateCalculation(orderId,
|
|
79
|
+
await updateCalculation(orderId, unchainedAPI);
|
|
80
80
|
await emit('ORDER_EMPTY_CART', { orderId, count: result.deletedCount });
|
|
81
81
|
return result.deletedCount;
|
|
82
82
|
},
|
|
83
|
-
updateProductItem: async ({ quantity, configuration }, { order, product, orderPosition },
|
|
83
|
+
updateProductItem: async ({ quantity, configuration }, { order, product, orderPosition }, unchainedAPI) => {
|
|
84
84
|
const selector = buildFindByIdSelector(orderPosition._id, order._id);
|
|
85
85
|
const modifier = {
|
|
86
86
|
$set: {
|
|
87
87
|
updated: new Date(),
|
|
88
|
-
updatedBy: requestContext.userId,
|
|
89
88
|
},
|
|
90
89
|
};
|
|
91
90
|
if (quantity !== null && quantity !== orderPosition.quantity) {
|
|
92
91
|
modifier.$set.quantity = quantity;
|
|
93
92
|
}
|
|
94
93
|
if (configuration !== null) {
|
|
95
|
-
const resolvedProduct = await
|
|
94
|
+
const resolvedProduct = await unchainedAPI.modules.products.resolveOrderableProduct(product, { configuration }, unchainedAPI);
|
|
96
95
|
modifier.$set.productId = resolvedProduct._id;
|
|
97
96
|
modifier.$set.configuration = configuration;
|
|
98
97
|
}
|
|
@@ -101,17 +100,26 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
101
100
|
product,
|
|
102
101
|
configuration,
|
|
103
102
|
quantityDiff: quantity - orderPosition.quantity,
|
|
104
|
-
},
|
|
103
|
+
}, unchainedAPI);
|
|
105
104
|
await OrderPositions.updateOne(selector, modifier);
|
|
106
|
-
await updateCalculation(order._id,
|
|
105
|
+
await updateCalculation(order._id, unchainedAPI);
|
|
107
106
|
const updatedOrderPosition = await OrderPositions.findOne(selector, {});
|
|
108
107
|
await emit('ORDER_UPDATE_CART_ITEM', {
|
|
109
108
|
orderPosition: updatedOrderPosition,
|
|
110
109
|
});
|
|
111
110
|
return updatedOrderPosition;
|
|
112
111
|
},
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
removeProductByIdFromAllPositions: async ({ productId }, unchainedAPI) => {
|
|
113
|
+
log('Remove Position Product', { productId });
|
|
114
|
+
const positions = await OrderPositions.find({ productId }, { projection: { orderId: 1 } }).toArray();
|
|
115
|
+
const result = await OrderPositions.deleteMany({ productId });
|
|
116
|
+
await Promise.all(positions.map(async ({ orderId }) => {
|
|
117
|
+
await updateCalculation(orderId, unchainedAPI);
|
|
118
|
+
}));
|
|
119
|
+
return result.deletedCount;
|
|
120
|
+
},
|
|
121
|
+
updateScheduling: async ({ order, orderDelivery, orderPosition }, unchainedAPI) => {
|
|
122
|
+
const { modules } = unchainedAPI;
|
|
115
123
|
// scheduling (store in db for auditing)
|
|
116
124
|
const product = await modules.products.findProduct({
|
|
117
125
|
productId: orderPosition.productId,
|
|
@@ -124,7 +132,7 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
124
132
|
const scheduling = await Promise.all((await modules.warehousing.findSupported({
|
|
125
133
|
product,
|
|
126
134
|
deliveryProvider,
|
|
127
|
-
},
|
|
135
|
+
}, unchainedAPI)).map(async (warehousingProvider) => {
|
|
128
136
|
const context = {
|
|
129
137
|
warehousingProvider,
|
|
130
138
|
deliveryProvider,
|
|
@@ -137,7 +145,7 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
137
145
|
referenceDate: order.ordered,
|
|
138
146
|
quantity: orderPosition.quantity,
|
|
139
147
|
};
|
|
140
|
-
const dispatch = await
|
|
148
|
+
const dispatch = await unchainedAPI.modules.warehousing.estimatedDispatch(warehousingProvider, context, unchainedAPI);
|
|
141
149
|
return {
|
|
142
150
|
warehousingProviderId: warehousingProvider._id,
|
|
143
151
|
...dispatch,
|
|
@@ -148,30 +156,30 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
148
156
|
});
|
|
149
157
|
return OrderPositions.findOne(generateDbFilterById(orderPosition._id), {});
|
|
150
158
|
},
|
|
151
|
-
updateCalculation: async (orderPosition,
|
|
159
|
+
updateCalculation: async (orderPosition, unchainedAPI) => {
|
|
152
160
|
log(`OrderPosition ${orderPosition._id} -> Update Calculation`, {
|
|
153
161
|
orderId: orderPosition.orderId,
|
|
154
162
|
});
|
|
155
|
-
const calculation = await
|
|
163
|
+
const calculation = await unchainedAPI.modules.products.calculate({ item: orderPosition, configuration: orderPosition.configuration }, unchainedAPI);
|
|
156
164
|
const selector = buildFindByIdSelector(orderPosition._id);
|
|
157
165
|
await OrderPositions.updateOne(selector, {
|
|
158
166
|
$set: { calculation },
|
|
159
167
|
});
|
|
160
168
|
return OrderPositions.findOne(selector, {});
|
|
161
169
|
},
|
|
162
|
-
addProductItem: async (orderPosition, { order, product },
|
|
163
|
-
const { modules } =
|
|
170
|
+
addProductItem: async (orderPosition, { order, product }, unchainedAPI) => {
|
|
171
|
+
const { modules } = unchainedAPI;
|
|
164
172
|
const { configuration, orderId: positionOrderId, quantity, ...scope } = orderPosition;
|
|
165
173
|
const orderId = order._id || positionOrderId;
|
|
166
174
|
// Resolve product
|
|
167
|
-
const resolvedProduct = await modules.products.resolveOrderableProduct(product, { configuration },
|
|
175
|
+
const resolvedProduct = await modules.products.resolveOrderableProduct(product, { configuration }, unchainedAPI);
|
|
168
176
|
// Validate add to cart mutation
|
|
169
177
|
await ordersSettings.validateOrderPosition({
|
|
170
178
|
order,
|
|
171
179
|
product,
|
|
172
180
|
configuration,
|
|
173
181
|
quantityDiff: quantity,
|
|
174
|
-
},
|
|
182
|
+
}, unchainedAPI);
|
|
175
183
|
// Search for existing position
|
|
176
184
|
const selector = {
|
|
177
185
|
orderId,
|
|
@@ -183,13 +191,11 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
183
191
|
await OrderPositions.updateOne(selector, {
|
|
184
192
|
$set: {
|
|
185
193
|
updated: new Date(),
|
|
186
|
-
updatedBy: requestContext.userId,
|
|
187
194
|
},
|
|
188
195
|
$inc: { quantity },
|
|
189
196
|
$setOnInsert: {
|
|
190
197
|
_id: generateDbObjectId(),
|
|
191
198
|
created: new Date(),
|
|
192
|
-
createdBy: requestContext.userId,
|
|
193
199
|
calculation: [],
|
|
194
200
|
scheduling: [],
|
|
195
201
|
orderId,
|
|
@@ -199,7 +205,7 @@ export const configureOrderPositionsModule = ({ OrderPositions, updateCalculatio
|
|
|
199
205
|
...scope,
|
|
200
206
|
},
|
|
201
207
|
}, { upsert: true });
|
|
202
|
-
await updateCalculation(orderId,
|
|
208
|
+
await updateCalculation(orderId, unchainedAPI);
|
|
203
209
|
const upsertedOrderPosition = await OrderPositions.findOne(selector);
|
|
204
210
|
await emit('ORDER_ADD_PRODUCT', { orderPosition: upsertedOrderPosition });
|
|
205
211
|
return upsertedOrderPosition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureOrderPositionsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,qBAAqB,GAAa;IACtC,wBAAwB;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,eAAuB,EAAE,OAAgB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"configureOrderPositionsModule.js","sourceRoot":"","sources":["../../src/module/configureOrderPositionsModule.ts"],"names":[],"mappings":"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"}
|