Ya es la segunda vez que compruebo que Prestashop (mi versión es 1.7.8.8) trata correctamente los valores numéricos correspondientes a monedas pero no el resto. Por ejemplo, en una factura, el la tabla de desglose de impuestos pone un punto como separador decimal, en lugar de una coma con lo que un 21% de IVA se convierte en un 21.000% Otro ejemplo: En la vista de detalle de un pedido (front), en la tabla de transporte, campo "peso" resulta que un paquete de 20 kg se muestra de 20.000 kg.
El problema es que estos números llegan a la plantilla ya formateados en formato cadena de texto y con las unidades añadidas, por lo que no se puede emplear nada sencillo para formatearlos correctamente en la plantilla. En el campo del peso explicado anteriormente he tenido que hacer cambios en el código de Prestashop (fichero src/Adapter/Presenter/Order/OrderDetailLazyArray.php)
$orderShipping[$shippingId]['shipping_weight'] = ($shipping['weight'] > 0) ? sprintf('%d', ceil($shipping['weight'])) . ' ' . // MANOLO: cambiamos el formato %.3f (float) y ponemos %d redondeado al alza para evitar error de formato 20.000 Kg Configuration::get('PS_WEIGHT_UNIT') : '-';
Pero claro, no quiero tocar en el core de Prestashop y perder todos los cambios con cada actualización. ¿Hay alguna forma de obtener el número correctamente formateado dependiendo de la localización? ¿Se podría hacer algo en las plantillas?