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 Promotion

Updates the details of a given promotion in the promotion cache (without calculation).
Soft limits:
  • Maximum number of products managed by promotion is based on PromotionMaxManagedProducts. Default value is 900.
Resource
1UPDATE_PROMOTION
Available version
55.0
Apex Request Example
1String salesOrg = '0001';
2String endpointName = 'UPDATE_PROMOTION';
3Id promoId = 'promotionId';
4cgcloud__Promotion__c promo = [SELECT Id, cgcloud__Anchor_Account__c, cgcloud__Date_From__c, cgcloud__Date_Thru__c, cgcloud__Delivery_Date_From__c, cgcloud__Delivery_Date_Thru__c, cgcloud__Placement_Date_From__c, cgcloud__Placement_Date_Thru__c, cgcloud__Commit_Date__c, cgcloud__Promotion_Template__c FROM cgcloud__Promotion__c WHERE Id=:promoId LIMIT 1];
5String payload = JSON.serialize(new Map<String, Object>{
6    'promotionid'=>promo.Id,
7    'phase'=>'Planning',
8    'active'=>true,
9    'version'=>2,
10    'isfrozen'=>false,
11    'accoundsetid'=>null,
12    'accountid'=>promo.cgcloud__Anchor_Account__c,
13    'commitdate'=>Datetime.newInstanceGmt(promo.cgcloud__cgcloud__Commit_Date__c.year(), promo.cgcloud__cgcloud__Commit_Date__c.month(), promo.cgcloud__cgcloud__Commit_Date__c.day()).getTime(),
14    'datefrom'=>Datetime.newInstanceGmt(promo.cgcloud__cgcloud__Date_From__c.year(), promo.cgcloud__Date_From__c.month(), promo.cgcloud__Date_From__c.day()).getTime(),
15    'datethru'=>Datetime.newInstanceGmt(promo.cgcloud__Date_Thru__c.year(), promo.cgcloud__Date_Thru__c.month(), promo.cgcloud__Date_Thru__c.day()).getTime(),
16    'manualcalculationinput'=>new Map<String, Object>(),
17    'instoredatefrom'=>Datetime.newInstanceGmt(promo.cgcloud__Placement_Date_From__c.year(), promo.cgcloud__Placement_Date_From__c.month(), promo.cgcloud__Placement_Date_From__c.day()).getTime(),
18    'instoredatethru'=>Datetime.newInstanceGmt(promo.cgcloud__Placement_Date_Thru__c.year(), promo.cgcloud__Placement_Date_Thru__c.month(), promo.cgcloud__Placement_Date_Thru__c.day()).getTime(),
19    'shipmentdatefrom'=>Datetime.newInstanceGmt(promo.cgcloud__Delivery_Date_From__c.year(), promo.cgcloud__Delivery_Date_From__c.month(), promo.cgcloud__Delivery_Date_From__c.day()).getTime(),
20    'shipmentdatethru'=>Datetime.newInstanceGmt(promo.cgcloud__Delivery_Date_Thru__c.year(), promo.cgcloud__Delivery_Date_Thru__c.month(), promo.cgcloud__Delivery_Date_Thru__c.day()).getTime(),
21    'promotiontemplateid'=>promo.cgcloud__Promotion_Template__c,
22    'salesorg'=>salesOrg,
23    'aggregationcategory'=>null,
24    'calculationmode' => 'Writeback',
25    'firstdayofweek' => 1,
26    'firstweekofyear' => 1,
27    'productgrouplevels' => new List<String>{'Category'}
28});
29<namespace>.OffPlatformCallout request = new <namespace>.OffPlatformCallout(endpointName, salesOrg);
30<namespace>.OffPlatformCalloutResponse response = request.execute(
31    <namespace>.TransactionHandler.getTransactionIdentifier(),
32    null,
33    payload
34);
35
36system.debug(JSON.serialize(response));