@crystaldesign/web-planner-logic 26.13.0-beta.13 → 26.13.0-beta.15

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 (40) hide show
  1. package/build/cjs/{DivaBoxPlanner-5064ca34.js → DivaBoxPlanner-be749bb5.js} +2 -2
  2. package/build/cjs/{DivaStandardPlanner-6ef85473.js → DivaStandardPlanner-fc05728f.js} +2 -2
  3. package/build/cjs/{DoorPlanner-6c243f25.js → DoorPlanner-a862ebe1.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-b67b054f.js → Host3DSignalR-05fb621f.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-d1923d69.js → LiviqueWWSHandler-e78d2805.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-06401ac4.js → PfisterWWSHandler-af7f8c21.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-6fdc6c14.js → PlannerHandler2D-24a840c9.js} +1 -1
  8. package/build/cjs/{SeriousBasketHandler-61cdfc93.js → SeriousBasketHandler-37c085b7.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-0a786abd.js → ShelfPlanner-8eeb10d6.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-0bc63ba7.js → StandardWWSHandler-a0b03684.js} +1 -1
  11. package/build/cjs/{index-7e845075.js → index-411c6d20.js} +151 -74
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-ced0207c.js → DivaBoxPlanner-e86a9c78.js} +2 -2
  14. package/build/esm/{DivaStandardPlanner-00a9a468.js → DivaStandardPlanner-34cb94ca.js} +2 -2
  15. package/build/esm/{DoorPlanner-eae7b3c6.js → DoorPlanner-34fcedfe.js} +1 -1
  16. package/build/esm/{Host3DSignalR-4c979825.js → Host3DSignalR-06a154e9.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-24ce43fd.js → LiviqueWWSHandler-08e0fd3f.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-3e7a9cac.js → PfisterWWSHandler-d5129b6b.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-56b913f2.js → PlannerHandler2D-fa2f950e.js} +1 -1
  20. package/build/esm/{SeriousBasketHandler-ad860f62.js → SeriousBasketHandler-fadb9e59.js} +1 -1
  21. package/build/esm/{ShelfPlanner-29a4116c.js → ShelfPlanner-4d988daa.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-deb3d639.js → StandardWWSHandler-1b06b955.js} +1 -1
  23. package/build/esm/{index-c1e29f6c.js → index-79c27c8c.js} +151 -74
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts +6 -2
  26. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +1 -1
  28. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +19 -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/mandatoryAccessories.d.ts +3 -1
  32. package/build/types/web-planner-logic/src/logic/Article/mandatoryAccessories.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +2 -0
  34. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +4 -0
  36. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  38. package/build/types/web-planner-logic/src/test/orderNumberTemplates.test.d.ts +2 -0
  39. package/build/types/web-planner-logic/src/test/orderNumberTemplates.test.d.ts.map +1 -0
  40. package/package.json +3 -3
