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
Soft limits:
- Maximum number of products per assortment is based on MaxNumberOfProductsPerAssortment. Default value is 10000.
- 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);