@unchainedshop/core-orders 1.1.3

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.
Files changed (137) hide show
  1. package/.npm/package/README +7 -0
  2. package/.npm/package/npm-shrinkwrap.json +190 -0
  3. package/.versions +54 -0
  4. package/README.md +5 -0
  5. package/lib/db/OrderDeliveriesCollection.d.ts +3 -0
  6. package/lib/db/OrderDeliveriesCollection.js +8 -0
  7. package/lib/db/OrderDeliveriesCollection.js.map +1 -0
  8. package/lib/db/OrderDeliveriesSchema.d.ts +1 -0
  9. package/lib/db/OrderDeliveriesSchema.js +20 -0
  10. package/lib/db/OrderDeliveriesSchema.js.map +1 -0
  11. package/lib/db/OrderDiscountTrigger.d.ts +4 -0
  12. package/lib/db/OrderDiscountTrigger.js +6 -0
  13. package/lib/db/OrderDiscountTrigger.js.map +1 -0
  14. package/lib/db/OrderDiscountsCollection.d.ts +3 -0
  15. package/lib/db/OrderDiscountsCollection.js +11 -0
  16. package/lib/db/OrderDiscountsCollection.js.map +1 -0
  17. package/lib/db/OrderDiscountsSchema.d.ts +1 -0
  18. package/lib/db/OrderDiscountsSchema.js +12 -0
  19. package/lib/db/OrderDiscountsSchema.js.map +1 -0
  20. package/lib/db/OrderPaymentsCollection.d.ts +3 -0
  21. package/lib/db/OrderPaymentsCollection.js +8 -0
  22. package/lib/db/OrderPaymentsCollection.js.map +1 -0
  23. package/lib/db/OrderPaymentsSchema.d.ts +1 -0
  24. package/lib/db/OrderPaymentsSchema.js +20 -0
  25. package/lib/db/OrderPaymentsSchema.js.map +1 -0
  26. package/lib/db/OrderPositionsCollection.d.ts +3 -0
  27. package/lib/db/OrderPositionsCollection.js +11 -0
  28. package/lib/db/OrderPositionsCollection.js.map +1 -0
  29. package/lib/db/OrderPositionsSchema.d.ts +1 -0
  30. package/lib/db/OrderPositionsSchema.js +37 -0
  31. package/lib/db/OrderPositionsSchema.js.map +1 -0
  32. package/lib/db/OrdersCollection.d.ts +3 -0
  33. package/lib/db/OrdersCollection.js +33 -0
  34. package/lib/db/OrdersCollection.js.map +1 -0
  35. package/lib/db/OrdersSchema.d.ts +1 -0
  36. package/lib/db/OrdersSchema.js +30 -0
  37. package/lib/db/OrdersSchema.js.map +1 -0
  38. package/lib/director/OrderDiscountAdapter.d.ts +2 -0
  39. package/lib/director/OrderDiscountAdapter.js +3 -0
  40. package/lib/director/OrderDiscountAdapter.js.map +1 -0
  41. package/lib/director/OrderDiscountDirector.d.ts +2 -0
  42. package/lib/director/OrderDiscountDirector.js +3 -0
  43. package/lib/director/OrderDiscountDirector.js.map +1 -0
  44. package/lib/director/OrderPricingAdapter.d.ts +3 -0
  45. package/lib/director/OrderPricingAdapter.js +25 -0
  46. package/lib/director/OrderPricingAdapter.js.map +1 -0
  47. package/lib/director/OrderPricingDirector.d.ts +2 -0
  48. package/lib/director/OrderPricingDirector.js +48 -0
  49. package/lib/director/OrderPricingDirector.js.map +1 -0
  50. package/lib/director/OrderPricingSheet.d.ts +3 -0
  51. package/lib/director/OrderPricingSheet.js +113 -0
  52. package/lib/director/OrderPricingSheet.js.map +1 -0
  53. package/lib/module/configureOrderDeliveriesModule.d.ts +7 -0
  54. package/lib/module/configureOrderDeliveriesModule.js +164 -0
  55. package/lib/module/configureOrderDeliveriesModule.js.map +1 -0
  56. package/lib/module/configureOrderDiscountsModule.d.ts +7 -0
  57. package/lib/module/configureOrderDiscountsModule.js +183 -0
  58. package/lib/module/configureOrderDiscountsModule.js.map +1 -0
  59. package/lib/module/configureOrderPaymentsModule.d.ts +7 -0
  60. package/lib/module/configureOrderPaymentsModule.js +229 -0
  61. package/lib/module/configureOrderPaymentsModule.js.map +1 -0
  62. package/lib/module/configureOrderPositionsModule.d.ts +7 -0
  63. package/lib/module/configureOrderPositionsModule.js +213 -0
  64. package/lib/module/configureOrderPositionsModule.js.map +1 -0
  65. package/lib/module/configureOrdersModule-mutations.d.ts +12 -0
  66. package/lib/module/configureOrdersModule-mutations.js +162 -0
  67. package/lib/module/configureOrdersModule-mutations.js.map +1 -0
  68. package/lib/module/configureOrdersModule-processing.d.ts +13 -0
  69. package/lib/module/configureOrdersModule-processing.js +343 -0
  70. package/lib/module/configureOrdersModule-processing.js.map +1 -0
  71. package/lib/module/configureOrdersModule-queries.d.ts +5 -0
  72. package/lib/module/configureOrdersModule-queries.js +55 -0
  73. package/lib/module/configureOrdersModule-queries.js.map +1 -0
  74. package/lib/module/configureOrdersModule-transformations.d.ts +5 -0
  75. package/lib/module/configureOrdersModule-transformations.js +108 -0
  76. package/lib/module/configureOrdersModule-transformations.js.map +1 -0
  77. package/lib/module/configureOrdersModule.d.ts +3 -0
  78. package/lib/module/configureOrdersModule.js +239 -0
  79. package/lib/module/configureOrdersModule.js.map +1 -0
  80. package/lib/orders-index.d.ts +11 -0
  81. package/lib/orders-index.js +12 -0
  82. package/lib/orders-index.js.map +1 -0
  83. package/lib/orders-settings.d.ts +20 -0
  84. package/lib/orders-settings.js +17 -0
  85. package/lib/orders-settings.js.map +1 -0
  86. package/lib/service/createUserCartService.d.ts +2 -0
  87. package/lib/service/createUserCartService.js +23 -0
  88. package/lib/service/createUserCartService.js.map +1 -0
  89. package/lib/service/migrateOrderCartService.d.ts +2 -0
  90. package/lib/service/migrateOrderCartService.js +10 -0
  91. package/lib/service/migrateOrderCartService.js.map +1 -0
  92. package/lib/service/orderServices.d.ts +2 -0
  93. package/lib/service/orderServices.js +7 -0
  94. package/lib/service/orderServices.js.map +1 -0
  95. package/package.js +33 -0
  96. package/package.json +43 -0
  97. package/plugins/discount-100-off.ts +44 -0
  98. package/plugins/discount-half-price-manual.ts +43 -0
  99. package/plugins/discount-half-price.ts +46 -0
  100. package/plugins/order-delivery.ts +45 -0
  101. package/plugins/order-discount.ts +158 -0
  102. package/plugins/order-items-discount.ts +116 -0
  103. package/plugins/order-items.ts +61 -0
  104. package/plugins/order-payment.ts +46 -0
  105. package/src/db/OrderDeliveriesCollection.ts +12 -0
  106. package/src/db/OrderDeliveriesSchema.js +24 -0
  107. package/src/db/OrderDiscountTrigger.ts +4 -0
  108. package/src/db/OrderDiscountsCollection.ts +15 -0
  109. package/src/db/OrderDiscountsSchema.js +15 -0
  110. package/src/db/OrderPaymentsCollection.ts +12 -0
  111. package/src/db/OrderPaymentsSchema.js +24 -0
  112. package/src/db/OrderPositionsCollection.ts +15 -0
  113. package/src/db/OrderPositionsSchema.js +41 -0
  114. package/src/db/OrdersCollection.ts +37 -0
  115. package/src/db/OrdersSchema.js +34 -0
  116. package/src/director/OrderDiscountAdapter.ts +5 -0
  117. package/src/director/OrderDiscountDirector.ts +4 -0
  118. package/src/director/OrderPricingAdapter.ts +41 -0
  119. package/src/director/OrderPricingDirector.ts +68 -0
  120. package/src/director/OrderPricingSheet.ts +138 -0
  121. package/src/module/configureOrderDeliveriesModule.ts +240 -0
  122. package/src/module/configureOrderDiscountsModule.ts +245 -0
  123. package/src/module/configureOrderPaymentsModule.ts +331 -0
  124. package/src/module/configureOrderPositionsModule.ts +329 -0
  125. package/src/module/configureOrdersModule-mutations.ts +230 -0
  126. package/src/module/configureOrdersModule-processing.ts +506 -0
  127. package/src/module/configureOrdersModule-queries.ts +71 -0
  128. package/src/module/configureOrdersModule-transformations.ts +145 -0
  129. package/src/module/configureOrdersModule.ts +359 -0
  130. package/src/orders-index.ts +15 -0
  131. package/src/orders-settings.ts +23 -0
  132. package/src/service/createUserCartService.ts +38 -0
  133. package/src/service/migrateOrderCartService.ts +22 -0
  134. package/src/service/orderServices.ts +8 -0
  135. package/tests/orders-index.test.ts +50 -0
  136. package/tsconfig.build.json +26 -0
  137. package/tsconfig.json +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrdersModule-mutations.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-mutations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Collection } from '@unchainedshop/types/common';
