Foros del Web » Programando para Internet » PHP »

Como mostrar mensaje de alerta segun la fecha de pago ?

Estas en el tema de Como mostrar mensaje de alerta segun la fecha de pago ? en el foro de PHP en Foros del Web. Buen día. Había creado un post hace días de Problema al usar cron y php. Ya lo solucione del tema de cronjob. Esta vez el ...
  #1 (permalink)  
Antiguo 26/02/2015, 17:21
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 11 meses
Puntos: 0
Exclamación Como mostrar mensaje de alerta segun la fecha de pago ?

Buen día. Había creado un post hace días de Problema al usar cron y php. Ya lo solucione del tema de cronjob. Esta vez el tema que publicare es distinto.

Resulta que estoy desarrollado un modulo de cronograma de pagos de un sistema de cursos de especialización. El sistema de pago maneja 2 tipos de estados: PENDIENTE Y CANCELADO. Las fechas de pago se están pagando en cuotas.

La condición es que faltando 3 días se debe enviar automáticamente un correo diciendo que ya falta poco para que pague el siguiente modulo y a parte también condicionar si el alumno ha pagado o a cancelado.

Ejemplo. El día 27 de este mes se vence el pago de un alumno. Se le enviara automáticamente al administrador que tal alumno tiene una deuda y así sucesivamente va suceder en el próximo mes de pago.

Esta es una imagen de como se muestra los registros del cronograma de pago.



Las tablas con las que estoy trabajando. Son 3.







He realizado este código para que se le envié al correo del administrador, pero me lo envia varias veces.

