Newer Version Available

This content describes an older version of this product. View Latest

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);