@crystaldesign/web-planner-logic 26.8.0-beta.5 → 26.8.0-beta.51

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 (65) hide show
  1. package/build/cjs/{DivaBoxPlanner-918c1acc.js → DivaBoxPlanner-9025b5cc.js} +29 -31
  2. package/build/cjs/{DivaStandardPlanner-59aa2171.js → DivaStandardPlanner-37829cfc.js} +3 -3
  3. package/build/cjs/{DoorPlanner-eddb88e7.js → DoorPlanner-2e9cb21a.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-729b5af1.js → Host3DSignalR-6953216e.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-3b54678e.js → LiviqueWWSHandler-e34f28e5.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-5cb6da74.js → PfisterWWSHandler-dca9568e.js} +10 -1
  7. package/build/cjs/{PlannerHandler2D-6884347b.js → PlannerHandler2D-9987f7e2.js} +24 -9
  8. package/build/cjs/{SeriousBasketHandler-76e316d8.js → SeriousBasketHandler-2a2b0619.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-a5bc0cfa.js → ShelfPlanner-a5f048ab.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-5a417412.js → StandardWWSHandler-53dfc489.js} +1 -1
  11. package/build/cjs/{index-cd535960.js → index-224ed867.js} +428 -263
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-bbcd759e.js → DivaBoxPlanner-8c0e7f0e.js} +29 -31
  14. package/build/esm/{DivaStandardPlanner-de0d17ea.js → DivaStandardPlanner-f24e28e9.js} +3 -3
  15. package/build/esm/{DoorPlanner-3ffef3a1.js → DoorPlanner-5169acdb.js} +1 -1
  16. package/build/esm/{Host3DSignalR-2143e221.js → Host3DSignalR-9a6be410.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-7f997d91.js → LiviqueWWSHandler-d8011eac.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-97602df8.js → PfisterWWSHandler-03fcdd9e.js} +10 -1
  19. package/build/esm/{PlannerHandler2D-4e43043b.js → PlannerHandler2D-a1b13dd1.js} +24 -9
  20. package/build/esm/{SeriousBasketHandler-b9638fda.js → SeriousBasketHandler-a0b6082f.js} +1 -1
  21. package/build/esm/{ShelfPlanner-f50e9483.js → ShelfPlanner-ae3fe97b.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-99a090bc.js → StandardWWSHandler-e8aaf6e9.js} +1 -1
  23. package/build/esm/{index-2d218fcd.js → index-8a3c79b9.js} +428 -263
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts +1 -0
  26. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +1 -0
  28. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +3 -0
  30. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +1 -0
  32. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +1 -0
  34. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/IDM/Feature.d.ts +4 -0
  36. package/build/types/web-planner-logic/src/interface/IDM/Feature.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +2 -0
  38. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/logic/Article/DivaArticleHandler.d.ts.map +1 -1
  40. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  42. package/build/types/web-planner-logic/src/logic/Basket/PfisterWWSHandler.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  44. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts +1 -0
  45. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  46. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +13 -0
  47. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  48. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +1 -0
  51. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  52. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +1 -0
  55. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  56. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +11 -0
  58. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts +1 -0
  62. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  63. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts +1 -0
  64. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  65. package/package.json +2 -2
@@ -75,6 +75,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
75
75
  _defineProperty(this, "actions", void 0);
76
76
  _defineProperty(this, "state", void 0);
77
77
  _defineProperty(this, "i18n", void 0);
78
+ _defineProperty(this, "enricherErrorModalShown", false);
78
79
  _defineProperty(this, "getSessionGuid", void 0);
79
80
  _defineProperty(this, "useEkPrices", false);
80
81
  _defineProperty(this, "smSupplierNr", undefined);
@@ -215,10 +216,12 @@ var DivaApiHandler = /*#__PURE__*/function () {
215
216
  case 38:
216
217
  _context.prev = 38;
217
218
  _context.t5 = _context["catch"](5);
219
+ // Check if this is a rate limiting error (429)
220
+ this.notifyEnricherError(url, dontLogError);
218
221
  throw Error('fetch failed! ' + url + ' Error: ' + _context.t5, {
219
222
  cause: _context.t5 === null || _context.t5 === void 0 || (_e$response = _context.t5.response) === null || _e$response === void 0 || (_e$response = _e$response.data) === null || _e$response === void 0 ? void 0 : _e$response.error
220
223
  });
221
- case 41:
224
+ case 42:
222
225
  case "end":
223
226
  return _context.stop();
224
227
  }
@@ -229,11 +232,57 @@ var DivaApiHandler = /*#__PURE__*/function () {
229
232
  }
230
233
  return fetchData;
231
234
  }()
235
+ /**
236
+ * Surface critical failures to the user. A hard failure of any enricher call (catalog / serie /
237
+ * items / decisions / features ...) leaves the planner unable to load, so give the user actionable
238
+ * feedback instead of a silently broken UI. Optional enricher calls (e.g. the catalog mask) pass
239
+ * `dontLogError` and are skipped. Only one modal is shown at a time to avoid stacking on parallel failures.
240
+ */
241
+ }, {
242
+ key: "notifyEnricherError",
243
+ value: function notifyEnricherError(url, dontLogError) {
244
+ var _this$apiConfig,
245
+ _this$apiConfig2,
246
+ _this$apiConfig3,
247
+ _this$apiConfig4,
248
+ _this$apiConfig5,
249
+ _this$actions,
250
+ _this$i18n,
251
+ _translate$t,
252
+ _translate$t2,
253
+ _translate$t3,
254
+ _this = this;
255
+ if (dontLogError || this.enricherErrorModalShown) return;
256
+ var services = [(_this$apiConfig = this.apiConfig) === null || _this$apiConfig === void 0 ? void 0 : _this$apiConfig.enricherService, (_this$apiConfig2 = this.apiConfig) === null || _this$apiConfig2 === void 0 ? void 0 : _this$apiConfig2.idmService, (_this$apiConfig3 = this.apiConfig) === null || _this$apiConfig3 === void 0 ? void 0 : _this$apiConfig3.api2["default"], (_this$apiConfig4 = this.apiConfig) === null || _this$apiConfig4 === void 0 ? void 0 : _this$apiConfig4.api2.web, (_this$apiConfig5 = this.apiConfig) === null || _this$apiConfig5 === void 0 ? void 0 : _this$apiConfig5.api2.ek];
257
+ if (!services.some(function (service) {
258
+ return service && url.startsWith(service);
259
+ })) return;
260
+ if (!((_this$actions = this.actions) !== null && _this$actions !== void 0 && _this$actions.openModal)) return;
261
+ this.enricherErrorModalShown = true;
262
+ var translate = (_this$i18n = this.i18n) === null || _this$i18n === void 0 ? void 0 : _this$i18n.call(this);
263
+ this.actions.openModal({
264
+ title: (_translate$t = translate === null || translate === void 0 ? void 0 : translate.t('modals.error_accured')) !== null && _translate$t !== void 0 ? _translate$t : 'An error occured. Please try again later.',
265
+ accept: (_translate$t2 = translate === null || translate === void 0 ? void 0 : translate.t('modals.reload_page')) !== null && _translate$t2 !== void 0 ? _translate$t2 : 'Reload',
266
+ reject: (_translate$t3 = translate === null || translate === void 0 ? void 0 : translate.t('modals.close')) !== null && _translate$t3 !== void 0 ? _translate$t3 : 'Close',
267
+ callback: function callback(accepted) {
268
+ _this.enricherErrorModalShown = false;
269
+ if (accepted === true) {
270
+ if (_this.getApplicationEnvironment() === 'WEB' && typeof window !== 'undefined') window.location.reload();
271
+ } else if (accepted === false) {
272
+ var _this$actions2, _this$actions3;
273
+ (_this$actions2 = _this.actions) === null || _this$actions2 === void 0 || _this$actions2.onEvent({
274
+ type: 'onWebPlanerClose'
275
+ });
276
+ (_this$actions3 = _this.actions) === null || _this$actions3 === void 0 || _this$actions3.closeComponentInFullscreen();
277
+ }
278
+ }
279
+ });
280
+ }
232
281
  }, {
233
282
  key: "getDataWithoutCache",
234
283
  value: function () {
235
284
  var _getDataWithoutCache = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(queryString, init, useWebServiceApi) {
236
- var _this$apiConfig, _this$apiConfig2, api2Url;
285
+ var _this$apiConfig6, _this$apiConfig7, api2Url;
237
286
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
238
287
  while (1) switch (_context2.prev = _context2.next) {
239
288
  case 0:
@@ -275,8 +324,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
275
324
  _context2.next = 24;
276
325
  break;
277
326
  case 14:
278
- api2Url = (_this$apiConfig = this.apiConfig) === null || _this$apiConfig === void 0 ? void 0 : _this$apiConfig.api2["default"];
279
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig2 = this.apiConfig) !== null && _this$apiConfig2 !== void 0 && _this$apiConfig2.api2.web) {
327
+ api2Url = (_this$apiConfig6 = this.apiConfig) === null || _this$apiConfig6 === void 0 ? void 0 : _this$apiConfig6.api2["default"];
328
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig7 = this.apiConfig) !== null && _this$apiConfig7 !== void 0 && _this$apiConfig7.api2.web) {
280
329
  api2Url = this.apiConfig.api2.web;
281
330
  }
282
331
  _context2.t0 = _objectSpread$q;
@@ -311,7 +360,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
311
360
  value: function () {
312
361
  var _getDataCache = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(queryString, cacheMD5, accountSessionGuid, useWebServiceApi, method, data, dontLogError) {
313
362
  var _this$divaWebConfigDa, _this$divaWebConfigDa2;
314
- var myQS, url, init, addSession, cacheHit, _this$apiConfig3, _this$apiConfig4, api2Url, resolvedSessionGuid, result, _this$divaWebConfigDa3;
363
+ var myQS, url, init, addSession, cacheHit, _this$apiConfig8, _this$apiConfig9, api2Url, resolvedSessionGuid, result, _this$divaWebConfigDa3;
315
364
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
316
365
  while (1) switch (_context3.prev = _context3.next) {
317
366
  case 0:
@@ -379,8 +428,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
379
428
  _context3.next = 35;
380
429
  break;
381
430
  case 25:
382
- api2Url = (_this$apiConfig3 = this.apiConfig) === null || _this$apiConfig3 === void 0 ? void 0 : _this$apiConfig3.api2["default"];
383
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig4 = this.apiConfig) !== null && _this$apiConfig4 !== void 0 && _this$apiConfig4.api2.web) {
431
+ api2Url = (_this$apiConfig8 = this.apiConfig) === null || _this$apiConfig8 === void 0 ? void 0 : _this$apiConfig8.api2["default"];
432
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig9 = this.apiConfig) !== null && _this$apiConfig9 !== void 0 && _this$apiConfig9.api2.web) {
384
433
  api2Url = this.apiConfig.api2.web;
385
434
  }
386
435
  this.apiCallCount += 1;
@@ -466,6 +515,10 @@ var DivaApiHandler = /*#__PURE__*/function () {
466
515
  }
467
516
  return saveAsProduct;
468
517
  }()