Código PHP:
Ver original
  1. // Consulto el cronograma de pago. Incluyendo la tabla alumno.
  2.     $sqlAlertaPago  = "SELECT DATE_ADD(fecha_pago2, INTERVAL -2 DAY) as fecha_final,
  3.                         a.id, a.nombre, a.apellido, a.email,a.bloqueo, pa. * , pc. *
  4.                         FROM alumno a, pago_alumnos pa, pago_credito pc
  5.                         WHERE pa.id = pc.idpago
  6.                         AND pa.alumno = a.id
  7.                         AND pc.status =  'PENDIENTE'";
  8.     $rptaAlertaPago = mysql_query($sqlAlertaPago) or die(mysql_error());
  9.     $rowAlertaPago  = mysql_fetch_array($rptaAlertaPago);
  10.  
  11.     $fechaDB     = '2015-02-28';
  12.     $timeActual  = time();   // Obtenemos el timestamp del momento actual;
  13.     $timeVencimiento = strtotime($fechaDB); // Obtenemos timestamp de la fecha de vencimiento
  14.    
  15.     // Calculamos el número de segundos que tienen esos 3 días
  16.     $segundos = 2 * 24 * 60 * 60;
  17.    
  18.     // Aun no ha caducado pero faltan menos de tres días
  19.     if(($timeActual < $timeVencimiento) AND ($timeVencimiento-$timeActual < $segundos))
  20.     {
  21.  
  22.         if($rowAlertaPago['status']=='PENDIENTE')
  23.         {    
  24.             // Va a expirar en menos de 3 días
  25.             // procesar el envio automatico
  26.             $mail             = new PHPMailer(); // defaults to using php "mail()"
  27.             $mail->From       = "$rowAlertaPago[email]";
  28.             $mail->FromName   = "$rowAlertaPago[nombre]";
  29.            
  30.             $mail->AddAddress("[email protected]", "American Andragogy University");
  31.             $mail->AddAddress("[email protected]", "American Andragogy University");
  32.             $mail->AddAddress("[email protected]", "American Andragogy University");
  33.             $mail->Subject    = "American Andragogy University - Alerta para el alumno ".$rowAlertaPago['nombre']."";
  34.            
  35.             $msg .= 'Sr. Percy Vieira:<br />';
  36.             $msg .= 'Le recordamos que el alumno '.$rowAlertaPago['nombre'].' '.$rowAlertaPago['apellido'].' tiene una fecha pendiente de pago.<br />';
  37.             $msg .= 'Su correo del alumno es: '.$rowAlertaPago['email'].'<br />';
  38.             $msg .= 'Gracias.';
  39.            
  40.             $mail->MsgHTML($msg);
  41.             $mail->IsHTML(true);
  42.             $mail->Send();
  43.            
  44.         }
  45.         else if($rowAlertaPago['status']=='CANCELADO')
  46.         {    
  47.           // Va a expirar en menos de 3 días
  48.             $mail             = new PHPMailer(); // defaults to using php "mail()"
  49.             $mail->From       = "$rowAlertaPago[email]";
  50.             $mail->FromName   = "$rowAlertaPago[nombre]";
  51.            
  52.             $mail->AddAddress("[email protected]", "American Andragogy University");
  53.             $mail->AddAddress("[email protected]", "American Andragogy University");
  54.             $mail->AddAddress("[email protected]", "American Andragogy University");;
  55.             $mail->Subject    = "American Andragogy University - Alerta para el alumno ".$rowAlertaPago['nombre']."";
  56.            
  57.             $msg .= 'Sr. Percy Vieira:<br />';
  58.             $msg .= 'Le recordamos que el alumno '.$rowAlertaPago['nombre'].' '.$rowAlertaPago['apellido'].' ya cancelo su fecha de pago.<br />';
  59.             $msg .= 'Su correo del alumno es: '.$rowAlertaPago['email'].'<br />';
  60.             $msg .= 'Avisele al alumno para que no pierda su curso de especializacion<br />';
  61.             $msg .= 'Gracias.';
  62.            
  63.             $mail->MsgHTML($msg);
  64.             $mail->IsHTML(true);
  65.             $mail->Send();
  66.  
  67.         }
  68.                
  69.     // Aun no ha caducado y faltan más de tres días
  70.     }
  71.     else if(($timeActual < $timeVencimiento) and ($timeVencimiento-$timeActual > $segundos))
  72.     {
  73.        
  74.         // procesar el envio automatico
  75.         $mail             = new PHPMailer(); // defaults to using php "mail()"
  76.         $mail->From       = "$rowAlertaPago[nombre]";
  77.         $mail->FromName   = "$rowAlertaPago[email]";
  78.        
  79.             $mail->AddAddress("[email protected]", "American Andragogy University");
  80.             $mail->AddAddress("[email protected]", "American Andragogy University");
  81.             $mail->AddAddress("[email protected]", "American Andragogy University");
  82.         $mail->Subject    = "American Andragogy University - Alerta para el alumno ".$rowAlertaPago['nombre']."";
  83.        
  84.         $msg .= 'Sr. Percy Vieira:<br />';
  85.         $msg .= 'Le recordamos nuevamente que el alumno '.$rowAlertaPago['nombre'].' '.$rowAlertaPago['apellido'].' tiene una fecha pendiente de pago.<br />';
  86.         $msg .= 'Su correo del alumno es: '.$rowAlertaPago['email'].'<br />';
  87.         $msg .= 'Gracias.';
  88.        
  89.         $mail->MsgHTML($msg);
  90.         $mail->IsHTML(true);
  91.         $mail->Send();     
  92.    
  93.     // Ya ha caducado, la fecha de vencimiento es anterior a la fecha actual
  94.     }
  95.     else if($timeActual > $timeVencimiento)
  96.     {
  97.  
  98.         // procesar el envio automatico
  99.         $mail             = new PHPMailer(); // defaults to using php "mail()"
  100.         $mail->From       = "$rowAlertaPago[nombre]";
  101.         $mail->FromName   = "$rowAlertaPago[email]";
  102.        
  103.             $mail->AddAddress("[email protected]", "American Andragogy University");
  104.             $mail->AddAddress("[email protected]", "American Andragogy University");
  105.             $mail->AddAddress("[email protected]", "American Andragogy University");
  106.         $mail->Subject    = "American Andragogy University - Alerta para el alumno ".$rowAlertaPago['nombre']."";
  107.        
  108.         $msg .= 'Sr. Percy Vieira:<br />';
  109.         $msg .= 'Ya se le vencio la fecha de pago del alumno '.$rowAlertaPago['nombre'].' '.$rowAlertaPago['apellido'].'. Si el alumno ha pagado, omitir este mensaje.<br />';
  110.         $msg .= 'Su correo del alumno es: '.$rowAlertaPago['email'].'<br />';
  111.         $msg .= 'Gracias.';
  112.        
  113.         $mail->MsgHTML($msg);
  114.         $mail->IsHTML(true);
  115.         $mail->Send(); 
  116.    
  117.     // Otra situación
  118.     }
  119.     else
  120.     {
  121.         // Todavía no
  122.         // echo '<div class="mensaje-alerta-2"><p>Ya cancelaste tu cuota.</p></div>';
  123.        
  124.         // procesar el envio automatico
  125.         $mail             = new PHPMailer(); // defaults to using php "mail()"
  126.         $mail->From       = "$rowAlertaPago[nombre]";
  127.         $mail->FromName   = "$rowAlertaPago[email]";
  128.        
  129.             $mail->AddAddress("[email protected]", "American Andragogy University");
  130.             $mail->AddAddress("[email protected]", "American Andragogy University");
  131.             $mail->AddAddress("[email protected]", "American Andragogy University");
  132.         $mail->Subject    = "American Andragogy University - Alerta para el alumno ".$rowAlertaPago['nombre']."";
  133.        
  134.         $msg .= 'Sr. Percy Vieira:<br />';
  135.         $msg .= 'Le recordamos que el alumno '.$rowAlertaPago['nombre'].' '.$rowAlertaPago['apellido'].'. Ya pago este modulo. Si el alumno ha pagado, omitir este mensaje.<br />';
  136.         $msg .= 'Su correo del alumno es: '.$rowAlertaPago['email'].'<br />';
  137.         $msg .= 'Gracias.';
  138.        
  139.         $mail->MsgHTML($msg);
  140.         $mail->IsHTML(true);
  141.         $mail->Send();     
  142.                
  143.     }

