Hola a todos.
Trabajo con D5, Firebird 2.1 y FibPuls
Mi problema es el siguiente:
Tengo dos tablas: CABECERAS y COBROS en las que se almacenan todos los documentos facturados en una y todos los cobros en otra.
He de sacar un listado y en CADA LINEA ha de aparecer:
Cliente --- Documento --- Fecha --- Importe Documento --- Importe Cobros (SUMA de todos los cobros de ese documento) --- Pendiente Documento
((El documento es único, pero puede haber muchos cobros del mismo documento))
la sentencia que uso es:
Código SQL
[-]SELECT cabeceras.codcliente, Cabeceras.NombreCliente, Cabeceras.SerieDocumento,
Max(Cabeceras.Fecha) as Fecha, Sum(Cabeceras.TotalFinal) as TotalFinal, Sum(Cobros.ImporteCobro) as ImporteCobro,
Sum(Cobros.PendienteDocumento) as PendienteDocumento
from cabeceras left join COBROS on CABECERAS.seriedocumento = cobros.serieDOCUMENTO
group by cabeceras.SerieDocumento, Cabeceras.CodCliente, Cabeceras.NombreCliente order by CABECERAS.CODCLIENTE, CABECERAS.SERIEDOCUMENTO
El resultado que obtengo es:
Si un documento en Cabeceras NO tiene cobros = La linea es correcta.
Si un documento en Cabeceras tiene UN solo cobro = La linea es correcta.
Ahora bien, cuando un documento tiene varios cobros, el importe documento lo suma tantas veces como cobros tenga, es decir:
Si el total euros de un documento es de 100 y se han hecho 4 cobros de 25 cada uno, en la linea pone lo siguiente:
Total Documento 400 -- Total Cobros 100 --- en lugar de poner Total Documento: 100 --- Total Cobros: 100
Espero haberme explicado y que podais ayudarme.
Muchas gracias