Hola grupo. Tengo FB 3.0 y dialect 3.
Hago una consulta para sacar la suma por bases imponibles, la cuota y el total de una factura a partir de los detalles que la componen:
Código SQL
[-]
SELECT A.CODIGO, D.PORC_IVA,
SUM(D.IMPORTE_VENTA) AS BASE,
SUM(D.IMPORTE_VENTA) * D.PORC_IVA/100 AS CUOTA_1,
round( SUM(D.IMPORTE_VENTA) * D.PORC_IVA/100, 2) AS CUOTA_2,
round (SUM(D.IMPORTE_VENTA) * D.PORC_IVA/100 + sum(importe_venta), 2) AS Total_Factura
FROM CAB_VENTAS A LEFT JOIN DET_MOVIMIENTOS D ON A.TIPO_DOCUMENTO = D.TIPO_CABECERA AND A.CODIGO = D.COD_CABECERA
where a.codigo = 939006
GROUP BY A.CODIGO, D.PORC_IVA
Y este es el resultado:
Código:
CODIGO PORC_IVA BASE CUOTA_1 CUOTA_2 TOTAL_FACTURA
939006 10.000000 174.55 17.455000 17.450000 192.010000
Podéis observar que CUOTA_2 no hace correctamente el redondeo, debería dar 17.46. IMPORTE_VENTA es un Numeric(15,2) y he probado todas las maneras de hacer el ROUND y CAST, incluso cambiado los campos a Double Precision.
He buscado por el foro pero no he encontrado una solución a esto, y creo que no debe ser el único que lucha con los redondeos. El problema es que me genera gran cantidad de descuadres en contabilización y totalizaciones. ¿Una ayudita?