2
+ import { Order, OrderProcessing, OrdersModule } from '@unchainedshop/types/orders';
3
+ import { OrderDelivery } from '@unchainedshop/types/orders.deliveries';
4
+ import { OrderPayment } from '@unchainedshop/types/orders.payments';
5
+ import { OrderPosition } from '@unchainedshop/types/orders.positions';
6
+ export declare const configureOrderModuleProcessing: ({ Orders, OrderPositions, OrderDeliveries, OrderPayments, updateCalculation, updateStatus, }: {
7
+ Orders: Collection<Order>;
8
+ OrderPositions: Collection<OrderPosition>;
9
+ OrderDeliveries: Collection<OrderDelivery>;
10
+ OrderPayments: Collection<OrderPayment>;
11
+ updateCalculation: OrdersModule['updateCalculation'];
12
+ updateStatus: OrdersModule['updateStatus'];
13
+ }) => OrderProcessing;
@@ -0,0 +1,343 @@
1
+ import { OrderStatus } from '@unchainedshop/types/orders';
2
+ import { emit, registerEvents } from '@unchainedshop/events';
3
+ import { log } from '@unchainedshop/logger';
4
+ import { generateDbFilterById } from '@unchainedshop/utils';
5
+ import { ordersSettings } from '../orders-settings';
6
+ const ORDER_PROCESSING_EVENTS = ['ORDER_CHECKOUT', 'ORDER_CONFIRMED', 'ORDER_FULLFILLED'];
7
+ export const configureOrderModuleProcessing = ({ Orders, OrderPositions, OrderDeliveries, OrderPayments, updateCalculation, updateStatus, }) => {
8
+ registerEvents(ORDER_PROCESSING_EVENTS);
9
+ const findOrderPositions = async (order) => OrderPositions.find({
10
+ orderId: order._id,
11
+ quantity: { $gt: 0 },
12
+ }).toArray();
13
+ const findOrderDelivery = async (order) => OrderDeliveries.findOne(generateDbFilterById(order.deliveryId), {});
14
+ const findOrderPayment = async (order) => OrderPayments.findOne(generateDbFilterById(order.paymentId), {});
15
+ const missingInputDataForCheckout = async (order) => {
16
+ const errors = [];
17
+ if (!order.contact)
18
+ errors.push(new Error('Contact data not provided'));
19
+ if (!order.billingAddress)
20
+ errors.push(new Error('Billing address not provided'));
21
+ if (!(await findOrderDelivery(order)))
22
+ errors.push('No delivery provider selected');
23
+ if (!(await findOrderPayment(order)))
24
+ errors.push('No payment provider selected');
25
+ return errors;
26
+ };
27
+ const itemValidationErrors = async (order, { modules }) => {
28
+ // Check if items are valid
29
+ const orderPositions = await findOrderPositions(order);
30
+ if (orderPositions.length === 0) {
31
+ const NoItemsError = new Error('No items to checkout');
32
+ NoItemsError.name = 'NoItemsError';
33
+ return [NoItemsError];
34
+ }
35
+ const validationErrors = await Promise.all(orderPositions.map(async (orderPosition) => {
36
+ const errors = [];
37
+ log(`OrderPosition ${orderPosition._id} -> Validate ${orderPosition.quantity}`, {
38
+ orderId: orderPosition.orderId,
39
+ });
40
+ const product = await modules.products.findProduct({
41
+ productId: orderPosition.productId,
42
+ });
43
+ if (!modules.products.isActive(product)) {
44
+ errors.push(new Error('This product is not available anymore'));
45
+ }
46
+ const quotation = orderPosition.quotationId &&
47
+ (await modules.quotations.findQuotation({
48
+ quotationId: orderPosition.quotationId,
49
+ }));
50
+ if (quotation && !modules.quotations.isProposalValid(quotation)) {
51
+ errors.push(new Error('Quotation expired or fullfiled, please request a new offer'));
52
+ }
53
+ return errors;
54
+ }));
55
+ return validationErrors.flatMap((f) => f);
56
+ };
57
+ const isAutoConfirmationEnabled = async (order, requestContext) => {
58
+ const { modules } = requestContext;
59
+ const orderPayment = await findOrderPayment(order);
60
+ let isBlockingOrderConfirmation = orderPayment &&
61
+ (await modules.orders.payments.isBlockingOrderConfirmation(orderPayment, requestContext));
62
+ if (isBlockingOrderConfirmation)
63
+ return false;
64
+ const orderDelivery = await findOrderDelivery(order);
65
+ isBlockingOrderConfirmation =
66
+ orderDelivery &&
67
+ (await modules.orders.deliveries.isBlockingOrderConfirmation(orderDelivery, requestContext));
68
+ if (isBlockingOrderConfirmation)
69
+ return false;
70
+ if (order.status === OrderStatus.FULLFILLED || order.status === OrderStatus.CONFIRMED) {
71
+ return false;
72
+ }
73
+ return true;
74
+ };
75
+ const isAutoFullfillmentEnabled = async (order, requestContext) => {
76
+ const { modules } = requestContext;
77
+ const orderPayment = await findOrderPayment(order);
78
+ let isBlockingOrderFullfillment = orderPayment && modules.orders.payments.isBlockingOrderFullfillment(orderPayment);
79
+ if (isBlockingOrderFullfillment)
80
+ return false;
81
+ const orderDelivery = await findOrderDelivery(order);
82
+ isBlockingOrderFullfillment =
83
+ orderDelivery && modules.orders.deliveries.isBlockingOrderFullfillment(orderDelivery);
84
+ if (isBlockingOrderFullfillment)
85
+ return false;
86
+ if (order.status === OrderStatus.FULLFILLED) {
87
+ return false;
88
+ }
89
+ return true;
90
+ };
91
+ const findNextStatus = async (status, order, requestContext) => {
92
+ if (status === null) {
93
+ if ((await missingInputDataForCheckout(order)).length === 0) {
94
+ emit('ORDER_CHECKOUT', { order });
95
+ return OrderStatus.PENDING;
96
+ }
97
+ }
98
+ if (status === OrderStatus.PENDING) {
99
+ if (await isAutoConfirmationEnabled(order, requestContext)) {
100
+ emit('ORDER_CONFIRMED', { order });
101
+ return OrderStatus.CONFIRMED;
102
+ }
103
+ }
104
+ if (status === OrderStatus.CONFIRMED) {
105
+ const isFullfilled = await isAutoFullfillmentEnabled(order, requestContext);
106
+ if (isFullfilled) {
107
+ emit('ORDER_FULLFILLED', { order });
108
+ return OrderStatus.FULLFILLED;
109
+ }
110
+ }
111
+ return status;
112
+ };
113
+ return {
114
+ checkout: async (orderId, { orderContext, paymentContext, deliveryContext }, requestContext) => {
115
+ const { modules, localeContext, userId } = requestContext;
116
+ await modules.orders.updateContext(orderId, orderContext, requestContext);
117
+ let order = await modules.orders.findOrder({ orderId });
118
+ if (order.status !== null)
119
+ return order;
120
+ const errors = [
121
+ ...(await missingInputDataForCheckout(order)),
122
+ ...(await itemValidationErrors(order, requestContext)),
123
+ ].filter(Boolean);
124
+ if (errors.length > 0) {
125
+ throw new Error(errors[0]);
126
+ }
127
+ // Process order
128
+ order = await modules.orders.processOrder(order, {
129
+ paymentContext,
130
+ deliveryContext,
131
+ }, requestContext);
132
+ // After checkout, store last checkout information on user
133
+ await modules.users.updateLastBillingAddress(order.userId, order.billingAddress, userId);
134
+ await modules.users.updateLastContact(order.userId, order.contact, userId);
135
+ // Then ensure new cart is created before we return from checkout
136
+ const user = await modules.users.findUserById(order.userId);
137
+ const locale = modules.users.userLocale(user, {
138
+ localeContext,
139
+ });
140
+ await modules.orders.ensureCartForUser({
141
+ user,
142
+ countryCode: locale.country,
143
+ }, requestContext);
144
+ return order;
145
+ },
146
+ confirm: async (orderId, { orderContext, paymentContext, deliveryContext }, requestContext) => {
147
+ const { modules } = requestContext;
148
+ await modules.orders.updateContext(orderId, orderContext, requestContext);
149
+ const order = await modules.orders.findOrder({ orderId });
150
+ if (order.status !== OrderStatus.PENDING)
151
+ return order;
152
+ return modules.orders.processOrder(order, {
153
+ paymentContext,
154
+ deliveryContext,
155
+ nextStatus: OrderStatus.CONFIRMED,
156
+ }, requestContext);
157
+ },
158
+ reject: async (orderId, { orderContext, paymentContext, deliveryContext }, requestContext) => {
159
+ const { modules } = requestContext;
160
+ await modules.orders.updateContext(orderId, orderContext, requestContext);
161
+ const order = await modules.orders.findOrder({ orderId });
162
+ if (order.status !== OrderStatus.PENDING)
163
+ return order;
164
+ return modules.orders.processOrder(order, {
165
+ paymentContext,
166
+ deliveryContext,
167
+ nextStatus: OrderStatus.REJECTED,
168
+ }, requestContext);
169
+ },
170
+ ensureCartForUser: async ({ user, countryCode }, requestContext) => {
171
+ const { modules, services } = requestContext;
172
+ if (!ordersSettings.ensureUserHasCart)
173
+ return null;
174
+ const cart = await modules.orders.cart({ countryContext: countryCode }, user);
175
+ if (cart)
176
+ return cart;
177
+ return services.orders.createUserCart({
178
+ user,
179
+ countryCode,
180
+ }, requestContext);
181
+ },
182
+ migrateCart: async ({ fromCart, shouldMerge, toCart }, requestContext) => {
183
+ const fromCartId = fromCart._id;
184
+ if (!toCart || !shouldMerge) {
185
+ // No destination cart, move whole cart
186
+ await Orders.updateOne(generateDbFilterById(fromCart._id), {
187
+ $set: {
188
+ userId: requestContext.userId,
189
+ },
190
+ });
191
+ return updateCalculation(fromCartId, requestContext);
192
+ }
193
+ // Move positions
194
+ const toCartId = toCart._id;
195
+ await OrderPositions.updateMany({ orderId: fromCartId }, {
196
+ $set: {
197
+ orderId: toCartId,
198
+ },
199
+ });
200
+ await updateCalculation(fromCartId, requestContext);
201
+ return updateCalculation(toCartId, requestContext);
202
+ },
203
+ processOrder: async (initialOrder, params, requestContext) => {
204
+ const { modules } = requestContext;
205
+ const { paymentContext, deliveryContext, nextStatus: forceNextStatus } = params;
206
+ const orderId = initialOrder._id;
207
+ let order = initialOrder;
208
+ let nextStatus = forceNextStatus || (await findNextStatus(initialOrder.status, order, requestContext));
209
+ if (nextStatus === OrderStatus.PENDING) {
210
+ // auto charge during transition to pending
211
+ const orderPayment = await modules.orders.payments.findOrderPayment({
212
+ orderPaymentId: order.paymentId,
213
+ });
214
+ await modules.orders.payments.charge(orderPayment, { transactionContext: paymentContext }, requestContext);
215
+ nextStatus = await findNextStatus(nextStatus, order, requestContext);
216
+ }
217
+ if (nextStatus === OrderStatus.REJECTED) {
218
+ // auto cancel during transition to rejected
219
+ const orderPayment = await modules.orders.payments.findOrderPayment({
220
+ orderPaymentId: order.paymentId,
221
+ });
222
+ await modules.orders.payments.cancel(orderPayment, { transactionContext: paymentContext }, requestContext);
223
+ nextStatus = await findNextStatus(nextStatus, order, requestContext);
224
+ }
225
+ if (nextStatus === OrderStatus.CONFIRMED) {
226
+ // confirm pre-authorized payments
227
+ const orderPayment = await modules.orders.payments.findOrderPayment({
228
+ orderPaymentId: order.paymentId,
229
+ });
230
+ await modules.orders.payments.confirm(orderPayment, { transactionContext: paymentContext }, requestContext);
231
+ const orderDelivery = await modules.orders.deliveries.findDelivery({
232
+ orderDeliveryId: order.deliveryId,
233
+ });
234
+ if (order.status !== OrderStatus.CONFIRMED) {
235
+ // we have to stop here shortly to complete the confirmation
236
+ // before auto delivery is started, else we have no chance to create
237
+ // documents and numbers that are needed for delivery
238
+ order = await updateStatus(orderId, {
239
+ status: OrderStatus.CONFIRMED,
240
+ info: 'before delivery',
241
+ }, requestContext);
242
+ await modules.orders.deliveries.send(orderDelivery, {
243
+ order,
244
+ deliveryContext,
245
+ }, requestContext);
246
+ // Generate enrollments
247
+ if (!order.originEnrollmentId) {
248
+ const orderPositions = await modules.orders.positions.findOrderPositions({ orderId });
249
+ const mappedProductOrderPositions = await Promise.all(orderPositions.map(async (orderPosition) => {
250
+ const product = await modules.products.findProduct({
251
+ productId: orderPosition.productId,
252
+ });
253
+ return {
254
+ orderPosition,
255
+ product,
256
+ };
257
+ }));
258
+ const filteredProductOrderPositions = mappedProductOrderPositions.filter((item) => item.product?.plan);
259
+ if (filteredProductOrderPositions.length > 0) {
260
+ await modules.enrollments.createFromCheckout(order, {
261
+ items: filteredProductOrderPositions,
262
+ context: {
263
+ paymentContext,
264
+ deliveryContext,
265
+ },
266
+ }, requestContext);
267
+ }
268
+ }
269
+ }
270
+ else {
271
+ await modules.orders.deliveries.send(orderDelivery, {
272
+ order,
273
+ deliveryContext,
274
+ }, requestContext);
275
+ }
276
+ // Reserve items
277
+ // If we came here, the checkout succeeded, so we can reserve the items
278
+ const orderPositions = await findOrderPositions(order);
279
+ await Promise.all(orderPositions.map(async (orderPosition) => {
280
+ if (orderPosition.quotationId) {
281
+ await modules.quotations.fullfillQuotation(orderPosition.quotationId, {
282
+ orderId,
283
+ orderPositionId: orderPosition._id,
284
+ }, requestContext);
285
+ }
286
+ log(`OrderPosition ${orderPosition._id} -> Reserve ${orderPosition.quantity}`, {
287
+ orderId,
288
+ });
289
+ }));
290
+ nextStatus = await findNextStatus(nextStatus, order, requestContext);
291
+ // TODO: we will use this function to keep a "Ordered in Flight" amount, allowing us to
292
+ // do live stock stuff
293
+ // 2. Reserve quantity at Warehousing Provider until order is CANCELLED/FULLFILLED
294
+ // ???
295
+ }
296
+ order = await updateStatus(order._id, { status: nextStatus, info: 'order processed' }, requestContext);
297
+ if (initialOrder.status !== order.status) {
298
+ if (order.status === OrderStatus.REJECTED) {
299
+ await modules.orders.sendOrderRejectionToCustomer(order, params, requestContext);
300
+ }
301
+ else {
302
+ await modules.orders.sendOrderConfirmationToCustomer(order, params, requestContext);
303
+ }
304
+ }
305
+ return order;
306
+ },
307
+ sendOrderConfirmationToCustomer: async (order, params, { modules, localeContext, userId }) => {
308
+ const user = await modules.users.findUserById(order.userId);
309
+ const locale = modules.users.userLocale(user, {
310
+ localeContext,
311
+ });
312
+ await modules.worker.addWork({
313
+ type: 'MESSAGE',
314
+ retries: 0,
315
+ input: {
316
+ ...params,
317
+ locale,
318
+ template: 'ORDER_CONFIRMATION',
319
+ orderId: order._id,
320
+ },
321
+ }, userId);
322
+ return order;
323
+ },
324
+ sendOrderRejectionToCustomer: async (order, params, { modules, localeContext, userId }) => {
325
+ const user = await modules.users.findUserById(order.userId);
326
+ const locale = modules.users.userLocale(user, {
327
+ localeContext,
328
+ });
329
+ await modules.worker.addWork({
330
+ type: 'MESSAGE',
331
+ retries: 0,
332
+ input: {
333
+ ...params,
334
+ locale,
335
+ template: 'ORDER_REJECTION',
336
+ orderId: order._id,
337
+ },
338
+ }, userId);
339
+ return order;
340
+ },
341
+ };
342
+ };
343
+ //# sourceMappingURL=configureOrdersModule-processing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrdersModule-processing.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-processing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Collection } from '@unchainedshop/types/common';
2
+ import { Order, OrderQueries } from '@unchainedshop/types/orders';
3
+ export declare const configureOrdersModuleQueries: ({ Orders, }: {
4
+ Orders: Collection<Order>;
5
+ }) => OrderQueries;
@@ -0,0 +1,55 @@
1
+ import { generateDbFilterById } from '@unchainedshop/utils';
2
+ const buildFindSelector = ({ includeCarts, status, userId, queryString }) => {
3
+ const selector = {};
4
+ if (userId) {
5
+ selector.userId = userId;
6
+ }
7
+ if (status) {
8
+ selector.status = status;
9
+ }
10
+ else if (!includeCarts) {
11
+ selector.status = { $ne: null };
12
+ }
13
+ if (queryString) {
14
+ selector.$text = { $search: queryString };
15
+ }
16
+ return selector;
17
+ };
18
+ export const configureOrdersModuleQueries = ({ Orders, }) => {
19
+ return {
20
+ // Queries
21
+ count: async (query) => {
22
+ const orderCount = await Orders.countDocuments(buildFindSelector(query));
23
+ return orderCount;
24
+ },
25
+ findOrder: async ({ orderId, orderNumber }, options) => {
26
+ const selector = orderId ? generateDbFilterById(orderId) : { orderNumber };
27
+ return Orders.findOne(selector, options);
28
+ },
29
+ findOrders: async ({ limit, offset, queryString, ...query }, options) => {
30
+ const findOptions = {
31
+ skip: offset,
32
+ limit,
33
+ sort: {
34
+ created: -1,
35
+ },
36
+ };
37
+ const selector = buildFindSelector({ queryString, ...query });
38
+ if (queryString) {
39
+ return Orders.find(selector, {
40
+ ...options,
41
+ projection: { score: { $meta: 'textScore' } },
42
+ sort: { score: { $meta: 'textScore' } },
43
+ }).toArray();
44
+ }
45
+ return Orders.find(selector, findOptions).toArray();
46
+ },
47
+ orderExists: async ({ orderId }) => {
48
+ const orderCount = await Orders.countDocuments(generateDbFilterById(orderId), {
49
+ limit: 1,
50
+ });
51
+ return !!orderCount;
52
+ },
53
+ };
54
+ };
55
+ //# sourceMappingURL=configureOrdersModule-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrdersModule-queries.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,iBAAiB,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAc,EAAE,EAAE;IACtF,MAAM,QAAQ,GAAU,EAAE,CAAC;IAE3B,IAAI,MAAM,EAAE;QACV,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1B;IAED,IAAI,MAAM,EAAE;QACV,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1B;SAAM,IAAI,CAAC,YAAY,EAAE;QACxB,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KACjC;IAED,IAAI,WAAW,EAAE;QACf,QAAQ,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KAC3C;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,MAAM,GAGP,EAAgB,EAAE;IACjB,OAAO;QACL,UAAU;QACV,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE;YACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YAE3E,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;YACtE,MAAM,WAAW,GAAgB;gBAC/B,IAAI,EAAE,MAAM;gBACZ,KAAK;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,CAAC,CAAC;iBACZ;aACF,CAAC;YACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAE9D,IAAI,WAAW,EAAE;gBACf,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC3B,GAAG,OAAO;oBACV,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBAC7C,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;iBACxC,CAAC,CAAC,OAAO,EAAE,CAAC;aACd;YAED,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBAC5E,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,UAAU,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Collection } from '@unchainedshop/types/common';
2
+ import { Order, OrderTransformations } from '@unchainedshop/types/orders';
3
+ export declare const configureOrderModuleTransformations: ({ Orders, }: {
4
+ Orders: Collection<Order>;
5
+ }) => OrderTransformations;
@@ -0,0 +1,108 @@
1
+ import { OrderPricingSheet } from '../director/OrderPricingSheet';
2
+ export const configureOrderModuleTransformations = ({ Orders, }) => {
3
+ return {
4
+ discounted: async (order, orderDiscount, requestContext) => {
5
+ const { modules } = requestContext;
6
+ // Delivery discounts
7
+ const orderDelivery = await modules.orders.deliveries.findDelivery({
8
+ orderDeliveryId: order.deliveryId,
9
+ });
10
+ const orderDeliveryDiscounts = modules.orders.deliveries.discounts(orderDelivery, { order, orderDiscount }, requestContext);
11
+ // Payment discounts
12
+ const orderPayment = await modules.orders.payments.findOrderPayment({
13
+ orderPaymentId: order.paymentId,
14
+ });
15
+ const orderPaymentDiscounts = modules.orders.payments.discounts(orderPayment, { order, orderDiscount }, requestContext);
16
+ // Position discounts
17
+ const orderPositions = await modules.orders.positions.findOrderPositions({
18
+ orderId: order._id,
19
+ });
20
+ const orderPositionDiscounts = orderPositions.flatMap((orderPosition) => modules.orders.positions.discounts(orderPosition, { order, orderDiscount }, requestContext));
21
+ // order discounts
22
+ const pricingSheet = OrderPricingSheet({
23
+ calculation: order.calculation,
24
+ currency: order.currency,
25
+ });
26
+ const orderDiscounts = pricingSheet
27
+ .discountPrices(orderDiscount._id)
28
+ .map((discount) => ({ order, ...discount }));
29
+ // All discounts
30
+ const discounted = [
31
+ ...orderPaymentDiscounts,
32
+ ...orderDeliveryDiscounts,
33
+ ...orderPositionDiscounts,
34
+ ...orderDiscounts,
35
+ ].filter(Boolean);
36
+ return discounted;
37
+ },
38
+ discountTotal: async (order, orderDiscount, requestContext) => {
39
+ const { modules } = requestContext;
40
+ const orderDiscountId = orderDiscount._id;
41
+ // Delivery discounts
42
+ const orderDelivery = await modules.orders.deliveries.findDelivery({
43
+ orderDeliveryId: order.deliveryId,
44
+ });
45
+ const orderDeliveryDiscountSum = orderDelivery &&
46
+ modules.orders.deliveries
47
+ .pricingSheet(orderDelivery, order.currency, requestContext)
48
+ .discountSum(orderDiscountId);
49
+ // Payment discounts
50
+ const orderPayment = await modules.orders.payments.findOrderPayment({
51
+ orderPaymentId: order.paymentId,
52
+ });
53
+ const orderPaymentDiscountSum = orderPayment &&
54
+ modules.orders.payments
55
+ .pricingSheet(orderPayment, order.currency, requestContext)
56
+ .discountSum(orderDiscountId);
57
+ // Position discounts
58
+ const orderPositions = await modules.orders.positions.findOrderPositions({
59
+ orderId: order._id,
60
+ });
61
+ const orderPositionDiscounts = orderPositions.map((orderPosition) => modules.orders.positions
62
+ .pricingSheet(orderPosition, order.currency, requestContext)
63
+ .discountSum(orderDiscountId));
64
+ // order discounts
65
+ const orderDiscountSum = OrderPricingSheet({
66
+ calculation: order.calculation,
67
+ currency: order.currency,
68
+ }).discountSum(orderDiscountId);
69
+ const prices = [
70
+ orderDeliveryDiscountSum,
71
+ orderPaymentDiscountSum,
72
+ ...orderPositionDiscounts,
73
+ orderDiscountSum,
74
+ ];
75
+ const amount = prices.reduce((oldValue, price) => oldValue + (price || 0), 0);
76
+ return {
77
+ amount,
78
+ currency: order.currency,
79
+ };
80
+ },
81
+ isCart: (order) => {
82
+ return order.status === null;
83
+ },
84
+ cart: async ({ orderNumber, countryContext }, user) => {
85
+ const selector = {
86
+ countryCode: countryContext || user.lastLogin.countryContext,
87
+ status: { $eq: null },
88
+ userId: user._id,
89
+ };
90
+ if (orderNumber) {
91
+ selector.orderNumber = orderNumber;
92
+ }
93
+ const options = {
94
+ sort: {
95
+ updated: -1,
96
+ },
97
+ };
98
+ return Orders.findOne(selector, options);
99
+ },
100
+ pricingSheet: (order) => {
101
+ return OrderPricingSheet({
102
+ calculation: order.calculation,
103
+ currency: order.currency,
104
+ });
105
+ },
106
+ };
107
+ };
108
+ //# sourceMappingURL=configureOrdersModule-transformations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrdersModule-transformations.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule-transformations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ModuleInput } from '@unchainedshop/types/common';
2
+ import { OrdersModule, OrdersSettingsOptions } from '@unchainedshop/types/orders';
3
+ export declare const configureOrdersModule: ({ db, options: orderOptions, }: ModuleInput<OrdersSettingsOptions>) => Promise<OrdersModule>;