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
Suscribete y tendrás los más recientes posts en tu email
Hola como puedo implementar la funcion para los pedidos que tienen el estado cancelado y que funcione.