AzidRain
26-01-2006, 23:06:10
A reserva de que me regañen los moderadores, les dejo aqui este post, que aunque no es una pregunta, yo creo que a alguien por ahi le va a servir.
Se trata de una consulta para obtener la antigüedad de un saldo en una DB de cuentas por cobrar, normalmente es un reporte que muestra que tanto tiempo tiene de vencida una cuenta segun el dia en que debia cobrarse mostrando rangos de dias . Esta consulta funciona para MySQL 4.11 en adelante, pero supongo que la podran adaptar si lo requieren
SELECT NOMBRE, NO_TALON, NUMCLIENTE, CVE_CLIENTE,FECHA,
IF( DATEDIFF( CURDATE(), PROGRAMADO )<0 AND ( PROGRAMADO<>'0000-00-00'), IMPORTE, 0 ) AS PORVENCER,
IF( (DATEDIFF( CURDATE(), PROGRAMADO )>=0 AND DATEDIFF( CURDATE(), PROGRAMADO )<=15) OR PROGRAMADO='0000-00-00',IMPORTE,0) AS VENCIDOS115 ,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=16 AND DATEDIFF( CURDATE(), PROGRAMADO )<=30, IMPORTE,0) AS VENCIDOS1630,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=31 AND DATEDIFF( CURDATE(), PROGRAMADO )<=45, IMPORTE,0) AS VENCIDOS3145,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=46 AND DATEDIFF( CURDATE(), PROGRAMADO )<=60, IMPORTE,0) AS VENCIDOS4660,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=61 AND DATEDIFF( CURDATE(), PROGRAMADO )<=90, IMPORTE,0) AS VENCIDOS6190,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=91 AND DATEDIFF( CURDATE(), PROGRAMADO )<=120,IMPORTE,0) AS VENCIDOS91120,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=121 ,IMPORTE,0) AS VENCIDOSMAS120
FROM COBRANZA
ORDER BY NOMBRE
Donde PROGRAMADO es el campo que contiene la fecha en que debia cobrarse esa cuenta y FECHA es la fecha en que se facturo, los demas campos se explican solo.
Ojalá y a alguien le sirva aunque no creo que haya descubierto el hilo negro...
Saludos a todos
Se trata de una consulta para obtener la antigüedad de un saldo en una DB de cuentas por cobrar, normalmente es un reporte que muestra que tanto tiempo tiene de vencida una cuenta segun el dia en que debia cobrarse mostrando rangos de dias . Esta consulta funciona para MySQL 4.11 en adelante, pero supongo que la podran adaptar si lo requieren
SELECT NOMBRE, NO_TALON, NUMCLIENTE, CVE_CLIENTE,FECHA,
IF( DATEDIFF( CURDATE(), PROGRAMADO )<0 AND ( PROGRAMADO<>'0000-00-00'), IMPORTE, 0 ) AS PORVENCER,
IF( (DATEDIFF( CURDATE(), PROGRAMADO )>=0 AND DATEDIFF( CURDATE(), PROGRAMADO )<=15) OR PROGRAMADO='0000-00-00',IMPORTE,0) AS VENCIDOS115 ,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=16 AND DATEDIFF( CURDATE(), PROGRAMADO )<=30, IMPORTE,0) AS VENCIDOS1630,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=31 AND DATEDIFF( CURDATE(), PROGRAMADO )<=45, IMPORTE,0) AS VENCIDOS3145,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=46 AND DATEDIFF( CURDATE(), PROGRAMADO )<=60, IMPORTE,0) AS VENCIDOS4660,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=61 AND DATEDIFF( CURDATE(), PROGRAMADO )<=90, IMPORTE,0) AS VENCIDOS6190,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=91 AND DATEDIFF( CURDATE(), PROGRAMADO )<=120,IMPORTE,0) AS VENCIDOS91120,
IF( DATEDIFF( CURDATE(), PROGRAMADO )>=121 ,IMPORTE,0) AS VENCIDOSMAS120
FROM COBRANZA
ORDER BY NOMBRE
Donde PROGRAMADO es el campo que contiene la fecha en que debia cobrarse esa cuenta y FECHA es la fecha en que se facturo, los demas campos se explican solo.
Ojalá y a alguien le sirva aunque no creo que haya descubierto el hilo negro...
Saludos a todos