Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.

ccrz.ccApiPriceList.fetchEntitled

Executes a SOQL or SOSL query of price list records, and returns a list of price list IDs that the current account is entitled to. You can filter by account group or price group entitlements.

Compatibility

This reference applies to:

Release Managed Package Version API Version
B2B Commerce for Visualforce Winter ’21 4.13 12
B2B Commerce for Visualforce Spring ’20 4.12 11
B2B Commerce for Visualforce Summer ’19 4.11 10
B2B Commerce for Visualforce Spring ’19 4.10 9
B2B Commerce for Visualforce Summer ’18 4.9 8

You can still call older versions of the API for this method, which can accept different input keys or return different output keys. Any differences in behavior for older versions aren't documented in this topic.

Note

Signature

global static Map<String, Object> fetchEntitled(Map<String, Object>)

Service Layer Classes

Logic Service Provider
ccrz.ccLogicPLEntLists

Inputs (Required)

Map<String, Object> that must include the following required keys:

ccrz.ccApi.API_VERSION
The version of the B2B Commerce for Visualforce API to reference for the method call. We recommend that you use the ccrz.ccApi.CURRENT_VERSION constant whenever possible, and only reference a specific version for compatibility if necessary.

If this key isn't specified, the method returns a ccrz.ccApi.NoApiVersionException.

Note

Inputs (Optional)

The input map can also include the following keys:

ccrz.ccApi.SIZING
Map<String, Object> that specifies the scope of data that this method returns. To return the price list and price list item records that correspond to the entitled price list IDs, include ccrz.ccApi.SZ_REFETCH => true in this key's map.
ccrz.ccApi.SIZING => new Map<String, Object> {
    ccrz.ccApiPriceList.ENTITYNAME => new Map<String, Object> {
        ccrz.ccApi.SZ_REFETCH => true
    }
}
ccrz.ccApiPriceList.ALLWMIX
Boolean
Value Usage
true Allow mixed pricing queries when you filter by price group. The method tries to match the specified price group when returning price list records. If a price group match isn't available, the method falls back to the specified account's account group.
false (default) Don't allow mixed pricing queries when you filter by price group. The method only tries to match the specified price group when returning price list records.

If this key isn't specified in the input data, the method falls back to the value of the ccrz__E_AccountSettings__c.ccrz__AllowMixedPricingCarts__c field.

ccrz.ccApiPriceList.CURRCODE
String that specifies an ISO 4217 currency code, such as USD or JPY.

If the input data doesn't include this key, the method falls back to ccrz.cc_CallContext.userCurrency.

Note

ccrz.ccApiPriceList.EFFACCTID
String that specifies an account ID record to filter entitled price lists by. The method returns only the price list records that are assigned to the specified account's account group.

If the input data doesn't include this key, the method falls back to ccrz.cc_CallContext.currAccountId.

Note

ccrz.ccApiPriceList.EFFDATE
Date to filter price lists by. The method returns only the price list records where the date is included in the Start Date and End Date range.

If the input data doesn't include this key, the method falls back to the current date.

Note

ccrz.ccApiPriceList.PRGRID
String that specifies a price group ID record to filter price lists by.

If you don't include this key, the method falls back to ccrz.cc_CallContext.priceGroupId.

Note

ccrz.ccApiPriceList.STOREFRONT
String that specifies the name of a storefront for filtering the query.

If the input data doesn't include this key, the method falls back to ccrz.cc_CallContext.storefront.

Note

Outputs

Map<String, Object> that can include the following keys:

ccrz.ccApi.API_VERSION
Integer that indicates which API version was used for the query.
ccrz.ccApi.SUCCESS
Boolean
Value Usage
true The call completed.
false The call encountered errors.

B2B Commerce for Visualforce doesn't always return an exception for any errors that can occur. When this value is false, consider rolling back the API transaction to a previous savepoint.

Tip

ccrz.ccApiPriceList.PLIDS
Map<String, Set<String>> keyed by:
  • ccrz.ccApiPriceList.PGPLIDS for price lists entitled by price group
  • ccrz.ccApiPriceList.ACCTGRPPLIDS for price lists entitled by account group
ccrz.ccApiPriceList.PRICELISTS
Map<String, Map<String,Object>> keyed by the IDs of the entitled price lists.

This key is returned only when the input map includes ccrz.ccApi.SZ_REFETCH => true.

Note

ccrz.ccApiPriceList.PRICELISTITEMS
Map<String, Map<String,Object>> keyed by the IDs of the price list items that belong to the price lists in ccrz.ccApiPriceList.PRICELISTS.

This key is returned only when the input map includes ccrz.ccApi.SZ_REFETCH => true.

Note

For more information about the ccrz.ccApiPriceList.PRICELISTS and ccrz.ccApiPriceList.PRICELISTITEMS keys, see ccrz.ccApiPriceList.fetch.

Note

Example

Fetch price list IDs for a specified account ID.

Map<String, Object> entitledPriceListsToFetch = new Map<String, Object> {
    ccrz.ccApi.API_VERSION => ccrz.ccApi.CURRENT_VERSION,
    ccrz.ccApiPriceList.EFFACCTID => 'Account_ID'
};

Map<String, Object> entitledPriceListsFetched = ccrz.ccApiPriceList.fetchEntitled(entitledPriceListsToFetch);

System.debug('entitledPriceListsFetched KEYS=' + JSON.serializePretty(entitledPriceListsFetched.keySet()));
Boolean success = (Boolean)entitledPriceListsFetched.get(ccrz.ccApi.SUCCESS);

if(success) {
    Map<String, Object> priceListIDs = (Map<String, Object>)entitledPriceListsFetched.get(ccrz.ccApiPriceList.PLIDS);
    System.debug('plids=' + JSON.serializePretty(priceLists));
} else {
    List<ccrz.cc_bean_Message> messages = (List<ccrz.cc_bean_Message>)entitledPriceListsFetched.get(ccrz.ccApi.MESSAGES);
    System.debug('messages=' + messages);
}