File "class-wc-order-item-shipping.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-order-item-shipping.php
File size: 4.6 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?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);
    }
}