Skip to content

Create Order through Custom Code in Commerce [Drupal CMS]

function make_new_commerce_order($uid, $productID, $qty, $bc_order_id) {

$cuser = user_load(array('uid' => $uid));
$order = commerce_order_new($uid, 'pending');
 //Set order Number
 $order->order_number = $bc_order_id;
 $order->mail = $cuser->mail;


 // Save the order so its ID is assigned.
     commerce_order_save($order);
    // create an UC order for this user/product/qunatity
    $order_wrapper = entity_metadata_wrapper('commerce_order', $order);

    //add products to order by ids array
        $product = commerce_product_load($productID);
        // Create a line item with quantity 1 and this product.
        $line_item = commerce_product_line_item_new($product, $qty, $order->order_id);
        // Save the line item to get its ID.
        commerce_line_item_save($line_item);
        // Add the line item to the order using the wrapper.
        $order_wrapper->commerce_line_items[] = $line_item;

// Save the order.
     commerce_order_save($order);

      // Ensure the attached line items are associated with the order if they do not
  // have an order_id set yet.
  foreach (entity_metadata_wrapper('commerce_order', $order)->commerce_line_items as $delta => $line_item_wrapper) {
    if ($line_item_wrapper->order_id->value() == 0) {
      $line_item_wrapper->order_id = $order->order_id;
      $line_item_wrapper->save();
    }
  }

  return $order;
}

Leave a Reply

Your email address will not be published. Required fields are marked *