@crystaldesign/web-planner-logic 26.8.0-beta.2 → 26.8.0-beta.21

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 (49) hide show
  1. package/build/cjs/{DivaBoxPlanner-2e378a1a.js → DivaBoxPlanner-16d920f2.js} +68 -58
  2. package/build/cjs/{DivaStandardPlanner-0a6e8f4a.js → DivaStandardPlanner-b4e89cab.js} +2 -2
  3. package/build/cjs/{DoorPlanner-0ebcb060.js → DoorPlanner-1438da9c.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-653cebc1.js → Host3DSignalR-530ac879.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-9259293e.js → LiviqueWWSHandler-e865b385.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-26c807f9.js → PfisterWWSHandler-d85f9680.js} +10 -1
  7. package/build/cjs/{PlannerHandler2D-1b28c82a.js → PlannerHandler2D-62352f6b.js} +24 -9
  8. package/build/cjs/{SeriousBasketHandler-e3f8040a.js → SeriousBasketHandler-1dc4eb5a.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-58edfc01.js → ShelfPlanner-9df60123.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-6faba9e9.js → StandardWWSHandler-77bbb1fb.js} +1 -1
  11. package/build/cjs/{index-c1566d30.js → index-65181912.js} +213 -162
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-e8f7c4cd.js → DivaBoxPlanner-210c2ceb.js} +68 -58
  14. package/build/esm/{DivaStandardPlanner-21c4c0ca.js → DivaStandardPlanner-d82eb446.js} +2 -2
  15. package/build/esm/{DoorPlanner-a4e3a380.js → DoorPlanner-97f65d89.js} +1 -1
  16. package/build/esm/{Host3DSignalR-ed1240f2.js → Host3DSignalR-06b4d30b.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-fc0597c3.js → LiviqueWWSHandler-b488cf8e.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-a92fb5ca.js → PfisterWWSHandler-9b820585.js} +10 -1
  19. package/build/esm/{PlannerHandler2D-c52912b0.js → PlannerHandler2D-d8217417.js} +24 -9
  20. package/build/esm/{SeriousBasketHandler-18db24f8.js → SeriousBasketHandler-342998a5.js} +1 -1
  21. package/build/esm/{ShelfPlanner-354da88b.js → ShelfPlanner-e66b37ab.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-46f9434e.js → StandardWWSHandler-1d9ae8f7.js} +1 -1
  23. package/build/esm/{index-18f1d8c6.js → index-d51f2804.js} +213 -162
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +1 -0
  26. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  28. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +1 -0
  30. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts.map +1 -1
  32. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/logic/Basket/PfisterWWSHandler.d.ts.map +1 -1
  34. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts +1 -0
  35. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  36. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +5 -0
  37. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  38. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +1 -0
  40. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  42. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +1 -0
  44. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  46. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +9 -0
  47. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  48. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  49. package/package.json +2 -2
@@ -466,6 +466,10 @@ var DivaApiHandler = /*#__PURE__*/function () {
466
466
  }
467
467
  return saveAsProduct;
468
468
  }()
