Update Product Assortment
Soft limits:
- Maximum number of products per assortment is based on MaxNumberOfProductsPerAssortment. Default value is 10000.
- Resource
-
UPDATE_PRODUCT_ASSORTMENT
- Available version
- 55.0
- Apex Request Example
-
String DEFAULT_JOBNAME = 'Update'; Integer DEFAULT_JOBTHREADS = 1; String DEFAULT_BATCHCHAIN = 'Assortment'; String DEFAULT_BATCHCHAINTYPE = 'paapla'; Id assortmentId = 'assortmentId1'; List<Map<String, Object>> papList = new List<Map<String, Object>>(); Set<Id> accountIds = new Set<Id>(); Assortment productAssortment = [ SELECT Id, cgcloud__Sales_Org__c, cgcloud__Valid_From__c, cgcloud__Valid_Thru__c, cgcloud__Version__c FROM Assortment WHERE Id = :assortmentId LIMIT 1 ]; for (AssortmentProduct pap : [SELECT ProductId, cgcloud__Valid_From__c, cgcloud__Valid_Thru__c FROM AssortmentProduct where AssortmentId =: assortmentId]) { papList.add( new Map<String, Object>{ 'sfid' => pap.ProductId, 'validfrom' => Datetime.newInstanceGmt(pap.cgcloud__Valid_From__c.year(), pap.cgcloud__Valid_From__c.month(), pap.cgcloud__Valid_From__c.day()).getTime(), 'validthru' => Datetime.newInstanceGmt(pap.cgcloud__Valid_Thru__c.year(), pap.cgcloud__Valid_Thru__c.month(), pap.cgcloud__Valid_Thru__c.day()).getTime() } ); } for ( StoreAssortment customerProductAssortment : [ SELECT Id, AccountId FROM StoreAssortment WHERE AssortmentId = :assortmentId ] ) { accountIds.add(customerProductAssortment.AccountId); } String payload = JSON.serialize( new Map<String, Object> { 'accountsfids' => accountIds, 'validfrom' => Datetime.newInstanceGmt(productAssortment.cgcloud__Valid_From__c.year(), productAssortment.cgcloud__Valid_From__c.month(), productAssortment.cgcloud__Valid_From__c.day()).getTime(), 'validthru' => Datetime.newInstanceGmt(productAssortment.cgcloud__Valid_Thru__c.year(), productAssortment.cgcloud__Valid_Thru__c.month(), productAssortment.cgcloud__Valid_Thru__c.day()).getTime(), 'version' => productAssortment.cgcloud__Version__c, 'salesorg' => productAssortment.cgcloud__Sales_Org__c, 'products' => papList, 'jobname' => DEFAULT_JOBNAME, 'jobthreads' => DEFAULT_JOBTHREADS, 'batchchain' => DEFAULT_BATCHCHAIN, 'batchchaintype' => DEFAULT_BATCHCHAINTYPE } ); <namespace>.OffplatformCallout request = new <namespace>.OffplatformCallout('UPDATE_PRODUCT_ASSORTMENT', productAssortment.cgcloud__Sales_Org__c); <namespace>.OffPlatformCalloutResponse response = request.execute( <namespace>.TransactionHandler.getTransactionIdentifier(), new Map<String, String>{'productassortmentid' => assortmentId}, payload ); System.debug(response.status);