518
+ /**
519
+ * to run service on localhost
520
+ * diva3dRenderGroup :MYCCMEDIA
521
+ */
469
522
  }, {
470
523
  key: "initalizeWebConfigData",
471
524
  value: function initalizeWebConfigData(plannerConfig) {
@@ -540,38 +593,38 @@ var DivaApiHandler = /*#__PURE__*/function () {
540
593
  }, {
541
594
  key: "getReportServiceUrl",
542
595
  value: function getReportServiceUrl() {
543
- var _this$apiConfig$repor, _this$apiConfig5;
544
- return (_this$apiConfig$repor = (_this$apiConfig5 = this.apiConfig) === null || _this$apiConfig5 === void 0 ? void 0 : _this$apiConfig5.reportService) !== null && _this$apiConfig$repor !== void 0 ? _this$apiConfig$repor : '';
596
+ var _this$apiConfig$repor, _this$apiConfig10;
597
+ return (_this$apiConfig$repor = (_this$apiConfig10 = this.apiConfig) === null || _this$apiConfig10 === void 0 ? void 0 : _this$apiConfig10.reportService) !== null && _this$apiConfig$repor !== void 0 ? _this$apiConfig$repor : '';
545
598
  }
546
599
  }, {
547
600
  key: "getDivaSupportServiceUrl",
548
601
  value: function getDivaSupportServiceUrl() {
549
- var _this$apiConfig$suppo, _this$apiConfig6;
550
- return (_this$apiConfig$suppo = (_this$apiConfig6 = this.apiConfig) === null || _this$apiConfig6 === void 0 ? void 0 : _this$apiConfig6.supportService) !== null && _this$apiConfig$suppo !== void 0 ? _this$apiConfig$suppo : '';
602
+ var _this$apiConfig$suppo, _this$apiConfig11;
603
+ return (_this$apiConfig$suppo = (_this$apiConfig11 = this.apiConfig) === null || _this$apiConfig11 === void 0 ? void 0 : _this$apiConfig11.supportService) !== null && _this$apiConfig$suppo !== void 0 ? _this$apiConfig$suppo : '';
551
604
  }
552
605
  }, {
553
606
  key: "getDivaMediaServiceUrl",
554
607
  value: function getDivaMediaServiceUrl() {
555
- var _this$apiConfig$media, _this$apiConfig7;
556
- return (_this$apiConfig$media = (_this$apiConfig7 = this.apiConfig) === null || _this$apiConfig7 === void 0 ? void 0 : _this$apiConfig7.mediaService) !== null && _this$apiConfig$media !== void 0 ? _this$apiConfig$media : '';
608
+ var _this$apiConfig$media, _this$apiConfig12;
609
+ return (_this$apiConfig$media = (_this$apiConfig12 = this.apiConfig) === null || _this$apiConfig12 === void 0 ? void 0 : _this$apiConfig12.mediaService) !== null && _this$apiConfig$media !== void 0 ? _this$apiConfig$media : '';
557
610
  }
558
611
  }, {
559
612
  key: "getDivaAiServiceUrl",
560
613
  value: function getDivaAiServiceUrl() {
561
- var _this$apiConfig$aiSer, _this$apiConfig8;
562
- return (_this$apiConfig$aiSer = (_this$apiConfig8 = this.apiConfig) === null || _this$apiConfig8 === void 0 ? void 0 : _this$apiConfig8.aiService) !== null && _this$apiConfig$aiSer !== void 0 ? _this$apiConfig$aiSer : '';
614
+ var _this$apiConfig$aiSer, _this$apiConfig13;
615
+ return (_this$apiConfig$aiSer = (_this$apiConfig13 = this.apiConfig) === null || _this$apiConfig13 === void 0 ? void 0 : _this$apiConfig13.aiService) !== null && _this$apiConfig$aiSer !== void 0 ? _this$apiConfig$aiSer : '';
563
616
  }
564
617
  }, {
565
618
  key: "getConstructorServiceUrl",
566
619
  value: function getConstructorServiceUrl() {
567
- var _this$apiConfig$const, _this$apiConfig9;
568
- return (_this$apiConfig$const = (_this$apiConfig9 = this.apiConfig) === null || _this$apiConfig9 === void 0 ? void 0 : _this$apiConfig9.constructorService) !== null && _this$apiConfig$const !== void 0 ? _this$apiConfig$const : '';
620
+ var _this$apiConfig$const, _this$apiConfig14;
621
+ return (_this$apiConfig$const = (_this$apiConfig14 = this.apiConfig) === null || _this$apiConfig14 === void 0 ? void 0 : _this$apiConfig14.constructorService) !== null && _this$apiConfig$const !== void 0 ? _this$apiConfig$const : '';
569
622
  }
570
623
  }, {
571
624
  key: "getDivaBasketServiceUrl",
572
625
  value: function getDivaBasketServiceUrl() {
573
- var _this$apiConfig$baske, _this$apiConfig10;
574
- return (_this$apiConfig$baske = (_this$apiConfig10 = this.apiConfig) === null || _this$apiConfig10 === void 0 ? void 0 : _this$apiConfig10.basketService) !== null && _this$apiConfig$baske !== void 0 ? _this$apiConfig$baske : '';
626
+ var _this$apiConfig$baske, _this$apiConfig15;
627
+ return (_this$apiConfig$baske = (_this$apiConfig15 = this.apiConfig) === null || _this$apiConfig15 === void 0 ? void 0 : _this$apiConfig15.basketService) !== null && _this$apiConfig$baske !== void 0 ? _this$apiConfig$baske : '';
575
628
  }
576
629
  }, {
577
630
  key: "getLoadProductBasketParams",
@@ -582,8 +635,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
582
635
  }, {
583
636
  key: "get3DServerUrl",
584
637
  value: function get3DServerUrl() {
585
- var _this$apiConfig$host, _this$apiConfig11;
586
- return (_this$apiConfig$host = (_this$apiConfig11 = this.apiConfig) === null || _this$apiConfig11 === void 0 ? void 0 : _this$apiConfig11.host3d) !== null && _this$apiConfig$host !== void 0 ? _this$apiConfig$host : '';
638
+ var _this$apiConfig$host, _this$apiConfig16;
639
+ return (_this$apiConfig$host = (_this$apiConfig16 = this.apiConfig) === null || _this$apiConfig16 === void 0 ? void 0 : _this$apiConfig16.host3d) !== null && _this$apiConfig$host !== void 0 ? _this$apiConfig$host : '';
587
640
  }
588
641
  }, {
589
642
  key: "doCheckForProductsPrice",
@@ -652,9 +705,9 @@ var DivaApiHandler = /*#__PURE__*/function () {
652
705
  }, {
653
706
  key: "getBaseUrl",
654
707
  value: function getBaseUrl() {
655
- var _this$apiConfig12, _this$apiConfig13;
656
- var url = (_this$apiConfig12 = this.apiConfig) === null || _this$apiConfig12 === void 0 ? void 0 : _this$apiConfig12.api2["default"];
657
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig13 = this.apiConfig) !== null && _this$apiConfig13 !== void 0 && _this$apiConfig13.api2.web) {
708
+ var _this$apiConfig17, _this$apiConfig18;
709
+ var url = (_this$apiConfig17 = this.apiConfig) === null || _this$apiConfig17 === void 0 ? void 0 : _this$apiConfig17.api2["default"];
710
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig18 = this.apiConfig) !== null && _this$apiConfig18 !== void 0 && _this$apiConfig18.api2.web) {
658
711
  url = this.apiConfig.api2.web;
659
712
  }
660
713
  if (!url) throw new Error('No API2 defined');
@@ -770,14 +823,14 @@ var DivaApiHandler = /*#__PURE__*/function () {
770
823
  }, {
771
824
  key: "getI18n",
772
825
  value: function getI18n() {
773
- var _this$i18n;
774
- return (_this$i18n = this.i18n) === null || _this$i18n === void 0 ? void 0 : _this$i18n.call(this);
826
+ var _this$i18n2;
827
+ return (_this$i18n2 = this.i18n) === null || _this$i18n2 === void 0 ? void 0 : _this$i18n2.call(this);
775
828
  }
776
829
  }, {
777
830
  key: "setAccountSessionGuid",
778
831
  value: function () {
779
832
  var _setAccountSessionGuid = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(_ref) {
780
- var os, accountGuid, catalogGuid, response, _this$actions, _this$state$navigatio, _this$state;
833
+ var os, accountGuid, catalogGuid, response, _this$actions4, _this$state$navigatio, _this$state;
781
834
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
782
835
  while (1) switch (_context5.prev = _context5.next) {
783
836
  case 0:
@@ -816,7 +869,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
816
869
  break;
817
870
  case 16:
818
871
  if (this.applicationEnvironment == 'SELLER') {
819
- (_this$actions = this.actions) === null || _this$actions === void 0 || _this$actions.openComponent((_this$state$navigatio = (_this$state = this.state) === null || _this$state === void 0 || (_this$state = _this$state.navigationConfiguration) === null || _this$state === void 0 ? void 0 : _this$state.logoAction) !== null && _this$state$navigatio !== void 0 ? _this$state$navigatio : {
872
+ (_this$actions4 = this.actions) === null || _this$actions4 === void 0 || _this$actions4.openComponent((_this$state$navigatio = (_this$state = this.state) === null || _this$state === void 0 || (_this$state = _this$state.navigationConfiguration) === null || _this$state === void 0 ? void 0 : _this$state.logoAction) !== null && _this$state$navigatio !== void 0 ? _this$state$navigatio : {
820
873
  type: 'SELLER',
821
874
  parameters: {
822
875
  module: 'Collections'
@@ -915,39 +968,39 @@ var DivaApiHandler = /*#__PURE__*/function () {
915
968
  }, {
916
969
  key: "apiUrl",
917
970
  value: function apiUrl(queryString, useWebServiceApi) {
918
- var _this$apiConfig24, _this$apiConfig25, _this$apiConfig26;
971
+ var _this$apiConfig29, _this$apiConfig30, _this$apiConfig31;
919
972
  if (useWebServiceApi == 'catalog') {
920
- var _this$apiConfig14, _this$apiConfig15;
921
- if (!((_this$apiConfig14 = this.apiConfig) !== null && _this$apiConfig14 !== void 0 && _this$apiConfig14.catalogService)) throw new Error('No catalog Service defined');
922
- return ((_this$apiConfig15 = this.apiConfig) === null || _this$apiConfig15 === void 0 ? void 0 : _this$apiConfig15.catalogService) + queryString;
973
+ var _this$apiConfig19, _this$apiConfig20;
974
+ if (!((_this$apiConfig19 = this.apiConfig) !== null && _this$apiConfig19 !== void 0 && _this$apiConfig19.catalogService)) throw new Error('No catalog Service defined');
975
+ return ((_this$apiConfig20 = this.apiConfig) === null || _this$apiConfig20 === void 0 ? void 0 : _this$apiConfig20.catalogService) + queryString;
923
976
  }
924
977
  if (useWebServiceApi == 'basket') {
925
- var _this$apiConfig16, _this$apiConfig17;
926
- if (!((_this$apiConfig16 = this.apiConfig) !== null && _this$apiConfig16 !== void 0 && _this$apiConfig16.basketService)) throw new Error('No basket Service defined');
927
- return ((_this$apiConfig17 = this.apiConfig) === null || _this$apiConfig17 === void 0 ? void 0 : _this$apiConfig17.basketService) + queryString;
978
+ var _this$apiConfig21, _this$apiConfig22;
979
+ if (!((_this$apiConfig21 = this.apiConfig) !== null && _this$apiConfig21 !== void 0 && _this$apiConfig21.basketService)) throw new Error('No basket Service defined');
980
+ return ((_this$apiConfig22 = this.apiConfig) === null || _this$apiConfig22 === void 0 ? void 0 : _this$apiConfig22.basketService) + queryString;
928
981
  }
929
982
  if (useWebServiceApi == 'report') {
930
- var _this$apiConfig18, _this$apiConfig19;
931
- if (!((_this$apiConfig18 = this.apiConfig) !== null && _this$apiConfig18 !== void 0 && _this$apiConfig18.reportService)) throw new Error('No report Service defined');
932
- return ((_this$apiConfig19 = this.apiConfig) === null || _this$apiConfig19 === void 0 ? void 0 : _this$apiConfig19.reportService) + queryString;
983
+ var _this$apiConfig23, _this$apiConfig24;
984
+ if (!((_this$apiConfig23 = this.apiConfig) !== null && _this$apiConfig23 !== void 0 && _this$apiConfig23.reportService)) throw new Error('No report Service defined');
985
+ return ((_this$apiConfig24 = this.apiConfig) === null || _this$apiConfig24 === void 0 ? void 0 : _this$apiConfig24.reportService) + queryString;
933
986
  }
934
987
  if (useWebServiceApi == 'enricher') {
935
- var _this$apiConfig22, _this$apiConfig23;
988
+ var _this$apiConfig27, _this$apiConfig28;
936
989
  if (this.useIDMService) {
937
- var _this$apiConfig20, _this$apiConfig21;
938
- if (!((_this$apiConfig20 = this.apiConfig) !== null && _this$apiConfig20 !== void 0 && _this$apiConfig20.idmService)) throw new Error('No report Service defined');
939
- return ((_this$apiConfig21 = this.apiConfig) === null || _this$apiConfig21 === void 0 ? void 0 : _this$apiConfig21.idmService) + queryString;
990
+ var _this$apiConfig25, _this$apiConfig26;
991
+ if (!((_this$apiConfig25 = this.apiConfig) !== null && _this$apiConfig25 !== void 0 && _this$apiConfig25.idmService)) throw new Error('No report Service defined');
992
+ return ((_this$apiConfig26 = this.apiConfig) === null || _this$apiConfig26 === void 0 ? void 0 : _this$apiConfig26.idmService) + queryString;
940
993
  }
941
- if (!((_this$apiConfig22 = this.apiConfig) !== null && _this$apiConfig22 !== void 0 && _this$apiConfig22.enricherService)) throw new Error('No report Service defined');
942
- return ((_this$apiConfig23 = this.apiConfig) === null || _this$apiConfig23 === void 0 ? void 0 : _this$apiConfig23.enricherService) + queryString;
994
+ if (!((_this$apiConfig27 = this.apiConfig) !== null && _this$apiConfig27 !== void 0 && _this$apiConfig27.enricherService)) throw new Error('No report Service defined');
995
+ return ((_this$apiConfig28 = this.apiConfig) === null || _this$apiConfig28 === void 0 ? void 0 : _this$apiConfig28.enricherService) + queryString;
943
996
  }
944
- var url = (_this$apiConfig24 = this.apiConfig) === null || _this$apiConfig24 === void 0 ? void 0 : _this$apiConfig24.api2["default"];
945
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig25 = this.apiConfig) !== null && _this$apiConfig25 !== void 0 && _this$apiConfig25.api2.web) {
997
+ var url = (_this$apiConfig29 = this.apiConfig) === null || _this$apiConfig29 === void 0 ? void 0 : _this$apiConfig29.api2["default"];
998
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig30 = this.apiConfig) !== null && _this$apiConfig30 !== void 0 && _this$apiConfig30.api2.web) {
946
999
  url = this.apiConfig.api2.web;
947
1000
  }
948
- if (this.useEkPrices && (_this$apiConfig26 = this.apiConfig) !== null && _this$apiConfig26 !== void 0 && _this$apiConfig26.api2.ek) {
949
- var _this$apiConfig27;
950
- url = (_this$apiConfig27 = this.apiConfig) === null || _this$apiConfig27 === void 0 ? void 0 : _this$apiConfig27.api2.ek;
1001
+ if (this.useEkPrices && (_this$apiConfig31 = this.apiConfig) !== null && _this$apiConfig31 !== void 0 && _this$apiConfig31.api2.ek) {
1002
+ var _this$apiConfig32;
1003
+ url = (_this$apiConfig32 = this.apiConfig) === null || _this$apiConfig32 === void 0 ? void 0 : _this$apiConfig32.api2.ek;
951
1004
  }
952
1005
  if (!url) throw new Error('No API2 defined');
953
1006
  return url + '?' + queryString;
@@ -1139,7 +1192,14 @@ var DivaApiHandler = /*#__PURE__*/function () {
1139
1192
  }, {
1140
1193
  key: "getIDMItems",
1141
1194
  value: function getIDMItems(packageId, serieId, serieNo, typeNos) {
1142
- return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/series/' + (this.useIDMService ? serieId : serieNo) + '/items' + (typeNos !== null && typeNos !== void 0 && typeNos.length ? '?filter=' + typeNos.map(function (t) {
1195
+ var base = this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/series/' + (this.useIDMService ? serieId : serieNo) + '/items';
1196
+
1197
+ // The seller/configurator endpoint is purpose-built: a dedicated typeNos param instead of a generic filter,
1198
+ // and a fixed field set server-side instead of an explicit fields= list.
1199
+ if (this.isSeller) {
1200
+ return base + (typeNos !== null && typeNos !== void 0 && typeNos.length ? '?typeNos=' + typeNos.join(';') : '');
1201
+ }
1202
+ return base + (typeNos !== null && typeNos !== void 0 && typeNos.length ? '?filter=' + typeNos.map(function (t) {
1143
1203
  return encodeURIComponent('typeNo==' + t);
1144
1204
  }).join(' || ') : '?fields=properties;serieNo;featureClassRefNo;priceTypeRef;itemIdentification;catalogPage;weightBrutto;weightNetto;volume;minimumDeliveryTime;widthBasicShapeNominalValue;widthBasicShapeFrom;widthBasicShapeTo;widthBasicShapeStepSize;heightBasicShapeNominalValue;heightBasicShapeFrom;heightBasicShapeTo;heightBasicShapeStepSize;depthBasicShapeNominalValue;depthBasicShapeFrom;depthBasicShapeTo;depthBasicShapeStepSize;typeKey;eClassNo;detailInfoRefs;detailInfos;partListExclusive;partListRef;decisionRefs;typeNo;sequenceNo;edpNumber;eanNumber;shortText;fullText;planningAdvice;salesNumber;avrFilter;avlFilter');
1145
1205
  }
@@ -1153,6 +1213,11 @@ var DivaApiHandler = /*#__PURE__*/function () {
1153
1213
  value: function getIDMDecisions(packageId, decisions) {
1154
1214
  return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions' + '?decisionNos=' + decisions.join(';') + (this.smSupplierNr ? '&supplierNo=' + this.smSupplierNr : '');
1155
1215
  }
1216
+ }, {
1217
+ key: "getIDMDecisionsQueryUrl",
1218
+ value: function getIDMDecisionsQueryUrl(packageId) {
1219
+ return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions/query' + (this.smSupplierNr ? '?supplierNo=' + this.smSupplierNr : '');
1220
+ }
1156
1221
  }, {
1157
1222
  key: "getIDMDetailInfos",
1158
1223
  value: function getIDMDetailInfos(packageId, detailinfos) {
@@ -1163,14 +1228,26 @@ var DivaApiHandler = /*#__PURE__*/function () {
1163
1228
  }, {
1164
1229
  key: "getIDMFeatureClass",
1165
1230
  value: function getIDMFeatureClass(packageId, featureclasses) {
1166
- return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/featureclasses' + '?filter=' + featureclasses.map(function (f) {
1231
+ var base = this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/featureclasses';
1232
+
1233
+ // The seller/configurator endpoint is purpose-built: a dedicated featureClassNos param instead of a generic filter.
1234
+ if (this.isSeller) {
1235
+ return base + '?featureClassNos=' + featureclasses.join(';');
1236
+ }
1237
+ return base + '?filter=' + featureclasses.map(function (f) {
1167
1238
  return encodeURIComponent('featureClassNo==' + f);
1168
1239
  }).join(' || ');
1169
1240
  }
1170
1241
  }, {
1171
1242
  key: "getIDMPriceFeatureGroups",
1172
1243
  value: function getIDMPriceFeatureGroups(packageId, pricefeaturegroups) {
1173
- return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/pricefeaturegroups' + '?filter=' + pricefeaturegroups.map(function (p) {
1244
+ var base = this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/pricefeaturegroups';
1245
+
1246
+ // The seller/configurator endpoint is purpose-built: a dedicated priceFeatureGroupNos param instead of a generic filter.
1247
+ if (this.isSeller) {
1248
+ return base + '?priceFeatureGroupNos=' + pricefeaturegroups.join(';');
1249
+ }
1250
+ return base + '?filter=' + pricefeaturegroups.map(function (p) {
1174
1251
  return encodeURIComponent('priceFeatureGroupNo==' + p);
1175
1252
  }).join(' || ');
1176
1253
  }
@@ -1494,12 +1571,12 @@ var DivaApiHandler = /*#__PURE__*/function () {
1494
1571
  key: "getDimensionbyId",
1495
1572
  value: function () {
1496
1573
  var _getDimensionbyId = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee15(id, iln, catalogCodex, plannedOptions) {
1497
- var _this$apiConfig28;
1574
+ var _this$apiConfig33;
1498
1575
  var fullUrl, res, headers;
1499
1576
  return _regeneratorRuntime.wrap(function _callee15$(_context15) {
1500
1577
  while (1) switch (_context15.prev = _context15.next) {
1501
1578
  case 0:
1502
- fullUrl = this.getConstructorServiceUrl() + '/dimension/' + id + '?iln=' + iln + '&catalogCodex=' + catalogCodex + '&debug=' + ((_this$apiConfig28 = this.apiConfig) === null || _this$apiConfig28 === void 0 ? void 0 : _this$apiConfig28.useDebugUrl);
1579
+ fullUrl = this.getConstructorServiceUrl() + '/dimension/' + id + '?iln=' + iln + '&catalogCodex=' + catalogCodex + '&debug=' + ((_this$apiConfig33 = this.apiConfig) === null || _this$apiConfig33 === void 0 ? void 0 : _this$apiConfig33.useDebugUrl);
1503
1580
  headers = {};
1504
1581
  if (this.jwt) headers = {
1505
1582
  Authorization: 'Bearer ' + this.jwt
@@ -16505,6 +16582,11 @@ var OptionValueCatalogData = /*#__PURE__*/function () {
16505
16582
  get: function get() {
16506
16583
  return this.opv.material;
16507
16584
  }
16585
+ }, {
16586
+ key: "properties",
16587
+ get: function get() {
16588
+ return this.opv.property;
16589
+ }
16508
16590
  }, {
16509
16591
  key: "isOPVG",
16510
16592
  get: function get() {
@@ -16871,6 +16953,9 @@ var CatalogArticleData = /*#__PURE__*/function () {
16871
16953
  case 'ACCESSOIRE_POS_PRIO':
16872
16954
  this._catalogArticle.accPosPrio = Number(prop.Value);
16873
16955
  break;
16956
+ case 'ADD_AS_ZKAT':
16957
+ this._catalogArticle.addAsZKAT = prop.Value === 'true' || prop.Value === '1';
16958
+ break;
16874
16959
  case 'HEIGHTGRIDUSED':
16875
16960
  this._catalogArticle.heightGridUsed = Number(prop.Value);
16876
16961
  break;
@@ -16943,6 +17028,12 @@ var CatalogArticleData = /*#__PURE__*/function () {
16943
17028
  case 'OPTIONS_FOR_PRINT':
16944
17029
  this.catalogArticle.optionsForPrint = prop.Value.split(';');
16945
17030
  break;
17031
+ case 'TABGROUP':
17032
+ if (!this._catalogArticle.tabGroup) this._catalogArticle.tabGroup = prop.Value;
17033
+ break;
17034
+ case 'TABGROUP_OPTIONS':
17035
+ if (!this._catalogArticle.tabGroupOption) this._catalogArticle.tabGroupOption = prop.Value;
17036
+ break;
16946
17037
  default:
16947
17038
  if (_key.includes('__')) break;
16948
17039
  var values = prop.Value.split(';');
@@ -17332,6 +17423,11 @@ var CatalogArticleData = /*#__PURE__*/function () {
17332
17423
  get: function get() {
17333
17424
  return this._catalogArticle.accPosPrio;
17334
17425
  }
17426
+ }, {
17427
+ key: "addAsZKAT",
17428
+ get: function get() {
17429
+ return this._catalogArticle.addAsZKAT;
17430
+ }
17335
17431
  }, {
17336
17432
  key: "overwriteParentWidth",
17337
17433
  get: function get() {
@@ -17979,18 +18075,18 @@ function getCatalogOptionValueDataType(codex, jsonOPV, catalogData) {
17979
18075
  }
17980
18076
  function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogProps, plannerPaletteViewInfo) {
17981
18077
  //Hier muss es dann reingespeichert werden catalogPlannerArticlesView;
17982
- var getFilterType = function getFilterType(hasArticleRelation, AVLFilter, AVRFilter, catalogProps) {
18078
+ var getFilterType = function getFilterType(hasArticleRelation, hasAVL, hasAVR, catalogProps) {
17983
18079
  var ret;
17984
18080
  if (hasArticleRelation) {
17985
18081
  if (!catalogProps.showAllItemsInPlanner && !catalogProps.showAccOnDpOnly) plannerPaletteViewInfo.filterType['Accessoire'] = true;
17986
18082
  ret = 'Accessoire';
17987
- } else if (AVLFilter.length > 0 && AVRFilter.length > 0) {
18083
+ } else if (hasAVL && hasAVR) {
17988
18084
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockLR'] = true;
17989
18085
  ret = 'DockLR';
17990
- } else if (AVLFilter.length > 0) {
18086
+ } else if (hasAVL) {
17991
18087
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockR'] = true;
17992
18088
  ret = 'DockR';
17993
- } else if (AVRFilter.length > 0) {
18089
+ } else if (hasAVR) {
17994
18090
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockL'] = true;
17995
18091
  ret = 'DockL';
17996
18092
  } else {
@@ -18084,12 +18180,9 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18084
18180
  if (catalogProps.diva3dPlanerShowArticleAsSvg && topSvg.SVG) {
18085
18181
  image = getSVGUrl(topSvg.SVG, mediaUrl);
18086
18182
  }
18087
- if (topSvg.HasAVL && catPlanArticle.avlFilter.length == 0) {
18088
- catPlanArticle.avlFilter = ['ALWAYS_DOCKABLE'];
18089
- }
18090
- if (topSvg.HasAVR && catPlanArticle.avrFilter.length == 0) {
18091
- catPlanArticle.avrFilter = ['ALWAYS_DOCKABLE'];
18092
- }
18183
+
18184
+ // An empty AVL/AVR filter means "no connector restriction" and is treated as a match by the
18185
+ // docking/palette comparison (see checkDPFilterDoMatch / checkDPAV*FilterDoMatch). No sentinel needed.
18093
18186
 
18094
18187
  //Wäre für Rofl Benz gedacht um die Information zu speichern welche Artikel in welcher Ausrichtung ausmultipliziert werden
18095
18188
  if (topSvg.JsFormula.includes('202_LI')) {
@@ -18097,7 +18190,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18097
18190
  } else if (topSvg.JsFormula.includes('202_RE')) {
18098
18191
  elementName = elementName + ' (Rechts)';
18099
18192
  }
18100
- var filterType = getFilterType(catPlanArticle.isArticleRelation, topSvg.HasAVL ? catPlanArticle.avlFilter : [], topSvg.HasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18193
+ var filterType = getFilterType(catPlanArticle.isArticleRelation, !!topSvg.HasAVL, !!topSvg.HasAVR, catalogProps);
18101
18194
  catPlanArticle.filterType = filterType;
18102
18195
  //ausmultiplizierte Elemente (über meherere SVGs)
18103
18196
  var catPlanArtView = {
@@ -18150,7 +18243,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18150
18243
  }
18151
18244
  if (!catPlanArticle.hasTopSvgsWithFormula || catPlanArticle.topSvgsWithFormula.length == 1) {
18152
18245
  var _catalogArticle$artic2;
18153
- var _filterType = getFilterType(catPlanArticle.isArticleRelation, catPlanArticle.topHasAVL ? catPlanArticle.avlFilter : [], catPlanArticle.topHasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18246
+ var _filterType = getFilterType(catPlanArticle.isArticleRelation, !!catPlanArticle.topHasAVL, !!catPlanArticle.topHasAVR, catalogProps);
18154
18247
  catPlanArticle.filterType = _filterType;
18155
18248
  //Artikelbild ist abh�ngig von DIVA3DPlanerShowArticleAsSvg das SVG des Elements
18156
18249
  if (catalogProps.diva3dPlanerShowArticleAsSvg && (catPlanArticle.hasTopSvg || catPlanArticle.hasTopSvgsWithFormula)) {
@@ -18588,6 +18681,11 @@ var ArticleOptionValueData = /*#__PURE__*/function () {
18588
18681
  get: function get() {
18589
18682
  return this.opv.catalogOPV.value;
18590
18683
  }
18684
+ }, {
18685
+ key: "properties",
18686
+ get: function get() {
18687
+ return this.opv.catalogOPV.properties;
18688
+ }
18591
18689
  }, {
18592
18690
  key: "metaData",
18593
18691
  get: function get() {
@@ -19693,7 +19791,15 @@ function _loadMoreFromIDMArticles() {
19693
19791
  }).map(function (a) {
19694
19792
  return a.featureClassRefNo;
19695
19793
  })));
19696
- promises = [set.api.getDataCache(set.api.getIDMFeatureClass(set.CatalogData.accountGuid, toLoadFeatureClassRefNo), undefined, undefined, 'enricher'), toLoadPFGroups.length ? set.api.getDataCache(set.api.getIDMPriceFeatureGroups(set.CatalogData.accountGuid, toLoadPFGroups), undefined, undefined, 'enricher') : undefined, toLoadDecisionIds.length ? set.api.getDataCache(set.api.getIDMDecisions(set.CatalogData.accountGuid, toLoadDecisionIds), undefined, undefined, 'enricher') : undefined];
19794
+ promises = [set.api.getDataCache(set.api.getIDMFeatureClass(set.CatalogData.accountGuid, toLoadFeatureClassRefNo), undefined, undefined, 'enricher'), toLoadPFGroups.length ? set.api.getDataCache(set.api.getIDMPriceFeatureGroups(set.CatalogData.accountGuid, toLoadPFGroups), undefined, undefined, 'enricher') : undefined, toLoadDecisionIds.length ? function () {
19795
+ var getUrl = set.api.getIDMDecisions(set.CatalogData.accountGuid, toLoadDecisionIds);
19796
+ if (getUrl.length > 2000) {
19797
+ return set.api.getDataCache(set.api.getIDMDecisionsQueryUrl(set.CatalogData.accountGuid), undefined, undefined, 'enricher', 'POST', {
19798
+ decisionNos: toLoadDecisionIds.join(';')
19799
+ });
19800
+ }
19801
+ return set.api.getDataCache(getUrl, undefined, undefined, 'enricher');
19802
+ }() : undefined];
19697
19803
  _context5.next = 16;
19698
19804
  return Promise.all(promises);
19699
19805
  case 16:
@@ -19960,15 +20066,14 @@ var getPriceFeatureGroups = function getPriceFeatureGroups(catalogArticleDatas,
19960
20066
  };
19961
20067
  var initializeDecision = function initializeDecision(decision, idmOptionGroups) {
19962
20068
  var _decision$optionCombi;
20069
+ // optionCombinations already arrive sorted by sequence from the backend.
19963
20070
  var optionCombinations = (_decision$optionCombi = decision.optionCombinations) === null || _decision$optionCombi === void 0 ? void 0 : _decision$optionCombi.map(function (c) {
19964
20071
  return _objectSpread$p(_objectSpread$p({}, c), {}, {
19965
20072
  projectOptionsSetRefs: parseOptionSetRef(c.projectOptionsSetRefs, idmOptionGroups)
19966
20073
  });
19967
20074
  });
19968
20075
  return _objectSpread$p(_objectSpread$p({}, decision), {}, {
19969
- optionCombinations: optionCombinations === null || optionCombinations === void 0 ? void 0 : optionCombinations.sort(function (a, b) {
19970
- return a.sequence - b.sequence;
19971
- })
20076
+ optionCombinations: optionCombinations
19972
20077
  });
19973
20078
  };
19974
20079
  var initializePriceFeatureGroups = function initializePriceFeatureGroups(priceFeatureGroup, idmOptionGroups) {
@@ -20067,7 +20172,7 @@ var initFeature = function initFeature(feature, catalogArticleData, set) {
20067
20172
  catalogArticleData.articleOptions[newArticleFeature.codex] = newArticleFeature;
20068
20173
  };
20069
20174
  function getCatalogFeatureType(feature, catalogArticleData, set) {
20070
- var _set$CatalogData$cata, _set$CatalogData$cata2, _set$CatalogData$cata3, _feature$detailInfos, _properties$find, _properties$find2, _ref, _properties$find3, _feature$options$, _optionMask$hidden;
20175
+ var _set$CatalogData$cata, _set$CatalogData$cata2, _set$CatalogData$cata3, _feature$detailInfos, _optionMask$hidden;
20071
20176
  var featureClass = set.CatalogData.getFeatureClass(catalogArticleData.featureClassRefNo);
20072
20177
  var optionMask = (_set$CatalogData$cata = set.CatalogData.catalogMask) === null || _set$CatalogData$cata === void 0 || (_set$CatalogData$cata = _set$CatalogData$cata.options) === null || _set$CatalogData$cata === void 0 ? void 0 : _set$CatalogData$cata[feature.featureNo];
20073
20178
  var maskProperties = getPropertiesForFeatureNo((_set$CatalogData$cata2 = (_set$CatalogData$cata3 = set.CatalogData.catalogMask) === null || _set$CatalogData$cata3 === void 0 ? void 0 : _set$CatalogData$cata3.properties) !== null && _set$CatalogData$cata2 !== void 0 ? _set$CatalogData$cata2 : [], undefined, feature.featureNo, set.CatalogData.api.getLanguage());
@@ -20084,17 +20189,9 @@ function getCatalogFeatureType(feature, catalogArticleData, set) {
20084
20189
  headerPosVariationType: feature.headerPosVariationType,
20085
20190
  measureKey: feature.measureParameter,
20086
20191
  sequenceNo: feature.sequenceNo,
20087
- sendToPIM: !!(properties !== null && properties !== void 0 && (_properties$find = properties.find(function (p) {
20088
- return p.Codex == 'SendToPim';
20089
- })) !== null && _properties$find !== void 0 && _properties$find.Value),
20090
- isMultiselect: !!(properties !== null && properties !== void 0 && (_properties$find2 = properties.find(function (p) {
20091
- return p.Codex == 'Multiselect';
20092
- })) !== null && _properties$find2 !== void 0 && _properties$find2.Value),
20093
- layout: (_ref = properties === null || properties === void 0 || (_properties$find3 = properties.find(function (p) {
20094
- return p.Codex == 'LAYOUT';
20095
- })) === null || _properties$find3 === void 0 ? void 0 : _properties$find3.Value) !== null && _ref !== void 0 ? _ref : (_feature$options$ = feature.options[0]) !== null && _feature$options$ !== void 0 && (_feature$options$ = _feature$options$.detailInfos) !== null && _feature$options$ !== void 0 && _feature$options$.find(function (d) {
20096
- return d.functionType == 'OPV';
20097
- }) ? 'IMAGE' : 'TEXT',
20192
+ sendToPIM: feature.sendToPim,
20193
+ isMultiselect: feature.isMultiselect,
20194
+ layout: feature.layout,
20098
20195
  invisible: (_optionMask$hidden = optionMask === null || optionMask === void 0 ? void 0 : optionMask.hidden) !== null && _optionMask$hidden !== void 0 ? _optionMask$hidden : !!(featureClass !== null && featureClass !== void 0 && featureClass.featureRefs[feature.featureNo]),
20099
20196
  property: properties,
20100
20197
  propertyObj: {}
@@ -20158,12 +20255,9 @@ function getCatalogOptionType(option, set) {
20158
20255
  origName: name,
20159
20256
  name_locales: option.optionText,
20160
20257
  property: properties,
20161
- image: getLowResUrl((_option$detailInfos = option.detailInfos) === null || _option$detailInfos === void 0 || (_option$detailInfos = _option$detailInfos.find(function (d) {
20162
- return d.functionType == 'OPV';
20163
- })) === null || _option$detailInfos === void 0 ? void 0 : _option$detailInfos.url),
20164
- images: (_option$detailInfos2 = option.detailInfos) === null || _option$detailInfos2 === void 0 || (_option$detailInfos2 = _option$detailInfos2.filter(function (d) {
20165
- return d.functionType == 'OPV';
20166
- })) === null || _option$detailInfos2 === void 0 ? void 0 : _option$detailInfos2.map(function (o) {
20258
+ // detailInfos is already limited to "OPV" entries by the backend.
20259
+ image: getLowResUrl((_option$detailInfos = option.detailInfos) === null || _option$detailInfos === void 0 || (_option$detailInfos = _option$detailInfos[0]) === null || _option$detailInfos === void 0 ? void 0 : _option$detailInfos.url),
20260
+ images: (_option$detailInfos2 = option.detailInfos) === null || _option$detailInfos2 === void 0 ? void 0 : _option$detailInfos2.map(function (o) {
20167
20261
  var _getLowResUrl, _option$detailInfoRef, _option$detailInfoRef2;
20168
20262
  return {
20169
20263
  detailInfoNo: o.detailInfoNo,
@@ -20173,7 +20267,7 @@ function getCatalogOptionType(option, set) {
20173
20267
  })) !== null && _option$detailInfoRef !== void 0 ? _option$detailInfoRef : []
20174
20268
  };
20175
20269
  }),
20176
- hexColor: rgbToHex(option.materialColorR, option.materialColorG, option.materialColorB),
20270
+ hexColor: option.materialColorHex,
20177
20271
  description: DivaUtils.getLocals(option.optionCommentText, set.api.getLanguageLowercase()),
20178
20272
  description_locales: option.optionCommentText,
20179
20273
  isTexture: false,
@@ -20244,14 +20338,6 @@ function getArticleOption(set, option, catalogOption, feature, catalogArticleDat
20244
20338
  };
20245
20339
  return opv;
20246
20340
  }
20247
- function componentToHex(c) {
20248
- var hex = c.toString(16);
20249
- return hex.length == 1 ? '0' + hex : hex;
20250
- }
20251
- function rgbToHex(r, g, b) {
20252
- if (r === undefined || g === undefined || b === undefined) return undefined;
20253
- return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);
20254
- }
20255
20341
 
20256
20342
  function ownKeys$o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20257
20343
  function _objectSpread$o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -20322,9 +20408,12 @@ function initIDMArticles(jsonItems, catalogData) {
20322
20408
  }
20323
20409
  }
20324
20410
  function getCatalogArticle(article, catalogData) {
20325
- var _catalogData$catalogM, _article$typeKey, _article$salesNumber, _ref, _articleMask$name, _article$fullText, _article$fullText2, _article$fullText3, _articleMask$properti, _article$depthBasicSh, _article$depthBasicSh2, _article$depthBasicSh3, _article$widthBasicSh, _article$widthBasicSh2, _article$widthBasicSh3, _article$heightBasicS, _article$heightBasicS2, _article$heightBasicS3, _article$weightNetto, _article$detailInfos, _article$detailInfos2, _article$detailInfos3, _articleMask$groupnam, _articleMask$groupnam2;
20411
+ var _catalogData$catalogM, _article$typeKey, _article$salesNumber, _articleMask$name, _articleMask$properti, _article$depthBasicSh, _article$depthBasicSh2, _article$depthBasicSh3, _article$widthBasicSh, _article$widthBasicSh2, _article$widthBasicSh3, _article$heightBasicS, _article$heightBasicS2, _article$heightBasicS3, _article$weightNetto, _article$detailInfos, _article$detailInfos2, _article$detailInfos3, _articleMask$groupnam, _articleMask$groupnam2;
20326
20412
  var articleMask = (_catalogData$catalogM = catalogData.catalogMask) === null || _catalogData$catalogM === void 0 || (_catalogData$catalogM = _catalogData$catalogM.articles) === null || _catalogData$catalogM === void 0 ? void 0 : _catalogData$catalogM[article.typeNo];
20327
20413
  var lang = catalogData.api.getLanguageLowercase();
20414
+ // empty locale objects ({} or only empty strings) are truthy, so ?? alone doesn't fall back
20415
+ var fullText = hasLocaleText(article.fullText) ? article.fullText : article.shortText;
20416
+ var shortText = hasLocaleText(article.shortText) ? article.shortText : article.fullText;
20328
20417
  var featureProperties = convertProperties(article.properties, lang, 'featureNos');
20329
20418
  var optionProperties = convertProperties(article.properties, lang, 'optionKeys');
20330
20419
  return {
@@ -20347,14 +20436,14 @@ function getCatalogArticle(article, catalogData) {
20347
20436
  hasArticleRelations: false,
20348
20437
  hasPartlistArticle: !!article.partListRef,
20349
20438
  hasType1Dependencies: false,
20350
- name: DivaUtils.getLocals((_ref = (_articleMask$name = articleMask === null || articleMask === void 0 ? void 0 : articleMask.name) !== null && _articleMask$name !== void 0 ? _articleMask$name : article.fullText) !== null && _ref !== void 0 ? _ref : article.shortText, lang),
20351
- longDescription: DivaUtils.getLocals((_article$fullText = article.fullText) !== null && _article$fullText !== void 0 ? _article$fullText : article.shortText, lang),
20352
- longDescription_locales: (_article$fullText2 = article.fullText) !== null && _article$fullText2 !== void 0 ? _article$fullText2 : article.shortText,
20439
+ name: DivaUtils.getLocals((_articleMask$name = articleMask === null || articleMask === void 0 ? void 0 : articleMask.name) !== null && _articleMask$name !== void 0 ? _articleMask$name : fullText, lang),
20440
+ longDescription: DivaUtils.getLocals(fullText, lang),
20441
+ longDescription_locales: fullText,
20353
20442
  isHidden: !!(articleMask !== null && articleMask !== void 0 && articleMask.hidden),
20354
- origName: DivaUtils.getLocals((_article$fullText3 = article.fullText) !== null && _article$fullText3 !== void 0 ? _article$fullText3 : article.shortText, lang),
20355
- shortName: DivaUtils.getLocals(article.shortText, lang),
20356
- origShortName: DivaUtils.getLocals(article.shortText, lang),
20357
- shortName_locales: article.shortText,
20443
+ origName: DivaUtils.getLocals(fullText, lang),
20444
+ shortName: DivaUtils.getLocals(shortText, lang),
20445
+ origShortName: DivaUtils.getLocals(shortText, lang),
20446
+ shortName_locales: shortText,
20358
20447
  properties: [].concat(_toConsumableArray(convertProperties(article.properties, lang)), _toConsumableArray((_articleMask$properti = articleMask === null || articleMask === void 0 ? void 0 : articleMask.properties) !== null && _articleMask$properti !== void 0 ? _articleMask$properti : [])),
20359
20448
  optionProperties: optionProperties,
20360
20449
  featureProperties: featureProperties,
@@ -20414,6 +20503,11 @@ function getCatalogArticle(article, catalogData) {
20414
20503
  modelName3D: jsonArticle.ModelName3D && jsonArticle.ModelName3D != '' ? jsonArticle.ModelName3D : undefined,
20415
20504
  */
20416
20505
 
20506
+ function hasLocaleText(locales) {
20507
+ return !!locales && Object.values(locales).some(function (v) {
20508
+ return !!(v !== null && v !== void 0 && v.trim());
20509
+ });
20510
+ }
20417
20511
  function getLowResUrl(url) {
20418
20512
  return url === null || url === void 0 ? void 0 : url.replace('.jpg', '_low.jpg').replace('.jpeg', '_low.jpeg').replace('.png', '_low.png');
20419
20513
  }
@@ -20654,6 +20748,8 @@ var DivaCatalogData = /*#__PURE__*/function () {
20654
20748
  //
20655
20749
  ignoreLayerAVNAVS: false,
20656
20750
  //
20751
+ ignoreDockingNumber: false,
20752
+ // ignoriert die Nummern-Regel beim Andocken (z.B. AVU1 darf an AVO2). Die Nummer dient dann nur der Identifikation, nicht als Zuordnungsschlüssel.
20657
20753
  checkCollisionForDifferentLayers: [],
20658
20754
  //
20659
20755
 
@@ -20706,6 +20802,9 @@ var DivaCatalogData = /*#__PURE__*/function () {
20706
20802
  // ergänzt einen Übersetzbaren string am Ende des Names
20707
20803
  dontShowAccStep: false,
20708
20804
  useTypeNrAsArticleNrEKText: false,
20805
+ hideSubPosArticleCodexEKText: false,
20806
+ addPosInvisibilityToOL: false,
20807
+ // PosInvisibility wird nur in die Orderlines übernommen wenn der MetaTag ADD_POS_INVISIBILITY_TO_OL == 1 ist
20709
20808
  addNewLineBeforRuleDesc: false,
20710
20809
  // für Kirchner neue zeile im Checkout vor der Klanner und der RuleCes von den Partlistarticles
20711
20810
  useEdoArticlesOnOpvs: [],
@@ -21199,6 +21298,24 @@ var DivaCatalogData = /*#__PURE__*/function () {
21199
21298
  return _ret;
21200
21299
  }
21201
21300
  }
21301
+
21302
+ /**
21303
+ * Default dock filter applied when nothing is selected (e.g. after a deselect or when adding a new element).
21304
+ * When completeness warnings are hidden, any element may start a planning, so every dock type the catalog
21305
+ * actually has is shown. Otherwise the catalog's configured start filter (startFilterParams / available
21306
+ * start types) is used.
21307
+ */
21308
+ }, {
21309
+ key: "defaultDockFilter",
21310
+ get: function get() {
21311
+ if (this.doHideCompletenessWarning) {
21312
+ var filterType = this.plannerPaletteViewInfo.filterType;
21313
+ return Object.keys(filterType).filter(function (key) {
21314
+ return filterType[key];
21315
+ });
21316
+ }
21317
+ return this.getStartFilter;
21318
+ }
21202
21319
  }, {
21203
21320
  key: "dontHideOption",
21204
21321
  get: function get() {
@@ -21397,6 +21514,11 @@ var DivaCatalogData = /*#__PURE__*/function () {
21397
21514
  get: function get() {
21398
21515
  return this.catalogProps.useTypeNrAsArticleNrEKText;
21399
21516
  }
21517
+ }, {
21518
+ key: "hideSubPosArticleCodexEKText",
21519
+ get: function get() {
21520
+ return this.catalogProps.hideSubPosArticleCodexEKText;
21521
+ }
21400
21522
  }, {
21401
21523
  key: "hasAlternateRenderings",
21402
21524
  get: function get() {
@@ -21679,6 +21801,11 @@ var DivaCatalogData = /*#__PURE__*/function () {
21679
21801
  get: function get() {
21680
21802
  return this.catalogProps.dontShowAccStep;
21681
21803
  }
21804
+ }, {
21805
+ key: "addPosInvisibilityToOL",
21806
+ get: function get() {
21807
+ return this.catalogProps.addPosInvisibilityToOL;
21808
+ }
21682
21809
 
21683
21810
  //Planner configurations
21684
21811
  }, {
@@ -21688,6 +21815,7 @@ var DivaCatalogData = /*#__PURE__*/function () {
21688
21815
  ignoreLayerAVC: this.catalogProps.ignoreLayerAVC,
21689
21816
  ignoreLayerAVOAVU: this.catalogProps.ignoreLayerAVOAVU,
21690
21817
  ignoreLayerAVNAVS: this.catalogProps.ignoreLayerAVNAVS,
21818
+ ignoreDockingNumber: this.catalogProps.ignoreDockingNumber,
21691
21819
  showAccOnDpOnly: this.catalogProps.showAccOnDpOnly,
21692
21820
  dockAccOnAvoOnly: this.catalogProps.dockAccOnAvoOnly,
21693
21821
  hideAccessoriesInPlanner: this.catalogProps.accessorieStepAsPlanner,
@@ -21847,6 +21975,9 @@ var DivaCatalogData = /*#__PURE__*/function () {
21847
21975
  case 'IGNORELAYERAVNAVS':
21848
21976
  _this4.catalogProps.ignoreLayerAVNAVS = item.Value == '1';
21849
21977
  break;
21978
+ case 'IGNOREDOCKINGNUMBER':
21979
+ _this4.catalogProps.ignoreDockingNumber = item.Value == '1';
21980
+ break;
21850
21981
  case 'CHECK_COLLISION_DIFFERENT_LAYERS':
21851
21982
  _this4.catalogProps.checkCollisionForDifferentLayers = item.Value.split(';').map(function (t) {
21852
21983
  return parseInt(t);
@@ -21965,6 +22096,12 @@ var DivaCatalogData = /*#__PURE__*/function () {
21965
22096
  case 'USE_TYPENR_AS_ARTICLENR_EKTEXT':
21966
22097
  _this4.catalogProps.useTypeNrAsArticleNrEKText = '1' == item.Value;
21967
22098
  break;
22099
+ case 'HIDE_SUBPOS_ARTICLECODEX_EKTEXT':
22100
+ _this4.catalogProps.hideSubPosArticleCodexEKText = '1' == item.Value;
22101
+ break;
22102
+ case 'ADD_POS_INVISIBILITY_TO_OL':
22103
+ _this4.catalogProps.addPosInvisibilityToOL = '1' == item.Value;
22104
+ break;
21968
22105
  case 'ADD_NEW_LINE_BEFOR_RULEDESC':
21969
22106
  _this4.catalogProps.addNewLineBeforRuleDesc = '1' == item.Value;
21970
22107
  break;
@@ -22303,11 +22440,12 @@ var DivaCatalogHandler = /*#__PURE__*/function () {
22303
22440
  key: "loadDivaCatalog",
22304
22441
  value: function () {
22305
22442
  var _loadDivaCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(state, catalogCodex, orderSet) {
22443
+ var _orderSet$OrderLines;
22306
22444
  var promises, _yield$Promise$all, _yield$Promise$all2, catalogApiData, catalogArticleListData, catalogArticlePlannerListData, additionalModelInfos, mask, _state$catalogMask, catalogData;
22307
22445
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
22308
22446
  while (1) switch (_context2.prev = _context2.next) {
22309
22447
  case 0:
22310
- promises = [state.api.getDataCache(state.api.getCatalogDataQS(catalogCodex), state.api.getCatalogDataCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonArticleListQS(catalogCodex), state.api.getJsonArticleListCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonPlannerElementsQS(catalogCodex), state.api.getJsonPlannerElementsCacheKey(catalogCodex), orderSet.AccountSessionGUID)].concat([this.loadAdditionalModelInfos(state, orderSet.AccountGUID, orderSet.CatalogGUID)], _toConsumableArray(state.onlyRunLogic ? [] : _toConsumableArray(new Map(orderSet.OrderLines.filter(function (ol) {
22448
+ promises = [state.api.getDataCache(state.api.getCatalogDataQS(catalogCodex), state.api.getCatalogDataCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonArticleListQS(catalogCodex), state.api.getJsonArticleListCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonPlannerElementsQS(catalogCodex), state.api.getJsonPlannerElementsCacheKey(catalogCodex), orderSet.AccountSessionGUID)].concat([this.loadAdditionalModelInfos(state, orderSet.AccountGUID, orderSet.CatalogGUID)], _toConsumableArray(state.onlyRunLogic ? [] : _toConsumableArray(new Map(((_orderSet$OrderLines = orderSet.OrderLines) !== null && _orderSet$OrderLines !== void 0 ? _orderSet$OrderLines : []).filter(function (ol) {
22311
22449
  var _ol$VariantBasketData;
22312
22450
  return ((_ol$VariantBasketData = ol.VariantBasketDatas) === null || _ol$VariantBasketData === void 0 ? void 0 : _ol$VariantBasketData.length) && ol.ArticleType === 'OPTIONTREE';
22313
22451
  }).map(function (os) {
@@ -22338,7 +22476,8 @@ var DivaCatalogHandler = /*#__PURE__*/function () {
22338
22476
  break;
22339
22477
  }
22340
22478
  _context2.next = 16;
22341
- return state.api.getDataCache(state.api.getCatalogMaskQS(catalogApiData.GUID, state.api.OrganizationId), undefined, undefined, 'enricher');
22479
+ return state.api.getDataCache(state.api.getCatalogMaskQS(catalogApiData.GUID, state.api.OrganizationId), undefined, undefined, 'enricher', undefined, undefined, true // optional call - failure is swallowed below, so don't surface the enricher error modal
22480
+ );
22342
22481
  case 16:
22343
22482
  mask = _context2.sent;
22344
22483
  case 17:
@@ -23513,45 +23652,19 @@ var DivaEngine = /*#__PURE__*/function () {
23513
23652
  value: function updateIDMSpecificFeature(ops) {
23514
23653
  var _ops$option$idmVarian, _ops$option$idmVarian2, _ops$option$idmVarian3, _ops$option$idmVarian4, _ops$option$idmVarian5;
23515
23654
  if (!this.article.parentHasSameOption(ops.optionCodex)) return;
23655
+ // The OPV codex embeds the option codex as a prefix: "OPV<body>_<connector>" (e.g. "OPV1090_CT500"),
23656
+ // while ops.optionCodex is "OPT<body>". Strip that prefix so the filter holds the bare connector codex.
23657
+ var toConnectorCodex = function toConnectorCodex(value) {
23658
+ var prefix = 'OPV' + ops.optionCodex.substring(3) + '_';
23659
+ return value.codex.startsWith(prefix) ? value.codex.substring(prefix.length) : value.codex;
23660
+ };
23516
23661
  if ([90, 1090].includes((_ops$option$idmVarian = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian !== void 0 ? _ops$option$idmVarian : 0)) {
23517
23662
  //R (Anschlusstyp R) - AVR
23518
- var newAVRFilter = [],
23519
- visibleOPVs = ops.visibleOptionValues;
23520
- var _iterator5 = _createForOfIteratorHelper$c(visibleOPVs),
23521
- _step5;
23522
- try {
23523
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
23524
- var _step5$value = _slicedToArray(_step5.value, 2),
23525
- key = _step5$value[0],
23526
- value = _step5$value[1];
23527
- newAVRFilter.push(value.codex.substring(3));
23528
- }
23529
- } catch (err) {
23530
- _iterator5.e(err);
23531
- } finally {
23532
- _iterator5.f();
23533
- }
23534
- this.article.newPossibleAVRFilters = newAVRFilter;
23663
+ this.article.newPossibleAVRFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23535
23664
  }
23536
23665
  if ([89, 1089].includes((_ops$option$idmVarian2 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian2 !== void 0 ? _ops$option$idmVarian2 : 0)) {
23537
23666
  //L (Anschlusstyp L) - AVL
23538
- var newAVLFilter = [],
23539
- _visibleOPVs = ops.visibleOptionValues;
23540
- var _iterator6 = _createForOfIteratorHelper$c(_visibleOPVs),
23541
- _step6;
23542
- try {
23543
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
23544
- var _step6$value = _slicedToArray(_step6.value, 2),
23545
- _key = _step6$value[0],
23546
- _value = _step6$value[1];
23547
- newAVLFilter.push(_value.codex.substring(3));
23548
- }
23549
- } catch (err) {
23550
- _iterator6.e(err);
23551
- } finally {
23552
- _iterator6.f();
23553
- }
23554
- this.article.newPossibleAVLFilters = newAVLFilter;
23667
+ this.article.newPossibleAVLFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23555
23668
  }
23556
23669
  //beim article abspeichern. Das Planungselement kann es sich per Funktion von dort dann holen
23557
23670
  if ([97, 1097].includes((_ops$option$idmVarian3 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian3 !== void 0 ? _ops$option$idmVarian3 : 0)) {
@@ -23780,18 +23893,18 @@ var DivaEngine = /*#__PURE__*/function () {
23780
23893
  myDecisions[_i].disableHistory = [];
23781
23894
  myDecisions[_i].activeCombination = undefined;
23782
23895
  }
23783
- var _iterator7 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23784
- _step7;
23896
+ var _iterator5 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23897
+ _step5;
23785
23898
  try {
23786
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
23787
- var ops = _step7.value;
23899
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
23900
+ var ops = _step5.value;
23788
23901
  ops.updateVisibleOptionValues(ops.option.articleOptionValues);
23789
23902
  ops.definedBySetFeatureFixed = false;
23790
23903
  }
23791
23904
  } catch (err) {
23792
- _iterator7.e(err);
23905
+ _iterator5.e(err);
23793
23906
  } finally {
23794
- _iterator7.f();
23907
+ _iterator5.f();
23795
23908
  }
23796
23909
  this.catalogDecisionsByNumber = new Map(this.article.catalogArticle.articleDecisions.map(function (d) {
23797
23910
  return [d.Number, d];
@@ -23922,11 +24035,11 @@ var DivaEngine = /*#__PURE__*/function () {
23922
24035
  key: "updateIDMSpecificFeatures",
23923
24036
  value: function updateIDMSpecificFeatures() {
23924
24037
  //updaten idm planner specific options
23925
- var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23926
- _step8;
24038
+ var _iterator6 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24039
+ _step6;
23927
24040
  try {
23928
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
23929
- var ops = _step8.value;
24041
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
24042
+ var ops = _step6.value;
23930
24043
  //when an option has no decisions the first visible optionValue has to be selected per default
23931
24044
  if (ops.val === undefined && ops.visibleCount && !this.article.CatalogData.useDiomexConfigLogic) {
23932
24045
  this.assignOptionValue(ops.optionCodex, ops.visibleOPVKeys[0]);
@@ -23947,9 +24060,9 @@ var DivaEngine = /*#__PURE__*/function () {
23947
24060
  }
23948
24061
  }
23949
24062
  } catch (err) {
23950
- _iterator8.e(err);
24063
+ _iterator6.e(err);
23951
24064
  } finally {
23952
- _iterator8.f();
24065
+ _iterator6.f();
23953
24066
  }
23954
24067
  }
23955
24068
  }, {
@@ -24183,21 +24296,21 @@ var DivaEngine = /*#__PURE__*/function () {
24183
24296
  var negatedValues = new Set(myDoc.Row[OPT].map(function (v) {
24184
24297
  return v.slice(1);
24185
24298
  })); // remove the '!' from the value
24186
- var _iterator9 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24187
- _step9;
24299
+ var _iterator7 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24300
+ _step7;
24188
24301
  try {
24189
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
24190
- var _step9$value = _slicedToArray(_step9.value, 2),
24191
- opvKey = _step9$value[0],
24192
- _opv = _step9$value[1];
24302
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
24303
+ var _step7$value = _slicedToArray(_step7.value, 2),
24304
+ opvKey = _step7$value[0],
24305
+ _opv = _step7$value[1];
24193
24306
  if (!negatedValues.has(opvKey)) {
24194
24307
  validOPVs[OPT].set(opvKey, _opv);
24195
24308
  }
24196
24309
  }
24197
24310
  } catch (err) {
24198
- _iterator9.e(err);
24311
+ _iterator7.e(err);
24199
24312
  } finally {
24200
- _iterator9.f();
24313
+ _iterator7.f();
24201
24314
  }
24202
24315
  } else {
24203
24316
  validOPVs[OPT] = new Map(ops.visibleOptionValues);
@@ -24325,11 +24438,11 @@ var DivaEngine = /*#__PURE__*/function () {
24325
24438
  }, {
24326
24439
  key: "evalShowOnlyWhenHasPrice",
24327
24440
  value: function evalShowOnlyWhenHasPrice() {
24328
- var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24329
- _step10;
24441
+ var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24442
+ _step8;
24330
24443
  try {
24331
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
24332
- var ops = _step10.value;
24444
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
24445
+ var ops = _step8.value;
24333
24446
  for (var jKey in ops.visibleOptionValues) {
24334
24447
  var opv = ops.visibleOptionValues.get(jKey);
24335
24448
  if (opv.showOnlyWhenHasPrice && opv.price == 0) {
@@ -24341,9 +24454,9 @@ var DivaEngine = /*#__PURE__*/function () {
24341
24454
  }
24342
24455
  }
24343
24456
  } catch (err) {
24344
- _iterator10.e(err);
24457
+ _iterator8.e(err);
24345
24458
  } finally {
24346
- _iterator10.f();
24459
+ _iterator8.f();
24347
24460
  }
24348
24461
  }
24349
24462
 
@@ -24817,12 +24930,12 @@ var DivaEngine = /*#__PURE__*/function () {
24817
24930
  }
24818
24931
 
24819
24932
  //mengen und größenabhängige Preisberechungn.
24820
- var _iterator11 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24821
- _step11;
24933
+ var _iterator9 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24934
+ _step9;
24822
24935
  try {
24823
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
24936
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
24824
24937
  var _ops$addToMeasure;
24825
- var ops = _step11.value;
24938
+ var ops = _step9.value;
24826
24939
  var OP = ops.optionCodex;
24827
24940
  var mUnit = ops.measureUnit;
24828
24941
  var pUnit = ops.priceUnit;
@@ -24905,15 +25018,15 @@ var DivaEngine = /*#__PURE__*/function () {
24905
25018
  }
24906
25019
  //jetzt nochmal prozentuelle Preise mit TargetOption berechnen
24907
25020
  } catch (err) {
24908
- _iterator11.e(err);
25021
+ _iterator9.e(err);
24909
25022
  } finally {
24910
- _iterator11.f();
25023
+ _iterator9.f();
24911
25024
  }
24912
- var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24913
- _step12;
25025
+ var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25026
+ _step10;
24914
25027
  try {
24915
- for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
24916
- var _ops4 = _step12.value;
25028
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
25029
+ var _ops4 = _step10.value;
24917
25030
  var targetPPGPrefixes = _ops4.targetPPGPrefixes;
24918
25031
  if (!targetPPGPrefixes) continue;
24919
25032
  var _loop7 = function _loop7() {
@@ -24933,9 +25046,9 @@ var DivaEngine = /*#__PURE__*/function () {
24933
25046
  }
24934
25047
  }
24935
25048
  } catch (err) {
24936
- _iterator12.e(err);
25049
+ _iterator10.e(err);
24937
25050
  } finally {
24938
- _iterator12.f();
25051
+ _iterator10.f();
24939
25052
  }
24940
25053
  for (var _i5 = 0; _i5 < this.article.priceRefs.length; _i5++) {
24941
25054
  var basePriceRef = this.article.priceRefs[_i5];
@@ -24947,19 +25060,19 @@ var DivaEngine = /*#__PURE__*/function () {
24947
25060
  return item.PPG && item.PPG.split('_')[0] == targetPrefix;
24948
25061
  });
24949
25062
  if (!priceRef) {
24950
- var _iterator13 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
24951
- _step13;
25063
+ var _iterator11 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
25064
+ _step11;
24952
25065
  try {
24953
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
24954
- var ops = _step13.value;
25066
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
25067
+ var ops = _step11.value;
24955
25068
  if (ops.ppg && ops.ppg.split('_')[0] == targetPrefix) {
24956
25069
  myArtOpv = ops;
24957
25070
  }
24958
25071
  }
24959
25072
  } catch (err) {
24960
- _iterator13.e(err);
25073
+ _iterator11.e(err);
24961
25074
  } finally {
24962
- _iterator13.f();
25075
+ _iterator11.f();
24963
25076
  }
24964
25077
  }
24965
25078
 
@@ -24985,36 +25098,36 @@ var DivaEngine = /*#__PURE__*/function () {
24985
25098
  myArticleBasePrice += priceRef.Price ? DivaUtils.decimalAdjust('round', (_priceRef$calcPrice = priceRef.calcPrice) !== null && _priceRef$calcPrice !== void 0 ? _priceRef$calcPrice : priceRef.Price, digits) : 0.0;
24986
25099
  }
24987
25100
  var articleUsedCalcPrice = myArticleBasePrice;
24988
- var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24989
- _step14;
25101
+ var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25102
+ _step12;
24990
25103
  try {
24991
- for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
24992
- var tmpOps = _step14.value;
25104
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
25105
+ var tmpOps = _step12.value;
24993
25106
  articleUsedCalcPrice = this.getOptionPrice(articleUsedCalcPrice, tmpOps.option, digits);
24994
25107
  }
24995
25108
 
24996
25109
  //jetzt nochmal prozentuelle Preise mit GLOBAL tarbetoption berechnen
24997
25110
  /* TODO ABklären mit Franz - ops hat nie die Optionen - targetPPGPrefixes - ich glaube hier sollte article.priceRefs durchlaufen werden. */
24998
25111
  } catch (err) {
24999
- _iterator14.e(err);
25112
+ _iterator12.e(err);
25000
25113
  } finally {
25001
- _iterator14.f();
25114
+ _iterator12.f();
25002
25115
  }
25003
- var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25004
- _step15;
25116
+ var _iterator13 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25117
+ _step13;
25005
25118
  try {
25006
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25119
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
25007
25120
  var _ops5$targetPPGPrefix, _ops5$targetPPGPrefix2;
25008
- var _ops5 = _step15.value;
25121
+ var _ops5 = _step13.value;
25009
25122
  var targetOption = (_ops5$targetPPGPrefix = (_ops5$targetPPGPrefix2 = _ops5.targetPPGPrefixes) === null || _ops5$targetPPGPrefix2 === void 0 ? void 0 : _ops5$targetPPGPrefix2[0]) !== null && _ops5$targetPPGPrefix !== void 0 ? _ops5$targetPPGPrefix : _ops5.targetOption;
25010
25123
  if (_ops5.isPercentage && targetOption == 'GLOBAL') {
25011
25124
  articleUsedCalcPrice = articleUsedCalcPrice * (1 + _ops5.calcPrice);
25012
25125
  }
25013
25126
  }
25014
25127
  } catch (err) {
25015
- _iterator15.e(err);
25128
+ _iterator13.e(err);
25016
25129
  } finally {
25017
- _iterator15.f();
25130
+ _iterator13.f();
25018
25131
  }
25019
25132
  for (var _i7 = 0; _i7 < this.article.priceRefs.length; _i7++) {
25020
25133
  var _priceRef = this.article.priceRefs[_i7];
@@ -25156,11 +25269,11 @@ var DivaEngine = /*#__PURE__*/function () {
25156
25269
  if (a[i].trim() != '') {
25157
25270
  var searchOpt = 'OPT' + a[i].trim();
25158
25271
  //Optionsbaum des Artikels durchsuchen
25159
- var _iterator16 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25160
- _step16;
25272
+ var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25273
+ _step14;
25161
25274
  try {
25162
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25163
- var _ops6 = _step16.value;
25275
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
25276
+ var _ops6 = _step14.value;
25164
25277
  if (_ops6.ocd == searchOpt || _ops6.optionCodex == searchOpt) {
25165
25278
  if (_ops6 && _ops6.price > 0) {
25166
25279
  myPercBasePrice += _ops6.price * _ops6.quantity;
@@ -25169,9 +25282,9 @@ var DivaEngine = /*#__PURE__*/function () {
25169
25282
  }
25170
25283
  }
25171
25284
  } catch (err) {
25172
- _iterator16.e(err);
25285
+ _iterator14.e(err);
25173
25286
  } finally {
25174
- _iterator16.f();
25287
+ _iterator14.f();
25175
25288
  }
25176
25289
  }
25177
25290
  }
@@ -25217,18 +25330,18 @@ var DivaEngine = /*#__PURE__*/function () {
25217
25330
  }
25218
25331
 
25219
25332
  // this functions updates the images of OPVs that depend on rules
25220
- var _iterator17 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25221
- _step17;
25333
+ var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25334
+ _step15;
25222
25335
  try {
25223
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
25224
- var ops = _step17.value;
25225
- var _iterator18 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25226
- _step18;
25336
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25337
+ var ops = _step15.value;
25338
+ var _iterator16 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25339
+ _step16;
25227
25340
  try {
25228
- for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
25229
- var _step18$value = _slicedToArray(_step18.value, 2),
25230
- jKey = _step18$value[0],
25231
- opv = _step18$value[1];
25341
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25342
+ var _step16$value = _slicedToArray(_step16.value, 2),
25343
+ jKey = _step16$value[0],
25344
+ opv = _step16$value[1];
25232
25345
  if (opv.images) {
25233
25346
  var imageFound = false;
25234
25347
  for (var _i10 = 0; _i10 < opv.images.length; _i10++) {
@@ -25247,18 +25360,18 @@ var DivaEngine = /*#__PURE__*/function () {
25247
25360
  }
25248
25361
  }
25249
25362
  } catch (err) {
25250
- _iterator18.e(err);
25363
+ _iterator16.e(err);
25251
25364
  } finally {
25252
- _iterator18.f();
25365
+ _iterator16.f();
25253
25366
  }
25254
25367
  }
25255
25368
 
25256
25369
  // this function calculates an Svg to the current configuration if neccessary (SVG Tausch)
25257
25370
  // if the Article has no SVG Tausch nothing is done
25258
25371
  } catch (err) {
25259
- _iterator17.e(err);
25372
+ _iterator15.e(err);
25260
25373
  } finally {
25261
- _iterator17.f();
25374
+ _iterator15.f();
25262
25375
  }
25263
25376
  var newSVGFile = null;
25264
25377
  var svgChangedViaSvgTausch = false;
@@ -25889,7 +26002,7 @@ var IDMEngine = /*#__PURE__*/function () {
25889
26002
  } else if (!_ops4.valCodex) {
25890
26003
  LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': referenced source feature ' + action.featureRef.featureNo + ' has no selected value (valCodex undefined) - target feature ' + action.featureNo + ' will NOT be set (price relevant)');
25891
26004
  } else if (!targetHasSourceValue) {
25892
- LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': target feature ' + action.featureNo + " does not have source feature " + action.featureRef.featureNo + "'s value '" + _ops4.valCodex + "' among its visible option values - assignOptionValue will be a no-op (price relevant). Target visible values: " + (targetOps ? Array.from(targetOps.visibleOptionValues.keys()).join(', ') : '<no target>'));
26005
+ LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': target feature ' + action.featureNo + ' does not have source feature ' + action.featureRef.featureNo + "'s value '" + _ops4.valCodex + "' among its visible option values - assignOptionValue will be a no-op (price relevant). Target visible values: " + (targetOps ? Array.from(targetOps.visibleOptionValues.keys()).join(', ') : '<no target>'));
25893
26006
  }
25894
26007
  if (_ops4 !== null && _ops4 !== void 0 && _ops4.valCodex) this.assignOptionValue(action.featureNo.toString(), _ops4.valCodex, isFixed ? 'fix' : 'set');
25895
26008
  } else if (action.optionRef) {
@@ -25987,7 +26100,7 @@ var IDMEngine = /*#__PURE__*/function () {
25987
26100
  this.logPrice(priceFeatureGroup, index);
25988
26101
  if (index !== undefined) {
25989
26102
  var _this$article$catalog, _this$article$catalog4, _priceFeatureGroup$fe, _priceFeatureGroup$fe2;
25990
- var matichingFinish = priceFeatureGroup.finishes[index];
26103
+ var matichingFinish = priceFeatureGroup.projectFinishes[index];
25991
26104
  var priceKey = 'PRFG' + priceFeatureGroup.priceFeatureGroupNo + '_' + matichingFinish.supplierPriceGroup;
25992
26105
  if (((_this$article$catalog = this.article.catalogArticle.idmPrices) === null || _this$article$catalog === void 0 ? void 0 : _this$article$catalog.prices[priceKey]) === undefined) {
25993
26106
  var _this$article$catalog2, _this$article$catalog3;
@@ -26485,13 +26598,18 @@ var IDMEngine = /*#__PURE__*/function () {
26485
26598
  value: function updateIDMSpecificFeature(myArtOPS) {
26486
26599
  var _myArtOPS$option$idmV, _myArtOPS$option$idmV2, _myArtOPS$option$idmV3, _myArtOPS$option$idmV4, _myArtOPS$option$idmV5;
26487
26600
  if (!this.article.parentHasSameOption(myArtOPS.optionCodex)) return;
26601
+ // The OPV key embeds the option codex as a prefix: "<optionCodex>_<connector>" (e.g. "1089_CT20").
26602
+ // Strip the codex AND the separator so the filter holds the bare connector codex ("CT20").
26603
+ var toConnectorCodex = function toConnectorCodex(key) {
26604
+ return key.startsWith(myArtOPS.optionCodex + '_') ? key.substring(myArtOPS.optionCodex.length + 1) : key;
26605
+ };
26488
26606
  if ([90, 1090].includes((_myArtOPS$option$idmV = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV !== void 0 ? _myArtOPS$option$idmV : 0)) {
26489
26607
  //R (Anschlusstyp R) - AVR
26490
- this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys;
26608
+ this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26491
26609
  }
26492
26610
  if ([89, 1089].includes((_myArtOPS$option$idmV2 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV2 !== void 0 ? _myArtOPS$option$idmV2 : 0)) {
26493
26611
  //L (Anschlusstyp L) - AVL
26494
- this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys;
26612
+ this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26495
26613
  }
26496
26614
  if ([97, 1097].includes((_myArtOPS$option$idmV3 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV3 !== void 0 ? _myArtOPS$option$idmV3 : 0)) {
26497
26615
  try {
@@ -26855,6 +26973,7 @@ var DivaArticle = /*#__PURE__*/function () {
26855
26973
  partlistDecisionNo: initParams.partlistDecisionNo,
26856
26974
  partListParentArticle: initParams.parentArticle,
26857
26975
  partlistArticleVisibleInTree: initParams.partlistArticleVisibleInTree,
26976
+ posInvisibility: initParams.posInvisibility,
26858
26977
  partlistArticleStandalone: initParams.partlistArticleStandalone,
26859
26978
  partlistGroupPrefix: initParams.partlistGroupPrefix,
26860
26979
  hasPartlistArticle: initParams.hasPartlistArticle ? initParams.hasPartlistArticle : false,
@@ -27007,6 +27126,11 @@ var DivaArticle = /*#__PURE__*/function () {
27007
27126
  get: function get() {
27008
27127
  return this.article.partlistArticleVisibleInTree && this.hasOptionsThatParentDoesNotHave;
27009
27128
  }
27129
+ }, {
27130
+ key: "posInvisibility",
27131
+ get: function get() {
27132
+ return this.article.posInvisibility;
27133
+ }
27010
27134
  }, {
27011
27135
  key: "partlistArticleStandalone",
27012
27136
  get: function get() {
@@ -27930,6 +28054,11 @@ var DivaArticle = /*#__PURE__*/function () {
27930
28054
  get: function get() {
27931
28055
  return this.catalogArticle.bundleRules;
27932
28056
  }
28057
+ }, {
28058
+ key: "addAsZKAT",
28059
+ get: function get() {
28060
+ return this.catalogArticle.addAsZKAT;
28061
+ }
27933
28062
  }, {
27934
28063
  key: "hasPartlistArticleVisibleInTree",
27935
28064
  get: function get() {
@@ -29534,7 +29663,7 @@ var DivaArticle = /*#__PURE__*/function () {
29534
29663
  break;
29535
29664
  }
29536
29665
  _context.next = 4;
29537
- return import('./ShelfPlanner-f50e9483.js');
29666
+ return import('./ShelfPlanner-ae3fe97b.js');
29538
29667
  case 4:
29539
29668
  _yield$import = _context.sent;
29540
29669
  ShelfPlanner = _yield$import["default"];
@@ -29807,7 +29936,7 @@ var DivaArticle = /*#__PURE__*/function () {
29807
29936
  var opv;
29808
29937
  var opt;
29809
29938
  if (ops.val) {
29810
- var _ops$option$ocd, _ops$option$ocd2, _ops$val$ocd3;
29939
+ var _ops$option$ocd, _ops$option$ocd2, _ops$val$ocd3, _ops$val$properties;
29811
29940
  opt = (this.CatalogData.isIDMFormat ? 'OPT' : '') + ((_ops$option$ocd = ops.option.ocd) !== null && _ops$option$ocd !== void 0 ? _ops$option$ocd : ops.optionCodex);
29812
29941
  opv = (this.CatalogData.isIDMFormat ? 'OPV' + ((_ops$option$ocd2 = ops.option.ocd) !== null && _ops$option$ocd2 !== void 0 ? _ops$option$ocd2 : ops.optionCodex) + '_' : '') + ((_ops$val$ocd3 = ops.val.ocd) !== null && _ops$val$ocd3 !== void 0 ? _ops$val$ocd3 : ops.val.codex);
29813
29942
  if (this.CatalogData.isIDM3DCat && ops.val.vCodex) opv = 'OPV' + ops.idmVariantenArt + '_' + ops.val.vCodex;
@@ -29823,14 +29952,26 @@ var DivaArticle = /*#__PURE__*/function () {
29823
29952
  OPV: ops.freeText
29824
29953
  });
29825
29954
  }
29826
- if (ops.val.isTexture) {
29955
+ var divaDataEngineMat = (_ops$val$properties = ops.val.properties) === null || _ops$val$properties === void 0 ? void 0 : _ops$val$properties.find(function (prop) {
29956
+ return prop.Codex == "TEXTURENAME";
29957
+ });
29958
+ if (!ret.MAT) {
29959
+ ret.MAT = [];
29960
+ }
29961
+ if (divaDataEngineMat) {
29827
29962
  var _ops$val$name;
29828
- if (!ret.MAT) {
29829
- ret.MAT = [];
29830
- }
29831
29963
  ret.MAT.push({
29832
29964
  OPT: partlistPrefix ? 'OPT' + partlistPrefix + opt.substring(3) : opt,
29833
29965
  N: DivaUtils.removeSpecialChars((_ops$val$name = ops.val.name) !== null && _ops$val$name !== void 0 ? _ops$val$name : ''),
29966
+ T: divaDataEngineMat.Name,
29967
+ M: divaDataEngineMat.Value
29968
+ });
29969
+ }
29970
+ if (ops.val.isTexture) {
29971
+ var _ops$val$name2;
29972
+ ret.MAT.push({
29973
+ OPT: partlistPrefix ? 'OPT' + partlistPrefix + opt.substring(3) : opt,
29974
+ N: DivaUtils.removeSpecialChars((_ops$val$name2 = ops.val.name) !== null && _ops$val$name2 !== void 0 ? _ops$val$name2 : ''),
29834
29975
  T: ops.val.textureName,
29835
29976
  M: ops.val.material
29836
29977
  });
@@ -31320,6 +31461,7 @@ var DivaArticleHandler = /*#__PURE__*/function () {
31320
31461
  supplierOrderCodex: doLoadItem.SupplierOrderCodex,
31321
31462
  initDecisions: doLoadItem.initDecisions,
31322
31463
  partlistArticleVisibleInTree: doLoadItem.PosInvisibility === 0,
31464
+ posInvisibility: doLoadItem.PosInvisibility,
31323
31465
  partlistArticleStandalone: doLoadItem.ConfigurationMode,
31324
31466
  partlistGroupPrefix: doLoadItem.partlistGroupPrefix,
31325
31467
  optionsForPrint: doLoadItem.optionsForPrint,
@@ -31702,6 +31844,7 @@ var DivaArticleHandler = /*#__PURE__*/function () {
31702
31844
  ArticleCodex: article.articleCodex,
31703
31845
  ConfigArticleCodex: article.configArticleCodex,
31704
31846
  UseTypeNrAsArticleNrEKText: catalogData.useTypeNrAsArticleNrEKText,
31847
+ HideSubPosArticleCodexEKText: catalogData.hideSubPosArticleCodexEKText,
31705
31848
  TypeNr: article.typeNr,
31706
31849
  ArticleEAN: article.articleEAN,
31707
31850
  ArticleGUID: article.articleGUID,
@@ -31741,6 +31884,7 @@ var DivaArticleHandler = /*#__PURE__*/function () {
31741
31884
  IsPlannerElement: article.hasCatalogPlannerArticle,
31742
31885
  HasPartlistArticle: article.hasPartlistArticle,
31743
31886
  PartlistArticleInvisibility: !article.partlistArticleVisibleInTree && !article.optionsForPrint && !article.partlistArticleStandalone,
31887
+ PosInvisibility: catalogData.addPosInvisibilityToOL ? article.posInvisibility : undefined,
31744
31888
  SendToSAP: article.sendToSap,
31745
31889
  ShelfPlandata: article.shelfPlanner ? DivaUtils.encodeBasketJson((_article$shelfPlanner3 = (_article$shelfPlanner4 = article.shelfPlanner) === null || _article$shelfPlanner4 === void 0 ? void 0 : _article$shelfPlanner4.generateShelfPlandata()) !== null && _article$shelfPlanner3 !== void 0 ? _article$shelfPlanner3 : (_article$doorPlanner = article.doorPlanner) === null || _article$doorPlanner === void 0 ? void 0 : _article$doorPlanner.getMovedData(article.basketId)) : undefined,
31746
31890
  MetaData: !hasFavorites ? article.MetaData : undefined,
@@ -33268,7 +33412,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33268
33412
  }
33269
33413
  }, {
33270
33414
  key: "getSummaryItemsofArticle",
33271
- value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket) {
33415
+ value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket, parentArticle) {
33272
33416
  var _iterator2 = _createForOfIteratorHelper$7(article.articleOptionStates.values()),
33273
33417
  _step2;
33274
33418
  try {
@@ -33276,6 +33420,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33276
33420
  var ops = _step2.value;
33277
33421
  if (ops.visibleInSummary(article, summaryForBasket)) {
33278
33422
  var _set$configTree$getCo, _set$hiddenConfigTree;
33423
+ //for accessoires only render an option if it differs from the parent article's selection
33424
+ if (parentArticle) {
33425
+ var _parentOps$val, _ops$val;
33426
+ var parentOps = parentArticle.getArticleOptionState(ops.optionCodex);
33427
+ if (parentOps && ((_parentOps$val = parentOps.val) === null || _parentOps$val === void 0 ? void 0 : _parentOps$val.codex) === ((_ops$val = ops.val) === null || _ops$val === void 0 ? void 0 : _ops$val.codex)) continue;
33428
+ }
33279
33429
  var tabGroupCodex = void 0;
33280
33430
  var tabGroupTitel = void 0;
33281
33431
  if (ops.optionTabGroup) {
@@ -33292,9 +33442,9 @@ var SummaryHandler = /*#__PURE__*/function () {
33292
33442
  var itemsInTabGroup = summaryTabItems[tabGroupCodex].summaryItems;
33293
33443
  var itemImage = ops.val.image ? set.CatalogData.getCatImageURL(ops.val.image, '') : undefined;
33294
33444
  if (configStep && itemsInTabGroup) {
33295
- var _ops$val, _this$getAdditionalPr;
33445
+ var _ops$val2, _this$getAdditionalPr;
33296
33446
  var sameOPVAndOPTDoAlreadyExist = false;
33297
- var configStepKeyToUse = configStep.key + ((_ops$val = ops.val) === null || _ops$val === void 0 ? void 0 : _ops$val.codex);
33447
+ var configStepKeyToUse = configStep.key + ((_ops$val2 = ops.val) === null || _ops$val2 === void 0 ? void 0 : _ops$val2.codex);
33298
33448
  var posNr = configStep === null || configStep === void 0 ? void 0 : configStep.posNr;
33299
33449
  if (configStep !== null && configStep !== void 0 && configStep.accessoireArticleCodex && article.relatedToBasketId) {
33300
33450
  var _set$configTree$getCo2, _set$configTree$getCo3, _set$hiddenConfigTree2;
@@ -33315,7 +33465,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33315
33465
  var rabatt = set.getCurrentDisountPercentage();
33316
33466
  var price = rabatt ? DivaUtils.roundPrice(bruttoPrice * ((100 - rabatt) / 100), 1, 2) : bruttoPrice;
33317
33467
  if (!sameOPVAndOPTDoAlreadyExist) {
33318
- var _ops$val$contentItemI, _ops$val2, _ops$val3;
33468
+ var _ops$val$contentItemI, _ops$val3, _ops$val4;
33319
33469
  itemsInTabGroup[configStepKeyToUse] = {
33320
33470
  title: ops.optionName,
33321
33471
  title_locales: ops.optionName_locales,
@@ -33329,7 +33479,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33329
33479
  image: itemImage,
33330
33480
  isDefined: ops.isDefined,
33331
33481
  setId: set.getSetId(),
33332
- contentItemId: (_ops$val$contentItemI = (_ops$val2 = ops.val) === null || _ops$val2 === void 0 ? void 0 : _ops$val2.contentItemId) !== null && _ops$val$contentItemI !== void 0 ? _ops$val$contentItemI : (_ops$val3 = ops.val) === null || _ops$val3 === void 0 ? void 0 : _ops$val3.groupContentItemId,
33482
+ contentItemId: (_ops$val$contentItemI = (_ops$val3 = ops.val) === null || _ops$val3 === void 0 ? void 0 : _ops$val3.contentItemId) !== null && _ops$val$contentItemI !== void 0 ? _ops$val$contentItemI : (_ops$val4 = ops.val) === null || _ops$val4 === void 0 ? void 0 : _ops$val4.groupContentItemId,
33333
33483
  optionContentItemId: ops.option.contentItemId,
33334
33484
  includesAllPosNrs: baseArticlesCount <= 1
33335
33485
  };
@@ -33383,7 +33533,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33383
33533
  } else {
33384
33534
  var _set$i18n$t2, _set$i18n2, _accessoire$catalogAr, _accessoire$catalogAr2, _accessoire$catalogAr3;
33385
33535
  var summaryItems = {};
33386
- this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket);
33536
+ this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket, article);
33387
33537
  this.addAccessoires([accessoire], summaryItems, set, articlesPosNrs, baseArticlesCount, summaryForBasket);
33388
33538
  tabGroup.summaryItems[entryKey] = {
33389
33539
  title: accessoire.name,
@@ -33660,14 +33810,26 @@ var SummaryHandler = /*#__PURE__*/function () {
33660
33810
  counter++;
33661
33811
  SummaryInfo.push(new GroupsData(GroupDataInitParams));
33662
33812
  for (var jKey in mySummaryObejct.summaryItems) {
33663
- var _mySummaryItem$title_, _mySummaryItem$descri, _mySummaryItem$target;
33664
- var mySummaryItem = mySummaryObejct.summaryItems[jKey];
33665
- SummaryInfo[SummaryInfo.length - 1].Group.addItem(mySummaryItem.title, (_mySummaryItem$title_ = mySummaryItem.title_locales) !== null && _mySummaryItem$title_ !== void 0 ? _mySummaryItem$title_ : {}, DivaUtils.stripTags(mySummaryItem.description), DivaUtils.stripTagsFromDict((_mySummaryItem$descri = mySummaryItem.description_locales) !== null && _mySummaryItem$descri !== void 0 ? _mySummaryItem$descri : {}), (_mySummaryItem$target = mySummaryItem.targetArticlePosNrs) !== null && _mySummaryItem$target !== void 0 ? _mySummaryItem$target : [], SummaryInfo[SummaryInfo.length - 1].Group.GroupID, mySummaryItem.image);
33813
+ this.addSummaryItemToGroup(SummaryInfo[SummaryInfo.length - 1].Group, mySummaryObejct.summaryItems[jKey]);
33666
33814
  }
33667
33815
  }
33668
33816
  }
33669
33817
  return SummaryInfo;
33670
33818
  }
33819
+ }, {
33820
+ key: "addSummaryItemToGroup",
33821
+ value: function addSummaryItemToGroup(group, summaryItem) {
33822
+ //tab-group shells only structure the nested config; skip them so they don't become empty property lines
33823
+ if (!summaryItem.isTabGroup) {
33824
+ var _summaryItem$title_lo, _summaryItem$descript, _summaryItem$targetAr4;
33825
+ group.addItem(summaryItem.title, (_summaryItem$title_lo = summaryItem.title_locales) !== null && _summaryItem$title_lo !== void 0 ? _summaryItem$title_lo : {}, DivaUtils.stripTags(summaryItem.description), DivaUtils.stripTagsFromDict((_summaryItem$descript = summaryItem.description_locales) !== null && _summaryItem$descript !== void 0 ? _summaryItem$descript : {}), (_summaryItem$targetAr4 = summaryItem.targetArticlePosNrs) !== null && _summaryItem$targetAr4 !== void 0 ? _summaryItem$targetAr4 : [], group.GroupID, summaryItem.image);
33826
+ }
33827
+
33828
+ //nested config (e.g. accessory option values like a custom color) is kept flat in the same group
33829
+ for (var _key7 in summaryItem.summaryItems) {
33830
+ this.addSummaryItemToGroup(group, summaryItem.summaryItems[_key7]);
33831
+ }
33832
+ }
33671
33833
  }, {
33672
33834
  key: "getSummaryType",
33673
33835
  value: function getSummaryType(set) {
@@ -33698,8 +33860,8 @@ var SummaryHandler = /*#__PURE__*/function () {
33698
33860
  }
33699
33861
  };
33700
33862
  }
33701
- for (var _key7 in elementGroups) {
33702
- var group = elementGroups[_key7];
33863
+ for (var _key8 in elementGroups) {
33864
+ var group = elementGroups[_key8];
33703
33865
  ret.push({
33704
33866
  items: this.buildSummaryItems(this.getArticlesPosNr(group.articles), set, summaryForBasket),
33705
33867
  price: this.getArticlesPrice(group.articles),
@@ -33716,10 +33878,10 @@ var SummaryHandler = /*#__PURE__*/function () {
33716
33878
  var groupedArticles = setHandlerInstance.getDockedGroupedArticles(set);
33717
33879
  var retGroups = {};
33718
33880
  var articlesCodexesOnIndex = {};
33719
- for (var _key8 in groupedArticles) {
33720
- var basketId = groupedArticles[_key8][Object.keys(groupedArticles[_key8])[0]].basketId;
33881
+ for (var _key9 in groupedArticles) {
33882
+ var basketId = groupedArticles[_key9][Object.keys(groupedArticles[_key9])[0]].basketId;
33721
33883
  retGroups[basketId] = {
33722
- articles: groupedArticles[_key8],
33884
+ articles: groupedArticles[_key9],
33723
33885
  quantity: 1
33724
33886
  };
33725
33887
  }
@@ -33734,12 +33896,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33734
33896
  articlesCodexesOnIndex[articleCodex].push(i);
33735
33897
  }
33736
33898
  }
33737
- for (var _key9 in articlesCodexesOnIndex) {
33738
- if (articlesCodexesOnIndex[_key9].length > 1) {
33899
+ for (var _key10 in articlesCodexesOnIndex) {
33900
+ if (articlesCodexesOnIndex[_key10].length > 1) {
33739
33901
  //group the single groups by the aricleCodex
33740
33902
  var articles = [];
33741
- for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key9].length; _i4++) {
33742
- var _group = groupedArticles[articlesCodexesOnIndex[_key9][_i4]];
33903
+ for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key10].length; _i4++) {
33904
+ var _group = groupedArticles[articlesCodexesOnIndex[_key10][_i4]];
33743
33905
  articles.push({
33744
33906
  article: _group[Object.keys(_group)[0]]
33745
33907
  });
@@ -33784,11 +33946,11 @@ var SummaryHandler = /*#__PURE__*/function () {
33784
33946
  var isIDM = article.CatalogData.isIDMFormat;
33785
33947
  var tabGroups = [];
33786
33948
  for (var basketId in article.partlistArticles) {
33787
- var _ops$val4;
33949
+ var _ops$val5;
33788
33950
  var partlistArticle = article.partlistArticles[basketId];
33789
33951
  if (!partlistArticle.tabGroup) continue;
33790
33952
  var ops = article.getArticleOptionState((!isIDM ? 'OPT' : '') + partlistArticle.tabGroup);
33791
- if (ops && !ops.isInvisible && (ops.selectionmode != 0 || (ops.visibleCount > 1 || ops.isFreeText) && article.set.api.showSelectionModeZero()) && ops.isDoShow && !((_ops$val4 = ops.val) !== null && _ops$val4 !== void 0 && _ops$val4.isNotRelevant) && ops !== null && ops !== void 0 && ops.optionTabGroup) {
33953
+ if (ops && !ops.isInvisible && (ops.selectionmode != 0 || (ops.visibleCount > 1 || ops.isFreeText) && article.set.api.showSelectionModeZero()) && ops.isDoShow && !((_ops$val5 = ops.val) !== null && _ops$val5 !== void 0 && _ops$val5.isNotRelevant) && ops !== null && ops !== void 0 && ops.optionTabGroup) {
33792
33954
  tabGroups.push({
33793
33955
  optionCodex: ops.optionCodex,
33794
33956
  tabGroup: ops.optionTabGroup
@@ -34024,8 +34186,8 @@ var SummaryHandler = /*#__PURE__*/function () {
34024
34186
  key: "getArticlesPrice",
34025
34187
  value: function getArticlesPrice(articles) {
34026
34188
  var price = 0;
34027
- for (var _key10 in articles) {
34028
- price = price + articles[_key10].price * articles[_key10].quantity;
34189
+ for (var _key11 in articles) {
34190
+ price = price + articles[_key11].price * articles[_key11].quantity;
34029
34191
  }
34030
34192
  return price;
34031
34193
  }
@@ -35177,8 +35339,9 @@ var DivaConfigTreeHandler = /*#__PURE__*/function () {
35177
35339
  }
35178
35340
  var configInAccessoire = set.configAccessoiresInAccessoireStep;
35179
35341
  var configInAccessoireAndTree = set.CatalogData.configAccessoires && !article.isShelfAccessoire;
35342
+ var isRelatedAccessoire = !!article.relatedToBasketId && !(article.isPartListArticle && article.partlistArticleVisibleInTree);
35180
35343
  //give this step a unique key so it is not merged with any option of te main article
35181
- if (configInAccessoire && !!(article !== null && article !== void 0 && article.relatedToBasketId)) {
35344
+ if (configInAccessoire && isRelatedAccessoire) {
35182
35345
  if (configInAccessoireAndTree) {
35183
35346
  //remember old configStepKey to push basketId to its targetArticles anyways
35184
35347
  mainConfigStepKey = configStepKey;
@@ -35187,7 +35350,7 @@ var DivaConfigTreeHandler = /*#__PURE__*/function () {
35187
35350
  }
35188
35351
  var plaBasketIds = Object.keys(articles[basketId].getRecursivePartlistArticles(true, true));
35189
35352
  var singleOPVOnly = ops.visibleCount == 1 && !ops.isFreeText && !set.CatalogData.dontHideOption.includes(ops.option.codex) && !((_set$ViewConfig4 = set.ViewConfig) !== null && _set$ViewConfig4 !== void 0 && _set$ViewConfig4.showSingleOPVOnly);
35190
- var isAccessoire = !!article.relatedToBasketId ? article.articleCodex : false;
35353
+ var isAccessoire = isRelatedAccessoire ? article.articleCodex : false;
35191
35354
  if (!configTree.getTabGroupByCodex(tabGroupCodex)) {
35192
35355
  var newTabGroup = this.createTabGroup(tabGroupCodex, tabGroupTitel, 'OPTION', configTree);
35193
35356
  configTree.addTabGroup(tabGroupCodex, newTabGroup);
@@ -37538,7 +37701,7 @@ var DivaSet = /*#__PURE__*/function () {
37538
37701
  break;
37539
37702
  }
37540
37703
  _context5.next = 3;
37541
- return import('./DoorPlanner-3ffef3a1.js');
37704
+ return import('./DoorPlanner-5169acdb.js');
37542
37705
  case 3:
37543
37706
  _yield$import = _context5.sent;
37544
37707
  DoorPlanner = _yield$import["default"];
@@ -43012,7 +43175,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43012
43175
  break;
43013
43176
  case 3:
43014
43177
  _context12.next = 5;
43015
- return import('./PfisterWWSHandler-97602df8.js');
43178
+ return import('./PfisterWWSHandler-03fcdd9e.js');
43016
43179
  case 5:
43017
43180
  _yield$import = _context12.sent;
43018
43181
  PfisterWWSHandler = _yield$import["default"];
@@ -43020,7 +43183,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43020
43183
  return _context12.abrupt("break", 27);
43021
43184
  case 9:
43022
43185
  _context12.next = 11;
43023
- return import('./LiviqueWWSHandler-7f997d91.js');
43186
+ return import('./LiviqueWWSHandler-d8011eac.js');
43024
43187
  case 11:
43025
43188
  _yield$import2 = _context12.sent;
43026
43189
  LiviqueWWSHandler = _yield$import2["default"];
@@ -43028,7 +43191,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43028
43191
  return _context12.abrupt("break", 27);
43029
43192
  case 15:
43030
43193
  _context12.next = 17;
43031
- return import('./SeriousBasketHandler-b9638fda.js');
43194
+ return import('./SeriousBasketHandler-a0b6082f.js');
43032
43195
  case 17:
43033
43196
  _yield$import3 = _context12.sent;
43034
43197
  SeriousWWSHandler = _yield$import3["default"];
@@ -43036,7 +43199,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43036
43199
  return _context12.abrupt("break", 27);
43037
43200
  case 21:
43038
43201
  _context12.next = 23;
43039
- return import('./StandardWWSHandler-99a090bc.js');
43202
+ return import('./StandardWWSHandler-e8aaf6e9.js');
43040
43203
  case 23:
43041
43204
  _yield$import4 = _context12.sent;
43042
43205
  StandardWWSHandler = _yield$import4["default"];
@@ -44460,7 +44623,7 @@ var PlannerHandler3D = /*#__PURE__*/function () {
44460
44623
  while (1) switch (_context3.prev = _context3.next) {
44461
44624
  case 0:
44462
44625
  _context3.next = 2;
44463
- return import('./Host3DSignalR-2143e221.js');
44626
+ return import('./Host3DSignalR-9a6be410.js');
44464
44627
  case 2:
44465
44628
  _yield$import = _context3.sent;
44466
44629
  Host3DSignalR = _yield$import["default"];
@@ -46146,7 +46309,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46146
46309
  break;
46147
46310
  case 8:
46148
46311
  _context5.next = 10;
46149
- return import('./DivaStandardPlanner-de0d17ea.js');
46312
+ return import('./DivaStandardPlanner-f24e28e9.js');
46150
46313
  case 10:
46151
46314
  _yield$import = _context5.sent;
46152
46315
  DivaStandardPlanner = _yield$import["default"];
@@ -46157,7 +46320,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46157
46320
  return _context5.abrupt("break", 21);
46158
46321
  case 15:
46159
46322
  _context5.next = 17;
46160
- return import('./DivaBoxPlanner-bbcd759e.js');
46323
+ return import('./DivaBoxPlanner-8c0e7f0e.js');
46161
46324
  case 17:
46162
46325
  _yield$import2 = _context5.sent;
46163
46326
  DivaBoxPlanner = _yield$import2["default"];
@@ -48120,12 +48283,14 @@ var DivaWebPlanner = /*#__PURE__*/function () {
48120
48283
  case 12:
48121
48284
  loadSuccessful = _context14.sent;
48122
48285
  if (this.plannerConfig.configuratorSessionId) {
48123
- //force new configurator session id - Landingpage case
48286
+ // ID forced from outside (Landingpage, PDP, Planung-ändern)
48124
48287
  DivaUtils.businessMetrics.setConfiguratorSessionId(this.plannerConfig.configuratorSessionId);
48125
- } else {
48126
- // Only create a new configurator session if we don't already have one. This keeps the analytics
48127
- // session stable across re-inits (e.g. switching products inside the same catalog).
48288
+ } else if (cache !== undefined) {
48289
+ // Re-init with cache (Variant Select): keep existing session stable
48128
48290
  DivaUtils.businessMetrics.setConfiguratorSessionId(undefined, true);
48291
+ } else {
48292
+ // Fresh start (new catalog, archive basket, etc.): always new UUID
48293
+ DivaUtils.businessMetrics.setConfiguratorSessionId();
48129
48294
  }
48130
48295
  if (!loadSuccessful) {
48131
48296
  _context14.next = 31;