@unchainedshop/core-orders 2.8.3 → 2.8.4

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.
@@ -100,12 +100,11 @@ export const configureOrdersModule = async ({ db, options: orderOptions = {}, })
100
100
  const updateCalculation = async (orderId, unchainedAPI) => {
101
101
  const { modules } = unchainedAPI;
102
102
  const selector = generateDbFilterById(orderId);
103
- let order = (await Orders.findOne(selector, {}));
103
+ const order = (await Orders.findOne(selector, {}));
104
104
  // Don't recalculate orders, only carts
105
105
  if (order.status !== null)
106
106
  return order;
107
107
  await updateDiscounts(order, unchainedAPI);
108
- order = await initProviders(order, unchainedAPI);
109
108
  let orderPositions = (await findOrderPositions(order));
110
109
  orderPositions = await Promise.all(orderPositions.map(async (orderPosition) => modules.orders.positions.updateCalculation(orderPosition, unchainedAPI)));
111
110
  let orderDelivery = (await findOrderDelivery(order));
@@ -119,13 +118,30 @@ export const configureOrdersModule = async ({ db, options: orderOptions = {}, })
119
118
  orderPositions = await Promise.all(orderPositions.map(async (orderPosition) => modules.orders.positions.updateScheduling({ order, orderDelivery, orderPosition }, unchainedAPI)));
120
119
  const pricing = await OrderPricingDirector.actions({ order, orderPositions, orderDelivery, orderPayment }, unchainedAPI);
121
120
  const calculation = await pricing.calculate();
121
+ const updated = new Date();
122
122
  await Orders.updateOne(selector, {
123
123
  $set: {
124
124
  calculation,
125
- updated: new Date(),
125
+ updated,
126
126
  },
127
127
  });
128
- return Orders.findOne(selector, {});
128
+ /*
129
+ // We have to do initProviders after calculation, only then filterSupportedProviders will work correctly and has access to recent pricing
130
+ // initProviders calls updateCalculation anyways recursively when a new payment or delivery provider gets set
131
+ // Thus, if for example a discount change leads to a free delivery and free payment due to free items amount, the following happens in the stack:
132
+ // 1. create discount
133
+ // 2. update calculation -> order pricing updated to items 0
134
+ // 3. initProviders with updated order -> filterSupportedProviders -> delivery provider is invalid -> set new delivery provider
135
+ // 4. update calculation -> order pricing updated to items 0 and delivery 0
136
+ // 5. initProviders with updated order -> filterSupportedProviders -> payment provider is invalid -> set new payment provider
137
+ // 6. update calculation -> order pricing updated to items 0, delivery 0, payment 0
138
+ // 7. initProviders with updated order -> all providers are valid -> return order
139
+ */
140
+ return initProviders({
141
+ ...order,
142
+ calculation,
143
+ updated,
144
+ }, unchainedAPI);
129
145
  };
130
146
  const orderQueries = configureOrdersModuleQueries({ Orders });
131
147
  const orderTransformations = configureOrderModuleTransformations({
@@ -1 +1 @@
1
- {"version":3,"file":"configureOrdersModule.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureOrdersModule.js","sourceRoot":"","sources":["../../src/module/configureOrdersModule.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,6 @@ export const createUserCartService = async ({ user, orderNumber, countryCode },
17
17
  }
18
18
  : {}),
19
19
  });
20
- await modules.orders.initProviders(order, unchainedAPI);
21
- return order;
20
+ return modules.orders.initProviders(order, unchainedAPI);
22
21
  };
23
22
  //# sourceMappingURL=createUserCartService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createUserCartService.js","sourceRoot":"","sources":["../../src/service/createUserCartService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAA0B,KAAK,EAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAClC,YAAY,EACZ,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAClE;QACE,OAAO,EAAE,WAAW;KACrB,EACD,YAAY,CACb,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC,GAAG;QAChB,WAAW;QACX,QAAQ;QACR,WAAW;QACX,cAAc,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;QAChE,OAAO,EACL,IAAI,CAAC,WAAW;YAChB,CAAC,CAAC,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW;oBACpC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;iBACxD;gBACH,CAAC,CAAC,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"createUserCartService.js","sourceRoot":"","sources":["../../src/service/createUserCartService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAA0B,KAAK,EAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAClC,YAAY,EACZ,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAClE;QACE,OAAO,EAAE,WAAW;KACrB,EACD,YAAY,CACb,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC,GAAG;QAChB,WAAW;QACX,QAAQ;QACR,WAAW;QACX,cAAc,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;QAChE,OAAO,EACL,IAAI,CAAC,WAAW;YAChB,CAAC,CAAC,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW;oBACpC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;iBACxD;gBACH,CAAC,CAAC,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-orders",
