Prestashop y sus redondeces 17


iva-calculo-960x390Hace unos días tuve unas serias peleas por la manera en como Prestashop calcula el IVA y sus redondeos: en vez de sumar todo y redondear al final, va redondeando uno a uno cada artículo, lo que genera a veces diferencias de hasta 8 céntimos.

Con un ejemplo lo explico mejor:

Imagina 3 productos que valen 6.28 (Sin IVA) cada uno y compro 3 unidades de cada uno de ellos :
6.28 * 3 = 18.84
6.28 * 3 = 18.84
6.28 * 3 = 18.84

Total Sin IVA = 56.52  + IVA (21 %)  11.8692  = 68.3892 -> redondeando -> 68.39

Esta sería la forma correcta de calcular el total factura. Pues bien, Prestashop hace lo siguiente:

6.28 * 3 = 18.84 -> IVA (21%) = 3.9564 = REDONDEA AQUI 3.96
6.28 * 3 = 18.84 -> IVA (21%) = 3.9564 = REDONDEA AQUI 3.96
6.28 * 3 = 18.84 -> IVA (21%) = 3.9564 = REDONDEA AQUI 3.96

Total Sin iva 56.52 iva = 3.96 * 3 = 11.88 -> TOTAL = 68.40

Produciendo un desfase de 0.0108 €  y un descuadre de 1 centimo en la factura, que a mayor unidades o coincidencias de precios que redondeen a la alta mayor s
erá.

He creado un aporte con tres archivos que puedes descargar aquí gratuitamente. Deja tu comentario con tus impresiones si lo utilizas. ¡Gracias!

Fuente: http://blog.prestamarketing.com/prestashop-y-el-redondeo-del-iva/




  • Dani

    Hola, dispongo de la versión 1.6.0.8 de prestashop y he subido los archivos manualmente pero todavía no hace correctamente el redondeo en las facturas cuando hay varias unidades, ¿debo vaciar la caché o realizar alguna otra modificación?. Gracias.

    • Jose

      Si lo subes manualmente tienes que borrar el fichero /cache/class_index.php

  • gaskabur

    Hola Dani, si has subido los archivos de manera manual también tendrás que borrar el archivo cache/class-index-php para que aplique los nuevos cambios. Asegúrate también de no tener deshabilitadas las “sobrecargas” en opciones avanzadas -> rendimiento de tu BackOffice.
    Otra cosa, las facturas que se hayan emitido con algún descuadre no se arreglan al aplicar estos cambios, esto solo afecta a futuros pedidos, los otros tendrás que modificar en la BBDD.
    Un saludo.

  • Dani

    ¿Me puedes indicar cual es la ruta del fichero “class-index-php”?¿es “override/classes/cache/index.php?

    Referente a las sobrecargas viene desactivado por defecto, ¿si lo dejo activado puede verse afectado el rendimiento de la tienda?, Una vez se emita una factura con los cambios, ¿puedo volver a desactivarlo?

    Muchísimas gracias por tu ayuda!!

    • Jose

      La ruta es /cache/class_index.php.

      “Inhabilitar las sobrecargas” viene desactivado por defecto, que es como debería estar. Si actualizas la versión es posible que se te active para evitar pantallazos blancos.

      No debes desactivarlo si quieres que esto te siga funcionando.

  • gaskabur

    Hola de nuevo Dani.

    La ruta es exactamente esa, en la raíz del FTP donde esté alojada tu tienda cache/class_index.php.

    Al activar las sobrecargas se tienen en cuenta los archivos alojados en la carpeta override que sobreescriben métodos del core de Prestashop pero que en principio no afecta al rendimiento.

    Nuestro aporte utiliza estas sobrecargas por lo que si las desactivas dejaran de funcionar, aunque como dices, puedes activar, emitir la factura y desactivar, aunque la idea es dejarlo activado para que redondee a partir de ahora correctamente.

    Un saludo.

    • daniel

      Buenas tardes,

      El compañero Jordi planteó la duda a la hora de modificar el cálculo de los decimales. En el total de artículos se soluciono pero el total por linea…?

      Gracias!!!

  • Dani

    Mil gracias, comentaré próximamente si estas instrucciones han resultado exitosas.

  • Dani

    Hola, parece que hay conflicto con alguna de las modificaciones que he realizado ya que al intentar crear un producto nuevo y ponerle el precio sale el error “el campo price no es válido” y no deja guardar el precio del producto, ¿es posible que se haya producido al realizar estas modificaciones? (no he realizado ningún otro cambio, he probado a borrar los ficheros que he subido y el error persiste…).

    • gaskabur

      Pues no tiene porque afectar para nada, seguramente sea de otro override, si borras nuestros archivos y el problema persiste tendrá que ver cual es la modificación override que esta dando ese error ya que es ajena a nuestro aporte, prueba a desactivar las sobrecargas y seguramente se solucione.

      • Dani

        He desactivado sobrecargas pero no se soluciona.
        Si que he conseguido guardar el precio poniéndolo directamente desde el campo “precio de venta sin IVA” pero metiendo solamente 4 decimales y así si que deja guardar el precio. Para que me entiendas, el precio con IVA del artículo es 24,57€, al ponerlo en el campo precio de venta con IVA el precio de venta sin IVA sale automáticamente como 20.305785€ y no deja guardar ya que da error, en lugar de 20.305785€ he puesto manualmente 20.305700€ y si que deja guardar… supongo que será por el override de redondeo, no sé si la solución a este problema es sencilla… seguramente tenga que ver con la longitud de los decimales para calcular el redondeo del IVA. Saludos!!

        • gaskabur

          He estado haciendo pruebas en varias tiendas con distintas versiones y en ninguna se me presenta este problema, además dices que cuando borrar nuestros archivos el problema persiste, por lo que creo que tiene que ser algún tipo de cambio o configuración de tu tienda, ¿Cuantos decimales tienes establecidos en la linea – define(‘_PS_PRICE_DISPLAY_PRECISION_’, 2); – de tu config/defines-inc.php ?

          Un saludo y espero que des con la solución.

          • Dani

            Hola, lo tengo en 2 (igual que lo indicas).
            Muchas gracias por tu ayuda, a ver si sale pronto un pedido de varias unidades para comprobar que el redondeo funciona correctamente. Saludos y muchísimas gracias nuevamente.

  • Dani

    El redondeo en la factura funciona ahora correctamente, muchísimas gracias!! (solución imprescindible para prestashop, gran trabajo).

  • Jordi

    Hola, funciona correctamente, pero me falta que también lo aplique en un punto: En el primer total que muestra. En la imagen que envío, el precio correcto es 153,67€. ¿Como puedo modificar también el de arriba que pone 153,75€?

    Gracias

    • daniel

      Buenas tardes, Tengo el mismo problema que tú con el redondeo por linea de prestashop despúes de utilizar el módulo de redondeo. Conseguistes solucionarlo???

  • Guest

    Hola, funciona correctamente, pero me falta que también lo aplique en un punto: En el primer total que muestra. En la imagen que envío, el precio correcto es 153,67€. ¿Como puedo modificar también el de arriba que pone 153,75€?

    Gracias