/** * 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 * @throws WC_Data_Exception */ public function add_shipping($shipping_rate) { wc_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(); $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(), '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(); }
/** * 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); } } }
/** * 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')); }