Sei sulla pagina 1di 11

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.

01 Transitional//EN">
<html>
<?php
/**
@file asistencia.php
Pagina que permite consultar la aistencia del personal.
@author Unidad de Informtica Fundacite - Mrida.
@date 2003-04-29
@attention Se requiere la inclusion de los archivos:
* mysql_sessions.php
* conexion.php
* fecha.php
00013
@note El sistema esta hecho bajo plataforma PHP y sistema manejador M
ysql,
00014
permite interactuar con el sistema de viaticos.
00015
@image html dedometro03.jpg "Menu del sistema"
00016 **/
00017 ?>
00018 <head>
00019 <title>Visualizacin en linea de registros del dedometro</title>
00020 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
00021
00022 <script language="JavaScript" type="text/JavaScript">
00023 <!-00024 /// funcion que permite validar los campos de la pgina
00025 function valida()
00026 {
00027
var F = document.forms.formulario;
00028
00029
if (F.depen.selectedIndex == 0)
00030
{
00031
alert ("Debe seleccionar una dependencia");
00032
F.depen.focus();
00033
return false;
00034
}
00035
00036
if (F.codigo.selectedIndex == 0)
00037
{
00038
alert("Debe seleccionar una persona");
00039
F.codigo.focus();
00040
return false;
00041
00042
}
00043
00044
if ((F.di.selectedIndex == 0 || F.mi.selectedIndex == 0 || F.ai.se
lectedIndex == 0
00045
|| F.df.selectedIndex == 0 || F.mf.selectedIndex == 0 || F.af.
selectedIndex == 0)
00046
&& (F.mes.selectedIndex == 0 || F.ano.selectedIndex == 0))
00047
{
00048
alert("Debe ingresar algn periodo de fechas !!");
00049
if (!F.di.disabled)
00050
F.di.focus();
00051
else
00052
F.mes.focus();
00053
00054
return false;
00055
}
00056
00057
return true;

00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117

}
function check_tipobusca(campo)
{
var F = document.forms.formulario;
sel_tipo = (campo.value == "1") ? false: true;
F.di.disabled
F.mi.disabled
F.ai.disabled
F.df.disabled
F.mf.disabled
F.af.disabled

=
=
=
=
=
=

sel_tipo;
sel_tipo;
sel_tipo;
sel_tipo;
sel_tipo;
sel_tipo;

F.mes.disabled = !sel_tipo;
F.ano.disabled = !sel_tipo;
}
// -->
</script>
<style type="text/css">
<!-td.list { font-size: 14px; text-align: center;}
td.listn { font-size: 14px;}
-->
</style>
</head>
<body bgcolor="#CCCCCC">
<?php
/// archivo requerido para el manejo de sesiones.
require ("mysql_sessions.inc.php");
if (!verificar_session_activa($PHPSESSID))
return;
/// archivo necesario para el manejo de las funciones de fecha y hora.
include("fecha.php");
/// archivo necesario para el manejo de conexion a la BD.
include("conexion.php");
/// conexion a la base de datos
$conexion= conectarBD();
if(!$btn_actualizar && !$btn_consultar)
{
/// mes
$mes = date("m");
/// ao
$ano = date("Y");
?>
<h2><center>

00118
Control de Entrada/Salida
00119 </center></h2>
00120
00121 <form action="asistencia.php" method="post" name="formulario" onSubmit="re
turn valida()">
00122 <table align="center">
00123
<tr>
00124
<td><strong>Dependencia: </strong></td>
00125
<td> <select name="depen" style = "width: 400px" onChange="formulari
o.submit()">
00126
<option value="">-- Seleccione --</option>
00127
<?php
00128
00129
/// se extraen las dependencias y se ordenan por n
ombre.
00130
$consulta= "SELECT * FROM dependencia order by nom
bre";
00131
/// almacena la conuslta hecha
00132
$resultado= mysql_query($consulta);
00133
echo mysql_error();
00134
00135
while($arr_asoc = mysql_fetch_array($resultado))
00136
{
00137
/// codigo de la dependencia.
00138
$codigo = $arr_asoc['cod_dependencia'];
00139
$selected="";
00140
if($codigo == $depen)
00141
$selected="selected";
00142
00143
/// nombre de la dependencia.
00144
$nombre= $arr_asoc['nombre'];
00145
00146
echo "<option value=\"$codigo\" $selected
>$nombre</option>";
00147
}
00148
?>
00149
</select> </td>
00150
</tr>
00151
<tr>
00152
<td><strong>Nombre: </strong></td>
00153
<td> <select name="codigo" style = "width: 400px" >
00154
<option value="">-- Seleccione --</option>
00155
<?php
00156
00157
/// se extraen los nombres del personal segun la d
ependencia.
00158
$consulta= "SELECT * FROM personal WHERE cod_depen
dencia='$depen' order by apellido, nombre";
00159
$resultado= mysql_query($consulta);
00160
echo mysql_error();
00161
00162
while($arr_asoc = mysql_fetch_array($resultado))
00163
{
00164
/// codigo de la persona.
00165
$codigo = $arr_asoc['codigo'];
00166
/// nombre de la persona.
00167
$nombre= $arr_asoc['apellido'].", ".$arr_
asoc['nombre'];
00168

00169
echo "<option value=\"$codigo\">$nombre</
option>";
00170
}
00171
?>
00172
</select> </td>
00173
</tr>
00174
<tr>
00175
<td colspan=2>&nbsp;</td>
00176
</tr>
00177
<tr>
00178
<td><strong>Fecha Inicial:</strong></td>
00179
<td>
00180
<?php
00181
/// funcion que crea el combo de seleccion de fecha.
00182
LeeFecha ("di","mi","ai",$di,$mi,$ai,1);
00183
?>
00184
</td>
00185
</tr>
00186
<tr>
00187
<td><strong>Fecha Final:</strong></td>
00188
<td>
00189
<?php
00190
LeeFecha ("df","mf","af",$df,$mf,$af,1);
00191
?>
00192
</td>
00193
</tr>
00194
<tr>
00195
<td colspan="2">&nbsp;</td>
00196
</tr>
00197
<tr>
00198
<td><strong>Por Mes:</strong></td>
00199
<td>
00200
<?php
00201
/// funciones del archivo fecha.
00202
LeeMes("mes",$mes);
00203
echo "/";
00204
LeeAno("ano",$ano);
00205
?>
00206
</td>
00207
</tr>
00208
<tr>
00209
<td colspan="2">&nbsp;</td>
00210
</tr>
00211
<tr>
00212
<td>&nbsp;</td>
00213
<td>
00214
<input type="radio" name="tipo_consul" value="1" onclick="ch
eck_tipobusca(this)">Por Periodo
00215
<input type="radio" name="tipo_consul" value="2" onclick="
check_tipobusca(this)" checked>Por Mes
00216
</td>
00217
</tr>
00218
<tr>
00219
<td colspan="2">&nbsp;</td>
00220
</tr>
00221
<tr>
00222
<td colspan="2"><center>
00223
<input type="submit" name="btn_consultar" value="Consultar">
00224
<input type="reset" name="Reset" value="Limpiar">
00225
</center></td>

00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
.
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
)
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
;
00277
00278
00279
00280
00281
00282

