Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2015, 17:21
edevep
 
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.