Hi Chris,
To avoid the race condition of the JS Plugin and the Rules Engine firing, have you tried disabling the "Enable Real Time Rule Calculation" setting in Zuora Config -> Advanced Quoting Configuration Settings? This will prevent the rules engine from firing on changes, and will instead only fire on click of "Calculate", "Save" or "Submit". This should avoid the race condition as the JS plugin will be completed real-time on field updates, while the rules will only run on page save.
Alternatively, you can create a custom VF page and embed the product selector component. This allows you to leverage the OOTB functionality of the product selector, but also to provide your own "next page" reference upon save. You can embed the "EditQuoteProduct" component on your VF page with the following code
<zqu:EditQuoteProduct editQuoteProductOptions="{!editProductOptions}" />
This component takes in an attribute "zqu.EditQuoteProductOptions". This takes in an attribute "zqu.SelectProductComponentOptions" where you can specify a "saveUrl" and "savePageParams" to redirect with upon existing the product selector.
//Options for "Edit Charges" view
zqu.SelectProductComponentOptions selectOptions = new zqu.SelectProductComponentOptions();
selectOptions.quoteType = 'quote type from url';
selectOptions.quoteId = 'quote id from url';
selectOptions.saveUrl = Page.YourCustomPage.getUrl();
selectOptions.savePageParams = nextParams; //Map<String,String> of URL params
//Options for "Guided Selling" view
zqu.ProductBundleGuidedSellingOptions guidedOptions = new zqu.ProductBundleGuidedSellingOptions();
guidedOptions.quoteType = 'quote type from url';;
guidedOptions.quoteId = 'quote id from url';
zqu.EditQuoteProductOptions editProductOptions= new zqu.EditQuoteProductOptions();
editProductOptions.productSelectorOptions = selectOptions;
editProductOptions.guidedSellingOptions = guidedOptions;
editProductOptions.initialComponentMode = zqu.EditQuoteProductOptions.PRODUCT_SELECTOR_MODE;
Thanks,
Mikey
... View more