GoPymes's Blog

Incrementar stock por reembolso

stock

Cuando haces una compra en Woocommerce, antes de llevarte a la pantalla para ingresar tus datos de tu tarjeta, este ya generó tu pedido como “pendiente” y tus productos ya decrecieron si esta activado el manejo de stock.

Entonces si sucede un error en la compra, y el pedido cancela, este debería devolver los items al stock, para ello puedes usar la siguiente funcion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function increase_order_stock($order_id) {
$order = new WC_Order( $order_id );

// Reduce stock levels and do any other actions with products in the cart
foreach ( $order->get_items() as $item ) {
$_product = $order->get_product_from_item( $item );

if ( $_product && $_product->exists() && $_product->managing_stock() ) {
$old_stock = $_product->stock;
$new_quantity = $_product->increase_stock( $item['qty'] );
$order->add_order_note( sprintf( __( 'Item #%s stock increase from %s to %s.', 'gowc' ), $item['product_id'], $old_stock, $new_quantity) );

$order->send_stock_notifications( $_product, $new_quantity, $item['qty'] );
}
}

$order->add_order_note( __( 'Order item stock increase successfully.', 'gowc' ) );
}
?>

y la puedes llamar en cualquier circunstancia, ya sea mediante un hook o alguna condición de “pedido cancelado”.
Por otro lado, a partir de la versión 2.2.x de Woocommerce han creado un nuevo estado “refunded” y si tu pedido cambia a este estado, todos tus productos son devueltos automágicamente sin necesidad alguna funcionalidad externa.

Recuerda que : el estado “cancelado” no devuelve stock

One Comment

  1. cristian says:

    Hola como puedo implementar la funcion para los pedidos que tienen el estado cancelado y que funcione.

Leave a Reply

Your email address will not be published. Required fields are marked *