Hola!
Desde que actualicé el plugin correos express hay algunos errores en mi web. A cierta hora de la mañana, pedidos que ya estaban pagados y completados, con seguimiento de correos express y ya entregado a sus clientes, repentinamente cambian de estado de forma automática a "Pendiente de Pago", y por ende le llega un mail al cliente, generandotela así mucha confusion.
No se a qué puede deberse. El plugin de correos express es el más reciente.
Gracias
Laura
Hola Laura.
El plugin Correos Express es de terceros y nosotros no tenemos acceso a él, tienes que consultarlo con su soporte.
Puedes comunicarte con ellos en esta cuenta:
integraciones@correosexpress.com
Algo que puedes probar es Bloquea cambios automáticos en estados.
.- Accede a fragmentos de código -> añadir nuevo
.- Añade un titulo para tenerlo identificado y añades lo siguiente
add_action('woocommerce_order_status_changed', 'bloquear_reversion_estados', 10, 3);
function bloquear_reversion_estados($order_id, $old_status, $new_status) {
$order = wc_get_order($order_id);
if ($old_status === 'completed' && $new_status === 'pending') {
// Revierte a completado y loguea
$order->update_status('completed', 'Estado revertido por posible bug de plugin.');
error_log('Posible bug de Correos Express revertido en pedido #' . $order_id);
}
}
Revisa si con eso se soluciona y nos comentas.
Un Saludo
Muchas gracias, voy a probar y os cuento pronto
Hola Laura.
Ok, dejo el hilo abierto por si necesitas retomarlo.
Un saludo
Hola! Después de varios días con la solución propuesta, lo que es el problema de que el estado del pedido cambiase a Pendiente de pago se ha solucionado. Sin embargo, de forma interna, en los pedidos que pasa eso, al revertirse el estado , se le envía cada dos por tres el mail de confirmación de pedido al cliente. Algunos ya lo han recibido más de 8 veces 🙁
Cómo podría solucionar esta situación? Adjunto pantallazo:
Hola Laura,
Enhorabuena se ha solucionado el error con el plugin de corre express, sobre la nueva consulta ya que es distinta al tema inicial abre un tema para ello, de esta forma mantenemos un control sobre el hilo y podemos ayudarte con mayor detalle.
Un Saludo
Hola Kare,
Gracias por tu respuesta.
Realmente el problema sigue activo. Lo que se ha hecho es añadir un fragmento de codigo que hace que se revierta el estado cambiado; pero esto supone el problema de que los clientes no paren de recibir correos de confirmación del pedido...porque realmente el pedido cambia de estado , pero luego vuelve a cambiar. Entonces no se si existe alguna modificación para ese fragmento de codigo que haga que en lugar de revertir ese cambio de estado, evite que se haga directamente, de forma que no se envíen los mails ni se modifiquen los inventarios.
gracias!
Hola Laura,
En este caso entiendo que se ha solucionado mediante un codigo personalizado, puedes indicarnos cual es el codigo añadido, ha sido el enviado anteriormente por Pepe o un codigo adicional? de esta forma podemos revisar con mayor detalle lo que nos comentas.
Un Saludo
Sí, este fue el código que me envío Pepe:
add_action('woocommerce_order_status_changed', 'bloquear_reversion_estados', 10, 3);
function bloquear_reversion_estados($order_id, $old_status, $new_status) {
$order = wc_get_order($order_id);
if ($old_status === 'completed' && $new_status === 'pending') {
// Revierte a completado y loguea
$order->update_status('completed', 'Estado revertido por posible bug de plugin.');
error_log('Posible bug de Correos Express revertido en pedido #' . $order_id);
}
}
Hola Laura,
Entiendo, en este caso prueba cambiar ese codgo por el siguiente y veririca si con ello funciona
add_filter('woocommerce_email_enabled_customer_processing_order', 'webempresaforo_bloquear_emails_en_reversion', 10, 2);
add_filter('woocommerce_email_enabled_customer_completed_order', 'webempresaforo_bloquear_emails_en_reversion', 10, 2);
function webempresaforo_bloquear_emails_en_reversion($enabled, $order) {
if ($order instanceof WC_Order) {
$flag = $order->get_meta('_webempresaforo_reversion_sin_email', true);
if (!empty($flag)) {
return false;
}
}
return $enabled;
}
add_action('woocommerce_order_status_changed', 'webempresaforo_evitar_reversion_completed_a_pending', 10, 3);
function webempresaforo_evitar_reversion_completed_a_pending($order_id, $old_status, $new_status) {
if ($old_status !== 'completed' || $new_status !== 'pending') {
return;
}
$order = wc_get_order($order_id);
if (!$order) {
return;
}
$last = (int) $order->get_meta('_webempresaforo_ultima_reversion_ts', true);
if ($last && (time() - $last) < 300) {
return;
}
$order->update_meta_data('_webempresaforo_reversion_sin_email', 1);
$order->update_meta_data('_webempresaforo_ultima_reversion_ts', time());
$order->save();
$order->update_status('completed', 'Estado revertido por posible bug de plugin.', false);
$order->delete_meta_data('_webempresaforo_reversion_sin_email');
$order->save();
error_log('webempresaforo: revertido completed desde pending en pedido #' . $order_id);
}
Ten en cuenta como te comenta Pepe que este plugin es de terceros, si continuar el error te recomiendo que consulte con el soporte del plugin para que te indiquen de forma precisa como solucionarlo.
Un Saludo