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