---
schema_version: "1"
id: c6133ba1536eb34dbb0d9ecc7dff51079b60c46463c362c350ef05f7d875d878
title: RE_Order Class
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/retail_api/RE_order_class.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/RE_order_class.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 94d961db43a043c559988065ea4b8c4e719b11ac2b6e4cb95e19108f69d7369d
description: This Apex class provides programmatic access to the retail order sObject, and its related sObjects.
---
# RE\_Order Class

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

## Namespace

cgcloud

## Example Implementation

cgcloud.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**

global class RetailOrderSaveCustomization implements System.Callable {
  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder().getRecord();
  
    System.debug(order.Customer\_Order\_Id\_\_c);
    return null;
  }
}

## getOrderItems()

Returns the List<RE\_Order.Record> instances with order items.

**API Version:** 59.0

**Signature:** global List<RE\_Order.Record> getOrderItems()

**Example**

public with sharing class RetailOrderSaveCustomization implements System.Callable {
  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder().getRecord();
    List<cgcloud.RE\_Order.Record> orderItemRecords = (List<cgcloud.RE\_Order.Record>) orderWrapper.getOrderItems();

    if (orderItemRecords != null) {
      for (cgcloud.RE\_Order.Record orderItemRecord : orderItemRecords) {
        cgcloud\_\_Order\_Item\_\_c orderItem = (cgcloud\_\_Order\_Item\_\_c) orderItemRecord.getRecord();

        System.debug(orderItem.Delivery\_Date\_\_c);
      }
    }
  }
}

## 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**

global class RetailOrderSaveCustomization implements System.Callable {
  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder().getRecord();
    List<cgcloud.RE\_Order.Record> orderItemRecords = (List<cgcloud.RE\_Order.Record>) orderWrapper.getOrderItems(
      true,
      true,
      false
    );

    if (orderItemRecords != null) {
      for (cgcloud.RE\_Order.Record orderItemRecord : orderItemRecords) {
        cgcloud\_\_Order\_Item\_\_c orderItem = (cgcloud\_\_Order\_Item\_\_c) orderItemRecord.getRecord();

        System.debug(orderItem.Delivery\_Date\_\_c);
      }
    }
    return null;
  }
}

## 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**

global class RetailOrderSaveCustomization implements System.Callable {
  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder().getRecord();

    // Append a new SObject to be saved
    MyCustomObject\_\_c mySObject = new MyCustomObject\_\_c();
    mySObject.Field1\_\_c = 'test1';
    mySObject.Duration\_\_c = 23;

    cgcloud.RE\_Order.Record myRecordWrapper = orderWrapper.append(mySObject);

    // Add a relationship to the Order\_\_c record
    orderWrapper.addRelationship(
      myRecordWrapper,
      MyCustomObject\_\_c.Order\_\_c,
      orderWrapper.getOrder()
    );
    return null;
  }
}

## 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**

global class RetailOrderSaveCustomization implements System.Callable {
  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder().getRecord();

    // Append a new SObject to be saved
    MyCustomObject\_\_c mySObject = new MyCustomObject\_\_c();
    mySObject.Field1\_\_c = 'test1';
    mySObject.Duration\_\_c = 23;

    cgcloud.RE\_Order.Record myRecordWrapper = orderWrapper.append(mySObject);

    // Add a relationship to the Order\_\_c record
    orderWrapper.addRelationship(
      myRecordWrapper,
      MyCustomObject\_\_c.Order\_\_c,
      orderWrapper.getOrder()
    );
    return null;
  }
}

## 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](https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/RE_order_do_work_interface.htm "The RE_Order.DoWork Apex interface provides the capability to perform additional work after an order and the related records are committed to the database.")

**API Version:** 59.0

**Signature:** global void registerWork(DoWork work)

**Example**

global class RetailOrderSaveCustomization implements System.Callable {
  public class MyAfterCommitWork implements cgcloud.RE\_Order.DoWork {
    cgcloud\_\_Order\_\_c m\_order = null;

    MyAfterCommitWork(cgcloud\_\_Order\_\_c order) {
      m\_order = order;
    }

    // This method will be called after the order and related record
    // changes are committed to the database.
    // If any error is thrown during the execution of doWork, the transaction
    // will be rolled back
    global override void doWork() {
      system.debug('Im here!');
    }
  }

  public Object call(String m, Map<String, Object> params) {
    cgcloud.RE\_Order orderWrapper = (cgcloud.RE\_Order) params.get('order');
    cgcloud\_\_Order\_\_c order = (cgcloud\_\_Order\_\_c) orderWrapper.getOrder()
      .getRecord();

    orderWrapper.registerWork(new MyAfterCommitWork(order));
    return null;
  }
}