Jump to content

Redondeo de decimales en precios


CORBATIN

Recommended Posts

Hola, he revisado las opciones de redondeo en los precios y no salen correctamente, me redondea demasiado, es decir, un precio de 0.0516 sale como 0.50 y al poner el iva del 8% en lugar de 0.0557 sale 0.60.

 

La versión de prestashop es la 1.4.8.2, alguién me podría ayudar?, gracias.

post-363327-0-47600300-1337270796_thumb.jpg

Edited by CORBATIN (see edit history)
Link to comment
Share on other sites

El redondeo es correcto: el tercer decimal se desprecia si vale entre 0 y 4, y si vale entre 5 y 9 se suma una unidad al segundo decimal.

Si quieres puedes poner a mano el precio final con IVA, y recalculará el precio sin IVA.

Link to comment
Share on other sites

Hola, ya sé que el redondeo es correcto pero quiero que se haga a 3 decimales y no a dos como aparece en la imagen, es decir, si el precio base es de 0.0516, al calcular el iva y sumarlo que también mantenga los 3 o 4 digitos, debería dar como resultado 0.0557 y no 0.60, ¿como puedo conseguir esa cantidad a 4 digitos en el calculo del iva y sin redondear?, gracias.

Link to comment
Share on other sites

Bueno, en el administrador ya lo he conseguido modificando la siguiente función en el archivo tools.js del directorio /js:

function ps_round(value, precision)
{
if (typeof(roundMode) == 'undefined')
 roundMode = 2;
if (typeof(precision) == 'undefined')
 precision = 2;

method = roundMode;
if (method == 0)
 return ceilf(value, precision);
else if (method == 1)
 return floorf(value, precision);
precisionFactor = precision == 0 ? 1 : Math.pow(10, precision);
return Math.round(value * precisionFactor) / precisionFactor;
}

He sustituido el 10 por el 100 y el redondeo genial.

function ps_round(value, precision)
{
if (typeof(roundMode) == 'undefined')
 roundMode = 2;
if (typeof(precision) == 'undefined')
 precision = 2;

method = roundMode;
if (method == 0)
 return ceilf(value, precision);
else if (method == 1)
 return floorf(value, precision);
precisionFactor = precision == 0 ? 1 : Math.pow(100, precision);
return Math.round(value * precisionFactor) / precisionFactor;
}

Ahora me falta la parte pública que aún no lo he conseguido, gracias.

Link to comment
Share on other sites

  • 4 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...