@crystaldesign/web-planner-logic 26.12.0-beta.3 → 26.12.0-beta.30

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 (131) hide show
  1. package/build/cjs/{DivaBoxPlanner-2c699ee3.js → DivaBoxPlanner-484a325e.js} +13 -10
  2. package/build/cjs/{DivaStandardPlanner-3d6a05bc.js → DivaStandardPlanner-6dbf81c3.js} +9 -5
  3. package/build/cjs/{DoorPlanner-adda9c0d.js → DoorPlanner-87fac8b8.js} +2 -2
  4. package/build/cjs/{Host3DSignalR-6914541f.js → Host3DSignalR-2b5a6bae.js} +2 -2
  5. package/build/cjs/{LiviqueWWSHandler-635cffae.js → LiviqueWWSHandler-992fe2a1.js} +2 -2
  6. package/build/cjs/{PfisterWWSHandler-d95419db.js → PfisterWWSHandler-e95029c3.js} +2 -2
  7. package/build/cjs/{PlannerHandler2D-b76ba907.js → PlannerHandler2D-c74ff8ac.js} +5 -272
  8. package/build/cjs/{SeriousBasketHandler-777904e8.js → SeriousBasketHandler-a20bd057.js} +141 -79
  9. package/build/cjs/{ShelfPlanner-5ffd15a2.js → ShelfPlanner-c1de034e.js} +107 -79
  10. package/build/cjs/{StandardWWSHandler-e92acae6.js → StandardWWSHandler-e72d5813.js} +2 -2
  11. package/build/cjs/{index-d516d2b2.js → index-bd35eec6.js} +3150 -976
  12. package/build/cjs/index.js +9 -1
  13. package/build/esm/{DivaBoxPlanner-6f0727a3.js → DivaBoxPlanner-550c74ca.js} +13 -10
  14. package/build/esm/{DivaStandardPlanner-7188da61.js → DivaStandardPlanner-da5556ac.js} +9 -5
  15. package/build/esm/{DoorPlanner-74bcd21d.js → DoorPlanner-2f95bff9.js} +2 -2
  16. package/build/esm/{Host3DSignalR-bb6db8e6.js → Host3DSignalR-7588005e.js} +2 -2
  17. package/build/esm/{LiviqueWWSHandler-c4ba143d.js → LiviqueWWSHandler-22fe4525.js} +2 -2
  18. package/build/esm/{PfisterWWSHandler-41b7b1b7.js → PfisterWWSHandler-cc671647.js} +2 -2
  19. package/build/esm/{PlannerHandler2D-829ffceb.js → PlannerHandler2D-3ae7d185.js} +3 -268
  20. package/build/esm/{SeriousBasketHandler-0bb8ee55.js → SeriousBasketHandler-c8a94b84.js} +141 -79
  21. package/build/esm/{ShelfPlanner-1406888d.js → ShelfPlanner-62c2844a.js} +107 -79
  22. package/build/esm/{StandardWWSHandler-a8045129.js → StandardWWSHandler-f031a067.js} +2 -2
  23. package/build/esm/{index-16a1a540.js → index-ead00f31.js} +3142 -977
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +10 -0
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts +1 -0
  28. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/Articles/PartListArticleToLoadType.d.ts +3 -0
  30. package/build/types/web-planner-logic/src/interface/Articles/PartListArticleToLoadType.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts +1 -0
  32. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +1 -0
  34. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +1 -0
  36. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +2 -1
  38. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +1 -0
  40. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts +10 -0
  42. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts +8 -2
  44. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts +5 -0
  46. package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +40 -0
  48. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/logic/Article/DivaArticleHandler.d.ts +6 -0
  50. package/build/types/web-planner-logic/src/logic/Article/DivaArticleHandler.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/logic/Article/Engine/ArticleEngine.d.ts +2 -0
  52. package/build/types/web-planner-logic/src/logic/Article/Engine/ArticleEngine.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts +17 -1
  55. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  56. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts +2 -2
  57. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts.map +1 -1
  58. package/build/types/web-planner-logic/src/logic/Basket/SeriousBasketHandler.d.ts +12 -1
  59. package/build/types/web-planner-logic/src/logic/Basket/SeriousBasketHandler.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Basket/SeriousBasketHandler.test.d.ts +2 -0
  61. package/build/types/web-planner-logic/src/logic/Basket/SeriousBasketHandler.test.d.ts.map +1 -0
  62. package/build/types/web-planner-logic/src/logic/Basket/seriousSetName.d.ts +8 -0
  63. package/build/types/web-planner-logic/src/logic/Basket/seriousSetName.d.ts.map +1 -0
  64. package/build/types/web-planner-logic/src/logic/Basket/seriousSetName.test.d.ts +2 -0
  65. package/build/types/web-planner-logic/src/logic/Basket/seriousSetName.test.d.ts.map +1 -0
  66. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts +10 -0
  67. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts +40 -1
  69. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts +6 -3
  71. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts +7 -1
  73. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.test.d.ts +2 -0
  75. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.test.d.ts.map +1 -0
  76. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +7 -0
  77. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  78. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts +2 -0
  79. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  80. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +22 -6
  81. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  82. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  84. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +8 -1
  85. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts.map +1 -1
  86. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +2 -1
  87. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  88. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  90. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +16 -2
  91. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  92. package/build/types/web-planner-logic/src/model/Articles/CatalogPlannerArticleData.d.ts +6 -0
  93. package/build/types/web-planner-logic/src/model/Articles/CatalogPlannerArticleData.d.ts.map +1 -1
  94. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  95. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +1 -0
  96. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  97. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  98. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +1 -0
  99. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  100. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  101. package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts +31 -0
  102. package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts.map +1 -0
  103. package/build/types/web-planner-logic/src/model/Properties/propertyValueCodec.d.ts +34 -0
  104. package/build/types/web-planner-logic/src/model/Properties/propertyValueCodec.d.ts.map +1 -0
  105. package/build/types/web-planner-logic/src/test/accessoryWithoutDocking.test.d.ts +2 -0
  106. package/build/types/web-planner-logic/src/test/accessoryWithoutDocking.test.d.ts.map +1 -0
  107. package/build/types/web-planner-logic/src/test/cloneArticle.test.d.ts +2 -0
  108. package/build/types/web-planner-logic/src/test/cloneArticle.test.d.ts.map +1 -0
  109. package/build/types/web-planner-logic/src/test/configTreeStepArticle.test.d.ts +2 -0
  110. package/build/types/web-planner-logic/src/test/configTreeStepArticle.test.d.ts.map +1 -0
  111. package/build/types/web-planner-logic/src/test/countDockingPoints.test.d.ts +2 -0
  112. package/build/types/web-planner-logic/src/test/countDockingPoints.test.d.ts.map +1 -0
  113. package/build/types/web-planner-logic/src/test/eanFormula.test.d.ts +2 -0
  114. package/build/types/web-planner-logic/src/test/eanFormula.test.d.ts.map +1 -0
  115. package/build/types/web-planner-logic/src/test/fallbackRowWarning.test.d.ts +2 -0
  116. package/build/types/web-planner-logic/src/test/fallbackRowWarning.test.d.ts.map +1 -0
  117. package/build/types/web-planner-logic/src/test/idmOpgParentNames.test.d.ts +2 -0
  118. package/build/types/web-planner-logic/src/test/idmOpgParentNames.test.d.ts.map +1 -0
  119. package/build/types/web-planner-logic/src/test/idmSerieStaleId.test.d.ts +2 -0
  120. package/build/types/web-planner-logic/src/test/idmSerieStaleId.test.d.ts.map +1 -0
  121. package/build/types/web-planner-logic/src/test/mergeOptionGroupConnectedSteps.test.d.ts +2 -0
  122. package/build/types/web-planner-logic/src/test/mergeOptionGroupConnectedSteps.test.d.ts.map +1 -0
  123. package/build/types/web-planner-logic/src/test/partlistChildInit.test.d.ts +2 -0
  124. package/build/types/web-planner-logic/src/test/partlistChildInit.test.d.ts.map +1 -0
  125. package/build/types/web-planner-logic/src/test/propertyEncodingsKnowhow.test.d.ts +2 -0
  126. package/build/types/web-planner-logic/src/test/propertyEncodingsKnowhow.test.d.ts.map +1 -0
  127. package/build/types/web-planner-logic/src/test/propertyValueCodec.test.d.ts +2 -0
  128. package/build/types/web-planner-logic/src/test/propertyValueCodec.test.d.ts.map +1 -0
  129. package/build/types/web-planner-logic/src/test/staticVisibleOptionValues.test.d.ts +2 -0
  130. package/build/types/web-planner-logic/src/test/staticVisibleOptionValues.test.d.ts.map +1 -0
  131. package/package.json +3 -3
