Since: 2.7.0
Author: WooThemes
Inheritance: extends WC_Order_Item
 /**
  * Create a order.
  *
  * @since 2.4
  *
  * @return WC_Order Order object.
  */
 public static function create_order($customer_id = 1)
 {
     // Create product
     $product = WC_Helper_Product::create_simple_product();
     WC_Helper_Shipping::create_simple_flat_rate();
     $order_data = array('status' => 'pending', 'customer_id' => $customer_id, 'customer_note' => '', 'total' => '');
     $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
     // Required, else wc_create_order throws an exception
     $order = wc_create_order($order_data);
     // Add order products
     $order->add_product($product, 4);
     // Set billing address
     $order->set_billing_first_name('Jeroen');
     $order->set_billing_last_name('Sormani');
     $order->set_billing_company('WooCompany');
     $order->set_billing_address_1('WooAddress');
     $order->set_billing_address_2('');
     $order->set_billing_city('WooCity');
     $order->set_billing_state('NY');
     $order->set_billing_postcode('123456');
     $order->set_billing_country('US');
     $order->set_billing_email('*****@*****.**');
     $order->set_billing_phone('555-32123');
     // Add shipping costs
     $shipping_taxes = WC_Tax::calc_shipping_tax('10', WC_Tax::get_shipping_tax_rates());
     $rate = new WC_Shipping_Rate('flat_rate_shipping', 'Flat rate shipping', '10', $shipping_taxes, 'flat_rate');
     $item = new WC_Order_Item_Shipping();
     $item->set_props(array('method_title' => $rate->label, 'method_id' => $rate->id, 'total' => wc_format_decimal($rate->cost), 'taxes' => $rate->taxes, 'meta_data' => $rate->get_meta_data()));
     $order->add_item($item);
     // Set payment gateway
     $payment_gateways = WC()->payment_gateways->payment_gateways();
     $order->set_payment_method($payment_gateways['bacs']);
     // Set totals
     $order->set_shipping_total(10);
     $order->set_discount_total(0);
     $order->set_discount_tax(0);
     $order->set_cart_tax(0);
     $order->set_shipping_tax(0);
     $order->set_total(40);
     // 4 x $10 simple helper product
     $order->save();
     return $order;
 }
 /**
  * Add a shipping row to the order.
  * @param WC_Shipping_Rate shipping_rate
  * @return int order item ID
  */
 public function add_shipping($shipping_rate)
 {
     _deprecated_function('WC_Order::add_shipping', '2.7', 'Create new WC_Order_Item_Shipping object and add to order with WC_Order::add_item()');
     $item = new WC_Order_Item_Shipping(array('method_title' => $shipping_rate->label, 'method_id' => $shipping_rate->id, 'total' => wc_format_decimal($shipping_rate->cost), 'taxes' => $shipping_rate->taxes, 'meta_data' => $shipping_rate->get_meta_data(), 'order_id' => $this->get_id()));
     $item->save();
     $this->add_item($item);
     wc_do_deprecated_action('woocommerce_order_add_shipping', array($this->get_id(), $item->get_id(), $shipping_rate), '2.7', 'Use woocommerce_new_order_item action instead.');
     return $item->get_id();
 }
 /**
  * Create or update an order shipping method
  *
  * @since 2.2
  * @param \WC_Order $order
  * @param array $shipping item data
  * @param string $action 'create' to add shipping or 'update' to update it
  * @throws WC_API_Exception invalid data, server error
  */
 protected function set_shipping($order, $shipping, $action)
 {
     // total must be a positive float
     if (isset($shipping['total']) && floatval($shipping['total']) < 0) {
         throw new WC_API_Exception('woocommerce_invalid_shipping_total', __('Shipping total must be a positive amount', 'woocommerce'), 400);
     }
     if ('create' === $action) {
         // method ID is required
         if (!isset($shipping['method_id'])) {
             throw new WC_API_Exception('woocommerce_invalid_shipping_item', __('Shipping method ID is required', 'woocommerce'), 400);
         }
         $rate = new WC_Shipping_Rate($shipping['method_id'], isset($shipping['method_title']) ? $shipping['method_title'] : '', isset($shipping['total']) ? floatval($shipping['total']) : 0, array(), $shipping['method_id']);
         $item = new WC_Order_Item_Shipping();
         $item->set_shipping_rate($rate);
         $shipping_id = $item->save();
         if (!$shipping_id) {
             throw new WC_API_Exception('woocommerce_cannot_create_shipping', __('Cannot create shipping method, try again', 'woocommerce'), 500);
         }
     } else {
         $item = new WC_Order_Item_Shipping($shipping['id']);
         if (isset($shipping['method_id'])) {
             $item->set_method_id($shipping['method_id']);
         }
         if (isset($shipping['method_title'])) {
             $item->set_method_title($shipping['method_title']);
         }
         if (isset($shipping['total'])) {
             $item->set_total(floatval($shipping['total']));
         }
         $shipping_id = $item->save();
         if (!$shipping_id) {
             throw new WC_API_Exception('woocommerce_cannot_update_shipping', __('Cannot update shipping method, try again', 'woocommerce'), 500);
         }
     }
 }
 /**
  * Add shipping lines to the order.
  *
  * @param  WC_Order $order
  */
 protected function create_order_shipping_lines(&$order)
 {
     $chosen_shipping_methods = WC()->session->get('chosen_shipping_methods');
     foreach (WC()->shipping->get_packages() as $package_key => $package) {
         if (isset($chosen_shipping_methods[$package_key], $package['rates'][$chosen_shipping_methods[$package_key]])) {
             $shipping_rate = $package['rates'][$chosen_shipping_methods[$package_key]];
             $item = new WC_Order_Item_Shipping();
             $item->set_props(array('method_title' => $shipping_rate->label, 'method_id' => $shipping_rate->id, 'total' => wc_format_decimal($shipping_rate->cost), 'taxes' => $shipping_rate->taxes, 'meta_data' => $shipping_rate->get_meta_data()));
             // Set this to pass to legacy actions.
             $item->legacy_package_key = $package_key;
             $order->add_item($item);
         }
     }
 }
