Hice un reembolso y mi beneficio histórico cambió. ¿Por qué?
Al crear un reembolso, WooCommerce recalcula el coste de cada línea del pedido con el coste actual del producto. Es comportamiento del núcleo y no tiene vuelta atrás.
La respuesta corta
Porque al crear un reembolso, WooCommerce recalcula el coste de cada línea del pedido original con el coste de cada producto tal como está hoy, no con el coste que se guardó cuando se hizo la venta.
Si tu precio de compra cambió entre medias, el historial guardado cambia con él. Es comportamiento del núcleo de WooCommerce, afecta a cualquier plugin que lea ese campo y no hay ningún ajuste para desactivarlo.
Qué hace realmente WooCommerce
Al final de wc_create_refund(), una vez guardado el reembolso, el núcleo hace esto con el pedido
padre:
if ( ...->feature_is_enabled() && $order->has_cogs() ) {
$order->calculate_cogs_total_value();
}
$order->save();
y recalcular el total del pedido recorre todos los artículos llamando a calculate_cogs_value(),
que lee el coste actual del producto. Al guardar el pedido, todas esas líneas se vuelven a escribir.
Así que el reembolso de un artículo reescribe el coste guardado de todos los artículos de ese pedido. Y si mientras tanto se vació el coste del producto, el recálculo da cero, lo que, como se explica en coste cero y sin coste, borra el valor en lugar de guardarlo. El coste original desaparece para siempre.
Qué hacer
- Cambia los costes, no los vacíes. Dejar en blanco el campo de coste es el único paso que puede convertir un reembolso en una pérdida de datos permanente en ese pedido.
- Exporta el CSV al final de cada mes. Son diez segundos y te dejan constancia de cómo era el mes al cerrarlo. Es la única defensa que no depende de que el núcleo cambie su comportamiento.
- Cuenta con pequeñas desviaciones en los pedidos reembolsados y conoce su origen, en lugar de sospechar del informe.
Cómo lo muestra Merchgain
Merchgain muestra lo que hay en la base de datos. No guarda una segunda copia privada de tu historial de costes y no escribe nada en el pedido, así que no puede protegerte de esto y no va a fingir que la desviación no existe.
Por eso la exportación a CSV está en la versión gratuita y no detrás de un pago: para una tienda que hace reembolsos, una exportación mensual es la diferencia entre tener un historial de costes y confiar en que nada lo ha reescrito.
Respuestas relacionadas
¿No coincide con lo que ves en tu tienda? Escríbenos: leemos todos los mensajes. contact@merchgain.com