aca va el codigo espero que lo entiendan
esta el la funcion para calcular la hora, ademas de los tiempos de cada etapa antes mencionada
calculo.php
Código PHP:
Ver originalfunction str2ts( $time ) {
return mktime((int
)$atime[0], (int
)$atime[1], (int
)$atime[2]); }
function ts_time_diff( $ts_after, $ts_before ) {
global $pers;
$str_diff = '';
$ts_diff = $ts_after - $ts_before;
if( $bln_neg = $ts_diff < 0 )
$ts_diff *= -1;
for( $i = 0; $i < count($pers) - 1; $i ++ ) { $str_diff = sprintf($pers[$i][1], $ts_diff % $pers[$i][0]). $str_diff; $ts_diff = (int)$ts_diff / $pers[$i][0];
}
$str_diff = sprintf($pers[$i], $ts_diff). $str_diff; return ($bln_neg ? '-' : ''). $str_diff;
}
function buscaHora($codigo,$folio,$hora,$fecha,$r=false){
include_once 'mySQLData.php';
$info2[0] = 'Pre-Diagnostico';
$info2[1] = 'Diagnostico';
$info2[2] = 'Desarrollo';
$info2[3] = 'Solucion';
$info2[4] = 'Cierre-Folio';
$min[0] = 30;
$min[1] = 60;
$min[2] = 120;
$min[3] = 180;
$min[4] = 210;
$key = 0;
foreach ($info2 as $k => $v) {
if($v == $codigo)
$key = $k;
}
if($key>0){
$key--;
$base = new mySQLData();
$sql = "SELECT hora,fecha FROM registro WHERE folio = '{$folio}' AND codigo_estado = '{$info2[$key]}' ";
$result = $base->consulta($sql);
if($fecha == $arreglo['fecha']){
if($r){
return ( str2ts($hora)-str2ts($arreglo['hora']) )/60 > $min[$key+1] ? 1:0;
}
else{
if(ts_time_diff( str2ts($hora),str2ts($arreglo['hora']))!='0')
echo ts_time_diff( str2ts($hora),str2ts($arreglo['hora']) );
else
return 0;
}
}
else{
if($r)
return 1;
else
echo '1 día o más de diferencia';
}
}
else{
return 'Sin tiempo';
}
}
?>
estracto del reporte donde muestro el tiempo que se demoro y el codigo de los colores que los trae de un css
Código PHP:
Ver original<?php if( isset( $rs )) { $tfolio = 0;
include_once 'calculo.php';
if(isset($_POST['ncmp']) && $_POST['ncmp'] == 'si'){
if(buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)!=0){
if( $tfolio != $row->folio) {
$tfolio = $row->folio;
?>
<tr class="<?=buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)==0?'success':'error';?>" >
<td><a target="_blank" onClick="window.open(this.href, this.target, 'width=800,height=450, scrollbars=yes'); return false ;" style="text-decoration: none" href="ver.php?folio=<?php echo $row->folio ?>" title=""><?php echo $row->folio; ?></a></td>
<td><?php echo $row->nombre_empresa; ?></td>
<td><?php echo $row->responsable;?></td>
<td><?php echo $row->mesa; ?></td>
<td><?php echo $row->codigo_estado; ?></td>
<td><?php echo $row->fecha; ?><br /> <?php echo $row->hora;?></td>
<td><?php echo buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha); ?></td>
</tr>
<?php }
}
}
else{
if( $tfolio != $row->folio) {
$tfolio = $row->folio;
?>
<tr class="<?=buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)==0?'success':'error';?>" >
<td><a target="_blank" onClick="window.open(this.href, this.target, 'width=800,height=450, scrollbars=yes'); return false ;" style="text-decoration: none" href="ver.php?folio=<?php echo $row->folio ?>" title=""><?php echo $row->folio; ?></a></td>
<td><?php echo $row->nombre_empresa; ?></td>
<td><?php echo $row->responsable;?></td>
<td><?php echo $row->mesa; ?></td>
<td><?php echo $row->codigo_estado; ?></td>
<td><?php echo $row->fecha; ?> <?php echo $row->hora;?></td>
<td><?php echo buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha); ?></td>
</tr>
<?php } ?>
<?php } ?>
<?php endwhile; }?>
css de los colores
Código PHP:
Ver original<style type="text/css">
<!-- colores de los reportes rojo y verde-->
.error{
background-color: #dd0000;
}
.success{
background-color: #00bb00;
}
.error td, .error a, .success td, .success a{
color: white;
}
</style>
eso seria lo que ocupo para mostar los tiempos y asignarles el color segun se retrasa o no el estado.
si no lo entienden :( basicamente lo que hace la funcion llamada calculo.php hace el calculo de los tiempos y en el reporte los traigo y muestro cada tiempo y la etapa segun va rojo o verde.
pero ese calculo lo realiza despues de ingresar la otra etapa y resta las horas, lo que quiero hacer es mostar automaticamente rojo si no cumplieron en el tiempo, no esperar el otro estado para realizar el calculo
muchas gracias por las respuestas espero que me entiendan :)