![]() |
consulta sql para resumen de cuenta corriente
Hola amigos, estoy desarrollando un soft para control de clientes, y me encargaron que tenga un resumen del tipo, "concepto, debe, haber, saldo", o sea, una tabla en donde muestre los trabajos realizados y los pagos que fue haciendo el cliente. Mi problema es que uso un qreport en delphi para hacerlo con consulta sql, pero no se me ocurre como comenzar. tengo la tabla de clientes con su codigo, nombre, etc. una tabla de pagos, donde esta el codigo del cliente, fecha. y una tabla de trabajos en donde esta la fecha, valor del trabajo, etc.
La consulta deberia ir ordenando esto por fecha, pero el problema es que los trabajos deberan ir en el "debe" y los pagos en el "haber" en las columnas del reporte. y en la columna saldo debera ir restando o sumando. no se si se entiende mas o menos. el reporte seria algo asi: | fecha | concepto | debe | haber | saldo | |xx/xx/xx | trabajo x | 100 | | 100 | |xx/xx/xx | pago x | | 100 | 0 | |xx/xx/xx | trabajo x | 100 | | 100 | |xx/xx/xx | trabajo x | 100 | | 200 | algo asi deberia tirar el reporte para imprimir. alguien me puede tirar una idea? se puede hacer directamente con un select? Desde ya muchas gracias. |
Cita:
¿Empezar hacer que?, ¿el diseño de QuickReport?, ¿la consulta SQL?, ¿ambas cosas? ¿La fecha cual es?, ¿la del pago, la del trabajo o ambas?, para eso debes de hacer una UNION en la SQL ¿La tabla trabajos también está relacionada con el cliente?, como lo has puesto, me imagino que si. En la tabla Pagos y Trabajos, ¿cómo se llama el campo donde guardas los valores?, ¿Se llama IMPORTE, VALOR, PAGO, DEBE, HABER? Haz saber los campos que están relacionado unos con otros, esto ayuda a realizar la SQL que te pueda ayudar. Un saludo. |
Hola,
Qué motor de bbdd estás usando? Cliente Trabajos Pagos
se aproxima a lo que necesitas ? qué pasa si añades la fecha del trabajo y agrupas por esa fecha ? Podrías quitar la tabla de clientes ... tiene sentido ? Cuéntano cómo te va. Saludos |
Cita:
En principio me interesaria la consulta SQL, el diseño del quick creo que lo podre armar. de ultima lo vemos mas adelante. Las fechas son correlativas, o sea, irian una a una. por ej, el cliente quiere saber entre 2 fechas que movimientos hubo. Ahi se deberia poner si existe un saldo anterior, y luego detallar una a una las actividades, ya sea, de trabajos realizados, o pagos realizados, ambos tienen fecha distinta. la tabla trabajos si esta relacionada, cada trabajo tiene un cliente asignado para saber a quien se lo hizo. el campo que se usa para eso es codcliente. en ambas tablas, Pagos y Trabajos, el campo se llama MONTO, se guarda el valor de lo que se refiere, en la tabla pagos de los pagos y en la tabla trabajos de los trabajos realizados, quiero aclarar, que los pagos no siempre pueden ser iguales a los montos de los trabajos, o sea, el cliente puede dar un adelanto y luego pagar el resto. por eso me encargaron hacer este listado, para ver como ha ido la operacion con el cliente. |
Cita:
En cuanto al codigo que me pasas, no estoy seguro que sea asi, en realidad mi nivel de sql es basico, pero la tabla pagos la relacionas con la de trabajo? no necesariamente, como aclare antes, los pagos pueden ser distintos y se pueden hacer en varias veces. todas las tablas serian relacionadas con el cliente, o sea, los trabajos que se le realizaron al cliente, y los pagos que realizo el mismo. mi problema fundamentalmente es como poner en el qreport que me muestre en la columna del debe los trabajos y en el haber los pagos. y si muestro un pago por ejemplo, en la columna del debe tendria que estar vacia. no se si se entiende. |
creo que deberia tener un "order by fecha", tanto de la tabla trabajos como la de pagos (ya que apareceran mezclados en el listado), y que se puede elegir un rango entre x fechas.
|
Bueno,
supongo que los pagos se corresponderán a un trabajo realizado o futuro, no? Depende de cómo tengas la información distribuida por las tablas, deberás utilizar una consulta o un procedimiento almacenado. Si quieres saber el acumulado anterior, ya vas dando más pistas, lo que parece que nos lleva a un p.almacenado. Confirmanos si es así para que te podamos orientar. Un saludo |
los pagos son pagos de trabajos, pero supongamos que un trabajo valio 100, el cliente puede pagar 50, mas adelante pagar 20, y mas adelante 30. en la tabla que quiero deberia mostrarse asi:
fecha | descripcion | debe | haber | saldo | saldo anterior | | | 0 1/1/13 | trabajo realizado | 100 | | 100 2/1/13 | pago cuota 1 | | 50 | 50 3/1/13 | pago cuota 2 | | 20 | 30 4/1/13 | pago cuota 3 | | 30 | 20 |
aqui un ejemplo de un reporte impreso de un veterinario. lo subo para que se vea la idea.
![]() |
Aprovechando que no está la jefa, aunque tengo mucho trabajo ....
prueba con esto, no está probado ni depurado pero creo que te puede poner en la pista. Para los puristas, es pseudocódigo sin probar !!:D 1. Calculamos el saldo hasta la fecha 2. Seleccionamos los trabajos y los pagos, por cada registro calculamos el saldo y lo sacamos. Notas: for select ... into variables; suspend; hace una select, por cada regsitro obtenido asigna las columnas a las variables, y suspend las presenta. Por cada registro calculamos el saldo. Sacamos los resultados Espero que te sirva.
|
La franja horaria es GMT +2. Ahora son las 07:11:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi