Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] calcular los dias de mora

Estas en el tema de calcular los dias de mora en el foro de Mysql en Foros del Web. saludos de antemano, tengo la siguiente pregunta: estoy realizando una aplicación para cobra diario (préstamos gota gota), en la cual me piden que se pueda ...
  #1 (permalink)  
Antiguo 06/06/2015, 16:47
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta calcular los dias de mora

saludos de antemano, tengo la siguiente pregunta: estoy realizando una aplicación para cobra diario (préstamos gota gota), en la cual me piden que se pueda calcular los dias de mora dependiendo de si el crédito es diario, semanal o mensual. A los créditos diarios se les da 2 dias de gracias para ponerse al día, a los céditos semanales y mensuales se les da 5 dias de gracia para ponerse al día. Tengo hasta ahora un evento creado en MySql que utilzo en otra aplicación:

Código MySQL:
Ver original
  1. UPDATE pagos
  2. SET mora = IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 30, 'Al dia', IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 60, 'Vencida', 'Juridico'))

Cómo puedo adaptar el anterior evento para que si el crédito es diario deje 2 dias de gracias para luego cobrar la mora y si el crédito es semanal deje 5 dias de gracia para luego cobrar la correspondiente mora.
__________________
Hebeth Mazuera

Última edición por gnzsoloyo; 09/06/2015 a las 13:23
  #2 (permalink)  
Antiguo 09/06/2015, 13:11
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: calcular los dias de mora

agregando un case when antes del if.


quedaría algo asi:

Codigo SQL.
Código MySQL:
Ver original
  1. UPDATE pagos
  2. SET mora = (Case when tipo_credito ='diario' then
  3.  IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 32, 'Al dia', IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 62, 'Vencida', 'Juridico'))
  4. when tipo_credito ='semanal'  Then  
  5.  IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 35, 'Al dia', IF(TIMESTAMPDIFF(DAY , fecha_pago, CURDATE()) <= 65, 'Vencida', 'Juridico'))
  6.  
  7.  

Pero la más viable desde mi punto de vista es usando un procedimiento almacenando donde declares variables.

Se supone que existe un campo en la tabla que es "tipo de credito", con eso determinas
que valor asignarle a una variable para luego sume a ese 30 y al 60


con eso tu consulta saldría en una linea. :).

Saludos,
  #3 (permalink)  
Antiguo 10/06/2015, 09:39
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: calcular los dias de mora

jmendezg, gracias por tu aporte me es de mucha ayuda, saludos
__________________
Hebeth Mazuera
  #4 (permalink)  
Antiguo 10/06/2015, 15:55
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: calcular los dias de mora

Hola a todos, he conseguido solucionar el cálculo de días de mora para un préstamo diario, aquí el código:

UPDATE pagos
SET estado = Case when forma_pago ='diario' then
IF(TIMESTAMPDIFF(DAY , fecha, CURDATE()) <= 2, 'Al dia', IF(TIMESTAMPDIFF(DAY , fecha, CURDATE()) >=3, 'Mora','Mora' ))
when forma_pago ='semanal' Then
IF(TIMESTAMPDIFF(DAY , fecha, CURDATE()) <= 5, 'Al dia', IF(TIMESTAMPDIFF(DAY , fecha, CURDATE()) >= 6, 'Mora','Mora' ))

end

El propósito de éste código es poder calcular de forma automática los días transcurridos despúes de la fecha de pago teniendo en cuenta que si la forma de pago es diario dar 2 días de gracia y si el pago es semanal dar 5 días de gracia.
Agradezco a jmendezg por su colaboración.
__________________
Hebeth Mazuera

Etiquetas: calcular, dias, fecha, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.