Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('ABSPATH') || exit; class WC_Order_Item_Shipping extends WC_Order_Item { protected $extra_data = array('method_title' => '', 'method_id' => '', 'instance_id' => '', 'total' => 0, 'total_tax' => 0, 'taxes' => array('total' => array())); public function calculate_taxes($calculate_tax_for = array()) { if (!isset($calculate_tax_for['country'], $calculate_tax_for['state'], $calculate_tax_for['postcode'], $calculate_tax_for['city'], $calculate_tax_for['tax_class'])) { return false; } if (wc_tax_enabled()) { $tax_rates = WC_Tax::find_shipping_rates($calculate_tax_for); $taxes = WC_Tax::calc_tax($this->get_total(), $tax_rates, false); $this->set_taxes(array('total' => $taxes)); } else { $this->set_taxes(false); } do_action('woocommerce_order_item_shipping_after_calculate_taxes', $this, $calculate_tax_for); return true; } public function set_name($value) { $this->set_method_title($value); } public function set_method_title($value) { $this->set_prop('name', wc_clean($value)); $this->set_prop('method_title', wc_clean($value)); } public function set_method_id($value) { $this->set_prop('method_id', wc_clean($value)); } public function set_instance_id($value) { $this->set_prop('instance_id', wc_clean($value)); } public function set_total($value) { $this->set_prop('total', wc_format_decimal($value)); } protected function set_total_tax($value) { $this->set_prop('total_tax', wc_format_decimal($value)); } public function set_taxes($raw_tax_data) { $raw_tax_data = maybe_unserialize($raw_tax_data); $tax_data = array('total' => array()); if (isset($raw_tax_data['total'])) { $tax_data['total'] = array_map('wc_format_decimal', $raw_tax_data['total']); } elseif (!empty($raw_tax_data) && is_array($raw_tax_data)) { $tax_data['total'] = array_map('wc_format_decimal', $raw_tax_data); } $this->set_prop('taxes', $tax_data); if ('yes' === get_option('woocommerce_tax_round_at_subtotal')) { $this->set_total_tax(array_sum($tax_data['total'])); } else { $this->set_total_tax(array_sum(array_map('wc_round_tax_total', $tax_data['total']))); } } public function set_shipping_rate($shipping_rate) { $this->set_method_title($shipping_rate->get_label()); $this->set_method_id($shipping_rate->get_method_id()); $this->set_instance_id($shipping_rate->get_instance_id()); $this->set_total($shipping_rate->get_cost()); $this->set_taxes($shipping_rate->get_taxes()); $this->set_meta_data($shipping_rate->get_meta_data()); } public function get_type() { return 'shipping'; } public function get_name($context = 'view') { return $this->get_method_title($context); } public function get_method_title($context = 'view') { $method_title = $this->get_prop('method_title', $context); if ('view' === $context) { return $method_title ? $method_title : __('Shipping', 'woocommerce'); } else { return $method_title; } } public function get_method_id($context = 'view') { return $this->get_prop('method_id', $context); } public function get_instance_id($context = 'view') { return $this->get_prop('instance_id', $context); } public function get_total($context = 'view') { return $this->get_prop('total', $context); } public function get_total_tax($context = 'view') { return $this->get_prop('total_tax', $context); } public function get_taxes($context = 'view') { return $this->get_prop('taxes', $context); } public function get_tax_class($context = 'view') { return get_option('woocommerce_shipping_tax_class'); } public function offsetGet($offset) { if ('cost' === $offset) { $offset = 'total'; } return parent::offsetGet($offset); } public function offsetSet($offset, $value) { wc_deprecated_function('WC_Order_Item_Shipping::offsetSet', '4.4.0', ''); if ('cost' === $offset) { $offset = 'total'; } parent::offsetSet($offset, $value); } public function offsetExists($offset) { if (in_array($offset, array('cost'), true)) { return true; } return parent::offsetExists($offset); } }