Desde hace 2 dias estoy con esto. Espero que me puedan ayudar con mi problema.

Saludos.

Última edición por edevep; 26/02/2015 a las 17:22 Razón: Corrección del tema.
  #2 (permalink)  
Antiguo 26/02/2015, 20:46
Avatar de zetahosting  
Fecha de Ingreso: octubre-2011
Mensajes: 119
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Como mostrar mensaje de alerta segun la fecha de pago ?

Creo que te complicas mucho.

lo mas simple para chequear fechas es hacer lo siguiente:

HOY ES 26/02/2015, SUPONGAMOS QUE LA FECHA DE PAGO ES 01/03/2015

Código PHP:
Ver original
  1. $fecha_db=strtotime($rowAlertaPago['fecha_pago2']); //timesamp  
  2. $tres_dias=((60*60)*24)*3; //tres dias
  3. $dia_de_alerta=date('d-m-Y', ($fecha_db-$tres_dias)); //que día me debe hacer el alerta
  4. $fecha_hoy=date('d-m-Y');
  5.  
  6.  
  7. //dia de alerta
  8. if($dia_de_alerta==$fecha_hoy)
  9. {
  10. //FUNCION ENVIAR E-MAIL
  11. }
__________________
Excelente WebHosting -> www.zetahosting.net
[email protected]
Twitter: @zetahosting
  #3 (permalink)  
Antiguo 26/02/2015, 20:59
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Como mostrar mensaje de alerta segun la fecha de pago ?

Gracias por responder a mi duda zetahosting. Pero al realizar la condicion del envio de recordatorio (osea el if), no esta procesando el recordatorio ?

Código PHP:
Ver original
  1. if(($timeActual < $timeVencimiento) AND ($timeVencimiento-$timeActual < $segundos))
  2. {
  3.    // Aqui va el codigo
  4. }

Esa es mi duda. Pero probare el codigo que colocaste.

Saludos.

Etiquetas: alerta, fecha, html, mensaje, mysql, pago, registro, select, sql, tabla
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 21:40.