</tr>
</table>
</form>
<?php
}// fin del if q comprueba si los botones existen
else
{
/// codigo o clave del personal.
$codpass = md5($codigo);
/// funcion que permite ordenar los das.
function Acomodar(&$dia)
{
// si existen dos datos.
if ($dia[0][0] && $dia[0][1] && !$dia[1][0] && !$dia[1][1])
{
// si no existe registro entrada y salida del primer turno
if ($dia[0][0] > "11:35:00")
{
$dia[1][0] = $dia[0][0];
$dia[1][1] = $dia[0][1];
$dia[1][2] = $dia[0][2];
$dia[0][0] = "";
$dia[0][1] = "";
$dia[0][2] = "";
}
}
// si existen tres datos
else if ($dia[0][0] && $dia[0][1] && $dia[1][0] && !$dia[1][1]
{
// si no existe registro de entrada del primer turno.
if ($dia[0][0] > "11:35:00")
{
$dia[1][1] = $dia[1][0];
$dia[1][0] = $dia[0][1];
$dia[1][2] = sumahoras($dia[1][1],$dia[1][0]);
$dia[0][1] = $dia[0][0];;
$dia[0][0] = "";
$dia[0][2] = "";
}
else
// si no existe registro salida del primer turno.
if ($dia[0][1] > "13:45:00")
{
$dia[1][1] = $dia[1][0];
$dia[1][0] = $dia[0][1];
$dia[1][2] = sumahoras($dia[1][1],$dia[1][0])
$dia[0][1] = "";
$dia[0][2] = "";
}
else
// si no existe registro entrada del segundo

turno.
00283
if ($dia[1][0] > "16:30:00")
00284
{
00285
$dia[1][1] = $dia[1][0];
00286
$dia[1][0] = "";
00287
}
00288
}
00289
}
00290
00291
if (!$fecha_ini && !$fecha_fin)
00292
{
00293
if($tipo_consul == 1)
00294
{
00295
/// fecha de inicio para consulta.
00296
$fecha_ini= $ai . "-" . $mi . "-" . $di;
00297
/// fecha de fin para consulta.
00298
$fecha_fin= $af . "-" . $mf . "-" . $df;
00299
}
00300
else
00301
{
00302
$fecha_ini = $ano."-".$mes."-01";
00303
$fecha_fin = $ano."-".$mes."-".dias($mes);
00304
}
00305
}
00306
else
00307
{
00308
if ($clave == $codigo and $boton == "Aceptar")
00309
{
00310
/// selecciona todos los campos de la tabla asistencia.
00311
$sql = "select * from asist_nota where codigo = '$cod
igo' and fecha = '$fecha'";
00312
/// cursor temporal para almacenar la consulta.
00313
$curs_tmp = mysql_query($sql);
00314
00315
$sql = "";
00316
if (mysql_num_rows($curs_tmp) == 0)
00317
{
00318
if ($nota != "")
00319
/// insercion de las notas a la asistencia.
00320
$sql = "insert into asist_nota (codig
o, fecha, tipo, observacion) ".
00321
"values ('$codigo', '$fecha', '$tipo',
'$nota')";
00322
}
00323
else
00324
{
00325
if ($nota != "")
00326
/// actualizacion de las notas.
00327
$sql = "update asist_nota set observac
ion = '$nota', tipo = '$tipo' where codigo = '$codigo' and fecha = '$fecha'";
00328
else
00329
/// eliminacion de las notas.
00330
$sql = "delete from asist_nota where c
odigo = '$codigo' and fecha = '$fecha'";
00331
}
00332
00333
if ($sql)
00334
{
00335
mysql_query($sql);
00336
echo mysql_error();

00337
}
00338
}
00339
}
00340
00341
00342
/// Busqueda numero de turnos
00343
$sql = "select distinct count(*) from asistencia ast ".
00344
" where ast.codigo='$codigo' AND fecha >= '$fecha_ini' AND
fecha <= '$fecha_fin'".
00345
" group by fecha having count(*) > 1";
00346
$cursor = mysql_query($sql);
00347
echo mysql_error();
00348
00349
$max = 1;
00350
if (($num = mysql_num_rows($cursor)) != 0)
00351
for ($i = 0; $i < $num; $i++)
00352
{
00353
/// valor.
00354
$val = mysql_result($cursor,$i,0);
00355
if ($val > $max)
00356
$max = $val;
00357
}
00358
00359
/// numero de turno.
00360
$num_turno = ($max > 2) ? $max : 2;
00361
00362
/// Busca nombre del personal
00363
$sql = "select * from personal where codigo = '$codigo'";
00364
/// cursor temporal.
00365
$curtmp = mysql_query($sql);
00366
/// apellido de la perosna.
00367
$persona = mysql_result($curtmp,0,"apellido") . ", " . mysql_resul
t($curtmp,0,"nombre");
00368
00369
echo "<center><b>$persona<b></center><br>";
00370
00371
?>
00372
<table width="100%" border=1 align = center>
00373
<tr>
00374
<td rowspan="2" align = center><font color="#0000FF"><b>Fecha</b>
</font></td>
00375
<?php
00376
for ($i = 0; $i < $num_turno; $i++)
00377
{
00378
?>
00379
<td colspan="3" align = center><font color="#0000FF"><strong>Turno
</strong></font></td>
00380
<?php
00381
}
00382
?>
00383
00384
<td rowspan="2">&nbsp;</td>
00385
<td rowspan="2" align = center><font color="#0000FF"><b>Total<br>
Diario</b> </font></td>
00386
<td rowspan="2" align = center><font color="#0000FF"><b>Notas</b>
</font></td>
00387
</tr>
00388
<tr>
00389
00390
<?php

