Server IP : 162.0.217.223 / Your IP : 216.73.216.168 Web Server : LiteSpeed System : Linux premium269.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : mypckeys ( 1539) PHP Version : 8.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/mypckeys/yeslicense.org/wp-content/plugins/woocommerce/src/Admin/Overrides/ |
Upload File : |
<?php /** * WC Admin Order Trait * * WC Admin Order Trait class that houses shared functionality across order and refund classes. */ namespace Automattic\WooCommerce\Admin\Overrides; defined( 'ABSPATH' ) || exit; /** * OrderTraits class. */ trait OrderTraits { /** * Calculate shipping amount for line item/product as a total shipping amount ratio based on quantity. * * @param WC_Order_Item $item Line item from order. * @param int $order_items_count (optional) The number of order items in an order. This could be the remaining items left to refund. * @param float $shipping_amount (optional) The shipping fee amount in an order. This could be the remaining shipping amount left to refund. * * @return float|int */ public function get_item_shipping_amount( $item, $order_items_count = null, $shipping_amount = null ) { // Shipping amount loosely based on woocommerce code in includes/admin/meta-boxes/views/html-order-item(s).php // distributed simply based on number of line items. $product_qty = $item->get_quantity( 'edit' ); // Use the passed order_items_count if provided, otherwise get the total number of items in the order. // This is useful when calculating refunds for partial items in an order. // For example, if 2 items are refunded from an order with 4 items. The remaining 2 items should have the shipping fee of the refunded items distributed to them. $order_items = null !== $order_items_count ? $order_items_count : $this->get_item_count(); if ( 0 === $order_items ) { return 0; } // Use the passed shipping_amount if provided, otherwise get the total shipping amount in the order. // This is useful when calculating refunds for partial shipping in an order. // For example, if $10 shipping is refunded from an order with $30 shipping, the remaining $20 should be distributed to the remaining items. $total_shipping_amount = null !== $shipping_amount ? $shipping_amount : (float) $this->get_shipping_total(); return $total_shipping_amount / $order_items * $product_qty; } /** * Calculate shipping tax amount for line item/product as a total shipping tax amount ratio based on quantity. * * Loosely based on code in includes/admin/meta-boxes/views/html-order-item(s).php. * * @todo If WC is currently not tax enabled, but it was before (or vice versa), would this work correctly? * * @param WC_Order_Item $item Line item from order. * @param int $order_items_count (optional) The number of order items in an order. This could be the remaining items left to refund. * @param float $shipping_tax_amount (optional) The shipping tax amount in an order. This could be the remaining shipping tax amount left to refund. * * @return float|int */ public function get_item_shipping_tax_amount( $item, $order_items_count = null, $shipping_tax_amount = null ) { // Use the passed order_items_count if provided, otherwise get the total number of items in the order. // This is useful when calculating refunds for partial items in an order. // For example, if 2 items are refunded from an order with 4 items. The remaining 2 items should have the shipping tax of the refunded items distributed to them. $order_items = null !== $order_items_count ? $order_items_count : $this->get_item_count(); if ( 0 === $order_items ) { return 0; } // Use the passed shipping_tax_amount if provided, otherwise initialize it to 0 and calculate the total shipping tax amount in the order. // This is useful when calculating refunds for partial shipping tax in an order. // For example, if $1 shipping tax is refunded from an order with $3 shipping tax, the remaining $2 should be distributed to the remaining items. $total_shipping_tax_amount = $shipping_tax_amount ? $shipping_tax_amount : 0; if ( null === $shipping_tax_amount ) { $order_taxes = $this->get_taxes(); $line_items_shipping = $this->get_items( 'shipping' ); foreach ( $line_items_shipping as $item_id => $shipping_item ) { $tax_data = $shipping_item->get_taxes(); if ( $tax_data ) { foreach ( $order_taxes as $tax_item ) { $tax_item_id = $tax_item->get_rate_id(); $tax_item_total = isset( $tax_data['total'][ $tax_item_id ] ) ? (float) $tax_data['total'][ $tax_item_id ] : 0; $total_shipping_tax_amount += $tax_item_total; } } } } $product_qty = $item->get_quantity( 'edit' ); return $total_shipping_tax_amount / $order_items * $product_qty; } /** * Calculates coupon amount for specified line item/product. * * Coupon calculation based on woocommerce code in includes/admin/meta-boxes/views/html-order-item.php. * * @param WC_Order_Item $item Line item from order. * * @return float */ public function get_item_coupon_amount( $item ) { return floatval( $item->get_subtotal( 'edit' ) - $item->get_total( 'edit' ) ); } /** * Calculate cart tax amount for line item/product. * * @param WC_Order_Item $item Line item from order. * * @return float */ public function get_item_cart_tax_amount( $item ) { $order_taxes = $this->get_taxes(); $tax_data = $item->get_taxes(); $cart_tax_amount = 0.0; foreach ( $order_taxes as $tax_item ) { $tax_item_id = $tax_item->get_rate_id(); $cart_tax_amount += isset( $tax_data['total'][ $tax_item_id ] ) ? (float) $tax_data['total'][ $tax_item_id ] : 0; } return $cart_tax_amount; } }