thm-p3-configurator 0.0.397 → 0.0.399
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.
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.symbol.description.js");
|
|
4
|
+
require("core-js/modules/es.array.includes.js");
|
|
4
5
|
require("core-js/modules/es.array.sort.js");
|
|
5
6
|
require("core-js/modules/es.json.stringify.js");
|
|
6
7
|
require("core-js/modules/es.object.from-entries.js");
|
|
7
8
|
require("core-js/modules/es.promise.js");
|
|
8
9
|
require("core-js/modules/es.regexp.to-string.js");
|
|
10
|
+
require("core-js/modules/es.string.includes.js");
|
|
9
11
|
require("core-js/modules/esnext.iterator.constructor.js");
|
|
10
12
|
require("core-js/modules/esnext.iterator.filter.js");
|
|
11
|
-
require("core-js/modules/esnext.iterator.find.js");
|
|
12
13
|
require("core-js/modules/esnext.iterator.for-each.js");
|
|
13
14
|
require("core-js/modules/esnext.iterator.map.js");
|
|
14
15
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
@@ -18,14 +19,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
18
19
|
});
|
|
19
20
|
exports.useSingleOrderCart = exports.useSingleOrderBranchesQuery = exports.useSingleOrderBranchTypes = exports.useSingleOrderArticles = exports.useQuestionsQuery = exports.useProductsQuery = exports.useProductFieldLabels = exports.usePrivateDossierByTypeAndIdQuery = exports.usePartBrands = exports.useOrderDataQuery = exports.useMyBranches = exports.useModelsQuery = exports.useMarketingChannels = exports.useCountriesQuery = exports.useConfiguratorLocationsQuery = exports.useBusinessBranches = exports.useBuildYearsQuery = exports.useBrandsQuery = exports.useBranchesQuery = exports.useBranchesByType = exports.useBranchTypes = exports.useBranchByIdOrWidgetId = exports.useArticleTypes = exports.useArticleSubGroups = exports.useArticleGroups = exports.useActiveDiscounts = void 0;
|
|
20
21
|
require("core-js/modules/es.symbol.description.js");
|
|
22
|
+
require("core-js/modules/es.array.includes.js");
|
|
21
23
|
require("core-js/modules/es.array.sort.js");
|
|
22
24
|
require("core-js/modules/es.json.stringify.js");
|
|
23
25
|
require("core-js/modules/es.object.from-entries.js");
|
|
24
26
|
require("core-js/modules/es.promise.js");
|
|
25
27
|
require("core-js/modules/es.regexp.to-string.js");
|
|
28
|
+
require("core-js/modules/es.string.includes.js");
|
|
26
29
|
require("core-js/modules/esnext.iterator.constructor.js");
|
|
27
30
|
require("core-js/modules/esnext.iterator.filter.js");
|
|
28
|
-
require("core-js/modules/esnext.iterator.find.js");
|
|
29
31
|
require("core-js/modules/esnext.iterator.for-each.js");
|
|
30
32
|
require("core-js/modules/esnext.iterator.map.js");
|
|
31
33
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
@@ -38,6 +40,7 @@ var _FormulaContext = require("../__context__/FormulaContext");
|
|
|
38
40
|
var _OrderSessionContext = require("../__context__/OrderSessionContext");
|
|
39
41
|
var _helpers__ = require("../__helpers__");
|
|
40
42
|
var _singleOrderArticles = require("../__helpers__/singleOrderArticles");
|
|
43
|
+
var _singleOrderCartArticles = require("../__helpers__/singleOrderCartArticles");
|
|
41
44
|
var _product = require("../__helpers__/product");
|
|
42
45
|
var _useSessionContextReady = require("../__hooks__/useSessionContextReady");
|
|
43
46
|
var _authenticatedProxyApi = require("./authenticatedProxyApi");
|
|
@@ -89,6 +92,21 @@ function _toPrimitive(t, r) {
|
|
|
89
92
|
return ("string" === r ? String : Number)(t);
|
|
90
93
|
}
|
|
91
94
|
const ORDER_QUERY_STALE_TIME_MS = 5 * 60 * 1000;
|
|
95
|
+
const fetchCartArticleLookup = async function fetchCartArticleLookup() {
|
|
96
|
+
var _directResponse$artic, _directResponse$artic2, _partFallbackResponse;
|
|
97
|
+
let articleNumbers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
98
|
+
let formula = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
99
|
+
const directResponse = await (0, _singleOrderArticles.fetchArticlesByArticleNumbers)(articleNumbers, null, false, null, formula);
|
|
100
|
+
const {
|
|
101
|
+
mergedByArticleNumber,
|
|
102
|
+
missingArticleNumbers
|
|
103
|
+
} = (0, _singleOrderCartArticles.mergeCartArticlesWithPartFallback)(articleNumbers, (_directResponse$artic = directResponse === null || directResponse === void 0 ? void 0 : directResponse.articles) !== null && _directResponse$artic !== void 0 ? _directResponse$artic : []);
|
|
104
|
+
if (!missingArticleNumbers.length) {
|
|
105
|
+
return mergedByArticleNumber;
|
|
106
|
+
}
|
|
107
|
+
const partFallbackResponse = await (0, _singleOrderArticles.fetchArticlesByArticleNumbers)(missingArticleNumbers, null, true, null, formula);
|
|
108
|
+
return (0, _singleOrderCartArticles.mergeCartArticlesWithPartFallback)(articleNumbers, (_directResponse$artic2 = directResponse === null || directResponse === void 0 ? void 0 : directResponse.articles) !== null && _directResponse$artic2 !== void 0 ? _directResponse$artic2 : [], (_partFallbackResponse = partFallbackResponse === null || partFallbackResponse === void 0 ? void 0 : partFallbackResponse.articles) !== null && _partFallbackResponse !== void 0 ? _partFallbackResponse : []).mergedByArticleNumber;
|
|
109
|
+
};
|
|
92
110
|
/**
|
|
93
111
|
* @description Retrieves the car brand options
|
|
94
112
|
*/
|
|
@@ -308,7 +326,9 @@ const useSingleOrderArticles = exports.useSingleOrderArticles = function useSing
|
|
|
308
326
|
totalArticles: 0
|
|
309
327
|
};
|
|
310
328
|
}
|
|
311
|
-
const currentArticles = await (0, _singleOrderArticles.enrichArticlesWithBrandsAndPrices)(articles, branchId || null, branchId ? singleOrderFormula : singleOrderFormula || 'THL'
|
|
329
|
+
const currentArticles = await (0, _singleOrderArticles.enrichArticlesWithBrandsAndPrices)(articles, branchId || null, branchId ? singleOrderFormula : singleOrderFormula || 'THL', {
|
|
330
|
+
useArticleNumberForPricing: true
|
|
331
|
+
});
|
|
312
332
|
const pricedArticles = currentArticles.filter(article => {
|
|
313
333
|
const {
|
|
314
334
|
priceExclVat,
|
|
@@ -392,23 +412,30 @@ const useSingleOrderCart = () => {
|
|
|
392
412
|
})).toString();
|
|
393
413
|
const cartQuery = (0, _reactQuery.useQuery)(['singleOrderCart', cartOrderQuery, webshop], {
|
|
394
414
|
queryFn: async () => {
|
|
395
|
-
|
|
415
|
+
const emptyTotals = {
|
|
416
|
+
totalQuantity: 0,
|
|
417
|
+
totalBtw: 0,
|
|
418
|
+
totalExclVat: 0,
|
|
419
|
+
totalInclVat: 0
|
|
420
|
+
};
|
|
396
421
|
if (!singleOrderCart.length) {
|
|
397
422
|
return {
|
|
398
423
|
articles: [],
|
|
399
|
-
totals:
|
|
424
|
+
totals: emptyTotals,
|
|
425
|
+
validationError: null
|
|
400
426
|
};
|
|
401
427
|
}
|
|
402
428
|
|
|
403
429
|
// If webshop is selected, use Shopify prices directly without API call
|
|
404
430
|
if (webshop) {
|
|
405
|
-
|
|
406
|
-
const
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
const
|
|
410
|
-
const totals = cartTotalsLookup[article.articleNumber];
|
|
431
|
+
const articleLookup = await fetchCartArticleLookup(singleOrderCart.map(article => article.articleNumber), singleOrderFormula);
|
|
432
|
+
const articlesWithPrice = singleOrderCart.map(cartItem => {
|
|
433
|
+
var _articleLookup$cartIt, _article$name, _cartItem$brandNumber;
|
|
434
|
+
const article = (_articleLookup$cartIt = articleLookup[cartItem.articleNumber]) !== null && _articleLookup$cartIt !== void 0 ? _articleLookup$cartIt : {};
|
|
435
|
+
const totals = cartTotalsLookup[cartItem.articleNumber];
|
|
411
436
|
return _objectSpread(_objectSpread({}, article), {}, {
|
|
437
|
+
articleNumber: cartItem.articleNumber,
|
|
438
|
+
name: (_article$name = article === null || article === void 0 ? void 0 : article.name) !== null && _article$name !== void 0 ? _article$name : cartItem.articleNumber,
|
|
412
439
|
price: cartItem !== null && cartItem !== void 0 && cartItem.productPriceInclVat ? Math.round(Number(cartItem === null || cartItem === void 0 ? void 0 : cartItem.productPriceInclVat) * 100) / 100 : 0,
|
|
413
440
|
quantity: Number(cartItem === null || cartItem === void 0 ? void 0 : cartItem.quantity),
|
|
414
441
|
// Add the calculated totals using Shopify prices
|
|
@@ -429,25 +456,46 @@ const useSingleOrderCart = () => {
|
|
|
429
456
|
totalBtw: Math.round(totalBtw * 100) / 100,
|
|
430
457
|
totalExclVat: Math.round(totalExclVat * 100) / 100,
|
|
431
458
|
totalInclVat: Math.round(totalInclVat * 100) / 100
|
|
432
|
-
}
|
|
459
|
+
},
|
|
460
|
+
validationError: null
|
|
433
461
|
};
|
|
434
462
|
}
|
|
435
463
|
|
|
436
|
-
// Original logic for non-webshop orders
|
|
437
|
-
|
|
438
|
-
|
|
464
|
+
// Original logic for non-webshop orders.
|
|
465
|
+
// If Hyper rejects a cart with ARTICLES_NOT_FOUND (404), keep rendering
|
|
466
|
+
// from the local session cart instead of breaking the entire cart query.
|
|
467
|
+
let cart = [];
|
|
468
|
+
let validationError = null;
|
|
469
|
+
try {
|
|
470
|
+
var _orderResults$data$ca, _orderResults$data;
|
|
471
|
+
const orderResults = await _authenticatedProxyApi.authenticatedProxyApi.getOrder(cartOrderQuery).then(res => res.data);
|
|
472
|
+
cart = (_orderResults$data$ca = orderResults === null || orderResults === void 0 || (_orderResults$data = orderResults.data) === null || _orderResults$data === void 0 ? void 0 : _orderResults$data.cart) !== null && _orderResults$data$ca !== void 0 ? _orderResults$data$ca : [];
|
|
473
|
+
} catch (error) {
|
|
474
|
+
var _error$response, _error$response2, _error$response3;
|
|
475
|
+
const isCartOrderLookup = cartOrderQuery.includes('cart=');
|
|
476
|
+
const isArticlesNotFoundError = (error === null || error === void 0 || (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404 && (error === null || error === void 0 || (_error$response2 = error.response) === null || _error$response2 === void 0 || (_error$response2 = _error$response2.data) === null || _error$response2 === void 0 ? void 0 : _error$response2.code) === 'ARTICLES_NOT_FOUND';
|
|
477
|
+
const isGenericNotFoundError = (error === null || error === void 0 || (_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 404;
|
|
478
|
+
if (!isCartOrderLookup || !isArticlesNotFoundError && !isGenericNotFoundError) {
|
|
479
|
+
throw error;
|
|
480
|
+
}
|
|
481
|
+
cart = apiCart;
|
|
482
|
+
validationError = 'Een of meer artikelen in de winkelwagen zijn momenteel niet bestelbaar voor deze formule.';
|
|
483
|
+
}
|
|
484
|
+
if (!cart.length) {
|
|
439
485
|
return {
|
|
440
|
-
|
|
486
|
+
articles: [],
|
|
487
|
+
totals: emptyTotals,
|
|
488
|
+
validationError
|
|
441
489
|
};
|
|
442
490
|
}
|
|
443
|
-
const
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
const cartItem = cartLookup[article.articleNumber];
|
|
449
|
-
const totals = cartTotalsLookup[article.articleNumber];
|
|
491
|
+
const articleLookup = await fetchCartArticleLookup(cart.map(article => article.articleNumber), singleOrderFormula);
|
|
492
|
+
const articlesWithPrice = cart.map(cartItem => {
|
|
493
|
+
var _articleLookup$cartIt2, _article$name2, _cartItem$brandNumber2;
|
|
494
|
+
const article = (_articleLookup$cartIt2 = articleLookup[cartItem.articleNumber]) !== null && _articleLookup$cartIt2 !== void 0 ? _articleLookup$cartIt2 : {};
|
|
495
|
+
const totals = cartTotalsLookup[cartItem.articleNumber];
|
|
450
496
|
return _objectSpread(_objectSpread({}, article), {}, {
|
|
497
|
+
articleNumber: cartItem.articleNumber,
|
|
498
|
+
name: (_article$name2 = article === null || article === void 0 ? void 0 : article.name) !== null && _article$name2 !== void 0 ? _article$name2 : cartItem.articleNumber,
|
|
451
499
|
price: cartItem !== null && cartItem !== void 0 && cartItem.consumerTotal ? Math.round(Number(cartItem === null || cartItem === void 0 ? void 0 : cartItem.consumerTotal) * 100) / 100 : 0,
|
|
452
500
|
quantity: Number(cartItem === null || cartItem === void 0 ? void 0 : cartItem.quantity),
|
|
453
501
|
// Add the calculated totals
|
|
@@ -468,7 +516,8 @@ const useSingleOrderCart = () => {
|
|
|
468
516
|
totalBtw: Math.round(totalBtw * 100) / 100,
|
|
469
517
|
totalExclVat: Math.round(totalExclVat * 100) / 100,
|
|
470
518
|
totalInclVat: Math.round(totalInclVat * 100) / 100
|
|
471
|
-
}
|
|
519
|
+
},
|
|
520
|
+
validationError
|
|
472
521
|
};
|
|
473
522
|
}
|
|
474
523
|
});
|
|
@@ -12,6 +12,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
12
12
|
var _queries = require("../../__api__/queries");
|
|
13
13
|
var _LinkButton = _interopRequireDefault(require("../../__components__/Buttons/LinkButton"));
|
|
14
14
|
var _PrimaryButton = _interopRequireDefault(require("../../__components__/Buttons/PrimaryButton"));
|
|
15
|
+
var _DangerAlert = _interopRequireDefault(require("../../__components__/DangerAlert"));
|
|
15
16
|
var _ExpandableCard = _interopRequireDefault(require("../../__components__/Cards/ExpandableCard"));
|
|
16
17
|
var _SingleOrderCartCard = _interopRequireDefault(require("../../__components__/SingleOrderCartCard"));
|
|
17
18
|
var _helpers__ = require("../../__helpers__");
|
|
@@ -29,7 +30,7 @@ const EmptyState = _ref => {
|
|
|
29
30
|
}, message));
|
|
30
31
|
};
|
|
31
32
|
const InternalSingleOrderCart = _ref2 => {
|
|
32
|
-
var _cart$articles, _cart$totals$totalExc, _cart$totals, _cart$totals$totalBtw, _cart$totals2, _cart$totals$totalInc, _cart$totals3;
|
|
33
|
+
var _cart$validationError, _cart$articles, _cart$totals$totalExc, _cart$totals, _cart$totals$totalBtw, _cart$totals2, _cart$totals$totalInc, _cart$totals3;
|
|
33
34
|
let {
|
|
34
35
|
handleQuantityChange,
|
|
35
36
|
removeFromCart: _removeFromCart,
|
|
@@ -43,6 +44,7 @@ const InternalSingleOrderCart = _ref2 => {
|
|
|
43
44
|
cart,
|
|
44
45
|
isLoadingCart
|
|
45
46
|
} = (0, _queries.useSingleOrderCart)();
|
|
47
|
+
const cartValidationError = (_cart$validationError = cart === null || cart === void 0 ? void 0 : cart.validationError) !== null && _cart$validationError !== void 0 ? _cart$validationError : null;
|
|
46
48
|
const confirmButtonClicked = () => {
|
|
47
49
|
if (showProductOverview) {
|
|
48
50
|
toggleOverview();
|
|
@@ -89,8 +91,11 @@ const InternalSingleOrderCart = _ref2 => {
|
|
|
89
91
|
}, /*#__PURE__*/_react.default.createElement(_LinkButton.default, {
|
|
90
92
|
label: "Bestelling herstarten",
|
|
91
93
|
onClick: () => resetOrderSession()
|
|
94
|
+
}), cartValidationError && /*#__PURE__*/_react.default.createElement(_DangerAlert.default, {
|
|
95
|
+
className: "mx-2 mb-0",
|
|
96
|
+
message: "".concat(cartValidationError, " Pas de artikelen aan voordat je kunt bevestigen.")
|
|
92
97
|
}), /*#__PURE__*/_react.default.createElement(_PrimaryButton.default, {
|
|
93
|
-
isDisabled: disabledCreateOrder,
|
|
98
|
+
isDisabled: disabledCreateOrder || Boolean(cartValidationError),
|
|
94
99
|
label: !showProductOverview ? 'Bevestigen' : 'Bestellen',
|
|
95
100
|
onClick: confirmButtonClicked
|
|
96
101
|
})));
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.from-entries.js");
|
|
4
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
5
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
6
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
7
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
10
|
+
Object.defineProperty(exports, "__esModule", {
|
|
11
|
+
value: true
|
|
12
|
+
});
|
|
13
|
+
exports.mergeCartArticlesWithPartFallback = void 0;
|
|
14
|
+
require("core-js/modules/es.object.from-entries.js");
|
|
15
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
16
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
17
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
18
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
19
|
+
function ownKeys(e, r) {
|
|
20
|
+
var t = Object.keys(e);
|
|
21
|
+
if (Object.getOwnPropertySymbols) {
|
|
22
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
23
|
+
r && (o = o.filter(function (r) {
|
|
24
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
25
|
+
})), t.push.apply(t, o);
|
|
26
|
+
}
|
|
27
|
+
return t;
|
|
28
|
+
}
|
|
29
|
+
function _objectSpread(e) {
|
|
30
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
31
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
32
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
33
|
+
_defineProperty(e, r, t[r]);
|
|
34
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
35
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return e;
|
|
39
|
+
}
|
|
40
|
+
function _defineProperty(e, r, t) {
|
|
41
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
42
|
+
value: t,
|
|
43
|
+
enumerable: !0,
|
|
44
|
+
configurable: !0,
|
|
45
|
+
writable: !0
|
|
46
|
+
}) : e[r] = t, e;
|
|
47
|
+
}
|
|
48
|
+
function _toPropertyKey(t) {
|
|
49
|
+
var i = _toPrimitive(t, "string");
|
|
50
|
+
return "symbol" == typeof i ? i : i + "";
|
|
51
|
+
}
|
|
52
|
+
function _toPrimitive(t, r) {
|
|
53
|
+
if ("object" != typeof t || !t) return t;
|
|
54
|
+
var e = t[Symbol.toPrimitive];
|
|
55
|
+
if (void 0 !== e) {
|
|
56
|
+
var i = e.call(t, r || "default");
|
|
57
|
+
if ("object" != typeof i) return i;
|
|
58
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
59
|
+
}
|
|
60
|
+
return ("string" === r ? String : Number)(t);
|
|
61
|
+
}
|
|
62
|
+
const toArticleLookup = function toArticleLookup() {
|
|
63
|
+
let articles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
64
|
+
return Object.fromEntries(articles.filter(article => article === null || article === void 0 ? void 0 : article.articleNumber).map(article => [article.articleNumber, article]));
|
|
65
|
+
};
|
|
66
|
+
const mergeCartArticlesWithPartFallback = exports.mergeCartArticlesWithPartFallback = function mergeCartArticlesWithPartFallback() {
|
|
67
|
+
let cartArticleNumbers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
68
|
+
let directMatches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
69
|
+
let partFallbackMatches = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
70
|
+
const uniqueCartArticleNumbers = [...new Set(cartArticleNumbers.filter(Boolean))];
|
|
71
|
+
const directLookup = toArticleLookup(directMatches);
|
|
72
|
+
const fallbackLookup = toArticleLookup(partFallbackMatches);
|
|
73
|
+
const missingArticleNumbers = uniqueCartArticleNumbers.filter(articleNumber => !directLookup[articleNumber]);
|
|
74
|
+
const mergedByArticleNumber = _objectSpread(_objectSpread({}, directLookup), Object.fromEntries(missingArticleNumbers.filter(articleNumber => fallbackLookup[articleNumber]).map(articleNumber => [articleNumber, fallbackLookup[articleNumber]])));
|
|
75
|
+
return {
|
|
76
|
+
mergedByArticleNumber,
|
|
77
|
+
missingArticleNumbers
|
|
78
|
+
};
|
|
79
|
+
};
|