Contasimple Peru y PrestaShop representan de manera diferente los precios de los productos e impuestos aplicados. Mientras que Contasimple Peru trabaja siempre con dos decimales, PrestaShop permite configurar el número de decimales que deseamos que aparezcan por pantalla (por defecto son dos, como en Contasimple Peru) pero internamente trabaja con seis decimales en sus cálculos.
Esta diferencia en la representación interna de los decimales es la responsable de que en algunas ocasiones al trasladar los importes de los productos de PrestaShop hacia Contasimple Peru el total de la factura no cuadre con respecto al pedido original.
Veamos un ejemplo para entenderlo mejor:
Supongamos que nuestra tienda vende un producto del que se suelen vender muchas unidades por pedido a un precio de 0.99 euros la unidad, impuestos ya incluidos. Al crear un producto, PrestaShop permite la opción de introducir los precios de los productos tanto con el IVA incluido o excluido y en función del campo que rellenemos primero calcula el valor del otro a partir de la regla de tasas definida.
Si un cliente compra una sola unidad de nuestro producto en España y se le aplica el 21% de IVA, en este ejemplo el precio que calculará PrestaShop para ajustar la base imponible a la cantidad que deseamos facturar al usuario con impuestos incluidos será de 0.99 / 1.21 = 0.818181 euros. El importe del IVA aplicado al producto será pues el resto (0.171818 euros).
Como PrestaShop muestra los precios al usuario final redondeados por pantalla, en el carrito de la compra veríamos 0.82 euros para la base y 0.17 euros para el IVA, y un total de 0.99 euros.
Este tipo de pedido se podría sincronizar correctamente hacia Contasimple Peru porque incluso redondeando los precios a dos decimales antes de hacer la suma de los importes, el resultado es el mismo (no se acumula error).
Ahora supongamos que otro un usuario compra 100 unidades del mismo producto.
El cálculo que hace PrestaShop internamente para calcular los totales es el siguiente:
Precio unidad: 0.818181
Unidades: 100
Base imponible total: 81.818181 (por pantalla se muestra 81.82)
Importe 21% IVA: 17.181818 (por pantalla se muestra 17.18)
Total: 98.999999 (por pantalla se muestra 99 y se guarda también 99.00 como importe final)
Como vemos, PrestaShop arrastra los 6 decimales en todos sus cálculos independientemente de que muestre por pantalla los precios redondeados.
Sin embargo, cuando el módulo intenta traspasar los valores reales a la factura en Contasimple Peru, al tener que redondear primero todos los componentes de la línea a dos decimales y luego efectuar los cálculos, la misma línea de factura en Contasimple Peru queda:
Precio unidad: 0.82 (ya redondeado)
Unidades: 100
Base imponible total: 82.00
Importe 21% IVA: 17.22
Total: 99.22
Si se sincronizaran dichos importes se acumularía una diferencia de 22 céntimos (18 céntimos provendrían de la base y 4 del IVA) con respecto al pedido original por la ligera diferencia de redondeo de decimales que tiene lugar en la unidad del producto.
Esta diferencia se agrava aún más si el pedido contiene otros productos que a su vez también acumulan errores de redondeo.
Contasimple Peru prioriza en todo momento que los importes trasladados para los totales de la base imponible y el IVA sean exactos con respecto a los del pedido original para garantizar que la contabilidad nunca se descuadre y para evitar que se declaren valores incorrectos a la Agencia Tributaria.
Por este motivo, el módulo puede recurrir a la estrategia de reorganizar las líneas de factura con el objetivo de aplicar el redondeo al final del cálculo y así poder minimizar los errores de cálculo y sincronizar la factura con los importes originales exactos.
Por ejemplo, si se reformula la anterior línea de factura partiendo ya del total del precio de 100 unidades e introduciéndolo como una única unidad, vemos que la línea de factura en Contasimple Peru cuadra:
Precio unidad: 81.82 (0.818181 * 100, redondeado)
Unidades: 1
Base imponible total: 81.82
Importe 21% IVA: 17.18
Total: 99.00
Esta factura se puede sincronizar hacia Contasimple Peru de manera segura, ya que no causa ningún descuadre de la contabilidad.
Nota: Desde la versión 1.6 del módulo se traspasa toda la información del pedido original a los comentarios de cada línea de factura, de manera que el cliente final siempre verá la información del pedido original en PrestaShop y no se perderá ningún detalle.
Esta situación se puede evitar en muchos casos si se aplican los siguientes ajustes recomendados a la tienda de PrestaShop:
Configurar PrestaShop con los ajustes por redondeo por defecto
La sincronización suele funcionar bien si se mantienen los valores por defecto de redondeo de PrestaShop de redondeo al alza, redondeo a cada línea y redondeo a 2 decimales, siempre y cuando se evite introducir el precio de la base del producto sin IVA con más de dos decimales (ver punto siguiente).
En caso de que hubieras cambiado estos ajustes, recomendamos volver a los valores por defecto yendo al menú de PrestaShop 'Configurar > Parámetros de la tienda > Configuración' y marcar los ajustes recomendados (ver imagen).
Revisar las políticas de precios de los productos existentes en la tienda
Si tienes flexibilidad para definir los precios de los productos de tu catálogo, entonces te recomendamos usar el menor número de decimales posibles para minimizar la probabilidad de que aparezcan errores de redondeo, procurando no usar nunca más de dos decimales. En otras palabras, hay que fijar los precios de manera que la base imponible unitaria sea representable con dos decimales, sin necesidad de redondeo.
En el ejemplo anterior, si fijamos el precio de la base del producto (precio sin IVA) a 0.82 obtenemos el mismo importe final de 0.99 IVA incluido para una unidad, pero evitamos los errores de redondeo al seleccionar un gran número de unidades. Notar que esto puede repercutir en el importe final soportado por el cliente final (el precio total del pedido de ejemplo aumentaría a 99.22 €).