Esempio n. 5
0
 /**
  * Test: has_shipping_method
  */
 function test_has_shipping_method()
 {
     $object = new WC_Order();
     $object->save();
     $this->assertFalse($object->has_shipping_method('flat_rate_shipping'));
     $rate = new WC_Shipping_Rate('flat_rate_shipping:1', 'Flat rate shipping', '10', array(), 'flat_rate');
     $item = new WC_Order_Item_Shipping();
     $item->set_props(array('method_title' => $rate->label, 'method_id' => $rate->id, 'total' => wc_format_decimal($rate->cost), 'taxes' => $rate->taxes, 'meta_data' => $rate->get_meta_data()));
     $object->add_item($item);
     $object->save();
     $this->assertTrue($object->has_shipping_method('flat_rate_shipping'));
 }
Esempio n. 6
0
 /**
  * Add order shipping cost via ajax.
  */
 public static function add_order_shipping()
 {
     check_ajax_referer('order-item', 'security');
     if (!current_user_can('edit_shop_orders')) {
         die(-1);
     }
     try {
         $order_id = absint($_POST['order_id']);
         $order = wc_get_order($order_id);
         $order_taxes = $order->get_taxes();
         $shipping_methods = WC()->shipping() ? WC()->shipping->load_shipping_methods() : array();
         // Add new shipping
         $item = new WC_Order_Item_Shipping();
         $item->set_shipping_rate(new WC_Shipping_Rate());
         $order->add_item($item);
         ob_start();
         include 'admin/meta-boxes/views/html-order-shipping.php';
         wp_send_json_success(array('html' => ob_get_clean()));
     } catch (Exception $e) {
         wp_send_json_error(array('error' => $e->getMessage()));
     }
     die;
 }
Esempio n. 7
0
 /**
  * Add order shipping cost via ajax.
  */
 public static function add_order_shipping()
 {
     check_ajax_referer('order-item', 'security');
     if (!current_user_can('edit_shop_orders')) {
         die(-1);
     }
     $order_id = absint($_POST['order_id']);
     $order = wc_get_order($order_id);
     $order_taxes = $order->get_taxes();
     $shipping_methods = WC()->shipping() ? WC()->shipping->load_shipping_methods() : array();
     // Add new shipping
     $item = new WC_Order_Item_Shipping();
     $item->set_shipping_rate(new WC_Shipping_Rate());
     $order->add_item($item);
     include 'admin/meta-boxes/views/html-order-shipping.php';
     // Quit out
     die;
 }