Newer Version Available

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

RE_Order Class

This Apex class provides programmatic access to the retail order sObject, and its related sObjects.

Namespace

1cgcloud

Example Implementation

1cgcloud.RE_Order Order;

Supported Methods

getOrder()

Returns the RE_Order.Record instance with the order contents.

API Version
59.0
Signature
global RE_Order.Record getOrder()
Example
1global class RetailOrderSaveCustomization implements System.Callable {
2  public Object call(String m, Map<String, Object> params) {
3    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
4    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder().getRecord();
5  
6    System.debug(order.Customer_Order_Id__c);
7    return null;
8  }
9}

getOrderItems()

Returns the List<RE_Order.Record> instances with order items.

API Version
59.0
Signature
global List<RE_Order.Record> getOrderItems()
Example
1public with sharing class RetailOrderSaveCustomization implements System.Callable {
2  public Object call(String m, Map<String, Object> params) {
3    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
4    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder().getRecord();
5    List<cgcloud.RE_Order.Record> orderItemRecords = (List<cgcloud.RE_Order.Record>) orderWrapper.getOrderItems();
6
7    if (orderItemRecords != null) {
8      for (cgcloud.RE_Order.Record orderItemRecord : orderItemRecords) {
9        cgcloud__Order_Item__c orderItem = (cgcloud__Order_Item__c) orderItemRecord.getRecord();
10
11        System.debug(orderItem.Delivery_Date__c);
12      }
13    }
14  }
15}

List<RE_Order.Record> getOrderItems()

Returns filtered List<RE_Order.Record> instances with order items.

API Version
59.0
Signature
global List<RE_Order.Record> getOrderItems(Boolean includeNew, Boolean includeDirty, Boolean includeDeleted)
Example
1global class RetailOrderSaveCustomization implements System.Callable {
2  public Object call(String m, Map<String, Object> params) {
3    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
4    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder().getRecord();
5    List<cgcloud.RE_Order.Record> orderItemRecords = (List<cgcloud.RE_Order.Record>) orderWrapper.getOrderItems(
6      true,
7      true,
8      false
9    );
10
11    if (orderItemRecords != null) {
12      for (cgcloud.RE_Order.Record orderItemRecord : orderItemRecords) {
13        cgcloud__Order_Item__c orderItem = (cgcloud__Order_Item__c) orderItemRecord.getRecord();
14
15        System.debug(orderItem.Delivery_Date__c);
16      }
17    }
18    return null;
19  }
20}

append(SObject record)

Appends a custom sObject record to the RE_Order instance. When the order object gets saved, this record is inserted, updated, or deleted, depending on the RE_Order.Record instance state.

API Version
59.0
Signature
global RE_Order.Record append(SObject record)
Example
1global class RetailOrderSaveCustomization implements System.Callable {
2  public Object call(String m, Map<String, Object> params) {
3    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
4    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder().getRecord();
5
6    // Append a new SObject to be saved
7    MyCustomObject__c mySObject = new MyCustomObject__c();
8    mySObject.Field1__c = 'test1';
9    mySObject.Duration__c = 23;
10
11    cgcloud.RE_Order.Record myRecordWrapper = orderWrapper.append(mySObject);
12
13    // Add a relationship to the Order__c record
14    orderWrapper.addRelationship(
15      myRecordWrapper,
16      MyCustomObject__c.Order__c,
17      orderWrapper.getOrder()
18    );
19    return null;
20  }
21}

addRelationship(RE_Order.Record child, SObjectField relationField, RE_Order.Record parent)

Notifies the RE_Order instance about a relationship between two records.

Avoid using direct DML manipulations for records that are part of the transactional state of an order. During the order save process, the records provided by the RE_Order instances use temporary IDs for records that aren’t still in the database. Using the methods provided by the RE_Order object ensures that all relationships and IDs are properly resolved before committing.

API Version
59.0
Signature
global void addRelationship(RE_Order.Record child, SObjectField relationField, RE_Order.Record parent)
Example
1global class RetailOrderSaveCustomization implements System.Callable {
2  public Object call(String m, Map<String, Object> params) {
3    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
4    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder().getRecord();
5
6    // Append a new SObject to be saved
7    MyCustomObject__c mySObject = new MyCustomObject__c();
8    mySObject.Field1__c = 'test1';
9    mySObject.Duration__c = 23;
10
11    cgcloud.RE_Order.Record myRecordWrapper = orderWrapper.append(mySObject);
12
13    // Add a relationship to the Order__c record
14    orderWrapper.addRelationship(
15      myRecordWrapper,
16      MyCustomObject__c.Order__c,
17      orderWrapper.getOrder()
18    );
19    return null;
20  }
21}

registerWork(DoWork work)

Adds work to be executed after the order is committed to the database. Use this method to perform additional operations after all the order-related records are correctly committed to the database. For information on the RE_Order.DoWork interface methods, see RE_Order.DoWork Interface

API Version
59.0
Signature
global void registerWork(DoWork work)
Example
1global class RetailOrderSaveCustomization implements System.Callable {
2  public class MyAfterCommitWork implements cgcloud.RE_Order.DoWork {
3    cgcloud__Order__c m_order = null;
4
5    MyAfterCommitWork(cgcloud__Order__c order) {
6      m_order = order;
7    }
8
9    // This method will be called after the order and related record
10    // changes are committed to the database.
11    // If any error is thrown during the execution of doWork, the transaction
12    // will be rolled back
13    global override void doWork() {
14      system.debug('Im here!');
15    }
16  }
17
18  public Object call(String m, Map<String, Object> params) {
19    cgcloud.RE_Order orderWrapper = (cgcloud.RE_Order) params.get('order');
20    cgcloud__Order__c order = (cgcloud__Order__c) orderWrapper.getOrder()
21      .getRecord();
22
23    orderWrapper.registerWork(new MyAfterCommitWork(order));
24    return null;
25  }
26}