Send Custom Fields to Zuora
Overview
This topic describes how to send custom fields to Zuora. If you are using Zuora Quotes version 5.3 or later, use the GlobalCustomFieldDefinition
class to send custom fields to Zuora. If you are using Zuora Quotes version 5.2 or earlier, send custom Quote
and QuoteCharge
fields to Zuora.
Zuora Quotes Versions 5.3 and Later
The following sample code describes the use of the GlobalCustomFieldDefinition
class to send custom fields to Zuora. You can use this sample code in your own business flow.
See Global Classes for more information.
Example 1: Retrieve Charge Groups
zqu.GlobalCustomFieldDefinition.CHARGE_FIELDS = new Set<String> { 'My_Custom_Field_1__c', 'My_Custom_Field_2__c' }; this.chargeGroupList = zqu.zQuoteUtil.getChargeGroups(this.quote.Id);
Example 2: Update a Charge Group
zqu.GlobalCustomFieldDefinition.CHARGE_FIELDS = new Set<String> { 'My_Custom_Field_1__c', 'My_Custom_Field_2__c' }; zqu.zChargeGroup updatedChargeGroup = zqu.zQuoteUtil.updateChargeGroup(this.currentChargeGroup);
Example 3: Send to Zuora
Use Global Methods to send the quote to Zuora, including quote-level and charge-level custom fields.
zqu.GlobalCustomFieldDefinition.QUOTE_FIELDS = new Set<String> { 'My_Quote_CF_1__c', 'My_Quote_CF_2__c' }; zqu.GlobalCustomFieldDefinition.CHARGE_FIELDS = new Set<String> { 'My_Charge_CF_1__c', 'My_Charge_CF_2__c' }; zqu.zSendToZBilling.sendToZBilling(tQuote.Id, 'New', true, null, null); // Note that both quoteFields and chargeFields are passed in as null.
Limitations
- The API name of the custom fields created in Salesforce must match the API name of the custom fields created in Zuora.
- Zuora currently only supports limited types of custom fields. Although you can specify any type of custom fields in
GlobalCustomFieldDefinition.QUOTE_FIELDS
andGlobalCustomFieldDefinition.CHARGE_FIELDS
, only the supported types of custom fields will be persisted, retrieved, and displayed by Global Methods and Components. See Configure Custom Fields for the list of supported customer field types.
Zuora Quotes Versions 5.2 and Earlier
The following sample code describes the use of sending custom Quote
and QuoteCharge
fields to Zuora. This code is a section of a larger apex class. You can use this sample code in your own business flow.
Sample Code
... ... //Create the Quote Fields Map<String,String> qFNameMap = new Map<String, String>(); qFNameMap.put ( 'testCustomFieldQuote1__c', 'testing1'); qFNameMap.put ( 'testCustomFieldQuote2__c', 'testing2'); //Create the QuoteCharge Fields Map<String,Map<String,String>> qcFIDNameValueMap = new Map<String,Map<String,String>>(); Map<String, String> fVMap = new Map<String, String>(); fVMap.put('testCustomFieldQuoteCharge1__c', 'testingQuoteCharge1'); fVMap.put('testCustomFieldQuoteCharge2__c', 'testingQuoteCharge2'); qcFIDNameValueMap.put('a06E0000000Lj02', fVMap); fVMap.clear(); fVMap.put('testCustomFieldQuoteCharge1__c', 'testingQuoteCharge2A'); fVMap.put('testCustomFieldQuoteCharge2__c', 'testingQuoteCharge2B'); qcFIDNameValueMap.put('a06E0000000Lj01', fVMap); Map<String, String> resultMap = zqu.zQuoteUtil.sendToZBilling(this.quoteID, this.zBillingAccID, this.overrideFlag, qFNameMap,qcFIDNameValueMap ); if ( resultMap.size() > 0 ){ for ( String sKey : resultMap.keySet() ){ this.resultCode = sKey; this.resultMessage = resultMap.get(sKey); } } ... ...
Considerations
- The names of the Salesforce fields and Zuora fields must match.
- Only fields with string values will be synced.