Advertisement
nshelper

WPGlobaCart - WooCommerce Cost of Goods

Oct 16th, 2024
81
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.66 KB | None | 0 0
  1.     protected function get_total_cost_refunded_for_item( $item, $item_id = null ) {
  2.         global $wpdb;
  3.  
  4.         $total = null;
  5.  
  6.         if ( $item instanceof \WC_Order_Item ) {
  7.  
  8.             $total = 0;
  9.            
  10.             global $blog_id;
  11.             $switch_to_blog =   FALSE;
  12.            
  13.             if ( $blog_id > 1 )
  14.                 {
  15.                     $switch_to_blog =   $blog_id;
  16.                     restore_current_blog();
  17.                 }
  18.            
  19.             $order = $item->get_order();
  20.            
  21.             if ( $switch_to_blog !== FALSE )
  22.                 switch_to_blog( $switch_to_blog );
  23.            
  24.             if ( ! empty ( $order_blog_id ) )
  25.                 restore_current_blog();
  26.  
  27.             foreach ( $order->get_refunds() as $refund ) {
  28.                 /* @var \WC_Order_Item $refunded_item */
  29.                 foreach ( $refund->get_items() as $refunded_item ) {
  30.  
  31.                     if ( absint( $refunded_item->get_meta( '_refunded_item_id' ) ) === $item->get_id() ) {
  32.                         $total_cost = $refunded_item->get_meta( '_wc_cog_item_total_cost' );
  33.                         $total += is_numeric( $total_cost ) ? (float) $total_cost : 0;
  34.                     }
  35.                 }
  36.             }
  37.  
  38.         } elseif ( $item_id ) {
  39.  
  40.             $total = $wpdb->get_var( $wpdb->prepare( "
  41.                 SELECT SUM( order_itemmeta.meta_value )
  42.                 FROM {$wpdb->prefix}woocommerce_order_itemmeta AS order_itemmeta
  43.                 WHERE order_itemmeta.meta_key = '_wc_cog_item_total_cost' AND
  44.                 order_itemmeta.order_item_id  IN (
  45.                     SELECT order_item_id FROM {$wpdb->prefix}woocommerce_order_itemmeta as order_itemmeta2
  46.                     WHERE order_itemmeta2.meta_value = %d AND order_itemmeta2.meta_key = '_refunded_item_id'
  47.                 )
  48.             ", $item_id ) );
  49.         }
  50.  
  51.         return str_replace( '-', '', (string) $total );
  52.     }
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement