Rate Plan Customization Plugin Example
This article presents a sample custom implementation of the Rate Plan Customization Plugin on the SelectProduct Component.
global class QPFTestPlugin implements zqu.SelectProductComponentOptions.IRatePlanCustomizationPlugin { public void updateZChargeGroups(zqu__Quote__c quote, List<zqu.ZChargeGroup> zcgs) { if(zqu.zQuoteUtil.isFeatureEnabled) { System.debug('enter updateZChargeGroups'); addTest(zcgs); //updateTest(zcgs); //removeTest(zcgs); System.debug('exit updateZChargeGroups'); } } private void addTest(List<zqu.ZChargeGroup> zcgs) { zqu__ZFeature__c zFeature = [Select Id, zqu__FeatureName__c, zqu__Description__c, zqu__Code__c, zqu__ZuoraId__c From zqu__ZFeature__c Where Id = 'a0bj0000000dvE2']; zqu__QuoteProductFeature__c newQuoteFeature = new zqu__QuoteProductFeature__c(); newQuoteFeature.zqu__ZFeature__c = zFeature.Id; newQuoteFeature.zqu__FeatureZuoraId__c = zFeature.zqu__ZuoraId__c; newQuoteFeature.zqu__ZFeature__r = zFeature; newQuoteFeature.zqu__FeatureName__c = zFeature.zqu__FeatureName__c; newQuoteFeature.zqu__Description__c = zFeature.zqu__Description__c; newQuoteFeature.Custom_Field_Text_1__c = 'Feature 4.'; for(zqu.ZChargeGroup zcg : zcgs) { zcg.quoteProductFeatures.add(newQuoteFeature); zcg.quoteProductFeaturesChanged = true; break; } } private void updateTest(List<zqu.ZChargeGroup> zcgs) { for(zqu.ZChargeGroup zcg : zcgs) { for(zqu__QuoteProductFeature__c quoteProductFeature : zcg.quoteProductFeatures){ if(zcg.allowFeatureChanges) { quoteProductFeature.Custom_Field_Text_1__c = 'Field Value After Modification.'; zcg.quoteProductFeaturesChanged = true; System.debug('feature: ' + quoteProductFeature); } } } } private void removeTest(List<zqu.ZChargeGroup> zcgs) { for(zqu.ZChargeGroup zcg : zcgs) { if(zcg.quoteProductFeatures.size() > 0) { zcg.quoteProductFeatures.remove(zcg.quoteProductFeatures.size() - 1); zcg.quoteProductFeaturesChanged = true; break; } } } }