¿Por qué en Amazon puedes modificar un pedido y tú no ofreces lo mismo a tus clientes?

¿Te has parado a pensar la de veces que nos quejamos de Amazon, de su preponderancia en el comercio electrónico? ¿y te has parado a pensar por qué tú no haces nada para imitar todo lo bueno que hacen?

Hay muchos ejemplos de por qué Amazon vende más que tú, e incluso visto algunos trucos que podemos aplicar para competir con Amazon, pero siempre nos falta algo, alguna característica de la tienda online de más éxito en el mundo que no aplicamos en nuestra tienda online, bien por desconocimiento bien por simple vaguería.

Pues se acabó el acomodarse en el sillón, y desde hoy te quiero ver ofreciendo en tu tienda online que tus clientes puedan modificar sus pedidos antes de que se completen.

Por qué es interesante permitir a los clientes modificar sus pedidos

Hay muchos posibles motivos por los que es bueno que tus clientes puedan modificar sus pedidos antes de que se completen, pero los principales considero que son estos:

Amazon lo ofrece y te gusta

¿Lo tengo que repetir? Si Amazon ofrece una funcionalidad que es buena para sus clientes, o sea, para ti, ¿por qué no ofrecerla tú en tu propia tienda online?

Si un pedido aún no se ha enviado ni facturado ¿qué problema hay en permitir al cliente modificarlo? Y si tienes algún inconveniente interno, operativo, más te vale que lo soluciones para que no sea un freno a la hora de ofrecer esta facilidad a tus clientes.

Los clientes se equivocan

Eso es así, los clientes se equivocan. El proceso de compra a veces no es tan claro como pensamos, o al contrario, es tan eficiente a la hora de conseguir que el cliente pague que esto a veces provoca que el cliente se acelere e introduzca mal los datos del pedido.

Así que no tiene nada malo que tus clientes sepan que si se equivocan pueden modificar su pedido antes de que empiece el proceso de envío o se complete la transacción totalmente.

Los clientes cambian de opinión

Me dirás que esto es una putada, que ¡cómo vas a facilitar que tus clientes anulen sus pedidos o quiten productos de los pedidos! Pero es que como comerciante tu prioridad deben ser tus clientes, su satisfacción, y por encima de todo la confianza de que tu comercio electrónico es un lugar seguro de compras online, en el que el cliente siempre tiene la última palabra, y controla el proceso de compra.

Debes asumir que los clientes de compras online no dejan de ver productos similares durante su navegación por Internet, y puede que encuentren productos similares más baratos o mejores, o simplemente que decidan frenar una compra de impulso, o cualquiera que sea el motivo para modificar un pedido.

Pero no pienses solo en negativo, también puede ocurrir el caso contrario: que tu cliente decida añadir más productos o más cantidades a un pedido.

¿Cómo permito a mis clientes modificar sus pedidos con WooCommerce?

Vale, ya estás convencido, pues vamos a ello, y para conseguirlo usaremos un truco que leí en Business Bloomer para aprovechar la funcionalidad de WooCommerce de repetir un pedido, en este caso para crear una modificación del existente. Enrevesado el planteamiento pero lo importante es que funciona.

Lo que hace el código siguiente es añadir un botón a los pedidos que estén aún procesándose, que, aunque indique que es para modificar el pedido, en realidad es para crear un nuevo pedido, que el cliente puede modificar en el carrito y finalizar (de nuevo) su compra. Para finalizar, se cancela el pedido anterior y queda vigente el nuevo.

Es importante que el estado del pedido esté en «Procesando», para no enviar 2 facturas, no cobrar 2 veces, no generar problemas en los envíos, etc. Por supuesto, todos estas operaciones solo deben lanzarse en tu tienda online cuando el pedido esté en estado de «Completado», en caso contrario vas a genera duplicidades.

Ya te digo que es un poco engañifa al sistema, pero funciona, que es lo que importa ¿no?

El código es el siguiente:

