Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Cool Aporte, como sacar antigüedad de saldos

En los programas contables y administrativos es muy común que se requiera sacar un resumen de saldos agrupados según su antigüedad.

Les dejo este código sencillo pero efectivo:

Partimos de una tabla FACTURAS con la siguiente estructura:
SUCURSAL: cHAR(3)
PROGRAMADO: DATE
PAGADO:INTEGER
IMPORTE: NUMERIC(10,2)
.
.
CAMPOS ADICIONALES
.
.

EL campo sucursal puede ser cualquier tipo que les sirva para diferenciar en este caso las facturas por sucursal, pero puede ser por cualquier otro o bien quitarlo sin problemas. El campo "programado" es la fecha programada de pago de la factura. EL campo "pagado" indica si la factura ya fue pagada o está pendiente (1 o 0).

EL Query queda así:


Código SQL [-]
SELECT SUCURSAL,
               SUM( IF( ISNULL(PROGRAMADO) OR ( DATEDIFF( CURDATE(), PROGRAMADO )<=0  AND  PROGRAMADO<>'0000-00-00')  ,  IMPORTE, 0 )) AS FINANCIADO,
               SUM(IMPORTE) AS TOTAL,
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=1 AND DATEDIFF( CURDATE(), PROGRAMADO)<=8  ,IMPORTE,0)) AS TOT_8dias,
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=9 AND DATEDIFF( CURDATE(), PROGRAMADO)<=15 ,IMPORTE,0)) AS TOT_15dias,
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=16 AND DATEDIFF( CURDATE(), PROGRAMADO)<=30 ,IMPORTE,0)) AS TOT_30dias, 
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=31 AND DATEDIFF( CURDATE(), PROGRAMADO)<=60  ,IMPORTE,0)) AS TOT_60dias, 
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=61 AND DATEDIFF( CURDATE(), PROGRAMADO)<=90  ,IMPORTE,0)) AS TOT_90dias,
               SUM( IF( DATEDIFF( CURDATE(), PROGRAMADO )>=91 ,IMPORTE,0)) AS TOT_mas90dias,
                       
            FROM FACTURAS
            WHERE PAGADO<>1    
         GROUP BY SUCURSAL

Se puede adecuar a lo que necesiten inclusive modificar los rangos como requieran ya que la lógica es la misma.
Combinado con su reporteador de preferencia se obtiene algo asi:





O ya más sofisticado:




Ojalá y les sirva
__________________
AKA "El animalito" ||Cordobés a mucha honra||

Última edición por AzidRain fecha: 28-09-2013 a las 23:14:41.
Responder Con Cita
  #2  
Antiguo 29-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola AzidRain.

Muchas gracias por el aporte, sin dudas es de mucha utilidad.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-09-2013
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.233
Poder: 20
ElKurgan Va camino a la fama
Gracias por el aporte

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
antigüedad Fechas atrus OOP 3 15-06-2011 16:28:12
Ya no hayan como sacar Lana $ AGAG4 La Taberna 20 24-11-2008 18:44:41
Antigüedad de Saldos AzidRain SQL 2 27-01-2006 15:16:50
¿Cómo calcular saldos parciales? jorge82 Conexión con bases de datos 2 02-09-2005 04:49:50
no sé como sacar la tangente de una variable elbilla Varios 2 22-07-2004 15:59:24


La franja horaria es GMT +2. Ahora son las 10:20:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi