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.

Update Product Assortment

Receives a list of products within the time-dependent account product list and updates it.
Soft limits:
  • Maximum number of products per assortment is based on MaxNumberOfProductsPerAssortment. Default value is 10000.

To submit large number of items, see Begin Job Scheduling Transaction.

Note

Resource
1UPDATE_PRODUCT_ASSORTMENT
Available version
55.0
Apex Request Example
1String DEFAULT_JOBNAME = 'Update';
2Integer DEFAULT_JOBTHREADS = 1;
3String DEFAULT_BATCHCHAIN = 'Assortment';
4String DEFAULT_BATCHCHAINTYPE = 'paapla';
5
6Id assortmentId = 'assortmentId1';
7List<Map<String, Object>> papList = new List<Map<String, Object>>();
8Set<Id> accountIds = new Set<Id>();
9
10Assortment productAssortment = [
11    SELECT Id, cgcloud__Sales_Org__c, cgcloud__Valid_From__c, cgcloud__Valid_Thru__c, cgcloud__Version__c
12    FROM Assortment
13    WHERE Id = :assortmentId
14    LIMIT 1
15];
16
17for (AssortmentProduct pap : [SELECT ProductId, cgcloud__Valid_From__c, cgcloud__Valid_Thru__c FROM AssortmentProduct where AssortmentId =: assortmentId]) {
18    papList.add(
19        new Map<String, Object>{
20            'sfid' => pap.ProductId,
21            'validfrom' => Datetime.newInstanceGmt(pap.cgcloud__Valid_From__c.year(), pap.cgcloud__Valid_From__c.month(), pap.cgcloud__Valid_From__c.day()).getTime(),
22            'validthru' => Datetime.newInstanceGmt(pap.cgcloud__Valid_Thru__c.year(), pap.cgcloud__Valid_Thru__c.month(), pap.cgcloud__Valid_Thru__c.day()).getTime()
23        }
24    );
25}
26    
27for (
28    StoreAssortment customerProductAssortment :  [
29    SELECT Id, AccountId
30    FROM StoreAssortment
31    WHERE AssortmentId = :assortmentId
32]
33) {
34    accountIds.add(customerProductAssortment.AccountId);
35}
36
37
38String payload = JSON.serialize(
39    new Map<String, Object> {
40        'accountsfids' => accountIds,
41        'validfrom' => Datetime.newInstanceGmt(productAssortment.cgcloud__Valid_From__c.year(), productAssortment.cgcloud__Valid_From__c.month(), productAssortment.cgcloud__Valid_From__c.day()).getTime(),
42        'validthru' => Datetime.newInstanceGmt(productAssortment.cgcloud__Valid_Thru__c.year(), productAssortment.cgcloud__Valid_Thru__c.month(), productAssortment.cgcloud__Valid_Thru__c.day()).getTime(),
43        'version' => productAssortment.cgcloud__Version__c,
44        'salesorg' => productAssortment.cgcloud__Sales_Org__c,
45        'products' => papList,
46        'jobname' => DEFAULT_JOBNAME,
47        'jobthreads' => DEFAULT_JOBTHREADS,
48        'batchchain' => DEFAULT_BATCHCHAIN,
49        'batchchaintype' => DEFAULT_BATCHCHAINTYPE
50    }
51);
52
53<namespace>.OffplatformCallout request = new <namespace>.OffplatformCallout('UPDATE_PRODUCT_ASSORTMENT', productAssortment.cgcloud__Sales_Org__c);
54<namespace>.OffPlatformCalloutResponse response = request.execute(
55    <namespace>.TransactionHandler.getTransactionIdentifier(),
56    new Map<String, String>{'productassortmentid' => assortmentId},
57    payload
58);
59
60System.debug(response.status);