set_shipping_tax_total() public method

Set shipping_tax_total
public set_shipping_tax_total ( string $value )
$value string
 /**
  * Update tax lines for the order based on the line item taxes themselves.
  */
 public function update_taxes()
 {
     $cart_taxes = array();
     $shipping_taxes = array();
     foreach ($this->get_items(array('line_item', 'fee')) as $item_id => $item) {
         $taxes = $item->get_taxes();
         foreach ($taxes['total'] as $tax_rate_id => $tax) {
             $cart_taxes[$tax_rate_id] = isset($cart_taxes[$tax_rate_id]) ? $cart_taxes[$tax_rate_id] + $tax : $tax;
         }
     }
     foreach ($this->get_shipping_methods() as $item_id => $item) {
         $taxes = $item->get_taxes();
         foreach ($taxes['total'] as $tax_rate_id => $tax) {
             $shipping_taxes[$tax_rate_id] = isset($shipping_taxes[$tax_rate_id]) ? $shipping_taxes[$tax_rate_id] + $tax : $tax;
         }
     }
     // Remove old existing tax rows.
     $this->remove_order_items('tax');
     // Now merge to keep tax rows.
     foreach (array_keys($cart_taxes + $shipping_taxes) as $tax_rate_id) {
         $item = new WC_Order_Item_Tax();
         $item->set_rate($tax_rate_id);
         $item->set_tax_total(isset($cart_taxes[$tax_rate_id]) ? $cart_taxes[$tax_rate_id] : 0);
         $item->set_shipping_tax_total(isset($shipping_taxes[$tax_rate_id]) ? $shipping_taxes[$tax_rate_id] : 0);
         $this->add_item($item);
     }
     // Save tax totals
     $this->set_shipping_tax(WC_Tax::round(array_sum($shipping_taxes)));
     $this->set_cart_tax(WC_Tax::round(array_sum($cart_taxes)));
     $this->save();
 }
Beispiel #2
0
 /**
  * Test: get_taxes
  */
 function test_get_taxes()
 {
     global $wpdb;
     update_option('woocommerce_calc_taxes', 'yes');
     $tax_rate = array('tax_rate_country' => '', 'tax_rate_state' => '', 'tax_rate' => '10.0000', 'tax_rate_name' => 'TAX', 'tax_rate_priority' => '1', 'tax_rate_compound' => '0', 'tax_rate_shipping' => '1', 'tax_rate_order' => '1', 'tax_rate_class' => '');
     WC_Tax::_insert_tax_rate($tax_rate);
     $object = new WC_Order();
     $item_1 = new WC_Order_Item_Product();
     $item_1->set_props(array('product' => WC_Helper_Product::create_simple_product(), 'quantity' => 4));
     $object->add_item($item_1);
     $object->calculate_totals();
     $this->assertCount(1, $object->get_taxes());
     $item = new WC_Order_Item_Tax();
     $item->set_rate(100);
     $item->set_tax_total(100);
     $item->set_shipping_tax_total(100);
     $object->add_item($item);
     $object->save();
     $this->assertCount(2, $object->get_taxes());
     // Cleanup
     $wpdb->query("DELETE FROM {$wpdb->prefix}woocommerce_tax_rates");
     $wpdb->query("DELETE FROM {$wpdb->prefix}woocommerce_tax_rate_locations");
     update_option('woocommerce_calc_taxes', 'no');
 }