How to add Orders to Razor Commerce Programmatically

This tutorial is over a year old and may not apply to your version of Concrete CMS.
May 2, 2015

Add Orders to Razor Commerce programmatically starts by using the Order object, namespace Razor\Core\Order\Order. The add() method will add an order to the database. Note that the order will initially have no OrderItems, so in practice we will normally be adding item(s) immediately after.

The Order::add() method returns the full Order object.

use Razor\Core\Order\Order;

/*
 * $customerID C5 User ID. For testing you can use 1 which is admin. 
 * $orderDate date in MySQL format e.g. 2015-03-30
 * $status string, use "cart" to put the order in the user cart
  */

 // $order = Order::add( $customerID, $orderDate, $status );

 $order = Order::add( 1, '2015-03-30', 'cart' );

Adding OrderItems

What's an Order without OrderItems? Well, it's perfectly valid to have an order without items and we have already created a fully-formed Order object. Adding OrderItems simply gives us a more practical example and we do need OrderItems to be able to do further work with the Order such as calculating an order total or adjusting that total with taxes and shipping.

The Order class we've already used to add the Order has the method addItem(). We'll use that method now in the example below.

/*
* $productID product id
 * $quantity quantity of this item to add to the order
* $priceEach price per quantity of the item, this should normally match the price of the product however it could be a sale price or discounted price
 */

// $order->addItem( $productID, $quantity, $priceEach );

$order->addItem( 1, 1, 7.5 );

How to get the Product ID?

There is a method getByPath() for the Product object which you can use as $product = \Razor\Core\Product\Product::getByPath( '/path/to/product' );.

This is a wrapper for the core Page::getByPath so it works the same way, the path must be preceded by a forward slash. It returns the full Product object and you can use $product->getCollectionID() to get the Product ID, which is also the collection ID.

How to get the product price?

To get the product price you need to load the Product which you can do with Razor\Core\Product\Product::getByID( $productID ) if you have the Product ID or Razor\Core\Product\Product::getByPath( 'path/to/product' ) if you don't.


To learn more about Razor Commerce the free eCommerce suite for Concrete CMS 5.7 visit http://razorcommerce.org and to download visit https://github.com/RazorCommerce/razor-commerce.

Recent Tutorials
Using the Concrete Migration Tool Addon
Apr 27, 2023

How to use the Concrete CMS Migration Tool

How To Add Page Last Updated To Your Concrete CMS Pages
Mar 7, 2023

Concrete CMS has a page attribute you can add to a global area called "Page Date Modified." Here's how to add it

How To Exclude Subpages from Navigation
Dec 24, 2022

How to exclude subpages from navigation - useful for a news or blog link in your main navigation where you don't want all the subpages to appear in a drop down menu.

How Can I Change The Maximum Size Of Uploaded files
Dec 13, 2022

This tutorial explains how to update your php settings.

Updating Concrete Themes from Version 8 to Version 9
Nov 24, 2022

This tutorial covers commonly encountered issues when upgrading a Concrete CMS theme from version 8 to version 9

Transferring ownership of an add-on and a theme
Nov 15, 2022
By katzueno.

If you encounter a Concrete CMS add-on or theme that you love but not being maintained, you may want to ask the author to help or take over the add-on or theme. Here is the quick step-by-step guide of how to transfer the ownership.

Was this information useful?
Thank you for your feedback.