@@ -3,7 +3,7 @@
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var index = require('./index-d516d2b2.js');
6
+ var index = require('./index-bd35eec6.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -11,6 +11,7 @@ require('@babel/runtime/regenerator');
11
11
  require('@babel/runtime/helpers/objectWithoutProperties');
12
12
  require('@babel/runtime/helpers/toConsumableArray');
13
13
  require('axios');
14
+ require('@crystaldesign/planner-2d-core');
14
15
  require('@crystaldesign/basket-model');
15
16
  require('@babel/runtime/helpers/typeof');
16
17
  require('fast-xml-parser');
@@ -20,7 +21,6 @@ require('@babel/runtime/helpers/inherits');
20
21
  require('@babel/runtime/helpers/wrapNativeSuper');
21
22
  require('@crystaldesign/basket-handler');
22
23
  require('socket.io-client');
23
- require('@crystaldesign/planner-2d-core');
24
24
 
25
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
26
 
@@ -29,23 +29,36 @@ var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
29
29
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
30
30
  var DivaUtils__default = /*#__PURE__*/_interopDefaultLegacy(DivaUtils);
31
31
 
32
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
33
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
34
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
+
36
+ /** An emitted formatted option that may become the main color: flagged with IS_MAIN_COLOR (explicit) or the API2 OPTBE_BOX fallback */
37
+
32
38
  //Der in einem Set gemergte Optionsbaum
33
- var MAIN_COLOR_OPTIONCODEX = 'OPTBE_BOX'; // this field indicates the the main Color. This main color is used in the PDF
39
+ // API2 fallback for the main color used in the PDF; catalogs mark it explicitly with the option property IS_MAIN_COLOR
40
+ var MAIN_COLOR_OPTIONCODEX = 'OPTBE_BOX';
34
41
  var StandardWWSHandler = /*#__PURE__*/function () {
35
42
  function StandardWWSHandler() {
36
43
  _classCallCheck__default["default"](this, StandardWWSHandler);
37
- _defineProperty__default["default"](this, "mainColorFound", false);
44
+ _defineProperty__default["default"](this, "mainColorCandidates", []);
38
45
  }
39
46
  return _createClass__default["default"](StandardWWSHandler, [{
40
47
  key: "repairWWSFlags",
41
48
  value: function repairWWSFlags(articles, orderLines) {
42
49
  return orderLines;
43
50
  }
51
+ /**
52
+ * Builds the part list for the Serious PDF. Components are collected at any partlist depth: intermediate articles that
53
+ * only bundle further components without a price of their own (IDM "Hülsen") are not listed themselves, a priced parent
54
+ * (e.g. an IDM Vorzugskombi header) is listed with its own price next to its components, and the options of a component
55
+ * are looked up on its direct parent, which is the set article itself for flat (API2) partlists.
56
+ */
44
57
  }, {
45
58
  key: "getWWSData",
46
59
  value: function getWWSData(basket, set, orderSet, orderlines) {
47
60
  var _this = this;
48
- this.mainColorFound = false;
61
+ this.mainColorCandidates = [];
49
62
  var pos = set.CatalogData.summaryTabGroupPosition;
50
63
  var isIDM = set.CatalogData.isIDMFormat;
51
64
  var partListOrderLines = [];
@@ -61,10 +74,12 @@ var StandardWWSHandler = /*#__PURE__*/function () {
61
74
  var articles = set.getDivaArticles();
62
75
  var groupedPartlistArticles = [];
63
76
  var usedOptionCodexes = [];
77
+ // set articles plus the parents of nested components, so catalog tab group codices resolve for both
78
+ var tabGroupLookupArticles = Object.values(articles);
64
79
  var posNr = 1;
65
80
  for (var iKey in articles) {
66
81
  var article = articles[iKey];
67
- var partlistArticles = articles[iKey].partlistArticles;
82
+ var partlistArticles = index.summaryHandlerInstance.getPartlistComponents(article);
68
83
  var partlistArticlesWithTabGroup = [];
69
84
  groupedPartlistArticles.push({
70
85
  article: article,
@@ -72,52 +87,65 @@ var StandardWWSHandler = /*#__PURE__*/function () {
72
87
  partlistArticles: [],
73
88
  letOthesMatch: true
74
89
  });
75
- var _loop = function _loop() {
76
- var _partlistArticle$cata, _article$getArticleOp, _article$getArticleOp2;
77
- var partlistArticle = partlistArticles[key];
78
- var preDefinedPosNr = (_partlistArticle$cata = partlistArticle.catalogArticle.orderPosNr) !== null && _partlistArticle$cata !== void 0 ? _partlistArticle$cata : null;
79
- var tabGroup = (_article$getArticleOp = (_article$getArticleOp2 = article.getArticleOptionState((!isIDM ? 'OPT' : '') + partlistArticle.tabGroup)) === null || _article$getArticleOp2 === void 0 ? void 0 : _article$getArticleOp2.optionTabGroup) !== null && _article$getArticleOp !== void 0 ? _article$getArticleOp : partlistArticle.tabGroup;
80
- if (preDefinedPosNr !== null) {
81
- var existingentry = !preDefinedPosNr.endsWith(';') && groupedPartlistArticles.find(function (group) {
82
- return (group.posNr == Number(preDefinedPosNr) || group.groupKey == preDefinedPosNr) && group.letOthesMatch;
83
- });
84
- if (existingentry) {
85
- existingentry.partlistArticles.push({
86
- article: partlistArticle,
87
- tabGroup: tabGroup
90
+ var _iterator = _createForOfIteratorHelper(partlistArticles),
91
+ _step;
92
+ try {
93
+ var _loop = function _loop() {
94
+ var _partlistArticle$part, _partlistArticle$cata, _optionArticle$getArt, _optionArticle$getArt2;
95
+ var partlistArticle = _step.value;
96
+ var optionArticle = (_partlistArticle$part = partlistArticle.partListParentArticle) !== null && _partlistArticle$part !== void 0 ? _partlistArticle$part : article;
97
+ if (!tabGroupLookupArticles.includes(optionArticle)) tabGroupLookupArticles.push(optionArticle);
98
+ var preDefinedPosNr = (_partlistArticle$cata = partlistArticle.catalogArticle.orderPosNr) !== null && _partlistArticle$cata !== void 0 ? _partlistArticle$cata : null;
99
+ var tabGroup = (_optionArticle$getArt = (_optionArticle$getArt2 = optionArticle.getArticleOptionState((!isIDM ? 'OPT' : '') + partlistArticle.tabGroup)) === null || _optionArticle$getArt2 === void 0 ? void 0 : _optionArticle$getArt2.optionTabGroup) !== null && _optionArticle$getArt !== void 0 ? _optionArticle$getArt : partlistArticle.tabGroup;
100
+ if (preDefinedPosNr !== null) {
101
+ var existingentry = !preDefinedPosNr.endsWith(';') && groupedPartlistArticles.find(function (group) {
102
+ return (group.posNr == Number(preDefinedPosNr) || group.groupKey == preDefinedPosNr) && group.letOthesMatch;
88
103
  });
89
- } else {
90
- var letOthesMatch = true;
91
- var newPosNr = Number(preDefinedPosNr);
92
- if (isNaN(newPosNr)) {
93
- newPosNr = posNr;
94
- letOthesMatch = false;
95
- do {
96
- newPosNr++;
97
- } while (groupedPartlistArticles.find(function (group) {
98
- return group.posNr == newPosNr;
99
- }));
100
- }
101
- groupedPartlistArticles.push({
102
- article: article,
103
- posNr: newPosNr,
104
- letOthesMatch: letOthesMatch,
105
- partlistArticles: [{
104
+ if (existingentry) {
105
+ existingentry.partlistArticles.push({
106
106
  article: partlistArticle,
107
- tabGroup: tabGroup
108
- }],
109
- groupKey: preDefinedPosNr
107
+ tabGroup: tabGroup,
108
+ optionArticle: optionArticle
109
+ });
110
+ } else {
111
+ var letOthesMatch = true;
112
+ var newPosNr = Number(preDefinedPosNr);
113
+ if (isNaN(newPosNr)) {
114
+ newPosNr = posNr;
115
+ letOthesMatch = false;
116
+ do {
117
+ newPosNr++;
118
+ } while (groupedPartlistArticles.find(function (group) {
119
+ return group.posNr == newPosNr;
120
+ }));
121
+ }
122
+ groupedPartlistArticles.push({
123
+ article: article,
124
+ posNr: newPosNr,
125
+ letOthesMatch: letOthesMatch,
126
+ partlistArticles: [{
127
+ article: partlistArticle,
128
+ tabGroup: tabGroup,
129
+ optionArticle: optionArticle
130
+ }],
131
+ groupKey: preDefinedPosNr
132
+ });
133
+ }
134
+ } else {
135
+ partlistArticlesWithTabGroup.push({
136
+ article: partlistArticle,
137
+ tabGroup: tabGroup,
138
+ optionArticle: optionArticle
110
139
  });
111
140
  }
112
- } else {
113
- partlistArticlesWithTabGroup.push({
114
- article: partlistArticle,
115
- tabGroup: tabGroup
116
- });
141
+ };
142
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
143
+ _loop();
117
144
  }
118
- };
119
- for (var key in partlistArticles) {
120
- _loop();
145
+ } catch (err) {
146
+ _iterator.e(err);
147
+ } finally {
148
+ _iterator.f();
121
149
  }
122
150
  groupedPartlistArticles.find(function (group) {
123
151
  return group.posNr === posNr;
@@ -129,23 +157,25 @@ var StandardWWSHandler = /*#__PURE__*/function () {
129
157
  }));
130
158
  }
131
159
  if (pos) this.sort(pos, groupedPartlistArticles);
132
- var _loop2 = function _loop2() {
160
+ for (var _i = 0; _i < groupedPartlistArticles.length; _i++) {
133
161
  var group = groupedPartlistArticles[_i];
134
- var article = group.article;
135
162
  var posNrCount = 1;
136
163
 
137
164
  //get count of tabgroupOption - articles within each tabgroup
138
- var _loop4 = function _loop4() {
139
- var _article$getArticleOp3, _article$getArticleOp4;
140
- var partListArticle = group.partlistArticles[j].article;
141
- var tabGroup = (_article$getArticleOp3 = (_article$getArticleOp4 = article.getArticleOptionState((!isIDM ? 'OPT' : '') + partListArticle.tabGroup)) === null || _article$getArticleOp4 === void 0 ? void 0 : _article$getArticleOp4.optionTabGroup) !== null && _article$getArticleOp3 !== void 0 ? _article$getArticleOp3 : partListArticle.tabGroup;
165
+ var _loop2 = function _loop2() {
166
+ var _optionArticle$getArt3, _optionArticle$getArt4;
167
+ var _group$partlistArticl = group.partlistArticles[j],
168
+ partListArticle = _group$partlistArticl.article,
169
+ optionArticle = _group$partlistArticl.optionArticle;
170
+ var tabGroup = (_optionArticle$getArt3 = (_optionArticle$getArt4 = optionArticle.getArticleOptionState((!isIDM ? 'OPT' : '') + partListArticle.tabGroup)) === null || _optionArticle$getArt4 === void 0 ? void 0 : _optionArticle$getArt4.optionTabGroup) !== null && _optionArticle$getArt3 !== void 0 ? _optionArticle$getArt3 : partListArticle.tabGroup;
142
171
  var fountEntry = partListOrderLines.find(function (item) {
143
172
  var _item$FormattedOption, _item$FormattedOption2, _this$getFormattedOpt;
144
- return item.Name == partListArticle.name && item.ArticleNr == partListArticle.configArticleCodex && ((_item$FormattedOption = item.FormattedOptions) === null || _item$FormattedOption === void 0 ? void 0 : _item$FormattedOption[0]) && ((_item$FormattedOption2 = item.FormattedOptions) === null || _item$FormattedOption2 === void 0 ? void 0 : _item$FormattedOption2[0].Title) == ((_this$getFormattedOpt = _this.getFormattedOptions(partListArticle, article, [], '', usedOptionCodexes)) === null || _this$getFormattedOpt === void 0 ? void 0 : _this$getFormattedOpt[0].Title);
173
+ return item.Name == partListArticle.name && item.ArticleNr == partListArticle.configArticleCodex && ((_item$FormattedOption = item.FormattedOptions) === null || _item$FormattedOption === void 0 ? void 0 : _item$FormattedOption[0]) && ((_item$FormattedOption2 = item.FormattedOptions) === null || _item$FormattedOption2 === void 0 ? void 0 : _item$FormattedOption2[0].Title) == ((_this$getFormattedOpt = _this.getFormattedOptions(partListArticle, optionArticle, [], '', usedOptionCodexes)) === null || _this$getFormattedOpt === void 0 ? void 0 : _this$getFormattedOpt[0].Title);
145
174
  });
175
+ var unitPrice = index.summaryHandlerInstance.getPartlistUnitPrice(partListArticle);
146
176
  if (fountEntry) {
147
177
  fountEntry.Quantity = fountEntry.Quantity + partListArticle.quantity;
148
- fountEntry.FormattedPrice = DivaUtils__default["default"].formatPrice(partListArticle.price * fountEntry.Quantity);
178
+ fountEntry.FormattedPrice = DivaUtils__default["default"].formatPrice(unitPrice * fountEntry.Quantity);
149
179
  } else {
150
180
  var colorCodices = [];
151
181
  if (tabGroup && tabGroup !== 'Aktion' /* Aktion delete in 2024 */ && tabGroup !== 'BOX_AF_PARIS' || firstItem) {
@@ -154,14 +184,14 @@ var StandardWWSHandler = /*#__PURE__*/function () {
154
184
  finalPosNr = _this$getFinalPosNr.finalPosNr,
155
185
  newPosNrCount = _this$getFinalPosNr.newPosNrCount;
156
186
  posNrCount = newPosNrCount;
157
- var formattedOptions = _this.getFormattedOptions(partListArticle, article, colorCodices, finalPosNr, usedOptionCodexes);
187
+ var formattedOptions = _this.getFormattedOptions(partListArticle, optionArticle, colorCodices, finalPosNr, usedOptionCodexes);
158
188
  partListOrderLines.push({
159
189
  ArticleNr: (_partListArticle$conf = partListArticle.configArticleCodex) !== null && _partListArticle$conf !== void 0 && _partListArticle$conf.startsWith('HIDE_CODEX') ? '' : (_partListArticle$conf2 = partListArticle.configArticleCodex) !== null && _partListArticle$conf2 !== void 0 ? _partListArticle$conf2 : partListArticle.articleCodex,
160
190
  ColorCodices: colorCodices,
161
191
  FormattedOptions: formattedOptions,
162
- FormattedPrice: DivaUtils__default["default"].formatPrice(partListArticle.price * partListArticle.quantity),
192
+ FormattedPrice: DivaUtils__default["default"].formatPrice(unitPrice * partListArticle.quantity),
163
193
  PosNr: finalPosNr,
164
- Price: typeof partListArticle.price === 'number' ? partListArticle.price : parseFloat(partListArticle.price),
194
+ Price: unitPrice,
165
195
  Quantity: partListArticle.quantity,
166
196
  TabGroup: tabGroup !== null && tabGroup !== void 0 ? tabGroup : ' ',
167
197
  Name: partListArticle.name,
@@ -173,9 +203,9 @@ var StandardWWSHandler = /*#__PURE__*/function () {
173
203
  formattedOptions: [],
174
204
  ArticleNr: (_partListArticle$conf3 = partListArticle.configArticleCodex) !== null && _partListArticle$conf3 !== void 0 ? _partListArticle$conf3 : partListArticle.articleCodex,
175
205
  ColorCodices: [],
176
- FormattedPrice: DivaUtils__default["default"].formatPrice(partListArticle.price * partListArticle.quantity),
206
+ FormattedPrice: DivaUtils__default["default"].formatPrice(unitPrice * partListArticle.quantity),
177
207
  PosNr: group.posNr + '.00',
178
- Price: partListArticle.price,
208
+ Price: unitPrice,
179
209
  Quantity: partListArticle.quantity,
180
210
  TabGroup: 'SetArtikel',
181
211
  Name: (_basket$SetName = basket.SetName) !== null && _basket$SetName !== void 0 ? _basket$SetName : partListArticle.name
@@ -184,11 +214,8 @@ var StandardWWSHandler = /*#__PURE__*/function () {
184
214
  }
185
215
  };
186
216
  for (var j = 0; j < group.partlistArticles.length; j++) {
187
- _loop4();
217
+ _loop2();
188
218
  }
189
- };
190
- for (var _i = 0; _i < groupedPartlistArticles.length; _i++) {
191
- _loop2();
192
219
  }
193
220
  for (var _i2 = 0; _i2 < partListOrderLines.length; _i2++) {
194
221
  if (partListOrderLines[_i2].TabGroup && !partListGroups.includes(partListOrderLines[_i2].TabGroup)) {
@@ -199,7 +226,7 @@ var StandardWWSHandler = /*#__PURE__*/function () {
199
226
  var partListOrderLinesSorted = [];
200
227
  var _loop3 = function _loop3() {
201
228
  var _DivaSummaryHandler$g;
202
- var p = (_DivaSummaryHandler$g = index.summaryHandlerInstance.getTabgroupByOptionCodex(pos[_i3], Object.values(articles))) !== null && _DivaSummaryHandler$g !== void 0 ? _DivaSummaryHandler$g : pos[_i3];
229
+ var p = (_DivaSummaryHandler$g = index.summaryHandlerInstance.getTabgroupByOptionCodex(pos[_i3], tabGroupLookupArticles)) !== null && _DivaSummaryHandler$g !== void 0 ? _DivaSummaryHandler$g : pos[_i3];
203
230
  while (partListOrderLines.find(function (orderline) {
204
231
  return orderline.TabGroup === p;
205
232
  })) {
@@ -226,11 +253,26 @@ var StandardWWSHandler = /*#__PURE__*/function () {
226
253
  return posA - posB;
227
254
  });
228
255
  if (firstItem) partListOrderLines.unshift(firstItem);
256
+ this.markMainColor();
229
257
  return {
230
258
  PartListOrderLines: partListOrderLines,
231
259
  PartListGroups: partListGroups
232
260
  };
233
261
  }
262
+
263
+ /**
264
+ * The first emitted option flagged with IS_MAIN_COLOR is the main color of the part list; without one, the first emitted
265
+ * OPTBE_BOX option (API2 fallback) is. Decided after all lines exist, so only options that really appear can be chosen.
266
+ */
267
+ }, {
268
+ key: "markMainColor",
269
+ value: function markMainColor() {
270
+ var _this$mainColorCandid;
271
+ var mainColor = (_this$mainColorCandid = this.mainColorCandidates.find(function (candidate) {
272
+ return candidate.explicit;
273
+ })) !== null && _this$mainColorCandid !== void 0 ? _this$mainColorCandid : this.mainColorCandidates[0];
274
+ if (mainColor) mainColor.option.IsMainColor = true;
275
+ }
234
276
  }, {
235
277
  key: "getFinalPosNr",
236
278
  value: function getFinalPosNr(group, posNrCount, partListArticle, firstItem) {
@@ -239,7 +281,8 @@ var StandardWWSHandler = /*#__PURE__*/function () {
239
281
  //betriebsanleitung soll diese PosNr haben
240
282
  finalPosNr = '1.99';
241
283
  } else if (group.partlistArticles.length > 1) {
242
- finalPosNr = (group.posNr + Number((posNrCount / 100).toFixed(2))).toString();
284
+ // string formatting: float arithmetic yields "1.1" for the 10th and "1.1400000000000001" for the 14th position
285
+ finalPosNr = "".concat(group.posNr, ".").concat(String(posNrCount).padStart(2, '0'));
243
286
  posNrCount++;
244
287
  } else {
245
288
  finalPosNr = (group.posNr + '.00').toString();
@@ -257,14 +300,27 @@ var StandardWWSHandler = /*#__PURE__*/function () {
257
300
  for (var i = 0; i < groupedPartlistArticles.length; i++) {
258
301
  var partlistArticlesSorted = [];
259
302
  var article = groupedPartlistArticles[i];
303
+ var lookupArticles = [article.article];
304
+ var _iterator2 = _createForOfIteratorHelper(article.partlistArticles),
305
+ _step2;
306
+ try {
307
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
308
+ var entry = _step2.value;
309
+ if (!lookupArticles.includes(entry.optionArticle)) lookupArticles.push(entry.optionArticle);
310
+ }
311
+ } catch (err) {
312
+ _iterator2.e(err);
313
+ } finally {
314
+ _iterator2.f();
315
+ }
260
316
  for (var j = 0; j < pos.length; j++) {
261
317
  var _DivaSummaryHandler$g2;
262
318
  var indexesOf = [];
263
- var p = (_DivaSummaryHandler$g2 = index.summaryHandlerInstance.getTabgroupByOptionCodex(pos[j], [article.article])) !== null && _DivaSummaryHandler$g2 !== void 0 ? _DivaSummaryHandler$g2 : pos[j];
319
+ var p = (_DivaSummaryHandler$g2 = index.summaryHandlerInstance.getTabgroupByOptionCodex(pos[j], lookupArticles)) !== null && _DivaSummaryHandler$g2 !== void 0 ? _DivaSummaryHandler$g2 : pos[j];
264
320
  for (var m = 0; m < article.partlistArticles.length; m++) {
265
- var _article$article$getA, _article$article$getA2;
321
+ var _partListArticle$opti, _partListArticle$opti2;
266
322
  var partListArticle = article.partlistArticles[m];
267
- var tabGroup = (_article$article$getA = (_article$article$getA2 = article.article.getArticleOptionState((!partListArticle.article.CatalogData.isIDMFormat ? 'OPT' : '') + partListArticle.tabGroup)) === null || _article$article$getA2 === void 0 ? void 0 : _article$article$getA2.optionTabGroup) !== null && _article$article$getA !== void 0 ? _article$article$getA : partListArticle.tabGroup;
323
+ var tabGroup = (_partListArticle$opti = (_partListArticle$opti2 = partListArticle.optionArticle.getArticleOptionState((!partListArticle.article.CatalogData.isIDMFormat ? 'OPT' : '') + partListArticle.tabGroup)) === null || _partListArticle$opti2 === void 0 ? void 0 : _partListArticle$opti2.optionTabGroup) !== null && _partListArticle$opti !== void 0 ? _partListArticle$opti : partListArticle.tabGroup;
268
324
  if (tabGroup == p) {
269
325
  indexesOf.push(m);
270
326
  }
@@ -288,26 +344,32 @@ var StandardWWSHandler = /*#__PURE__*/function () {
288
344
  var optionStates = index.summaryHandlerInstance.getOptionCodexesOfTabGroupForSummary(article, partListArticle, usedOptionCodexes, finalPosNr == '');
289
345
  for (var i = 0; i < optionStates.length; i++) {
290
346
  var optionState = optionStates[i];
291
- if (optionState.optionCodex.startsWith('OPTBE_') || optionState.optionCodex.startsWith('OPTAB_') || optionState.option.addToWWS) {
347
+ if (optionState.optionCodex.startsWith('OPTBE_') || optionState.optionCodex.startsWith('OPTAB_') || optionState.option.addToWWS || optionState.option.isMainColor) {
292
348
  var _optionState$vCodex;
293
349
  var coloCodex = (_optionState$vCodex = optionState.vCodex) !== null && _optionState$vCodex !== void 0 ? _optionState$vCodex : optionState.valCodex;
294
350
  if (coloCodex) {
295
351
  var _optionState$val$grou, _optionState$val, _article$getMergesToO;
296
352
  colorCodices.push(coloCodex);
297
- var isMainColor = false;
298
- if (!this.mainColorFound && optionState.optionCodex == MAIN_COLOR_OPTIONCODEX) {
299
- isMainColor = true;
300
- this.mainColorFound = true;
301
- }
302
353
  //IDM has no group name on the value itself: there the Bezugsgruppe is its own feature, merged into this one only for the view
303
354
  var groupName = (_optionState$val$grou = (_optionState$val = optionState.val) === null || _optionState$val === void 0 ? void 0 : _optionState$val.groupName) !== null && _optionState$val$grou !== void 0 ? _optionState$val$grou : (_article$getMergesToO = article.getMergesToOPGParentOps(optionState.optionCodex)) === null || _article$getMergesToO === void 0 ? void 0 : _article$getMergesToO.valName;
304
- formattedOptions.push({
355
+ // API2 carries the fabric number as VCodex; IDM values have none, there the option key is the fabric number ("0_227_1" → "0-227-1")
356
+ var codex = optionState.vCodex && optionState.vCodex !== optionState.valName ? optionState.vCodex : article.CatalogData.isIDMFormat ? index.summaryHandlerInstance.getDisplayCodex(optionState) : '';
357
+ var formattedOption = {
305
358
  PosNr: finalPosNr,
306
359
  Text: (groupName ? groupName + ' ' : '') + optionState.valName,
307
360
  Title: optionState.optionOrigName,
308
- Codex: optionState.vCodex && optionState.vCodex !== optionState.valName ? optionState.vCodex : '',
309
- IsMainColor: isMainColor
310
- });
361
+ Codex: codex,
362
+ IsMainColor: false
363
+ };
364
+ formattedOptions.push(formattedOption);
365
+ // only options of real lines can become the main color; the dedupe probe (empty PosNr) discards its result
366
+ var explicit = !!optionState.option.isMainColor;
367
+ if (finalPosNr !== '' && (explicit || optionState.optionCodex == MAIN_COLOR_OPTIONCODEX)) {
368
+ this.mainColorCandidates.push({
369
+ option: formattedOption,
370
+ explicit: explicit
371
+ });
372
+ }
311
373
  }
312
374
  }
313
375
  }