get_refunds() public method

Get order refunds.
Since: 2.2
public get_refunds ( ) : array
return array of WC_Order_Refund objects
 /**
  * Add credit note email to order actions list
  */
 public function pro_email_order_actions($available_emails)
 {
     global $post_id;
     $order_notification_settings = get_option('woocommerce_pdf_order_notification_settings');
     if (isset($order_notification_settings['recipient']) && !empty($order_notification_settings['recipient'])) {
         // only add order notification action when a recipient is set!
         $available_emails[] = 'pdf_order_notification';
     }
     if (version_compare(WOOCOMMERCE_VERSION, '2.2', '>=')) {
         $order = new WC_Order($post_id);
         $refunds = $order->get_refunds();
         if (!empty($refunds)) {
             $available_emails[] = 'customer_credit_note';
         }
     }
     return $available_emails;
 }
 /**
  * Get the order data format for CSV Import JSON format
  *
  * @since 3.12.0
  * @param array $order_data an array of order data for the given order
  * @param WC_Order $order the WC_Order object
  * @return array modified order data
  */
 private function get_import_columns($order_data, WC_Order $order)
 {
     if (isset($order_data['refunded_total']) && $order_data['refunded_total']) {
         $refunds = array();
         foreach ($order->get_refunds() as $refund) {
             $line_items = array();
             // add line items
             foreach ($refund->get_items(array('line_item', 'fee', 'shipping')) as $item_id => $item) {
                 $refund_amount = abs(isset($item['line_total']) ? $item['line_total'] : (isset($item['cost']) ? $item['cost'] : null));
                 // skip empty refund lines
                 if (!$refund_amount) {
                     continue;
                 }
                 $refunded_item = array('refunded_item_id' => $item['refunded_item_id'], 'refund_total' => $refund_amount);
                 if (isset($item['taxes'])) {
                     $refunded_item['refund_tax'] = maybe_unserialize($item['taxes']);
                 }
                 if (isset($item['line_tax_data'])) {
                     $tax_data = maybe_unserialize($item['line_tax_data']);
                     $refunded_item['refund_tax'] = $tax_data['total'];
                 }
                 if (isset($item['qty'])) {
                     $refunded_item['qty'] = $item['qty'];
                 }
                 $line_items[] = $refunded_item;
             }
             $refund_data = array('id' => $refund->id, 'date' => $refund->date, 'amount' => wc_format_decimal($refund->get_refund_amount(), 2), 'reason' => $refund->get_refund_reason(), 'line_items' => $line_items);
             $refunds[] = $refund_data;
         }
         $order_data['refunds'] = !empty($refunds) ? json_encode($refunds) : '';
     }
     // fix order numbers
     $order_data['order_id'] = $order->id;
     $order_data['order_number_formatted'] = get_post_meta($order->id, '_order_number_formatted', true);
     $order_data['order_number'] = get_post_meta($order->id, '_order_number', true);
     // fix customer user
     $user = new WP_User($order_data['customer_id']);
     $order_data['customer_id'] = $user->user_email;
     return $order_data;
 }
 public function recalculate_order($order_id)
 {
     $order_currency = get_post_meta($order_id, '_order_currency', true);
     //lets avoid recalculation for order which is already in
     if ($order_currency == $this->default_currency or empty($order_currency)) {
         return;
     }
     //***
     $currencies = $this->get_currencies();
     $_woocs_order_rate = get_post_meta($order_id, '_woocs_order_rate', true);
     if (empty($_woocs_order_rate)) {
         $_woocs_order_rate = $currencies[$order_currency]['rate'];
     }
     //***
     update_post_meta($order_id, '_woocs_order_currency', $this->default_currency);
     update_post_meta($order_id, '_order_currency', $this->default_currency);
     update_post_meta($order_id, '_woocs_order_base_currency', $this->default_currency);
     wc_update_order_item_meta($order_id, '_woocs_order_base_currency', $this->default_currency);
     update_post_meta($order_id, '_woocs_order_rate', 1);
     wc_update_order_item_meta($order_id, '_woocs_order_rate', 1);
     update_post_meta($order_id, '_woocs_order_currency_changed_mannualy', time());
     wc_add_order_item_meta($order_id, '_woocs_order_currency_changed_mannualy', time(), true);
     //***
     $_order_shipping = get_post_meta($order_id, '_order_shipping', true);
     update_post_meta($order_id, '_order_shipping', $this->back_convert($_order_shipping, $_woocs_order_rate));
     $_order_total = get_post_meta($order_id, '_order_total', true);
     update_post_meta($order_id, '_order_total', $this->back_convert($_order_total, $_woocs_order_rate));
     $_refund_amount = get_post_meta($order_id, '_refund_amount', true);
     update_post_meta($order_id, '_refund_amount', $this->back_convert($_refund_amount, $_woocs_order_rate));
     $_cart_discount_tax = get_post_meta($order_id, '_cart_discount_tax', true);
     update_post_meta($order_id, '_cart_discount_tax', $this->back_convert($_cart_discount_tax, $_woocs_order_rate));
     $_order_tax = get_post_meta($order_id, '_order_tax', true);
     update_post_meta($order_id, '_order_tax', $this->back_convert($_order_tax, $_woocs_order_rate));
     $_order_shipping_tax = get_post_meta($order_id, '_order_shipping_tax', true);
     update_post_meta($order_id, '_order_shipping_tax', $this->back_convert($_order_shipping_tax, $_woocs_order_rate));
     $_cart_discount = get_post_meta($order_id, '_cart_discount', true);
     update_post_meta($order_id, '_cart_discount', $this->back_convert($_cart_discount, $_woocs_order_rate));
     //***
     global $wpdb;
     $get_items_sql = $wpdb->prepare("SELECT order_item_id,order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d ", $order_id);
     $line_items = $wpdb->get_results($get_items_sql, ARRAY_N);
     if (!empty($line_items) and is_array($line_items)) {
         foreach ($line_items as $v) {
             $order_item_id = $v[0];
             $order_item_type = $v[1];
             switch ($order_item_type) {
                 case 'line_item':
                     $amount = wc_get_order_item_meta($order_item_id, '_line_subtotal', true);
                     wc_update_order_item_meta($order_item_id, '_line_subtotal', $this->back_convert($amount, $_woocs_order_rate, 2));
                     $amount = wc_get_order_item_meta($order_item_id, '_line_total', true);
                     wc_update_order_item_meta($order_item_id, '_line_total', $this->back_convert($amount, $_woocs_order_rate, 2));
                     $amount = wc_get_order_item_meta($order_item_id, '_line_subtotal_tax', true);
                     wc_update_order_item_meta($order_item_id, '_line_subtotal_tax', $this->back_convert($amount, $_woocs_order_rate, 2));
                     $amount = wc_get_order_item_meta($order_item_id, '_line_tax', true);
                     wc_update_order_item_meta($order_item_id, '_line_tax', $this->back_convert($amount, $_woocs_order_rate, 2));
                     $_line_tax_data = wc_get_order_item_meta($order_item_id, '_line_tax_data', true);
                     if (!empty($_line_tax_data) and is_array($_line_tax_data)) {
                         foreach ($_line_tax_data as $key => $values) {
                             if (!empty($values)) {
                                 if (is_array($values)) {
                                     foreach ($values as $k => $value) {
                                         if (is_numeric($value)) {
                                             $_line_tax_data[$key][$k] = $this->back_convert($value, $_woocs_order_rate, 2);
                                         }
                                     }
                                 } else {
                                     if (is_numeric($values)) {
                                         $_line_tax_data[$key] = $this->back_convert($values, $_woocs_order_rate, 2);
                                     }
                                 }
                             }
                         }
                     }
                     wc_update_order_item_meta($order_item_id, '_line_tax_data', $_line_tax_data);
                     break;
                 case 'shipping':
                     $amount = wc_get_order_item_meta($order_item_id, 'cost', true);
                     wc_update_order_item_meta($order_item_id, 'cost', $this->back_convert($amount, $_woocs_order_rate, 2));
                     $taxes = wc_get_order_item_meta($order_item_id, 'taxes', true);
                     if (!empty($taxes) and is_array($taxes)) {
                         foreach ($taxes as $key => $values) {
                             if (!empty($values)) {
                                 if (is_array($values)) {
                                     foreach ($values as $k => $value) {
                                         if (is_numeric($value)) {
                                             $taxes[$key][$k] = $this->back_convert($value, $_woocs_order_rate, 2);
                                         }
                                     }
                                 } else {
                                     if (is_numeric($values)) {
                                         $taxes[$key] = $this->back_convert($values, $_woocs_order_rate, 2);
                                     }
                                 }
                             }
                         }
                     }
                     wc_update_order_item_meta($order_item_id, 'taxes', $taxes);
                     break;
                 case 'tax':
                     $amount = wc_get_order_item_meta($order_item_id, 'tax_amount', true);
                     wc_update_order_item_meta($order_item_id, 'tax_amount', $this->back_convert($amount, $_woocs_order_rate, 3));
                     $amount = wc_get_order_item_meta($order_item_id, 'shipping_tax_amount', true);
                     wc_update_order_item_meta($order_item_id, 'shipping_tax_amount', $this->back_convert($amount, $_woocs_order_rate, 2));
                     break;
                 default:
                     break;
             }
         }
     }
     //***
     $order = new WC_Order($order_id);
     $refunds = $order->get_refunds();
     if (!empty($refunds)) {
         foreach ($refunds as $refund) {
             $post_id = $refund->id;
             $amount = get_post_meta($post_id, '_refund_amount', true);
             update_post_meta($post_id, '_refund_amount', $this->back_convert($amount, $_woocs_order_rate, 2));
             $amount = get_post_meta($post_id, '_order_total', true);
             update_post_meta($post_id, '_order_total', $this->back_convert($amount, $_woocs_order_rate, 2));
             update_post_meta($post_id, '_order_currency', $this->default_currency);
         }
     }
 }
Example #4
0
 /**
  * Test: get_refunds
  */
 function test_get_refunds()
 {
     $object = new WC_Order();
     $id = $object->save();
     $this->assertCount(0, $object->get_refunds());
     wc_create_refund(array('order_id' => $id, 'amount' => '100', 'line_items' => array()));
     $this->assertCount(1, $object->get_refunds());
 }
Example #5
0
 public function refunds_order_ids($order_ids, $template_type)
 {
     if ($template_type == 'credit-note') {
         $refunds_order_ids = array();
         foreach ($order_ids as $order_id) {
             $order = new WC_Order($order_id);
             $refunds = $order->get_refunds();
             foreach ($refunds as $key => $refund) {
                 $refunds_order_ids[] = $refund->id;
             }
         }
         // die(print_r($refunds_order_ids,true));
         return $refunds_order_ids;
     } else {
         return $order_ids;
     }
 }