Avisos
Vaciar todo

Hosting WordPress 70% dto Dominios promo

[Resuelto] Woocommerce - Cancelo pedido y no se repone en mi inventario  

 
Gian Michell
 Gian Michell
Usuario experto

Hola!

Tengo un problema: Un cliente me hace un pedido que queda pendiente de pago y luego me dice que no lo hara por el momento lo que corresponde es cancelar el pedido en  woocommerce - pedidos  y debería reestablecerse en mi inventario pero.... estos productos no regresan a mi inventario. ¿qué puedo hacer al respecto? ¿alguna propuesta de solución? 🙁 esto me complica bastante. 

Muchas gracias de ante mano. 

Respondido : 15/07/2020 2:23 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Gian,

En este caso debes ingresar un código a tu archivo functions.php, para ello debes ingresar a tu cpanel → Public_html → tu dominio → wp-content → themes → tu tema → archivo functions.php, una vez estes dentro de este agrega el siguiente código al final del todo

remove_filter( 'woocommerce_cancel_unpaid_orders', 'wc_cancel_unpaid_orders' );
add_filter( 'woocommerce_cancel_unpaid_orders', 'override_cancel_unpaid_orders' );

function override_cancel_unpaid_orders() {
$held_duration = get_option( 'woocommerce_hold_stock_minutes' );

if ( $held_duration < 1 || 'yes' !== get_option( 'woocommerce_manage_stock' ) ) {
return;
}

$data_store = WC_Data_Store::load( 'order' );
$unpaid_orders = $data_store->get_unpaid_orders( strtotime( '-' . absint( $held_duration ) . ' MINUTES', current_time( 'timestamp' ) ) );

if ( $unpaid_orders ) {
foreach ( $unpaid_orders as $unpaid_order ) {
$order = wc_get_order( $unpaid_order );

if ( apply_filters( 'woocommerce_cancel_unpaid_order', 'checkout' === $order->get_created_via(), $order ) ) {
//Cancel Order
$order->update_status( 'cancelled', __( 'Unpaid order cancelled - time limit reached.', 'woocommerce' ) );

//Restock
foreach ($order->get_items() as $item_id => $item) {
// Get an instance of corresponding the WC_Product object
$product = $item->get_product();
$qty = $item->get_quantity(); // Get the item quantity
wc_update_product_stock($product, $qty, 'increase');
}
}
}
}
wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
wp_schedule_single_event( time() + ( absint( $held_duration ) * 60 ), 'woocommerce_cancel_unpaid_orders' );
}

Ya con esto al momento de tu colocar la orden como cancelada restaura el stock que tenía.

Saludos 

Respondido : 15/07/2020 2:47 am

Gian Michell
 Gian Michell
Usuario experto

Esto está en administrador de archivos verdad?

Respondido : 15/07/2020 2:51 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Gian,

Exactamente cpanel → Administrador de archivos → Public_html → tu dominio → wp-content → themes → tu tema → archivo functions.php, disculpa si lo salte en el mensaje previo

Nos comentas una vez tengas incorporado como te va, un saludo 🖐️ 

Respondido : 15/07/2020 2:58 am

Gian Michell
 Gian Michell
Usuario experto

@argenis

Nada que disculparte, lo acabo de hacer desde el wp-admin apariencia functions.php ¿es lo mismo cierto? 

PD: Soy super nuevo en woordpress

Respondido : 15/07/2020 3:00 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Gian,

Debería ser lo mismo pero puede que de esta forma no sea asimilado de forma correcta por lo que siempre es mejor agregarlo de forma manual a los datos del tema siguiendo la ruta que te comente, igualmente puedes agregarlo como indicas y verificar con una compra de prueba si funciona, si no obtienes los resultados que necesitas agregalo manualmente y verifica que esta vez si funcione.

Saludos 🖐️ 

Respondido : 15/07/2020 3:02 am

Gian Michell
 Gian Michell
Usuario experto

@argenis

Muchas gracias, todo funciono correctamente! Eres un genio! 

Respondido : 15/07/2020 4:49 am
Bulmaro
 Bulmaro
Soporte CMS Webempresa Moderator

@lossio-giangmail-com

Hola Gian,

Gracias a ti por consultarnos, esperamos leerte pronto en el foro.

Saludos 🙂

Respondido : 15/07/2020 5:41 am