/* Boton de modificar pedido */
// 1. Permitimos el estado de pedir otra vez para pedidos en proceso
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'ayudawp_estado_pedir_otra_vez' );
function ayudawp_estado_pedir_otra_vez( $statuses ) {
$statuses[] = 'processing';
return $statuses;
}
// 2. Agregamos las acciones del pedido a la cuenta
add_filter( 'woocommerce_my_account_my_orders_actions', 'ayudawp_acciones_pedido_cuenta', 50, 2 );
function ayudawp_acciones_pedido_cuenta( $actions, $order ) {
if ( $order->has_status( 'processing' ) ) {
$actions['edit-order'] = array(
'url' => wp_nonce_url( add_query_arg( array( 'order_again' => $order->get_id(), 'edit_order' => $order->get_id() ) ), 'woocommerce-order_again' ),
'name' => __( 'Modificar pedido', 'woocommerce' )
);
}
return $actions;
}
// 3. Detectar la accion del pedido modificado
add_action( 'woocommerce_cart_loaded_from_session', 'ayudawp_detectar_pedido_modificado' );
function ayudawp_detectar_pedido_modificado( $cart ) {
if ( isset( $_GET['edit_order'], $_GET['_wpnonce'] ) && is_user_logged_in() && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'woocommerce-order_again' ) ) WC()->session->set( 'edit_order', absint( $_GET['edit_order'] ) );
}
// 4. Mostrar aviso en el carrito de que es un pedido modificado
add_action( 'woocommerce_before_cart', 'ayudawp_mostrar_que_es_pedido_modificado' );
function ayudawp_mostrar_que_es_pedido_modificado() {
if ( ! is_cart() ) return;
$edited = WC()->session->get('edit_order');
if ( ! empty( $edited ) ) {
$order = new WC_Order( $edited );
$credit = $order->get_total();
wc_print_notice( 'Tienes un crédito de ' . wc_price($credit) . ' aplicado al pedido. Añade productos o cambia los detalles que quieras, como fecha de entrega y finaliza el pedido.', 'notice' );
}
}
// 5. Calcular nuevo total del pedido modificado
add_action( 'woocommerce_cart_calculate_fees', 'ayudawp_calcular_nuevo_total', 20, 1 );
function ayudawp_calcular_nuevo_total( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
$edited = WC()->session->get('edit_order');
if ( ! empty( $edited ) ) {
$order = new WC_Order( $edited );
$credit = -1 * $order->get_total();
$cart->add_fee( 'Crédito', $credit );
}
}
// 6. Guardar pedido si se ha modificado
add_action( 'woocommerce_checkout_update_order_meta', 'ayudawp_guardar_pedido_modificado' );
function ayudawp_guardar_pedido_modificado( $order_id ) {
$edited = WC()->session->get( 'edit_order' );
if ( ! empty( $edited ) ) {
// Actualizamos este nuevo pedido
update_post_meta( $order_id, '_edit_order', $edited );
$neworder = new WC_Order( $order_id );
$oldorder_edit = get_edit_post_link( $edited );
$neworder->add_order_note( 'Pedido realizado a partir de una modificación. Número del pedido anterior: <a href="' . $oldorder_edit . '">' . $edited . '</a>' );
// cancel previous order
$oldorder = new WC_Order( $edited );
$neworder_edit = get_edit_post_link( $order_id );
$oldorder->update_status( 'cancelled', 'Pedido cancelado al haber una modificación del mismo. Número del nuevo pedido: <a href="' . $neworder_edit . '">' . $order_id . '</a> -' );
WC()->session->set( 'edit_order', null );
}
}

Una joya ¿verdad?

¿Cómo añado el código?

Este código debes añadirlo a tu tienda online creada con WooCommerce como prefieras. Aquí tienes un tutorial con varios modos de añadir códigos a tu web:

Cómo y dónde pegar en WordPress códigos PHP, JS, CSS y funciones que encuentres por ahí

¿Cómo funciona la nueva característica de modificar pedidos?

¿Quieres ver cómo funciona? Me parece lógico, que no todo el mundo sabe leer código, y además, ¡qué narices! que somos animales visuales, que necesitamos ver para crear ¿verdad?

Para empezar, el cliente verá en la página de su cuenta de tu tienda online un nuevo botón desde el que poder modificar sus pedidos que estén en estado de «Procesando»

Cuando el cliente pulse en el nuevo botón de «Modificar pedido» se le redirige al carrito, con mensajes que le indican que se ha generado un nuevo pedido que puede modificar a su gusto, y lo más importante, con un crédito a su favor por el importe que ya pagó. De este modo su pago sigue siendo válido, pero si añade productos y sube el importe, tendrá que pagar la diferencia. ¡Un plan perfecto!

Cuando finalice la compra, con los cambios que haya querido introducir, el cliente verá la confirmación del pedido nuevo/modificado.

En su cuenta el cliente podrá ver el pedido cancelado y el modificado, algo así como el histórico de sus pedidos y los estados de sus compras.

Adicionalmente, en las notas de los pedidos, se crearán notas indicando el proceso realizado, para poder hacer todo el seguimiento en caso de necesidad.

¿Te ha gustado? ¿Vas a añadir esta funcionalidad a tu tienda online? ¿Crees que es una ventaja competitiva? Deja tus impresiones abajo en los comentarios

(1 votos, promedio: 5) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido