:::: MENU ::::

El maldito botón de desistimiento: de adorno en el backlog a producción en dos tardes (y sin morir en el intento)

Ponte en situación. Viernes, 14:30 de la tarde. Estás con el chip de fin de semana ya medio puesto, pensando en la partida de Minecraft que tienes a medias con tu hija o en los 10 kilómetros que te vas a meter entre pecho y espalda mañana temprano para vaciar la cabeza. De repente, el cliente de turno te manda un correo de esos que te hielan la sangre: «Oye, Dani, que me acaba de llamar el abogado. Que lo del botón de desistimiento ese de la nueva ley entraba en vigor YA y que si nos inspeccionan nos cae la del pulpo. ¿Cómo lo llevamos?».

Y a ti se te escapa una risa floja de esas que dan un poco de miedo. Te suena. Vaya si te suena. Llevas tres malditos meses avisando en cada bendita reunión de que esto iba a pasar, intentando colar la puñetera tarjeta en el sprint con calzador mientras el resto del equipo miraba para otro lado y te decía que «eso no aporta valor». Claro, hasta que llega la multa de consumo, entonces sí aporta valor por arte de magia. 🧙‍♂️

Y lo mejor es que vas a mirar el Jira y la tarjeta es un jodido solar: un desierto blanco donde solo pone de título «botón de desistimiento». Ni una descripción, ni un criterio de aceptación, ni un mísero mockup. Nadie en la empresa ha querido pararse a definir qué hay que hacer ni cómo tiene que fluir esto, así que te toca a ti ponerte la gorra de diseñador de producto, de arquitecto de backend y de maquetador de frontend todo a la vez y en caliente y con la respiración del cliente en el cogote. 😤

💀¿Qué nos pide la ley?

Básicamente, lo que se pretende es que devolver un producto o cancelar un pedido sea tan insultantemente fácil como lo es comprarlo a golpe de click.

Ya no vale eso de esconder un PDF indescifrable en el footer para que el cliente lo imprima, lo firme con sangre de unicornio y lo mande por fax. No, ahora el usuario tiene que ver un botón bien clarito.

La solución

Para no complicarle la vida al comprador (y que no nos fría a llamadas a soporte), el flujo que he montado en Bydn_Returns (que todavía no he publicado pero que si me lo pides por favor y me pillas de buenas, igual te lo paso) te lo pone muy fácil y bonito:

En la vista de cada pedido (/sales/order/view/): El módulo es lo suficientemente listo como para mirar el estado del pedido. Si está en Processing, le planta un botón de «Cancelar pedido»; si ya está en Complete, cambia mágicamente a «Solicitar devolución». Si se le ha pasado el arroz y ya no puede devolverlo, un aviso fino al principio de la página para que no se haga ilusiones y a otra cosa.

También para invitados si accedes a la info de tu pedido a través de /sales/guest/form/ verás la misma información y proceso.

En el formulario de selección nada de textos infinitos. Al pulsar el botón, el usuario va a una pantalla con la lista de los artículos de su pedido, donde puede elegir la cantidad a devolver y el motivo mediante un desplegable bastante limpio.

Cuando el cliente envía la solicitud, le llega una confirmación por correo y también una copia al gestor de la tienda para que el proceso para la tienda sea igualito que cuando le pedías a los clientes que te escribiesen un email.

🧙‍♂️El backoffice

Toda esta información no puede ir al limbo. He metido un grid limpio en Sales > Return Requests (y sí, sobreviví una vez más a la tortura medieval de configurar los XML de los UI Components de Magento) con todo lo necesario: ID, número de pedido, email, nombre, el tipo (cancelación o devolución) y los estados. Filtrable y ordenable, como Dios manda.

La configuración

Para rematar el invento y que no nos vengan llorando cada vez que quieran cambiar una coma, todo es gestionable desde Stores > Configuration : apagas o enciendes el módulo, cambias los días del periodo de desistimiento y eliges la plantilla de email desde el editor de Magento sin tocar una sola línea de código en producción .

También te permite meter un bloque en la pantalla donde el usuario elige qué productos quiere devolver. Para que le expliques clarito las condiciones o pongas un enlace a la página donde metes todo el rollo legal de lo que se puede o no se puede devolver.

🤘 Conclusión y una pequeña advertencia

Al final, lo que iba a ser el drama del trimestre se quedó en un módulo bien estructurado que no engorda el frontend, que respeta las normas de la comunidad y que le da al cliente exactamente lo que pide el BOE sin romper el flujo de inventario de la tienda. Los de legal están contentos (dentro de lo que esa gente puede estar contenta) y yo he podido volver a pelearme con los índices de OpenSearch en paz.

Si te ves muy apurado con los plazos en tus proyectos, estás hasta el cuello de curro y me lo pides muy por favor por redes o en los comentarios, lo mismo me pillo una tarde tonta, limpio cuatro cosas privadas, subo el paquete a un repo público y os lo comparto para que no tengáis que reinventar la rueda desde cero. Pero solo si os portáis bien, ¿eh?

¡Vigilar esos despliegues y recordar limpiar la caché! 🤘🔥




Hey! Qué opinas sobre el artículo?