CALCULO IVA
Se implementa un método que permitirá utilizar valores no válidos y no violar ninguna regla del juego. La idea es la siguiente (con un ejemplo se ve mejor):
Supongamos que tenemos un precio de I.V.A. incluido imposible (1,95 con el 4% de I.V.A. es un buen ejemplo).
Precio con IVA |
1,95 |
Precio base calculado |
1,875 |
Cuota IVA |
0,08 |
Precio con IVA calculado |
1,96 |
La pregunta planteada es, ¿se puede ajustar el precio base de forma que al realizar un cálculo del I.V.A. correcto, obtenga el resultado deseado?
La respuesta es sí, si se incrementa o decrementa el valor en una fracción y se repite el cálculo.
Si el valor obtenido es mayor que el deseado, se reduce en 0,0001 (un factor superior en una fracción a la precisión del valor):
Precio base calculado |
1,8749 |
Cuota IVA |
0,08 |
Precio con IVA calculado |
1,95 |
En el primer intento hemos conseguido un valor válido, pero si no fuera así podemos seguir con el proceso un máximo de 2 o 3 veces.
Si el valor obtenido es menor se realiza el proceso inverso, incrementado el valor hasta obtener el resultado deseado.
La ventaja de este sistema es que no hay error de cálculo, porque el valor de la cuota de I.V.A. calculada es la correcta y, por lo tanto, no se deberían producir errores de precisión en la generación de la factura o en los totales del documento.
Asimismo, se ajusta para que el precio no se descuadre cuando haya muchas unidades (Por ejemplo, 100 unidades a 1,95 debería ser 195 euros, pero con este método sin revisar daría 194.99).
Pese a todo, haciendo pruebas con cantidades muy altas en valores de I.V.A. imposibles pequeños, es evidente que todo tiene un límite. Por ejemplo, para cantidades del orden de 100.000 y un precio imposible de 1.7 al 4% de I.V.A. no se puede generar ningún valor debido a que se supera el límite de precisión del tipo de dato Double.