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);
179 $dsn = 'mysql://intranet:intranet@bal747f/bandas';
180 $db = DB::connect($dsn);
181 if (DB::isError($db))
182 die ($db->getMessage("No pudo conectarse a la base"));
183 if(is_null($fecha)) $fecha = new Date();
184 $mes = $fecha->format('%m');
185 $anio = $fecha->format('%Y');
186 $sql = "SELECT AC.credencial, TA.tipo_acceso, A.fecha, A.hora
187 FROM Acceso A, Agente_Credencial AC, Tipo_Acceso TA
188 WHERE AC.credencial = A.credencial AND
189 AC.agente = $agente AND
190 MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
191 TA.puerta = A.puerta AND
192 AC.desde <= A.fecha AND
193 ( AC.hasta >= A.fecha OR AC.hasta IS NULL)
194 ORDER BY A.fecha, A.hora";
195 $result = $db->query($sql);
196 if (DB::isError($result))
197 die ($result->getMessage("Query mal hecho"));
198 for ($fila = 0; $fila < $result->numRows(); $fila++) {
199 $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
202 $sql = "SELECT diasLaborablesTrabajados, diasTrabajados, promedio, NASN
203 FROM PrecalculoMensual
204 WHERE agente = $agente AND anio = $anio and mes = $mes";
205 $result = $db->query($sql);
206 if (DB::isError($result))
207 die ($result->getMessage("Query mal hecho"));
208 if ( $result->numRows() > 0) {
209 $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
210 $this->_diasTrabajados = $aux['diasTrabajados'];
211 $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
212 $this->_promedio = $aux['promedio'];
213 $this->_NASA = $aux['NASN'];
215 $sql = "SELECT P.fecha, tiempo, ASN, inconsistencia, tipo
216 FROM PrecalculoDiario AS P, Dia AS D
217 WHERE agente = $agente AND
218 P.fecha = D.fecha AND
219 MONTH(P.fecha) = $mes AND
220 YEAR(P.fecha) = $anio
222 $result = $db->query($sql);
223 if (DB::isError($result))
224 die ($result->getMessage("Query mal hecho"));
225 $this->_ASA = array();
226 for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
227 $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
228 ($this->_horas[$fila]['ASN']==1)?array_push($this->_ASA,$this->_horas[$fila]['fecha']):0;
234 // +X2C Operation 229
236 * Devuelve las fechas dentro del mes pedido en que el agente faltó y no se pasó ninguna novedad que lo justifique
241 function getASA() // ~X2C
247 // +X2C Operation 230
252 function getNASA() // ~X2C
258 } // -X2C Class :Servicios_Bandas_Agente