2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // | Ministerio de Economía |
6 // +--------------------------------------------------------------------+
7 // | This file is part of Intranet. |
9 // | Intranet is free software; you can redistribute it and/or modify |
10 // | it under the terms of the GNU General Public License as published |
11 // | by the Free Software Foundation; either version 2 of the License, |
12 // | or (at your option) any later version. |
14 // | Intranet is distributed in the hope that it will be useful, but |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 // | General Public License for more details. |
19 // | You should have received a copy of the GNU General Public License |
20 // | along with Hooks; if not, write to the Free Software Foundation, |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 // +--------------------------------------------------------------------+
23 // | Creado: Thu Aug 14 16:03:23 2003
24 // | Autor: Matias Sklar <msklar@mecon.gov.ar>
25 // +--------------------------------------------------------------------+
33 require_once 'MECON/Agente.php';
36 // +X2C Class 183 :Servicios_Bandas_Agente
40 class Servicios_Bandas_Agente extends MECON_Agente {
42 * Todos los accesos del agente en el mes pedido
50 * Número de ausentes sin aviso en el mes pedido
58 * Promedio horario del agente en el mes pedido
66 * Array con las horas por día trabajadas por el agente
74 * Cantidad de días trabajados por el agente en el mes pedido
76 * @var int $diasTrabajados
79 var $_diasTrabajados = 0;
82 * Cantidad de días laborables trabajados por el agente en el mes pedido
84 * @var int $diasLaborablesTrabajados
87 var $_diasLaborablesTrabajados = 0;
100 * Devuelve el promedio de horas del agente en el mes pedido
105 function getPromedioMensual() // ~X2C
107 return $this->_promedio;
111 // +X2C Operation 198
113 * Devuelve un array con las horas de cada día
118 function getHoras() // ~X2C
120 return $this->_horas;
124 // +X2C Operation 205
126 * Método que devuelve todos los accesos de una persona en un rango de fechas
131 function getAccesos() // ~X2C
133 return $this->_accesos;
137 // +X2C Operation 207
139 * Devuelve la cantidad de días laborales trabajados por el agente en el mes considerado
144 function getDiasLaborablesTrabajados() // ~X2C
146 return $this->_diasLaborablesTrabajados;
150 // +X2C Operation 208
152 * Devuelve la cantidad de días trabajados por el agente en el mes considerado
157 function getDiasTrabajados() // ~X2C
159 return $this->_diasTrabajados;
164 // +X2C Operation 213
166 * Constructor de la clase
168 * @param int $agente Número de documento del agente a instanciar
169 * @param date $fecha Fecha utilizada para determinar el mes a mostrar
174 function Servicios_Bandas_Agente($agente = null, $fecha = null) // ~X2C
176 Parent::MECON_Agente($agente);
177 $dsn = 'mysql://intranet:intranet@bal747f/bandas';
178 $db = DB::connect($dsn);
179 if (DB::isError($db))
180 die ($db->getMessage("No pudo conectarse a la base"));
181 if(is_null($fecha)) $fecha = new Date();
182 $mes = $fecha->format('%m');
183 $anio = $fecha->format('%Y');
184 $sql = "SELECT AC.credencial, TA.tipo_acceso, A.fecha, A.hora
185 FROM Acceso A, Agente_Credencial AC, Tipo_Acceso TA
186 WHERE AC.credencial = A.credencial AND
187 AC.agente = $agente AND
188 MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
189 TA.puerta = A.puerta AND
190 AC.desde <= A.fecha AND
191 ( AC.hasta >= A.fecha OR AC.hasta IS NULL)
192 ORDER BY A.fecha, A.hora";
193 $result = $db->query($sql);
194 if (DB::isError($result))
195 die ($result->getMessage("Query mal hecho"));
196 for ($fila = 0; $fila < $result->numRows(); $fila++) {
197 $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
200 $sql = "SELECT diasLaborablesTrabajados, diasTrabajados, promedio, NASN
201 FROM PrecalculoMensual
202 WHERE agente = $agente AND anio = $anio and mes = $mes";
203 $result = $db->query($sql);
204 if (DB::isError($result))
205 die ($result->getMessage("Query mal hecho"));
206 if ( $result->numRows() > 0) {
207 $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
208 $this->_diasTrabajados = $aux['diasTrabajados'];
209 $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
210 $this->_promedio = $aux['promedio'];
211 $this->_NASA = $aux['NASN'];
213 $sql = "SELECT P.fecha, tiempo, ASN, inconsistencia, tipo
214 FROM PrecalculoDiario AS P, Dia AS D
215 WHERE agente = $agente AND
216 P.fecha = D.fecha AND
217 MONTH(P.fecha) = $mes AND
218 YEAR(P.fecha) = $anio
220 $result = $db->query($sql);
221 if (DB::isError($result))
222 die ($result->getMessage("Query mal hecho"));
223 $this->_ASA = array();
224 for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
225 $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
226 ($this->_horas[$fila]['ASN']==1)?array_push($this->_ASA,$this->_horas[$fila]['fecha']):0;
232 // +X2C Operation 229
234 * Devuelve las fechas dentro del mes pedido en que el agente faltó y no se pasó ninguna novedad que lo justifique
239 function getASA() // ~X2C
245 // +X2C Operation 230
250 function getNASA() // ~X2C
256 } // -X2C Class :Servicios_Bandas_Agente