Получить возмещенные заказы и детали возвращенные детали заказа в Woocommerce 3 - PullRequest
0 голосов
/ 25 сентября 2018

Я вижу, когда я смотрю на заказ, он показывает конкретный предмет, который был возвращен, если весь заказ не был.

Есть ли способ найти, используя WC_Order_Item_Product, если товар был возвращен?Кроме того, есть ли способ получить сумму скидки, которая отображается ниже позиции в представлении заказа?

В настоящее время я делаю это вручную, но если для этого уже есть функция, я бы лучше использовал ее.

1 Ответ

0 голосов
/ 25 сентября 2018

Чтобы получить возврат заказа, вы используете некоторые WC_Order методы , например, следующие, в которых в качестве аргумента указан идентификатор элемента:

$item_qty_refunded = $order->get_qty_refunded_for_item( $item_id ); // Get the refunded amount for a line item.

$item_total_refunded = $order->get_total_refunded_for_item( $item_id ); // Get the refunded amount for a line item.

Вы можете получить доступ к массиву WC_Order_Refund Объекты для этого заказа, используя get_refunds() метод:

  • Для каждого возврата вы можете использовать WC_Order_Refund методы,
  • Для каждого возврата вы можете получить доступ к элементам, используя WC_Abstract_Order метод get_items(), который даст вам возвращенные элементы для текущего возврата заказа.
  • Каждая строка возврата ""элемент представляет собой WC_Order_Item_Product (с отрицательными значениями в целом), см. этот связанный ответ: Получить элементы заказа и WC_Order_Item_Product в Woocommerce 3

Таким образом, выможно использовать следующий пример кода:

// Get the WC_Order Object instance (from the order ID)
$order = wc_get_order( $order_id );

// Get the Order refunds (array of refunds)
$order_refunds = $order->get_refunds();

// Loop through the order refunds array
foreach( $order_refunds as $refund ){
    // Loop through the order refund line items
    foreach( $refund->get_items() as $item_id => $item ){

        ## --- Using WC_Order_Item_Product methods --- ##

        $refunded_quantity      = $item->get_quantity(); // Quantity: zero or negative integer
        $refunded_line_subtotal = $item->get_subtotal(); // line subtotal: zero or negative number
        // ... And so on ...

        // Get the original refunded item ID
        $refunded_item_id       = $item->get_meta('_refunded_item_id'); // line subtotal: zero or negative number
    }
}

Чтобы получить скидки для элементов заказа , которые появляются на страницах редактирования заказа администратора, вы будете использовать следующий код:

// Get the WC_Order Object instance (from the order ID)
$order = wc_get_order($order_id);

// Loop through the order refund line items
foreach( $order->get_items() as $item_id => $item ){
    $line_subtotal     = $item->get_subtotal();
    $line_total        = $item->get_total();
    $line_subtotal_tax = $item->get_subtotal_tax();
    $line_total_tax    = $item->get_total_tax();

    // Get the negative discount values
    $line_discount     = $line_total - $line_subtotal; // (Negative number)
    $line_discount_tax = $line_total_tax - $line_subtotal_tax; // (Negative number)
}

Похожие ответы:

...