00391
for ($i = 0; $i < $num_turno; $i++)
00392
{
00393
$ndias[$i][0] = 0;
00394
$ndias[$i][1] = 0;
00395
00396
$sumatot[$i][0] = 0;
00397
$sumatot[$i][1] = 0;
00398
$sumatot[$i][2] = 0;
00399
00400
?>
00401
<td align = center><font color="#0000FF"><b>Inicio</b></font></td>
00402
<td align = center><font color="#0000FF"><b>Salida</b></font></td>
00403
<td align = center><font color="#0000FF"><b>Total</b></font></td>
00404
<?php
00405
}
00406
?>
00407
</tr>
00408
00409
<?php
00410
for ($fecha = $fecha_ini; $fecha <= $fecha_fin && $fecha <= date("Y-m
-d"); $fecha = add_dia($fecha))
00411
{
00412
/// consulta de lo0s datos segun la fecha de asistencia.
00413
$sql = "select * from asistencia where fecha = '$fecha' and c
odigo = '$codigo' order by h_entrada";
00414
$cursor = mysql_query($sql);
00415
00416
/// cantidad de registros.
00417
$num = mysql_num_rows($cursor);
00418
00419
/// numeros de das de la semana.
00420
$nds = DiaSemana($fecha,0);
00421
00422
if (($nds >= 1 && $nds <= 5) || $num != 0)
00423
{
00424
echo "<tr>";
00425
echo "<td class = list><font color=#0000FF><b><span title
= ".DiaSemana($fecha).">$fecha</span></b></font></td>";
00426
00427
for ($i = 0; $i < $num_turno; $i++)
00428
{
00429
$dia[$i] = array("","","");
00430
if ($i < $num)
00431
{
00432
$dia[$i][0] = mysql_result($cursor,$i,"h_entrada")
;
00433
$dia[$i][1] = mysql_result($cursor,$i,"h_salid
a");
00434
$dia[$i][2] = mysql_result($cursor,$i,"n_horas
_dia");
00435
$contador[$i] = mysql_result($cursor,$
i,"contador");
00436
}
00437
}
00438
00439
if ($fechaant != date("Y-m-d"))
00440
/// funcion que acomoda el da.
00441
Acomodar($dia);
00442
00443
for ($i = 0; $i < $num_turno; $i++)

00444
{
00445
/// suma total de horas.
00446
$sumatot[$i][0] += hm($dia[$i][0]);
00447
$sumatot[$i][1] += hm($dia[$i][1]);
00448
$sumatot[$i][2] += hm($dia[$i][2]);
00449
00450
if ($dia[$i][0] != "")
00451
$ndias[$i][0]++;
00452
00453
if ($dia[$i][1] != "")
00454
$ndias[$i][1]++;
00455
00456
echo "<td class = list>".ht($dia[$i][0])."</td>";
00457
echo "<td class = list>".ht($dia[$i][1])."</td
>";
00458
00459
if ($dia[$i][0] != "" && $dia[$i][1] != "" &&
$dia[$i][2] == "")
00460
{
00461
/// nuevo da.
00462
$newdia = sumahoras($dia[$i][1],$dia[$i][
0]);
00463
00464
$dia[$nt][2] = $newdia;
00465
00466
/// consulta de actualizacion.
00467
$sql_upd = "update asistencia set n_horas
_dia = '". $newdia. "' where contador = '".$contador[$i]."'";
00468
mysql_query($sql_upd);
00469
00470
00471
echo "<td class = list bgcolor=#aaaaaa>".
ht($newdia)."*</td>";
00472
}
00473
else
00474
echo "<td class = list bgcolor=#aaaaaa>".ht
($dia[$i][2])."</td>";
00475
}
00476
00477
echo "<td>&nbsp;</td>";
00478
00479
echo "<td class = list>";
00480
/// turno del da.
00481
$ttdia = "0";
00482
for ($i=0; $i < $num_turno; $i++)
00483
$ttdia += hm($dia[$i][2]);
00484
00485
echo h60($ttdia);
00486
echo "</td>";
00487
00488
$sql2 = "select * from asist_nota where codigo = '$co
digo' and fecha = '$fecha'";
00489
$cursor2 = mysql_query($sql2);
00490
00491
/// color de nota si no existe.
00492
$color = "black"; // negro
00493
$item = "No";
00494
$textnota = "Ingresar Nota";
00495
if (mysql_num_rows($cursor2) != 0)
00496
{

00497
/// color de nota si existe.
00498
$color = "#006600"; // verde
00499
$item = "Si";
00500
$textnota = "Ver Nota";
00501
}
00502
00503
echo "<td class = list>";
00504
echo "<a href=\"nota.php?mcodigo=$codpass&fecha=$fecha&fecha_in
i=$fecha_ini&fecha_fin=$fecha_fin\" ".
00505
" style=\"text-decoration: none\" title = \"$textnota\">";
00506
echo " <font color=$color><b>$item</b></font></a>";
00507
echo "</td>";
00508
00509
echo "</tr>\n";
00510
00511
}
00512
else
00513
{
00514
}
00515
00516
if ($nds == 0)
00517
{
00518
echo "<tr><td colspan = 10>";
00519
echo "</td></tr>";
00520
}
00521
}
00522
00523
echo "<tr>";
00524
echo "<td>&nbsp;</td>";
00525
for ($i = 0; $i < $num_turno; $i++)
00526
{
00527
$suma[$i] = 0;
00528
echo "<td class = list><font color=\"#0000FF\">".ht(h60($sumatot[$i
][0]/$ndias[$i][0]))."</font></td>";
00529
echo "<td class = list><font color=\"#0000FF\">".ht(h60($suma
tot[$i][1]/$ndias[$i][1]))."</font></td>";
00530
echo "<td class = list><font color=\"#0000FF\">".h60($sumatot[$i][2
])."</font></td>";
00531
}
00532
00533
$enlace = "cons_notas.php?mcodigo=$codpass&fecha_ini=$fecha_ini&fecha
_fin=$fecha_fin";
00534
00535
echo "<td>&nbsp;</td>";
00536
echo "<td class = list><font color=\"#0000FF\"><b>".h60($sumatot[0][2
]+$sumatot[1][2])."</b></font></td>";
00537
echo "<td class=list><a href=\"$enlace\" style=\"text-decoration: non
e\">Todas</a></td>";
00538
echo "</tr>";
00539
00540
?>
00541
</table>
00542
00543
<center>
00544
<br><p><a href="asistencia.php" >Volver a la pagina de consulta</a>
00545
</center>
00546
<?php
00547
00548
00549 }

00550 ?>
00551
00552 </body>
00553 </html>
00554

Potrebbero piacerti anche