3
- "version": "2.8.3",
3
+ "version": "2.8.4",
4
4
  "main": "lib/orders-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/orders-index.js",
@@ -31,14 +31,14 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
- "@unchainedshop/events": "^2.8.3",
35
- "@unchainedshop/logger": "^2.8.3",
36
- "@unchainedshop/utils": "^2.8.3",
34
+ "@unchainedshop/events": "^2.8.4",
35
+ "@unchainedshop/logger": "^2.8.4",
36
+ "@unchainedshop/utils": "^2.8.4",
37
37
  "simpl-schema": "^3.4.6"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^20.11.25",
41
- "@unchainedshop/types": "^2.8.3",
41
+ "@unchainedshop/types": "^2.8.4",
42
42
  "jest": "^29.7.0",
43
43
  "ts-jest": "^29.1.2",
44
44
  "typescript": "^5.3.3"
@@ -176,15 +176,13 @@ export const configureOrdersModule = async ({
176
176
  const { modules } = unchainedAPI;
177
177
 
178
178
  const selector = generateDbFilterById(orderId);
179
- let order = (await Orders.findOne(selector, {})) as Order;
179
+ const order = (await Orders.findOne(selector, {})) as Order;
180
180
 
181
181
  // Don't recalculate orders, only carts
182
182
  if (order.status !== null) return order;
183
183
 
184
184
  await updateDiscounts(order, unchainedAPI);
185
185
 
186
- order = await initProviders(order, unchainedAPI);
187
-
188
186
  let orderPositions = (await findOrderPositions(order)) as OrderPosition[];
189
187
  orderPositions = await Promise.all(
190
188
  orderPositions.map(async (orderPosition) =>
@@ -213,15 +211,35 @@ export const configureOrdersModule = async ({
213
211
  );
214
212
 
215
213
  const calculation = await pricing.calculate();
214
+ const updated = new Date();
216
215
 
217
216
  await Orders.updateOne(selector, {
218
217
  $set: {
219
218
  calculation,
220
- updated: new Date(),
219
+ updated,
221
220
  },
222
221
  });
223
222
 
224
- return Orders.findOne(selector, {});
223
+ /*
224
+ // We have to do initProviders after calculation, only then filterSupportedProviders will work correctly and has access to recent pricing
225
+ // initProviders calls updateCalculation anyways recursively when a new payment or delivery provider gets set
226
+ // Thus, if for example a discount change leads to a free delivery and free payment due to free items amount, the following happens in the stack:
227
+ // 1. create discount
228
+ // 2. update calculation -> order pricing updated to items 0
229
+ // 3. initProviders with updated order -> filterSupportedProviders -> delivery provider is invalid -> set new delivery provider
230
+ // 4. update calculation -> order pricing updated to items 0 and delivery 0
231
+ // 5. initProviders with updated order -> filterSupportedProviders -> payment provider is invalid -> set new payment provider
232
+ // 6. update calculation -> order pricing updated to items 0, delivery 0, payment 0
233
+ // 7. initProviders with updated order -> all providers are valid -> return order
234
+ */
235
+ return initProviders(
236
+ {
237
+ ...order,
238
+ calculation,
239
+ updated,
240
+ },
241
+ unchainedAPI,
242
+ );
225
243
  };
226
244
 
227
245
  const orderQueries = configureOrdersModuleQueries({ Orders });
@@ -29,6 +29,5 @@ export const createUserCartService: CreateUserCartService = async (
29
29
  : {}),
30
30
  });
31
31
 
32
- await modules.orders.initProviders(order, unchainedAPI);
33
- return order;
32
+ return modules.orders.initProviders(order, unchainedAPI);
34
33
  };