@@ -5,11 +5,11 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-7e845075.js');
8
+ var index = require('./index-411c6d20.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
11
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
- var PlannerHandler2D = require('./PlannerHandler2D-6fdc6c14.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-24a840c9.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@babel/runtime/helpers/typeof');
@@ -6,10 +6,10 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
6
6
  var _createClass = require('@babel/runtime/helpers/createClass');
7
7
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
8
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
9
- var index = require('./index-7e845075.js');
9
+ var index = require('./index-411c6d20.js');
10
10
  var DivaUtils = require('@crystaldesign/diva-utils');
11
11
  var planner2dCore = require('@crystaldesign/planner-2d-core');
12
- var PlannerHandler2D = require('./PlannerHandler2D-6fdc6c14.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-24a840c9.js');
13
13
  require('@babel/runtime/helpers/slicedToArray');
14
14
  require('@babel/runtime/helpers/objectWithoutProperties');
15
15
  require('axios');
@@ -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
- require('./index-7e845075.js');
6
+ require('./index-411c6d20.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-7e845075.js');
8
+ var index = require('./index-411c6d20.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var signalr = require('@microsoft/signalr');
11
11
  var io = require('socket.io-client');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-7e845075.js');
5
+ require('./index-411c6d20.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- var index = require('./index-7e845075.js');
5
+ var index = require('./index-411c6d20.js');
6
6
  var basketModel = require('@crystaldesign/basket-model');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-7e845075.js');
8
+ var index = require('./index-411c6d20.js');
9
9
  var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
10
10
  var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
11
11
  var _get = require('@babel/runtime/helpers/get');
@@ -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-7e845075.js');
6
+ var index = require('./index-411c6d20.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -6,7 +6,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
6
6
  var _createClass = require('@babel/runtime/helpers/createClass');
7
7
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
8
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
9
- var index = require('./index-7e845075.js');
9
+ var index = require('./index-411c6d20.js');
10
10
  var DivaUtils = require('@crystaldesign/diva-utils');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-7e845075.js');
5
+ require('./index-411c6d20.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');
@@ -20837,26 +20837,26 @@ function _loadMoreFromIDMArticles() {
20837
20837
  featureClasses,
20838
20838
  priceFeatureGroups,
20839
20839
  decisions,
20840
- _i5,
20840
+ _i6,
20841
20841
  _decisions$map,
20842
20842
  loadedIds,
20843
20843
  missingIds,
20844
- _i6,
20844
+ _i7,
20845
20845
  _iterator6,
20846
20846
  _step6,
20847
20847
  _loop7,
20848
- _i7,
20848
+ _i8,
20849
20849
  _catalogArticleData$d2,
20850
20850
  catalogArticleData,
20851
20851
  toLoadFeatures,
20852
20852
  features,
20853
20853
  _loop4,
20854
- _i8,
20854
+ _i9,
20855
20855
  _iterator7,
20856
20856
  _step7,
20857
20857
  _loop8,
20858
20858
  _loop6,
20859
- _i9,
20859
+ _i10,
20860
20860
  _args8 = arguments;
20861
20861
  return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context8) {
20862
20862
  while (1) switch (_context8.prev = _context8.next) {
@@ -20931,8 +20931,8 @@ function _loadMoreFromIDMArticles() {
20931
20931
  priceFeatureGroups = _yield$Promise$all2[1];
20932
20932
  decisions = _yield$Promise$all2[2];
20933
20933
  if (decisions) {
20934
- for (_i5 = 0; _i5 < decisions.length; _i5++) {
20935
- catalogData.loadedDecisions.push(initializeDecision(decisions[_i5], catalogData.idmOptionGroups));
20934
+ for (_i6 = 0; _i6 < decisions.length; _i6++) {
20935
+ catalogData.loadedDecisions.push(initializeDecision(decisions[_i6], catalogData.idmOptionGroups));
20936
20936
  }
20937
20937
  }
20938
20938
  if (!(toLoadDecisionIds.length !== 0 && toLoadDecisionIds.length != (decisions === null || decisions === void 0 ? void 0 : decisions.length))) {
@@ -20951,8 +20951,8 @@ function _loadMoreFromIDMArticles() {
20951
20951
  return loadDecisionsReferencedByActions(set, catalogData);
20952
20952
  case 34:
20953
20953
  if (priceFeatureGroups) {
20954
- for (_i6 = 0; _i6 < priceFeatureGroups.length; _i6++) {
20955
- catalogData.loadedPriceFeaturegroups.push(initializePriceFeatureGroups(priceFeatureGroups[_i6], catalogData.idmOptionGroups));
20954
+ for (_i7 = 0; _i7 < priceFeatureGroups.length; _i7++) {
20955
+ catalogData.loadedPriceFeaturegroups.push(initializePriceFeatureGroups(priceFeatureGroups[_i7], catalogData.idmOptionGroups));
20956
20956
  }
20957
20957
  }
20958
20958
  _iterator6 = _createForOfIteratorHelper$l(toLoadPFGroups);
@@ -21012,8 +21012,8 @@ function _loadMoreFromIDMArticles() {
21012
21012
  _iterator6.f();
21013
21013
  return _context8.finish(50);
21014
21014
  case 53:
21015
- for (_i7 = 0; _i7 < catalogArticleDatas.length; _i7++) {
21016
- catalogArticleData = catalogArticleDatas[_i7];
21015
+ for (_i8 = 0; _i8 < catalogArticleDatas.length; _i8++) {
21016
+ catalogArticleData = catalogArticleDatas[_i8];
21017
21017
  catalogArticleData.articleIDMDecisions = sortDecisions(catalogData.getDecisionsByNo(_toConsumableArray__default["default"](new Set([].concat(_toConsumableArray__default["default"](catalogData.globalDecisions.map(function (g) {
21018
21018
  return g.decisionNo;
21019
21019
  })), _toConsumableArray__default["default"](catalogData.serieDecisionRefs), _toConsumableArray__default["default"]((_catalogArticleData$d2 = catalogArticleData.decisionsRefs) !== null && _catalogArticleData$d2 !== void 0 ? _catalogArticleData$d2 : []))))));
@@ -21035,7 +21035,7 @@ function _loadMoreFromIDMArticles() {
21035
21035
  return _regeneratorRuntime__default["default"].wrap(function _loop4$(_context3) {
21036
21036
  while (1) switch (_context3.prev = _context3.next) {
21037
21037
  case 0:
21038
- feature = features[_i8];
21038
+ feature = features[_i9];
21039
21039
  insertIndex = catalogData.loadedFeatures.length;
21040
21040
  k = 0;
21041
21041
  case 3:
@@ -21109,15 +21109,15 @@ function _loadMoreFromIDMArticles() {
21109
21109
  }
21110
21110
  }, _loop4);
21111
21111
  });
21112
- _i8 = 0;
21112
+ _i9 = 0;
21113
21113
  case 62:
21114
- if (!(_i8 < features.length)) {
21114
+ if (!(_i9 < features.length)) {
21115
21115
  _context8.next = 67;
21116
21116
  break;
21117
21117
  }
21118
21118
  return _context8.delegateYield(_loop4(), "t3", 64);
21119
21119
  case 64:
21120
- _i8++;
21120
+ _i9++;
21121
21121
  _context8.next = 62;
21122
21122
  break;
21123
21123
  case 67:
@@ -21184,7 +21184,7 @@ function _loadMoreFromIDMArticles() {
21184
21184
  return _regeneratorRuntime__default["default"].wrap(function _loop6$(_context7) {
21185
21185
  while (1) switch (_context7.prev = _context7.next) {
21186
21186
  case 0:
21187
- catalogArticleData = catalogArticleDatas[_i9]; // an item without a feature class has no features of its own to initialize
21187
+ catalogArticleData = catalogArticleDatas[_i10]; // an item without a feature class has no features of its own to initialize
21188
21188
  if (!(catalogArticleData.featureClassRefNo === undefined)) {
21189
21189
  _context7.next = 3;
21190
21190
  break;
@@ -21210,9 +21210,9 @@ function _loadMoreFromIDMArticles() {
21210
21210
  }
21211
21211
  }, _loop6);
21212
21212
  });
21213
- _i9 = 0;
21213
+ _i10 = 0;
21214
21214
  case 87:
21215
- if (!(_i9 < catalogArticleDatas.length)) {
21215
+ if (!(_i10 < catalogArticleDatas.length)) {
21216
21216
  _context8.next = 94;
21217
21217
  break;
21218
21218
  }
@@ -21224,7 +21224,7 @@ function _loadMoreFromIDMArticles() {
21224
21224
  }
21225
21225
  return _context8.abrupt("continue", 91);
21226
21226
  case 91:
21227
- _i9++;
21227
+ _i10++;
21228
21228
  _context8.next = 87;
21229
21229
  break;
21230
21230
  case 94:
@@ -21394,27 +21394,35 @@ function initIDMArticleRelations(item, catalogArticleData, catalog) {
21394
21394
  var _a$accessory$sequence, _b$accessory$sequence;
21395
21395
  return ((_a$accessory$sequence = a.accessory.sequenceNo) !== null && _a$accessory$sequence !== void 0 ? _a$accessory$sequence : 0) - ((_b$accessory$sequence = b.accessory.sequenceNo) !== null && _b$accessory$sequence !== void 0 ? _b$accessory$sequence : 0);
21396
21396
  });
21397
+ // counted over the offered accessories only: a set whose alternatives are hidden or missing leaves its last one without a choice
21398
+ var mandatorySetSizes = new Map();
21397
21399
  for (var _i = 0, _accessories = accessories; _i < _accessories.length; _i++) {
21398
- var _ref2$mandatoryQuanti, _accessory$catalogPla, _accessory$catalogPla2, _accessory$catalogPla3, _accessory$catalogPla4, _accessory$catalogPla5, _accessory$catalogPla6, _accessory$catalogPla7, _accessory$catalogPla8, _accessory$catalogPla9, _accessory$catalogPla10, _accessory$catalogPla11;
21399
- var _accessories$_i = _accessories[_i],
21400
- _ref2 = _accessories$_i.ref,
21401
- _accessory = _accessories$_i.accessory,
21402
- _refCatalog = _accessories$_i.refCatalog;
21403
- // The ITEM_REF quantity is a suggestion; only a mandatory item's quantity binds the planning (IDM OPTIONAL_QUANTITY doc).
21404
- var bindingQuantity = _ref2.mandatorySetNo !== undefined ? Math.max(1, (_ref2$mandatoryQuanti = _ref2.mandatoryQuantity) !== null && _ref2$mandatoryQuanti !== void 0 ? _ref2$mandatoryQuanti : 1) : 0;
21400
+ var _mandatorySetSizes$ge;
21401
+ var _ref2 = _accessories[_i].ref;
21402
+ if (_ref2.mandatorySetNo !== undefined) mandatorySetSizes.set(_ref2.mandatorySetNo, ((_mandatorySetSizes$ge = mandatorySetSizes.get(_ref2.mandatorySetNo)) !== null && _mandatorySetSizes$ge !== void 0 ? _mandatorySetSizes$ge : 0) + 1);
21403
+ }
21404
+ for (var _i2 = 0, _accessories2 = accessories; _i2 < _accessories2.length; _i2++) {
21405
+ var _ref3$mandatoryQuanti, _accessory$catalogPla, _accessory$catalogPla2, _accessory$catalogPla3, _accessory$catalogPla4, _accessory$catalogPla5, _accessory$catalogPla6, _accessory$catalogPla7, _accessory$catalogPla8, _accessory$catalogPla9, _accessory$catalogPla10, _accessory$catalogPla11;
21406
+ var _accessories2$_i = _accessories2[_i2],
21407
+ _ref3 = _accessories2$_i.ref,
21408
+ _accessory = _accessories2$_i.accessory,
21409
+ _refCatalog = _accessories2$_i.refCatalog;
21410
+ // IDM knows no cap: a mandatory item's quantity binds as the minimum, the optional quantity only suggests (IDM OPTIONAL_QUANTITY doc).
21411
+ var bindingQuantity = _ref3.mandatorySetNo !== undefined ? Math.max(1, (_ref3$mandatoryQuanti = _ref3.mandatoryQuantity) !== null && _ref3$mandatoryQuanti !== void 0 ? _ref3$mandatoryQuanti : 1) : 0;
21405
21412
  catalogArticle.articleRelations.push({
21406
21413
  name: _accessory.name,
21407
21414
  actQuantity: 0,
21408
21415
  minQuantity: bindingQuantity,
21409
- // 0 = no cap, like a diva relation without a MaxQuantity
21410
- maxQuantity: bindingQuantity,
21411
- mandatorySetNo: _ref2.mandatorySetNo,
21412
- suggestedQuantity: _ref2.mandatorySetNo === undefined ? _ref2.optionalQuantity : undefined,
21416
+ maxQuantity: 0,
21417
+ isIDMRelation: true,
21418
+ mandatorySetNo: _ref3.mandatorySetNo,
21419
+ isSoleMandatory: _ref3.mandatorySetNo !== undefined && mandatorySetSizes.get(_ref3.mandatorySetNo) === 1,
21420
+ suggestedQuantity: _ref3.optionalQuantity,
21413
21421
  price: !catalog.dontShowBasePrice ? _accessory.articlePrice : 0,
21414
- articleCodex: _ref2.typeNo,
21415
- catalogCodex: _ref2.serieNo,
21422
+ articleCodex: _ref3.typeNo,
21423
+ catalogCodex: _ref3.serieNo,
21416
21424
  longDescription: _accessory.longDescription,
21417
- positionGroupNr: _ref2.setNo,
21425
+ positionGroupNr: _ref3.setNo,
21418
21426
  typeNr: _accessory.typeNr,
21419
21427
  image: _accessory.image ? _refCatalog.getCatImageURL(_accessory.image, '') : undefined,
21420
21428
  //accessoires are only PlannerElements if the have an SVG with dockingpossibilities (AVO/ AVU/ AVC)
@@ -21534,13 +21542,13 @@ function _fillMissingDockingPointCounts() {
21534
21542
  };
21535
21543
  _context11.next = 11;
21536
21544
  return Promise.all(_toConsumableArray__default["default"](accessories).map(/*#__PURE__*/function () {
21537
- var _ref5 = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(_ref4) {
21545
+ var _ref6 = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(_ref5) {
21538
21546
  var _accessory$svgs, _accessory$catalogPla12;
21539
- var _ref6, accessory, accessoryCatalog, svgs, uncounted, counts, topCounts, paletteView;
21547
+ var _ref7, accessory, accessoryCatalog, svgs, uncounted, counts, topCounts, paletteView;
21540
21548
  return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context10) {
21541
21549
  while (1) switch (_context10.prev = _context10.next) {
21542
21550
  case 0:
21543
- _ref6 = _slicedToArray__default["default"](_ref4, 2), accessory = _ref6[0], accessoryCatalog = _ref6[1];
21551
+ _ref7 = _slicedToArray__default["default"](_ref5, 2), accessory = _ref7[0], accessoryCatalog = _ref7[1];
21544
21552
  svgs = (_accessory$svgs = accessory.svgs) !== null && _accessory$svgs !== void 0 ? _accessory$svgs : [];
21545
21553
  uncounted = svgs.filter(lacksDockingPointCounts);
21546
21554
  if (uncounted.length) {
@@ -21590,7 +21598,7 @@ function _fillMissingDockingPointCounts() {
21590
21598
  }, _callee4);
21591
21599
  }));
21592
21600
  return function (_x11) {
21593
- return _ref5.apply(this, arguments);
21601
+ return _ref6.apply(this, arguments);
21594
21602
  };
21595
21603
  }()));
21596
21604
  case 11:
@@ -21619,7 +21627,7 @@ var fetchDecisions = function fetchDecisions(set, catalogData, decisionNos) {
21619
21627
  * apply while that action matches. References are followed transitively.
21620
21628
  */
21621
21629
  var loadDecisionsReferencedByActions = /*#__PURE__*/function () {
21622
- var _ref3 = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(set, catalogData) {
21630
+ var _ref4 = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(set, catalogData) {
21623
21631
  var round, toLoad, _iterator3, _step3, _decision$optionCombi, decision, _iterator4, _step4, _combination$projectA, _combination$projectA2, _combination$projectA3, _combination$projectA4, combination, refs, _iterator5, _step5, ref, decisionNo, decisions, i, _decisions$length, stillMissing;
21624
21632
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
21625
21633
  while (1) switch (_context.prev = _context.next) {
@@ -21698,7 +21706,7 @@ var loadDecisionsReferencedByActions = /*#__PURE__*/function () {
21698
21706
  }, _callee);
21699
21707
  }));
21700
21708
  return function loadDecisionsReferencedByActions(_x9, _x10) {
21701
- return _ref3.apply(this, arguments);
21709
+ return _ref4.apply(this, arguments);
21702
21710
  };
21703
21711
  }();
21704
21712
 
@@ -21721,10 +21729,10 @@ var getToLoadDecisionIds = function getToLoadDecisionIds(catalogArticleDatas, ca
21721
21729
  return g.decisionNo;
21722
21730
  })), _toConsumableArray__default["default"](catalogData.serieDecisionRefs), _toConsumableArray__default["default"](allArticleDecisions))));
21723
21731
  var toLoadDecisionIds = [];
21724
- for (var _i2 = 0; _i2 < neededDecisionsIds.length; _i2++) {
21725
- var found = catalogData.getDecisionByNo(neededDecisionsIds[_i2]);
21732
+ for (var _i3 = 0; _i3 < neededDecisionsIds.length; _i3++) {
21733
+ var found = catalogData.getDecisionByNo(neededDecisionsIds[_i3]);
21726
21734
  if (found) ; else {
21727
- toLoadDecisionIds.push(neededDecisionsIds[_i2]);
21735
+ toLoadDecisionIds.push(neededDecisionsIds[_i3]);
21728
21736
  }
21729
21737
  }
21730
21738
  return toLoadDecisionIds;
@@ -21741,18 +21749,18 @@ var getFeatures = function getFeatures(catalogData, featureClasses) {
21741
21749
  var alreadyLoadedFeatures = catalogData.loadedFeatures;
21742
21750
  var toLoadFeatures = [];
21743
21751
  var loadedFeatures = [];
21744
- var _loop = function _loop(_i3) {
21752
+ var _loop = function _loop(_i4) {
21745
21753
  var found = alreadyLoadedFeatures.find(function (f) {
21746
- return f.featureNo == neededFeatures[_i3];
21754
+ return f.featureNo == neededFeatures[_i4];
21747
21755
  });
21748
21756
  if (found) {
21749
21757
  loadedFeatures.push(found);
21750
21758
  } else {
21751
- toLoadFeatures.push(neededFeatures[_i3]);
21759
+ toLoadFeatures.push(neededFeatures[_i4]);
21752
21760
  }
21753
21761
  };
21754
- for (var _i3 = 0; _i3 < neededFeatures.length; _i3++) {
21755
- _loop(_i3);
21762
+ for (var _i4 = 0; _i4 < neededFeatures.length; _i4++) {
21763
+ _loop(_i4);
21756
21764
  }
21757
21765
  LOG$l.debug('features already loaded dont get again from api: ' + loadedFeatures.length);
21758
21766
  return toLoadFeatures;
@@ -21776,10 +21784,10 @@ var getPriceFeatureGroups = function getPriceFeatureGroups(catalogArticleDatas,
21776
21784
  }
21777
21785
  var toLoadPriceFeatureGroups = [];
21778
21786
  neededPriceFeatureGroupNos = _toConsumableArray__default["default"](new Set(neededPriceFeatureGroupNos));
21779
- for (var _i4 = 0; _i4 < neededPriceFeatureGroupNos.length; _i4++) {
21780
- var found = catalogData.getPricefeaturegroup(neededPriceFeatureGroupNos[_i4]);
21787
+ for (var _i5 = 0; _i5 < neededPriceFeatureGroupNos.length; _i5++) {
21788
+ var found = catalogData.getPricefeaturegroup(neededPriceFeatureGroupNos[_i5]);
21781
21789
  if (found) ; else {
21782
- toLoadPriceFeatureGroups.push(neededPriceFeatureGroupNos[_i4]);
21790
+ toLoadPriceFeatureGroups.push(neededPriceFeatureGroupNos[_i5]);
21783
21791
  }
21784
21792
  }
21785
21793
  return toLoadPriceFeatureGroups;
@@ -31709,6 +31717,22 @@ var DivaArticle = /*#__PURE__*/function () {
31709
31717
  set: function set(codex) {
31710
31718
  this.article.configArticleCodex = codex;
31711
31719
  }
31720
+ /**
31721
+ * The order-number templates as authored, before `{…}` substitution. A partlist component carries its
31722
+ * POSITION's retail number (catalog or enricher pack) as both numbers when the position has one; without
31723
+ * it the component's own item numbers apply. A set subRetailArticleNr replaces the retail number in the
31724
+ * order line, so it is the one reported.
31725
+ */
31726
+ }, {
31727
+ key: "orderNumberTemplates",
31728
+ get: function get() {
31729
+ var _this$article$retailA2;
31730
+ return {
31731
+ configArticleCodex: this.article.configArticleCodex,
31732
+ retailArticleNr: this.article.subRetailArticleNr || ((_this$article$retailA2 = this.article.retailArticleNr) !== null && _this$article$retailA2 !== void 0 ? _this$article$retailA2 : this.article.catalogArticle.retailArticleNr),
31733
+ fromPartlistPosition: !!this.isPartListArticle && !!this.article.retailArticleNr
31734
+ };
31735
+ }
31712
31736
  }, {
31713
31737
  key: "diomexArticleCodex",
31714
31738
  get: function get() {
@@ -32884,7 +32908,7 @@ var DivaArticle = /*#__PURE__*/function () {
32884
32908
  break;
32885
32909
  }
32886
32910
  _context.next = 4;
32887
- return Promise.resolve().then(function () { return require('./ShelfPlanner-0a786abd.js'); });
32911
+ return Promise.resolve().then(function () { return require('./ShelfPlanner-8eeb10d6.js'); });
32888
32912
  case 4:
32889
32913
  _yield$import = _context.sent;
32890
32914
  ShelfPlanner = _yield$import["default"];
@@ -33567,6 +33591,35 @@ var DivaArticle = /*#__PURE__*/function () {
33567
33591
  return _this5.resolveTemplateToken(String(expression));
33568
33592
  });
33569
33593
  }
33594
+
33595
+ /**
33596
+ * The `{…}` tokens of `template` that substitute nothing or an error marker in the current configuration —
33597
+ * the part the resolved text silently loses. A comparison token substituting `false` is a value, not a loss.
33598
+ */
33599
+ }, {
33600
+ key: "unresolvedTemplateTokens",
33601
+ value: function unresolvedTemplateTokens(template) {
33602
+ var unresolved = [];
33603
+ var _iterator42 = _createForOfIteratorHelper$e(template.matchAll(/\{(.*?)\}/g)),
33604
+ _step42;
33605
+ try {
33606
+ for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
33607
+ var _step42$value = _slicedToArray__default["default"](_step42.value, 2),
33608
+ token = _step42$value[0],
33609
+ expression = _step42$value[1];
33610
+ var resolved = this.resolveTemplateToken(String(expression));
33611
+ if (resolved === '' || resolved.startsWith('___')) unresolved.push({
33612
+ token: token,
33613
+ resolved: resolved
33614
+ });
33615
+ }
33616
+ } catch (err) {
33617
+ _iterator42.e(err);
33618
+ } finally {
33619
+ _iterator42.f();
33620
+ }
33621
+ return unresolved;
33622
+ }
33570
33623
  }, {
33571
33624
  key: "resolveTemplateToken",
33572
33625
  value: /** Resolves ONE `{…}` template token to its replacement text ('' when the value is absent). */
@@ -33689,18 +33742,18 @@ var DivaArticle = /*#__PURE__*/function () {
33689
33742
  value: function cloneArticle(set) {
33690
33743
  var clonedArticle = new DivaArticle(set, this.basketId, _objectSpread$j({}, this.article), this.article.catalogArticle, set.CatalogData);
33691
33744
  clonedArticle.articleOptionStatesData = new Map();
33692
- var _iterator42 = _createForOfIteratorHelper$e(this.articleOptionStates.values()),
33693
- _step42;
33745
+ var _iterator43 = _createForOfIteratorHelper$e(this.articleOptionStates.values()),
33746
+ _step43;
33694
33747
  try {
33695
- for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
33696
- var ops = _step42.value;
33748
+ for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {
33749
+ var ops = _step43.value;
33697
33750
  var clonedOps = ops.cloneOptionState(clonedArticle.getIsConfigSingle);
33698
33751
  clonedArticle.articleOptionStatesData.set(ops.optionCodex, clonedOps);
33699
33752
  }
33700
33753
  } catch (err) {
33701
- _iterator42.e(err);
33754
+ _iterator43.e(err);
33702
33755
  } finally {
33703
- _iterator42.f();
33756
+ _iterator43.f();
33704
33757
  }
33705
33758
  clonedArticle.initEngine();
33706
33759
  clonedArticle.hasDecisionsInitialized = true;
@@ -41577,7 +41630,7 @@ var DivaSet = /*#__PURE__*/function () {
41577
41630
  break;
41578
41631
  }
41579
41632
  _context5.next = 3;
41580
- return Promise.resolve().then(function () { return require('./DoorPlanner-6c243f25.js'); });
41633
+ return Promise.resolve().then(function () { return require('./DoorPlanner-a862ebe1.js'); });
41581
41634
  case 3:
41582
41635
  _yield$import = _context5.sent;
41583
41636
  DoorPlanner = _yield$import["default"];
@@ -43900,8 +43953,15 @@ var ArtifactGenerationError = /*#__PURE__*/function (_Error) {
43900
43953
  function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
43901
43954
  function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
43902
43955
  function _arrayLikeToArray$6(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; }
43903
- /** Per IDM mandatory set with nothing planned yet: its only accessory (the spec selects it automatically) or the first of several. */
43956
+ /** The sole accessory of every IDM mandatory set that is not planned yet (the spec selects it automatically); a set of several waits for the customer's choice. */
43904
43957
  function mandatoryAccessoriesToPlan(relations, isPlanned) {
43958
+ return relations.filter(function (relation) {
43959
+ return relation.isSoleMandatory && !isPlanned(relation);
43960
+ });
43961
+ }
43962
+
43963
+ /** True when an IDM mandatory set has no planned accessory - at least one of each set has to be chosen. */
43964
+ function hasMandatorySetWithoutAccessory(relations, isPlanned) {
43905
43965
  var bySet = new Map();
43906
43966
  var _iterator = _createForOfIteratorHelper$6(relations),
43907
43967
  _step;
@@ -43917,10 +43977,8 @@ function mandatoryAccessoriesToPlan(relations, isPlanned) {
43917
43977
  } finally {
43918
43978
  _iterator.f();
43919
43979
  }
43920
- return _toConsumableArray__default["default"](bySet.values()).filter(function (members) {
43980
+ return _toConsumableArray__default["default"](bySet.values()).some(function (members) {
43921
43981
  return !members.some(isPlanned);
43922
- }).map(function (members) {
43923
- return members[0];
43924
43982
  });
43925
43983
  }
43926
43984
 
@@ -45118,7 +45176,19 @@ var DivaSetHandler = /*#__PURE__*/function () {
45118
45176
  return _planMandatoryAccessoires.apply(this, arguments);
45119
45177
  }
45120
45178
  return planMandatoryAccessoires;
45121
- }()
45179
+ }() /** IDM: true when a main article of the sets has a mandatory Zusatzartikel set without any planned accessory. */
45180
+ }, {
45181
+ key: "hasMissingMandatoryAccessories",
45182
+ value: function hasMissingMandatoryAccessories(sets) {
45183
+ return Object.values(sets).some(function (set) {
45184
+ return Object.values(set.getDivaArticles()).some(function (article) {
45185
+ var _article$catalogArtic2;
45186
+ return !article.relatedToBasketId && hasMandatorySetWithoutAccessory((_article$catalogArtic2 = article.catalogArticle.articleRelations) !== null && _article$catalogArtic2 !== void 0 ? _article$catalogArtic2 : [], function (r) {
45187
+ return article.curQunatityOfAccessoire(r.articleCodex, r.catalogCodex) > 0;
45188
+ });
45189
+ });
45190
+ });
45191
+ }
45122
45192
  }, {
45123
45193
  key: "updateAccessoireQuantity",
45124
45194
  value: function () {
@@ -46094,7 +46164,7 @@ var DivaSetHandler = /*#__PURE__*/function () {
46094
46164
  for (var key in divaArticles) {
46095
46165
  var article = divaArticles[key];
46096
46166
  if (article.plannerData) {
46097
- var _article$typeNr, _article$imageUrl, _article$catalogArtic2, _article$catalogArtic3, _article$catalogArtic4, _article$actPlannerDa, _article$actPlannerDa2, _article$posNr;
46167
+ var _article$typeNr, _article$imageUrl, _article$catalogArtic3, _article$catalogArtic4, _article$catalogArtic5, _article$actPlannerDa, _article$actPlannerDa2, _article$posNr;
46098
46168
  plannedElements.push({
46099
46169
  setId: set.getSetId(),
46100
46170
  basketId: article.basketId,
@@ -46106,13 +46176,13 @@ var DivaSetHandler = /*#__PURE__*/function () {
46106
46176
  typeNr: (_article$typeNr = article.typeNr) !== null && _article$typeNr !== void 0 ? _article$typeNr : '',
46107
46177
  image: (_article$imageUrl = article.imageUrl) !== null && _article$imageUrl !== void 0 ? _article$imageUrl : '',
46108
46178
  price: article.price,
46109
- contentItemId: (_article$catalogArtic2 = article.catalogArticle) === null || _article$catalogArtic2 === void 0 ? void 0 : _article$catalogArtic2.contentItemId,
46110
- groupContentItemId: (_article$catalogArtic3 = article.catalogArticle) === null || _article$catalogArtic3 === void 0 ? void 0 : _article$catalogArtic3.groupContentItemId,
46179
+ contentItemId: (_article$catalogArtic3 = article.catalogArticle) === null || _article$catalogArtic3 === void 0 ? void 0 : _article$catalogArtic3.contentItemId,
46180
+ groupContentItemId: (_article$catalogArtic4 = article.catalogArticle) === null || _article$catalogArtic4 === void 0 ? void 0 : _article$catalogArtic4.groupContentItemId,
46111
46181
  depth: article.depth,
46112
46182
  width: article.width,
46113
46183
  height: article.height,
46114
46184
  sizeInfo: DivaUtils__default["default"].sizeFormatter(article.catalogArticle, set.i18n, true, ':'),
46115
- longDescription: (_article$catalogArtic4 = article.catalogArticle) === null || _article$catalogArtic4 === void 0 ? void 0 : _article$catalogArtic4.longDescription,
46185
+ longDescription: (_article$catalogArtic5 = article.catalogArticle) === null || _article$catalogArtic5 === void 0 ? void 0 : _article$catalogArtic5.longDescription,
46116
46186
  incomplete: article.incomplete,
46117
46187
  isAccessoire: !!article.relatedToBasketId,
46118
46188
  avlFilter: (_article$actPlannerDa = article.actPlannerData) === null || _article$actPlannerDa === void 0 ? void 0 : _article$actPlannerDa.AVLFilter,
@@ -49531,7 +49601,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
49531
49601
  break;
49532
49602
  case 3:
49533
49603
  _context12.next = 5;
49534
- return Promise.resolve().then(function () { return require('./PfisterWWSHandler-06401ac4.js'); });
49604
+ return Promise.resolve().then(function () { return require('./PfisterWWSHandler-af7f8c21.js'); });
49535
49605
  case 5:
49536
49606
  _yield$import = _context12.sent;
49537
49607
  PfisterWWSHandler = _yield$import["default"];
@@ -49539,7 +49609,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
49539
49609
  return _context12.abrupt("break", 27);
49540
49610
  case 9:
49541
49611
  _context12.next = 11;
49542
- return Promise.resolve().then(function () { return require('./LiviqueWWSHandler-d1923d69.js'); });
49612
+ return Promise.resolve().then(function () { return require('./LiviqueWWSHandler-e78d2805.js'); });
49543
49613
  case 11:
49544
49614
  _yield$import2 = _context12.sent;
49545
49615
  LiviqueWWSHandler = _yield$import2["default"];
@@ -49547,7 +49617,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
49547
49617
  return _context12.abrupt("break", 27);
49548
49618
  case 15:
49549
49619
  _context12.next = 17;
49550
- return Promise.resolve().then(function () { return require('./SeriousBasketHandler-61cdfc93.js'); });
49620
+ return Promise.resolve().then(function () { return require('./SeriousBasketHandler-37c085b7.js'); });
49551
49621
  case 17:
49552
49622
  _yield$import3 = _context12.sent;
49553
49623
  SeriousWWSHandler = _yield$import3["default"];
@@ -49555,7 +49625,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
49555
49625
  return _context12.abrupt("break", 27);
49556
49626
  case 21:
49557
49627
  _context12.next = 23;
49558
- return Promise.resolve().then(function () { return require('./StandardWWSHandler-0bc63ba7.js'); });
49628
+ return Promise.resolve().then(function () { return require('./StandardWWSHandler-a0b03684.js'); });
49559
49629
  case 23:
49560
49630
  _yield$import4 = _context12.sent;
49561
49631
  StandardWWSHandler = _yield$import4["default"];
@@ -50942,7 +51012,7 @@ var PlannerHandler3D = /*#__PURE__*/function () {
50942
51012
  //If we need real time rendering initialize the SignalR and 3D host connection Handler
50943
51013
  bootMark('signalr: chunk import start');
50944
51014
  _context3.next = 3;
50945
- return Promise.resolve().then(function () { return require('./Host3DSignalR-b67b054f.js'); });
51015
+ return Promise.resolve().then(function () { return require('./Host3DSignalR-05fb621f.js'); });
50946
51016
  case 3:
50947
51017
  _yield$import = _context3.sent;
50948
51018
  Host3DSignalR = _yield$import["default"];
@@ -52687,7 +52757,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
52687
52757
  break;
52688
52758
  case 8:
52689
52759
  _context5.next = 10;
52690
- return Promise.resolve().then(function () { return require('./DivaStandardPlanner-6ef85473.js'); });
52760
+ return Promise.resolve().then(function () { return require('./DivaStandardPlanner-fc05728f.js'); });
52691
52761
  case 10:
52692
52762
  _yield$import = _context5.sent;
52693
52763
  DivaStandardPlanner = _yield$import["default"];
@@ -52698,7 +52768,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
52698
52768
  return _context5.abrupt("break", 21);
52699
52769
  case 15:
52700
52770
  _context5.next = 17;
52701
- return Promise.resolve().then(function () { return require('./DivaBoxPlanner-5064ca34.js'); });
52771
+ return Promise.resolve().then(function () { return require('./DivaBoxPlanner-be749bb5.js'); });
52702
52772
  case 17:
52703
52773
  _yield$import2 = _context5.sent;
52704
52774
  DivaBoxPlanner = _yield$import2["default"];
@@ -56018,6 +56088,13 @@ var DivaWebPlanner = /*#__PURE__*/function () {
56018
56088
  value: function checkIfAllOptionsAreDefined() {
56019
56089
  return setHandlerInstance.checkIfAllOptionsAreDefined(this.sets);
56020
56090
  }
56091
+
56092
+ /** IDM: true when a planned main article has a mandatory Zusatzartikel set without any planned accessory. */
56093
+ }, {
56094
+ key: "hasMissingMandatoryAccessories",
56095
+ value: function hasMissingMandatoryAccessories() {
56096
+ return setHandlerInstance.hasMissingMandatoryAccessories(this.sets);
56097
+ }
56021
56098
  }, {
56022
56099
  key: "changeOnFavorites",
56023
56100
  value: function changeOnFavorites(opt, opvs, targetArticles, remove) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-7e845075.js');
5
+ var index = require('./index-411c6d20.js');
6
6
  var planner2dCore = require('@crystaldesign/planner-2d-core');
7
7
  require('@babel/runtime/helpers/slicedToArray');
8
8
  require('@babel/runtime/helpers/asyncToGenerator');