@veloceapps/sdk 8.0.0-185 → 8.0.0-187
Sign up to get free protection for your applications and to get access to all the features.
- package/cms/vendor-map.d.ts +3 -4
- package/core/modules/configuration/services/configuration-state.service.d.ts +2 -4
- package/core/modules/configuration/services/configuration.service.d.ts +1 -1
- package/core/services/flow-state.service.d.ts +1 -0
- package/core/services/quote-draft.service.d.ts +8 -31
- package/core/types/flow-state.types.d.ts +5 -0
- package/core/types/integration.types.d.ts +0 -1
- package/core/utils/line-item.utils.d.ts +1 -2
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +16 -7
- package/esm2020/core/modules/configuration/services/configuration.service.mjs +10 -8
- package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +3 -3
- package/esm2020/core/services/flow-state.service.mjs +31 -25
- package/esm2020/core/services/quote-draft.service.mjs +27 -100
- package/esm2020/core/types/flow-state.types.mjs +1 -1
- package/esm2020/core/types/integration.types.mjs +1 -1
- package/esm2020/core/utils/line-item.utils.mjs +4 -18
- package/esm2020/src/pages/product/product.component.mjs +15 -12
- package/esm2020/src/services/flow.service.mjs +38 -18
- package/fesm2015/veloceapps-sdk-core.mjs +455 -522
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +47 -28
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +418 -487
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +50 -27
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +1 -1
- package/src/pages/product/product.component.d.ts +1 -1
- package/src/services/flow.service.d.ts +1 -0
@@ -767,11 +767,16 @@ class FlowService {
|
|
767
767
|
initSubscriptions() {
|
768
768
|
this.integrationState
|
769
769
|
.listen$(FlowAction.FLOW_CONFIGURE_PRODUCT)
|
770
|
-
.pipe(
|
770
|
+
.pipe(switchMap(payload => {
|
771
771
|
var _a, _b;
|
772
|
-
|
773
|
-
|
774
|
-
|
772
|
+
if (this.flowInfoService.isLegacy) {
|
773
|
+
const productId = (_a = payload.productId) !== null && _a !== void 0 ? _a : (_b = this.quoteDraftService.currentState.find(li => li.id === payload.lineItemId)) === null || _b === void 0 ? void 0 : _b.productId;
|
774
|
+
return of(Object.assign(Object.assign({}, payload), { productId }));
|
775
|
+
}
|
776
|
+
return this.prepareConfiguration$(payload);
|
777
|
+
}), tap(payload => {
|
778
|
+
if (payload.productId) {
|
779
|
+
this.flowRouterService.navigateToProductConfiguration(payload.productId, payload.lineItemId);
|
775
780
|
}
|
776
781
|
else {
|
777
782
|
console.warn("Parameter 'productId' is needed to start configuration");
|
@@ -820,9 +825,9 @@ class FlowService {
|
|
820
825
|
return this.legacyApplyConfiguration();
|
821
826
|
}
|
822
827
|
else {
|
823
|
-
return this.configurationStateService
|
824
|
-
|
825
|
-
|
828
|
+
return this.configurationStateService
|
829
|
+
.saveConfiguration('', true)
|
830
|
+
.pipe(switchMap(() => this.configurationStateService.cancelConfiguration()));
|
826
831
|
}
|
827
832
|
}), tap(() => {
|
828
833
|
this.configurationService.hasUnsavedChanges = false;
|
@@ -840,6 +845,26 @@ class FlowService {
|
|
840
845
|
.pipe(map(path => path.queryParams['productId']), takeUntil(this.cleanup$))
|
841
846
|
.subscribe(productId => this.integrationState.patchState({ productId }));
|
842
847
|
}
|
848
|
+
prepareConfiguration$(payload) {
|
849
|
+
if (!payload.productId && !payload.lineItemId) {
|
850
|
+
return of(payload);
|
851
|
+
}
|
852
|
+
// When reconfiguring asset, PriceList should be updated with priceListId of an asset
|
853
|
+
const actions = [
|
854
|
+
{ name: 'UPDATE_PRICE_LIST', inputData: { lineItemId: payload.lineItemId } },
|
855
|
+
];
|
856
|
+
const selectors = {};
|
857
|
+
if (!payload.productId) {
|
858
|
+
selectors['productIdResult'] = { name: 'FIND_PRODUCT_ID', inputData: { lineItemId: payload.lineItemId } };
|
859
|
+
}
|
860
|
+
return this.flowStateService.execute$(UITemplateType.FLOW_ENGINE, { actions, selectors }).pipe(map(({ productIdResult }) => {
|
861
|
+
if (!productIdResult) {
|
862
|
+
return payload;
|
863
|
+
}
|
864
|
+
const productId = productIdResult.success && typeof productIdResult.result === 'string' ? productIdResult.result : undefined;
|
865
|
+
return Object.assign(Object.assign({}, payload), { productId });
|
866
|
+
}));
|
867
|
+
}
|
843
868
|
legacyApplyConfiguration() {
|
844
869
|
const quoteDraft = this.quoteDraftService.quoteDraft;
|
845
870
|
const lineItem = this.configurationService.getSnapshot();
|
@@ -847,7 +872,6 @@ class FlowService {
|
|
847
872
|
return of(undefined);
|
848
873
|
}
|
849
874
|
const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);
|
850
|
-
const assetId = lineItem.assetId || lineItem.openOrderLineItemId;
|
851
875
|
let updatedState;
|
852
876
|
if (isNewLineItem) {
|
853
877
|
updatedState = [...quoteDraft.currentState, lineItem];
|
@@ -855,15 +879,7 @@ class FlowService {
|
|
855
879
|
else {
|
856
880
|
updatedState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));
|
857
881
|
}
|
858
|
-
return this.flowConfigurationService.calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState }))
|
859
|
-
var _a;
|
860
|
-
if (assetId) {
|
861
|
-
const modifiedAssets = (_a = this.integrationState.state.modifiedAssets) !== null && _a !== void 0 ? _a : {};
|
862
|
-
this.integrationState.patchState({
|
863
|
-
modifiedAssets: Object.assign(Object.assign({}, modifiedAssets), { [assetId]: true }),
|
864
|
-
});
|
865
|
-
}
|
866
|
-
}));
|
882
|
+
return this.flowConfigurationService.calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState }));
|
867
883
|
}
|
868
884
|
}
|
869
885
|
FlowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService, deps: [{ token: i5.IntegrationState }, { token: FlowRouterService }, { token: i2.QuoteDraftService }, { token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: FlowDialogService }, { token: i2.FlowConfigurationService }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
@@ -1498,12 +1514,11 @@ class ProductComponent {
|
|
1498
1514
|
const offeringId = contextProperties.offeringId;
|
1499
1515
|
return this.configurationRuntimeService.init({ productId, offeringId });
|
1500
1516
|
}
|
1501
|
-
const
|
1502
|
-
|
1503
|
-
|
1504
|
-
this.configurationService.setConfigurableRamp(currentStateItem);
|
1517
|
+
const lineItem = this.getLineItem(quote, productId, contextProperties.lineItemId);
|
1518
|
+
if (lineItem) {
|
1519
|
+
this.configurationService.setConfigurableRamp(lineItem);
|
1505
1520
|
}
|
1506
|
-
const { offeringId } =
|
1521
|
+
const { offeringId } = lineItem !== null && lineItem !== void 0 ? lineItem : {};
|
1507
1522
|
return this.configurationRuntimeService.init({ productId, offeringId });
|
1508
1523
|
}), switchMap(() => this.customizeUI$()), tap(() => {
|
1509
1524
|
var _a, _b;
|
@@ -1521,14 +1536,18 @@ class ProductComponent {
|
|
1521
1536
|
}
|
1522
1537
|
}), switchMap(() => this.configurationStateService.init$()));
|
1523
1538
|
}
|
1524
|
-
|
1525
|
-
var _a
|
1539
|
+
getLineItem(quote, productId, lineItemId) {
|
1540
|
+
var _a;
|
1526
1541
|
// search by lineItemId first
|
1527
|
-
let
|
1528
|
-
if (!
|
1529
|
-
|
1542
|
+
let li = quote.currentState.find(li => li.id === lineItemId);
|
1543
|
+
if (!li && this.quoteDraftService.isStandalone) {
|
1544
|
+
li = quote.currentState.find(li => li.productId === productId);
|
1545
|
+
}
|
1546
|
+
// If still not found, is could be an asset
|
1547
|
+
if (!li) {
|
1548
|
+
li = (_a = this.quoteDraftService.assetsState) === null || _a === void 0 ? void 0 : _a.currentState.find(li => li.id === lineItemId);
|
1530
1549
|
}
|
1531
|
-
return
|
1550
|
+
return li;
|
1532
1551
|
}
|
1533
1552
|
}
|
1534
1553
|
ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i2.ContextService }, { token: i2.ConfigurationRuntimeService }, { token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: i2.QuoteDraftService }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }, { token: i2.IntegrationState }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|