469
+ /**
470
+ * to run service on localhost
471
+ * diva3dRenderGroup :MYCCMEDIA
472
+ */
469
473
  }, {
470
474
  key: "initalizeWebConfigData",
471
475
  value: function initalizeWebConfigData(plannerConfig) {
@@ -1153,6 +1157,11 @@ var DivaApiHandler = /*#__PURE__*/function () {
1153
1157
  value: function getIDMDecisions(packageId, decisions) {
1154
1158
  return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions' + '?decisionNos=' + decisions.join(';') + (this.smSupplierNr ? '&supplierNo=' + this.smSupplierNr : '');
1155
1159
  }
1160
+ }, {
1161
+ key: "getIDMDecisionsQueryUrl",
1162
+ value: function getIDMDecisionsQueryUrl(packageId) {
1163
+ return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions/query' + (this.smSupplierNr ? '?supplierNo=' + this.smSupplierNr : '');
1164
+ }
1156
1165
  }, {
1157
1166
  key: "getIDMDetailInfos",
1158
1167
  value: function getIDMDetailInfos(packageId, detailinfos) {
@@ -16871,6 +16880,9 @@ var CatalogArticleData = /*#__PURE__*/function () {
16871
16880
  case 'ACCESSOIRE_POS_PRIO':
16872
16881
  this._catalogArticle.accPosPrio = Number(prop.Value);
16873
16882
  break;
16883
+ case 'ADD_AS_ZKAT':
16884
+ this._catalogArticle.addAsZKAT = prop.Value === 'true' || prop.Value === '1';
16885
+ break;
16874
16886
  case 'HEIGHTGRIDUSED':
16875
16887
  this._catalogArticle.heightGridUsed = Number(prop.Value);
16876
16888
  break;
@@ -17332,6 +17344,11 @@ var CatalogArticleData = /*#__PURE__*/function () {
17332
17344
  get: function get() {
17333
17345
  return this._catalogArticle.accPosPrio;
17334
17346
  }
17347
+ }, {
17348
+ key: "addAsZKAT",
17349
+ get: function get() {
17350
+ return this._catalogArticle.addAsZKAT;
17351
+ }
17335
17352
  }, {
17336
17353
  key: "overwriteParentWidth",
17337
17354
  get: function get() {
@@ -17979,18 +17996,18 @@ function getCatalogOptionValueDataType(codex, jsonOPV, catalogData) {
17979
17996
  }
17980
17997
  function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogProps, plannerPaletteViewInfo) {
17981
17998
  //Hier muss es dann reingespeichert werden catalogPlannerArticlesView;
17982
- var getFilterType = function getFilterType(hasArticleRelation, AVLFilter, AVRFilter, catalogProps) {
17999
+ var getFilterType = function getFilterType(hasArticleRelation, hasAVL, hasAVR, catalogProps) {
17983
18000
  var ret;
17984
18001
  if (hasArticleRelation) {
17985
18002
  if (!catalogProps.showAllItemsInPlanner && !catalogProps.showAccOnDpOnly) plannerPaletteViewInfo.filterType['Accessoire'] = true;
17986
18003
  ret = 'Accessoire';
17987
- } else if (AVLFilter.length > 0 && AVRFilter.length > 0) {
18004
+ } else if (hasAVL && hasAVR) {
17988
18005
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockLR'] = true;
17989
18006
  ret = 'DockLR';
17990
- } else if (AVLFilter.length > 0) {
18007
+ } else if (hasAVL) {
17991
18008
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockR'] = true;
17992
18009
  ret = 'DockR';
17993
- } else if (AVRFilter.length > 0) {
18010
+ } else if (hasAVR) {
17994
18011
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockL'] = true;
17995
18012
  ret = 'DockL';
17996
18013
  } else {
@@ -18084,12 +18101,9 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18084
18101
  if (catalogProps.diva3dPlanerShowArticleAsSvg && topSvg.SVG) {
18085
18102
  image = getSVGUrl(topSvg.SVG, mediaUrl);
18086
18103
  }
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
- }
18104
+
18105
+ // An empty AVL/AVR filter means "no connector restriction" and is treated as a match by the
18106
+ // docking/palette comparison (see checkDPFilterDoMatch / checkDPAV*FilterDoMatch). No sentinel needed.
18093
18107
 
18094
18108
  //Wäre für Rofl Benz gedacht um die Information zu speichern welche Artikel in welcher Ausrichtung ausmultipliziert werden
18095
18109
  if (topSvg.JsFormula.includes('202_LI')) {
@@ -18097,7 +18111,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18097
18111
  } else if (topSvg.JsFormula.includes('202_RE')) {
18098
18112
  elementName = elementName + ' (Rechts)';
18099
18113
  }
18100
- var filterType = getFilterType(catPlanArticle.isArticleRelation, topSvg.HasAVL ? catPlanArticle.avlFilter : [], topSvg.HasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18114
+ var filterType = getFilterType(catPlanArticle.isArticleRelation, !!topSvg.HasAVL, !!topSvg.HasAVR, catalogProps);
18101
18115
  catPlanArticle.filterType = filterType;
18102
18116
  //ausmultiplizierte Elemente (über meherere SVGs)
18103
18117
  var catPlanArtView = {
@@ -18150,7 +18164,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18150
18164
  }
18151
18165
  if (!catPlanArticle.hasTopSvgsWithFormula || catPlanArticle.topSvgsWithFormula.length == 1) {
18152
18166
  var _catalogArticle$artic2;
18153
- var _filterType = getFilterType(catPlanArticle.isArticleRelation, catPlanArticle.topHasAVL ? catPlanArticle.avlFilter : [], catPlanArticle.topHasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18167
+ var _filterType = getFilterType(catPlanArticle.isArticleRelation, !!catPlanArticle.topHasAVL, !!catPlanArticle.topHasAVR, catalogProps);
18154
18168
  catPlanArticle.filterType = _filterType;
18155
18169
  //Artikelbild ist abh�ngig von DIVA3DPlanerShowArticleAsSvg das SVG des Elements
18156
18170
  if (catalogProps.diva3dPlanerShowArticleAsSvg && (catPlanArticle.hasTopSvg || catPlanArticle.hasTopSvgsWithFormula)) {
@@ -19693,7 +19707,15 @@ function _loadMoreFromIDMArticles() {
19693
19707
  }).map(function (a) {
19694
19708
  return a.featureClassRefNo;
19695
19709
  })));
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];
19710
+ 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 () {
19711
+ var getUrl = set.api.getIDMDecisions(set.CatalogData.accountGuid, toLoadDecisionIds);
19712
+ if (getUrl.length > 2000) {
19713
+ return set.api.getDataCache(set.api.getIDMDecisionsQueryUrl(set.CatalogData.accountGuid), undefined, undefined, 'enricher', 'POST', {
19714
+ decisionNos: toLoadDecisionIds.join(';')
19715
+ });
19716
+ }
19717
+ return set.api.getDataCache(getUrl, undefined, undefined, 'enricher');
19718
+ }() : undefined];
19697
19719
  _context5.next = 16;
19698
19720
  return Promise.all(promises);
19699
19721
  case 16:
@@ -20654,6 +20676,8 @@ var DivaCatalogData = /*#__PURE__*/function () {
20654
20676
  //
20655
20677
  ignoreLayerAVNAVS: false,
20656
20678
  //
20679
+ ignoreDockingNumber: false,
20680
+ // ignoriert die Nummern-Regel beim Andocken (z.B. AVU1 darf an AVO2). Die Nummer dient dann nur der Identifikation, nicht als Zuordnungsschlüssel.
20657
20681
  checkCollisionForDifferentLayers: [],
20658
20682
  //
20659
20683
 
@@ -21199,6 +21223,24 @@ var DivaCatalogData = /*#__PURE__*/function () {
21199
21223
  return _ret;
21200
21224
  }
21201
21225
  }
21226
+
21227
+ /**
21228
+ * Default dock filter applied when nothing is selected (e.g. after a deselect or when adding a new element).
21229
+ * When completeness warnings are hidden, any element may start a planning, so every dock type the catalog
21230
+ * actually has is shown. Otherwise the catalog's configured start filter (startFilterParams / available
21231
+ * start types) is used.
21232
+ */
21233
+ }, {
21234
+ key: "defaultDockFilter",
21235
+ get: function get() {
21236
+ if (this.doHideCompletenessWarning) {
21237
+ var filterType = this.plannerPaletteViewInfo.filterType;
21238
+ return Object.keys(filterType).filter(function (key) {
21239
+ return filterType[key];
21240
+ });
21241
+ }
21242
+ return this.getStartFilter;
21243
+ }
21202
21244
  }, {
21203
21245
  key: "dontHideOption",
21204
21246
  get: function get() {
@@ -21688,6 +21730,7 @@ var DivaCatalogData = /*#__PURE__*/function () {
21688
21730
  ignoreLayerAVC: this.catalogProps.ignoreLayerAVC,
21689
21731
  ignoreLayerAVOAVU: this.catalogProps.ignoreLayerAVOAVU,
21690
21732
  ignoreLayerAVNAVS: this.catalogProps.ignoreLayerAVNAVS,
21733
+ ignoreDockingNumber: this.catalogProps.ignoreDockingNumber,
21691
21734
  showAccOnDpOnly: this.catalogProps.showAccOnDpOnly,
21692
21735
  dockAccOnAvoOnly: this.catalogProps.dockAccOnAvoOnly,
21693
21736
  hideAccessoriesInPlanner: this.catalogProps.accessorieStepAsPlanner,
@@ -21847,6 +21890,9 @@ var DivaCatalogData = /*#__PURE__*/function () {
21847
21890
  case 'IGNORELAYERAVNAVS':
21848
21891
  _this4.catalogProps.ignoreLayerAVNAVS = item.Value == '1';
21849
21892
  break;
21893
+ case 'IGNOREDOCKINGNUMBER':
21894
+ _this4.catalogProps.ignoreDockingNumber = item.Value == '1';
21895
+ break;
21850
21896
  case 'CHECK_COLLISION_DIFFERENT_LAYERS':
21851
21897
  _this4.catalogProps.checkCollisionForDifferentLayers = item.Value.split(';').map(function (t) {
21852
21898
  return parseInt(t);
@@ -22303,11 +22349,12 @@ var DivaCatalogHandler = /*#__PURE__*/function () {
22303
22349
  key: "loadDivaCatalog",
22304
22350
  value: function () {
22305
22351
  var _loadDivaCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(state, catalogCodex, orderSet) {
22352
+ var _orderSet$OrderLines;
22306
22353
  var promises, _yield$Promise$all, _yield$Promise$all2, catalogApiData, catalogArticleListData, catalogArticlePlannerListData, additionalModelInfos, mask, _state$catalogMask, catalogData;
22307
22354
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
22308
22355
  while (1) switch (_context2.prev = _context2.next) {
22309
22356
  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) {
22357
+ 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
22358
  var _ol$VariantBasketData;
22312
22359
  return ((_ol$VariantBasketData = ol.VariantBasketDatas) === null || _ol$VariantBasketData === void 0 ? void 0 : _ol$VariantBasketData.length) && ol.ArticleType === 'OPTIONTREE';
22313
22360
  }).map(function (os) {
@@ -23513,45 +23560,19 @@ var DivaEngine = /*#__PURE__*/function () {
23513
23560
  value: function updateIDMSpecificFeature(ops) {
23514
23561
  var _ops$option$idmVarian, _ops$option$idmVarian2, _ops$option$idmVarian3, _ops$option$idmVarian4, _ops$option$idmVarian5;
23515
23562
  if (!this.article.parentHasSameOption(ops.optionCodex)) return;
23563
+ // The OPV codex embeds the option codex as a prefix: "OPV<body>_<connector>" (e.g. "OPV1090_CT500"),
23564
+ // while ops.optionCodex is "OPT<body>". Strip that prefix so the filter holds the bare connector codex.
23565
+ var toConnectorCodex = function toConnectorCodex(value) {
23566
+ var prefix = 'OPV' + ops.optionCodex.substring(3) + '_';
23567
+ return value.codex.startsWith(prefix) ? value.codex.substring(prefix.length) : value.codex;
23568
+ };
23516
23569
  if ([90, 1090].includes((_ops$option$idmVarian = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian !== void 0 ? _ops$option$idmVarian : 0)) {
23517
23570
  //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;
23571
+ this.article.newPossibleAVRFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23535
23572
  }
23536
23573
  if ([89, 1089].includes((_ops$option$idmVarian2 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian2 !== void 0 ? _ops$option$idmVarian2 : 0)) {
23537
23574
  //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;
23575
+ this.article.newPossibleAVLFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23555
23576
  }
23556
23577
  //beim article abspeichern. Das Planungselement kann es sich per Funktion von dort dann holen
23557
23578
  if ([97, 1097].includes((_ops$option$idmVarian3 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian3 !== void 0 ? _ops$option$idmVarian3 : 0)) {
@@ -23780,18 +23801,18 @@ var DivaEngine = /*#__PURE__*/function () {
23780
23801
  myDecisions[_i].disableHistory = [];
23781
23802
  myDecisions[_i].activeCombination = undefined;
23782
23803
  }
23783
- var _iterator7 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23784
- _step7;
23804
+ var _iterator5 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23805
+ _step5;
23785
23806
  try {
23786
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
23787
- var ops = _step7.value;
23807
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
23808
+ var ops = _step5.value;
23788
23809
  ops.updateVisibleOptionValues(ops.option.articleOptionValues);
23789
23810
  ops.definedBySetFeatureFixed = false;
23790
23811
  }
23791
23812
  } catch (err) {
23792
- _iterator7.e(err);
23813
+ _iterator5.e(err);
23793
23814
  } finally {
23794
- _iterator7.f();
23815
+ _iterator5.f();
23795
23816
  }
23796
23817
  this.catalogDecisionsByNumber = new Map(this.article.catalogArticle.articleDecisions.map(function (d) {
23797
23818
  return [d.Number, d];
@@ -23922,11 +23943,11 @@ var DivaEngine = /*#__PURE__*/function () {
23922
23943
  key: "updateIDMSpecificFeatures",
23923
23944
  value: function updateIDMSpecificFeatures() {
23924
23945
  //updaten idm planner specific options
23925
- var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23926
- _step8;
23946
+ var _iterator6 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23947
+ _step6;
23927
23948
  try {
23928
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
23929
- var ops = _step8.value;
23949
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
23950
+ var ops = _step6.value;
23930
23951
  //when an option has no decisions the first visible optionValue has to be selected per default
23931
23952
  if (ops.val === undefined && ops.visibleCount && !this.article.CatalogData.useDiomexConfigLogic) {
23932
23953
  this.assignOptionValue(ops.optionCodex, ops.visibleOPVKeys[0]);
@@ -23947,9 +23968,9 @@ var DivaEngine = /*#__PURE__*/function () {
23947
23968
  }
23948
23969
  }
23949
23970
  } catch (err) {
23950
- _iterator8.e(err);
23971
+ _iterator6.e(err);
23951
23972
  } finally {
23952
- _iterator8.f();
23973
+ _iterator6.f();
23953
23974
  }
23954
23975
  }
23955
23976
  }, {
@@ -24183,21 +24204,21 @@ var DivaEngine = /*#__PURE__*/function () {
24183
24204
  var negatedValues = new Set(myDoc.Row[OPT].map(function (v) {
24184
24205
  return v.slice(1);
24185
24206
  })); // remove the '!' from the value
24186
- var _iterator9 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24187
- _step9;
24207
+ var _iterator7 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24208
+ _step7;
24188
24209
  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];
24210
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
24211
+ var _step7$value = _slicedToArray(_step7.value, 2),
24212
+ opvKey = _step7$value[0],
24213
+ _opv = _step7$value[1];
24193
24214
  if (!negatedValues.has(opvKey)) {
24194
24215
  validOPVs[OPT].set(opvKey, _opv);
24195
24216
  }
24196
24217
  }
24197
24218
  } catch (err) {
24198
- _iterator9.e(err);
24219
+ _iterator7.e(err);
24199
24220
  } finally {
24200
- _iterator9.f();
24221
+ _iterator7.f();
24201
24222
  }
24202
24223
  } else {
24203
24224
  validOPVs[OPT] = new Map(ops.visibleOptionValues);
@@ -24325,11 +24346,11 @@ var DivaEngine = /*#__PURE__*/function () {
24325
24346
  }, {
24326
24347
  key: "evalShowOnlyWhenHasPrice",
24327
24348
  value: function evalShowOnlyWhenHasPrice() {
24328
- var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24329
- _step10;
24349
+ var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24350
+ _step8;
24330
24351
  try {
24331
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
24332
- var ops = _step10.value;
24352
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
24353
+ var ops = _step8.value;
24333
24354
  for (var jKey in ops.visibleOptionValues) {
24334
24355
  var opv = ops.visibleOptionValues.get(jKey);
24335
24356
  if (opv.showOnlyWhenHasPrice && opv.price == 0) {
@@ -24341,9 +24362,9 @@ var DivaEngine = /*#__PURE__*/function () {
24341
24362
  }
24342
24363
  }
24343
24364
  } catch (err) {
24344
- _iterator10.e(err);
24365
+ _iterator8.e(err);
24345
24366
  } finally {
24346
- _iterator10.f();
24367
+ _iterator8.f();
24347
24368
  }
24348
24369
  }
24349
24370
 
@@ -24817,12 +24838,12 @@ var DivaEngine = /*#__PURE__*/function () {
24817
24838
  }
24818
24839
 
24819
24840
  //mengen und größenabhängige Preisberechungn.
24820
- var _iterator11 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24821
- _step11;
24841
+ var _iterator9 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24842
+ _step9;
24822
24843
  try {
24823
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
24844
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
24824
24845
  var _ops$addToMeasure;
24825
- var ops = _step11.value;
24846
+ var ops = _step9.value;
24826
24847
  var OP = ops.optionCodex;
24827
24848
  var mUnit = ops.measureUnit;
24828
24849
  var pUnit = ops.priceUnit;
@@ -24905,15 +24926,15 @@ var DivaEngine = /*#__PURE__*/function () {
24905
24926
  }
24906
24927
  //jetzt nochmal prozentuelle Preise mit TargetOption berechnen
24907
24928
  } catch (err) {
24908
- _iterator11.e(err);
24929
+ _iterator9.e(err);
24909
24930
  } finally {
24910
- _iterator11.f();
24931
+ _iterator9.f();
24911
24932
  }
24912
- var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24913
- _step12;
24933
+ var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24934
+ _step10;
24914
24935
  try {
24915
- for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
24916
- var _ops4 = _step12.value;
24936
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
24937
+ var _ops4 = _step10.value;
24917
24938
  var targetPPGPrefixes = _ops4.targetPPGPrefixes;
24918
24939
  if (!targetPPGPrefixes) continue;
24919
24940
  var _loop7 = function _loop7() {
@@ -24933,9 +24954,9 @@ var DivaEngine = /*#__PURE__*/function () {
24933
24954
  }
24934
24955
  }
24935
24956
  } catch (err) {
24936
- _iterator12.e(err);
24957
+ _iterator10.e(err);
24937
24958
  } finally {
24938
- _iterator12.f();
24959
+ _iterator10.f();
24939
24960
  }
24940
24961
  for (var _i5 = 0; _i5 < this.article.priceRefs.length; _i5++) {
24941
24962
  var basePriceRef = this.article.priceRefs[_i5];
@@ -24947,19 +24968,19 @@ var DivaEngine = /*#__PURE__*/function () {
24947
24968
  return item.PPG && item.PPG.split('_')[0] == targetPrefix;
24948
24969
  });
24949
24970
  if (!priceRef) {
24950
- var _iterator13 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
24951
- _step13;
24971
+ var _iterator11 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
24972
+ _step11;
24952
24973
  try {
24953
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
24954
- var ops = _step13.value;
24974
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
24975
+ var ops = _step11.value;
24955
24976
  if (ops.ppg && ops.ppg.split('_')[0] == targetPrefix) {
24956
24977
  myArtOpv = ops;
24957
24978
  }
24958
24979
  }
24959
24980
  } catch (err) {
24960
- _iterator13.e(err);
24981
+ _iterator11.e(err);
24961
24982
  } finally {
24962
- _iterator13.f();
24983
+ _iterator11.f();
24963
24984
  }
24964
24985
  }
24965
24986
 
@@ -24985,36 +25006,36 @@ var DivaEngine = /*#__PURE__*/function () {
24985
25006
  myArticleBasePrice += priceRef.Price ? DivaUtils.decimalAdjust('round', (_priceRef$calcPrice = priceRef.calcPrice) !== null && _priceRef$calcPrice !== void 0 ? _priceRef$calcPrice : priceRef.Price, digits) : 0.0;
24986
25007
  }
24987
25008
  var articleUsedCalcPrice = myArticleBasePrice;
24988
- var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24989
- _step14;
25009
+ var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25010
+ _step12;
24990
25011
  try {
24991
- for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
24992
- var tmpOps = _step14.value;
25012
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
25013
+ var tmpOps = _step12.value;
24993
25014
  articleUsedCalcPrice = this.getOptionPrice(articleUsedCalcPrice, tmpOps.option, digits);
24994
25015
  }
24995
25016
 
24996
25017
  //jetzt nochmal prozentuelle Preise mit GLOBAL tarbetoption berechnen
24997
25018
  /* TODO ABklären mit Franz - ops hat nie die Optionen - targetPPGPrefixes - ich glaube hier sollte article.priceRefs durchlaufen werden. */
24998
25019
  } catch (err) {
24999
- _iterator14.e(err);
25020
+ _iterator12.e(err);
25000
25021
  } finally {
25001
- _iterator14.f();
25022
+ _iterator12.f();
25002
25023
  }
25003
- var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25004
- _step15;
25024
+ var _iterator13 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25025
+ _step13;
25005
25026
  try {
25006
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25027
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
25007
25028
  var _ops5$targetPPGPrefix, _ops5$targetPPGPrefix2;
25008
- var _ops5 = _step15.value;
25029
+ var _ops5 = _step13.value;
25009
25030
  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
25031
  if (_ops5.isPercentage && targetOption == 'GLOBAL') {
25011
25032
  articleUsedCalcPrice = articleUsedCalcPrice * (1 + _ops5.calcPrice);
25012
25033
  }
25013
25034
  }
25014
25035
  } catch (err) {
25015
- _iterator15.e(err);
25036
+ _iterator13.e(err);
25016
25037
  } finally {
25017
- _iterator15.f();
25038
+ _iterator13.f();
25018
25039
  }
25019
25040
  for (var _i7 = 0; _i7 < this.article.priceRefs.length; _i7++) {
25020
25041
  var _priceRef = this.article.priceRefs[_i7];
@@ -25156,11 +25177,11 @@ var DivaEngine = /*#__PURE__*/function () {
25156
25177
  if (a[i].trim() != '') {
25157
25178
  var searchOpt = 'OPT' + a[i].trim();
25158
25179
  //Optionsbaum des Artikels durchsuchen
25159
- var _iterator16 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25160
- _step16;
25180
+ var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25181
+ _step14;
25161
25182
  try {
25162
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25163
- var _ops6 = _step16.value;
25183
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
25184
+ var _ops6 = _step14.value;
25164
25185
  if (_ops6.ocd == searchOpt || _ops6.optionCodex == searchOpt) {
25165
25186
  if (_ops6 && _ops6.price > 0) {
25166
25187
  myPercBasePrice += _ops6.price * _ops6.quantity;
@@ -25169,9 +25190,9 @@ var DivaEngine = /*#__PURE__*/function () {
25169
25190
  }
25170
25191
  }
25171
25192
  } catch (err) {
25172
- _iterator16.e(err);
25193
+ _iterator14.e(err);
25173
25194
  } finally {
25174
- _iterator16.f();
25195
+ _iterator14.f();
25175
25196
  }
25176
25197
  }
25177
25198
  }
@@ -25217,18 +25238,18 @@ var DivaEngine = /*#__PURE__*/function () {
25217
25238
  }
25218
25239
 
25219
25240
  // this functions updates the images of OPVs that depend on rules
25220
- var _iterator17 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25221
- _step17;
25241
+ var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25242
+ _step15;
25222
25243
  try {
25223
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
25224
- var ops = _step17.value;
25225
- var _iterator18 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25226
- _step18;
25244
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25245
+ var ops = _step15.value;
25246
+ var _iterator16 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25247
+ _step16;
25227
25248
  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];
25249
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25250
+ var _step16$value = _slicedToArray(_step16.value, 2),
25251
+ jKey = _step16$value[0],
25252
+ opv = _step16$value[1];
25232
25253
  if (opv.images) {
25233
25254
  var imageFound = false;
25234
25255
  for (var _i10 = 0; _i10 < opv.images.length; _i10++) {
@@ -25247,18 +25268,18 @@ var DivaEngine = /*#__PURE__*/function () {
25247
25268
  }
25248
25269
  }
25249
25270
  } catch (err) {
25250
- _iterator18.e(err);
25271
+ _iterator16.e(err);
25251
25272
  } finally {
25252
- _iterator18.f();
25273
+ _iterator16.f();
25253
25274
  }
25254
25275
  }
25255
25276
 
25256
25277
  // this function calculates an Svg to the current configuration if neccessary (SVG Tausch)
25257
25278
  // if the Article has no SVG Tausch nothing is done
25258
25279
  } catch (err) {
25259
- _iterator17.e(err);
25280
+ _iterator15.e(err);
25260
25281
  } finally {
25261
- _iterator17.f();
25282
+ _iterator15.f();
25262
25283
  }
25263
25284
  var newSVGFile = null;
25264
25285
  var svgChangedViaSvgTausch = false;
@@ -25889,7 +25910,7 @@ var IDMEngine = /*#__PURE__*/function () {
25889
25910
  } else if (!_ops4.valCodex) {
25890
25911
  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
25912
  } 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>'));
25913
+ 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
25914
  }
25894
25915
  if (_ops4 !== null && _ops4 !== void 0 && _ops4.valCodex) this.assignOptionValue(action.featureNo.toString(), _ops4.valCodex, isFixed ? 'fix' : 'set');
25895
25916
  } else if (action.optionRef) {
@@ -26485,13 +26506,18 @@ var IDMEngine = /*#__PURE__*/function () {
26485
26506
  value: function updateIDMSpecificFeature(myArtOPS) {
26486
26507
  var _myArtOPS$option$idmV, _myArtOPS$option$idmV2, _myArtOPS$option$idmV3, _myArtOPS$option$idmV4, _myArtOPS$option$idmV5;
26487
26508
  if (!this.article.parentHasSameOption(myArtOPS.optionCodex)) return;
26509
+ // The OPV key embeds the option codex as a prefix: "<optionCodex>_<connector>" (e.g. "1089_CT20").
26510
+ // Strip the codex AND the separator so the filter holds the bare connector codex ("CT20").
26511
+ var toConnectorCodex = function toConnectorCodex(key) {
26512
+ return key.startsWith(myArtOPS.optionCodex + '_') ? key.substring(myArtOPS.optionCodex.length + 1) : key;
26513
+ };
26488
26514
  if ([90, 1090].includes((_myArtOPS$option$idmV = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV !== void 0 ? _myArtOPS$option$idmV : 0)) {
26489
26515
  //R (Anschlusstyp R) - AVR
26490
- this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys;
26516
+ this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26491
26517
  }
26492
26518
  if ([89, 1089].includes((_myArtOPS$option$idmV2 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV2 !== void 0 ? _myArtOPS$option$idmV2 : 0)) {
26493
26519
  //L (Anschlusstyp L) - AVL
26494
- this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys;
26520
+ this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26495
26521
  }
26496
26522
  if ([97, 1097].includes((_myArtOPS$option$idmV3 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV3 !== void 0 ? _myArtOPS$option$idmV3 : 0)) {
26497
26523
  try {
@@ -27930,6 +27956,11 @@ var DivaArticle = /*#__PURE__*/function () {
27930
27956
  get: function get() {
27931
27957
  return this.catalogArticle.bundleRules;
27932
27958
  }
27959
+ }, {
27960
+ key: "addAsZKAT",
27961
+ get: function get() {
27962
+ return this.catalogArticle.addAsZKAT;
27963
+ }
27933
27964
  }, {
27934
27965
  key: "hasPartlistArticleVisibleInTree",
27935
27966
  get: function get() {
@@ -29534,7 +29565,7 @@ var DivaArticle = /*#__PURE__*/function () {
29534
29565
  break;
29535
29566
  }
29536
29567
  _context.next = 4;
29537
- return import('./ShelfPlanner-354da88b.js');
29568
+ return import('./ShelfPlanner-e66b37ab.js');
29538
29569
  case 4:
29539
29570
  _yield$import = _context.sent;
29540
29571
  ShelfPlanner = _yield$import["default"];
@@ -33268,7 +33299,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33268
33299
  }
33269
33300
  }, {
33270
33301
  key: "getSummaryItemsofArticle",
33271
- value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket) {
33302
+ value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket, parentArticle) {
33272
33303
  var _iterator2 = _createForOfIteratorHelper$7(article.articleOptionStates.values()),
33273
33304
  _step2;
33274
33305
  try {
@@ -33276,6 +33307,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33276
33307
  var ops = _step2.value;
33277
33308
  if (ops.visibleInSummary(article, summaryForBasket)) {
33278
33309
  var _set$configTree$getCo, _set$hiddenConfigTree;
33310
+ //for accessoires only render an option if it differs from the parent article's selection
33311
+ if (parentArticle) {
33312
+ var _parentOps$val, _ops$val;
33313
+ var parentOps = parentArticle.getArticleOptionState(ops.optionCodex);
33314
+ 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;
33315
+ }
33279
33316
  var tabGroupCodex = void 0;
33280
33317
  var tabGroupTitel = void 0;
33281
33318
  if (ops.optionTabGroup) {
@@ -33292,9 +33329,9 @@ var SummaryHandler = /*#__PURE__*/function () {
33292
33329
  var itemsInTabGroup = summaryTabItems[tabGroupCodex].summaryItems;
33293
33330
  var itemImage = ops.val.image ? set.CatalogData.getCatImageURL(ops.val.image, '') : undefined;
33294
33331
  if (configStep && itemsInTabGroup) {
33295
- var _ops$val, _this$getAdditionalPr;
33332
+ var _ops$val2, _this$getAdditionalPr;
33296
33333
  var sameOPVAndOPTDoAlreadyExist = false;
33297
- var configStepKeyToUse = configStep.key + ((_ops$val = ops.val) === null || _ops$val === void 0 ? void 0 : _ops$val.codex);
33334
+ var configStepKeyToUse = configStep.key + ((_ops$val2 = ops.val) === null || _ops$val2 === void 0 ? void 0 : _ops$val2.codex);
33298
33335
  var posNr = configStep === null || configStep === void 0 ? void 0 : configStep.posNr;
33299
33336
  if (configStep !== null && configStep !== void 0 && configStep.accessoireArticleCodex && article.relatedToBasketId) {
33300
33337
  var _set$configTree$getCo2, _set$configTree$getCo3, _set$hiddenConfigTree2;
@@ -33315,7 +33352,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33315
33352
  var rabatt = set.getCurrentDisountPercentage();
33316
33353
  var price = rabatt ? DivaUtils.roundPrice(bruttoPrice * ((100 - rabatt) / 100), 1, 2) : bruttoPrice;
33317
33354
  if (!sameOPVAndOPTDoAlreadyExist) {
33318
- var _ops$val$contentItemI, _ops$val2, _ops$val3;
33355
+ var _ops$val$contentItemI, _ops$val3, _ops$val4;
33319
33356
  itemsInTabGroup[configStepKeyToUse] = {
33320
33357
  title: ops.optionName,
33321
33358
  title_locales: ops.optionName_locales,
@@ -33329,7 +33366,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33329
33366
  image: itemImage,
33330
33367
  isDefined: ops.isDefined,
33331
33368
  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,
33369
+ 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
33370
  optionContentItemId: ops.option.contentItemId,
33334
33371
  includesAllPosNrs: baseArticlesCount <= 1
33335
33372
  };
@@ -33383,7 +33420,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33383
33420
  } else {
33384
33421
  var _set$i18n$t2, _set$i18n2, _accessoire$catalogAr, _accessoire$catalogAr2, _accessoire$catalogAr3;
33385
33422
  var summaryItems = {};
33386
- this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket);
33423
+ this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket, article);
33387
33424
  this.addAccessoires([accessoire], summaryItems, set, articlesPosNrs, baseArticlesCount, summaryForBasket);
33388
33425
  tabGroup.summaryItems[entryKey] = {
33389
33426
  title: accessoire.name,
@@ -33660,14 +33697,26 @@ var SummaryHandler = /*#__PURE__*/function () {
33660
33697
  counter++;
33661
33698
  SummaryInfo.push(new GroupsData(GroupDataInitParams));
33662
33699
  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);
33700
+ this.addSummaryItemToGroup(SummaryInfo[SummaryInfo.length - 1].Group, mySummaryObejct.summaryItems[jKey]);
33666
33701
  }
33667
33702
  }
33668
33703
  }
33669
33704
  return SummaryInfo;
33670
33705
  }
33706
+ }, {
33707
+ key: "addSummaryItemToGroup",
33708
+ value: function addSummaryItemToGroup(group, summaryItem) {
33709
+ //tab-group shells only structure the nested config; skip them so they don't become empty property lines
33710
+ if (!summaryItem.isTabGroup) {
33711
+ var _summaryItem$title_lo, _summaryItem$descript, _summaryItem$targetAr4;
33712
+ 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);
33713
+ }
33714
+
33715
+ //nested config (e.g. accessory option values like a custom color) is kept flat in the same group
33716
+ for (var _key7 in summaryItem.summaryItems) {
33717
+ this.addSummaryItemToGroup(group, summaryItem.summaryItems[_key7]);
33718
+ }
33719
+ }
33671
33720
  }, {
33672
33721
  key: "getSummaryType",
33673
33722
  value: function getSummaryType(set) {
@@ -33698,8 +33747,8 @@ var SummaryHandler = /*#__PURE__*/function () {
33698
33747
  }
33699
33748
  };
33700
33749
  }
33701
- for (var _key7 in elementGroups) {
33702
- var group = elementGroups[_key7];
33750
+ for (var _key8 in elementGroups) {
33751
+ var group = elementGroups[_key8];
33703
33752
  ret.push({
33704
33753
  items: this.buildSummaryItems(this.getArticlesPosNr(group.articles), set, summaryForBasket),
33705
33754
  price: this.getArticlesPrice(group.articles),
@@ -33716,10 +33765,10 @@ var SummaryHandler = /*#__PURE__*/function () {
33716
33765
  var groupedArticles = setHandlerInstance.getDockedGroupedArticles(set);
33717
33766
  var retGroups = {};
33718
33767
  var articlesCodexesOnIndex = {};
33719
- for (var _key8 in groupedArticles) {
33720
- var basketId = groupedArticles[_key8][Object.keys(groupedArticles[_key8])[0]].basketId;
33768
+ for (var _key9 in groupedArticles) {
33769
+ var basketId = groupedArticles[_key9][Object.keys(groupedArticles[_key9])[0]].basketId;
33721
33770
  retGroups[basketId] = {
33722
- articles: groupedArticles[_key8],
33771
+ articles: groupedArticles[_key9],
33723
33772
  quantity: 1
33724
33773
  };
33725
33774
  }
@@ -33734,12 +33783,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33734
33783
  articlesCodexesOnIndex[articleCodex].push(i);
33735
33784
  }
33736
33785
  }
33737
- for (var _key9 in articlesCodexesOnIndex) {
33738
- if (articlesCodexesOnIndex[_key9].length > 1) {
33786
+ for (var _key10 in articlesCodexesOnIndex) {
33787
+ if (articlesCodexesOnIndex[_key10].length > 1) {
33739
33788
  //group the single groups by the aricleCodex
33740
33789
  var articles = [];
33741
- for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key9].length; _i4++) {
33742
- var _group = groupedArticles[articlesCodexesOnIndex[_key9][_i4]];
33790
+ for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key10].length; _i4++) {
33791
+ var _group = groupedArticles[articlesCodexesOnIndex[_key10][_i4]];
33743
33792
  articles.push({
33744
33793
  article: _group[Object.keys(_group)[0]]
33745
33794
  });
@@ -33784,11 +33833,11 @@ var SummaryHandler = /*#__PURE__*/function () {
33784
33833
  var isIDM = article.CatalogData.isIDMFormat;
33785
33834
  var tabGroups = [];
33786
33835
  for (var basketId in article.partlistArticles) {
33787
- var _ops$val4;
33836
+ var _ops$val5;
33788
33837
  var partlistArticle = article.partlistArticles[basketId];
33789
33838
  if (!partlistArticle.tabGroup) continue;
33790
33839
  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) {
33840
+ 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
33841
  tabGroups.push({
33793
33842
  optionCodex: ops.optionCodex,
33794
33843
  tabGroup: ops.optionTabGroup
@@ -34024,8 +34073,8 @@ var SummaryHandler = /*#__PURE__*/function () {
34024
34073
  key: "getArticlesPrice",
34025
34074
  value: function getArticlesPrice(articles) {
34026
34075
  var price = 0;
34027
- for (var _key10 in articles) {
34028
- price = price + articles[_key10].price * articles[_key10].quantity;
34076
+ for (var _key11 in articles) {
34077
+ price = price + articles[_key11].price * articles[_key11].quantity;
34029
34078
  }
34030
34079
  return price;
34031
34080
  }
@@ -37538,7 +37587,7 @@ var DivaSet = /*#__PURE__*/function () {
37538
37587
  break;
37539
37588
  }
37540
37589
  _context5.next = 3;
37541
- return import('./DoorPlanner-a4e3a380.js');
37590
+ return import('./DoorPlanner-97f65d89.js');
37542
37591
  case 3:
37543
37592
  _yield$import = _context5.sent;
37544
37593
  DoorPlanner = _yield$import["default"];
@@ -43012,7 +43061,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43012
43061
  break;
43013
43062
  case 3:
43014
43063
  _context12.next = 5;
43015
- return import('./PfisterWWSHandler-a92fb5ca.js');
43064
+ return import('./PfisterWWSHandler-9b820585.js');
43016
43065
  case 5:
43017
43066
  _yield$import = _context12.sent;
43018
43067
  PfisterWWSHandler = _yield$import["default"];
@@ -43020,7 +43069,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43020
43069
  return _context12.abrupt("break", 27);
43021
43070
  case 9:
43022
43071
  _context12.next = 11;
43023
- return import('./LiviqueWWSHandler-fc0597c3.js');
43072
+ return import('./LiviqueWWSHandler-b488cf8e.js');
43024
43073
  case 11:
43025
43074
  _yield$import2 = _context12.sent;
43026
43075
  LiviqueWWSHandler = _yield$import2["default"];
@@ -43028,7 +43077,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43028
43077
  return _context12.abrupt("break", 27);
43029
43078
  case 15:
43030
43079
  _context12.next = 17;
43031
- return import('./SeriousBasketHandler-18db24f8.js');
43080
+ return import('./SeriousBasketHandler-342998a5.js');
43032
43081
  case 17:
43033
43082
  _yield$import3 = _context12.sent;
43034
43083
  SeriousWWSHandler = _yield$import3["default"];
@@ -43036,7 +43085,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43036
43085
  return _context12.abrupt("break", 27);
43037
43086
  case 21:
43038
43087
  _context12.next = 23;
43039
- return import('./StandardWWSHandler-46f9434e.js');
43088
+ return import('./StandardWWSHandler-1d9ae8f7.js');
43040
43089
  case 23:
43041
43090
  _yield$import4 = _context12.sent;
43042
43091
  StandardWWSHandler = _yield$import4["default"];
@@ -44460,7 +44509,7 @@ var PlannerHandler3D = /*#__PURE__*/function () {
44460
44509
  while (1) switch (_context3.prev = _context3.next) {
44461
44510
  case 0:
44462
44511
  _context3.next = 2;
44463
- return import('./Host3DSignalR-ed1240f2.js');
44512
+ return import('./Host3DSignalR-06b4d30b.js');
44464
44513
  case 2:
44465
44514
  _yield$import = _context3.sent;
44466
44515
  Host3DSignalR = _yield$import["default"];
@@ -46146,7 +46195,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46146
46195
  break;
46147
46196
  case 8:
46148
46197
  _context5.next = 10;
46149
- return import('./DivaStandardPlanner-21c4c0ca.js');
46198
+ return import('./DivaStandardPlanner-d82eb446.js');
46150
46199
  case 10:
46151
46200
  _yield$import = _context5.sent;
46152
46201
  DivaStandardPlanner = _yield$import["default"];
@@ -46157,7 +46206,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46157
46206
  return _context5.abrupt("break", 21);
46158
46207
  case 15:
46159
46208
  _context5.next = 17;
46160
- return import('./DivaBoxPlanner-e8f7c4cd.js');
46209
+ return import('./DivaBoxPlanner-210c2ceb.js');
46161
46210
  case 17:
46162
46211
  _yield$import2 = _context5.sent;
46163
46212
  DivaBoxPlanner = _yield$import2["default"];
@@ -48120,12 +48169,14 @@ var DivaWebPlanner = /*#__PURE__*/function () {
48120
48169
  case 12:
48121
48170
  loadSuccessful = _context14.sent;
48122
48171
  if (this.plannerConfig.configuratorSessionId) {
48123
- //force new configurator session id - Landingpage case
48172
+ // ID forced from outside (Landingpage, PDP, Planung-ändern)
48124
48173
  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).
48174
+ } else if (cache !== undefined) {
48175
+ // Re-init with cache (Variant Select): keep existing session stable
48128
48176
  DivaUtils.businessMetrics.setConfiguratorSessionId(undefined, true);
48177
+ } else {
48178
+ // Fresh start (new catalog, archive basket, etc.): always new UUID
48179
+ DivaUtils.businessMetrics.setConfiguratorSessionId();
48129
48180
  }
48130
48181
  if (!loadSuccessful) {
48131
48182
  _context14.next = 31;