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;
94 * Devuelve el promedio de horas del agente en el mes pedido
99 function getPromedioMensual() // ~X2C
101 return $this->_promedioMensual;
105 // +X2C Operation 198
107 * Devuelve un array con las horas de cada día
112 function getHoras() // ~X2C
114 return $this->_horas;
118 // +X2C Operation 205
120 * Método que devuelve todos los accesos de una persona en un rango de fechas
125 function getAccesos() // ~X2C
127 return $this->_accesos;
131 // +X2C Operation 207
133 * Devuelve la cantidad de días laborales trabajados por el agente en el mes considerado
138 function getDiasLaborablesTrabajados() // ~X2C
140 return $this->_diasLaborablesTrabajados;
144 // +X2C Operation 208
146 * Devuelve la cantidad de días trabajados por el agente en el mes considerado
151 function getDiasTrabajados() // ~X2C
153 return $this->_diasTrabajados;
157 // +X2C Operation 212
159 * Devuelve la cantidad de ausentes sin aviso del agente en el mes considerado
164 function getNASA() // ~X2C
170 // +X2C Operation 213
172 * Constructor de la clase
174 * @param int $agente Número de documento del agente a instanciar
175 * @param date $fecha Fecha utilizada para determinar el mes a mostrar
180 function Servicios_Bandas_Agente($agente = null, $fecha = null) // ~X2C
182 Parent::MECON_Agente($agente);
183 $dsn = 'mysql://intranet:intranet@bal747f/bandas';
184 $db = DB::connect($dsn);
185 if (DB::isError($db))
186 die ($db->getMessage("No pudo conectarse a la base"));
187 if(is_null($fecha)) $fecha = new Date();
188 $mes = $fecha->format('%m');
189 $anio = $fecha->format('%Y');
190 $sql = "SELECT AC.credencial, TA.tipo_acceso, A.fecha, A.hora
191 FROM Acceso A, Agente_Credencial AC, Tipo_Acceso TA
192 WHERE AC.credencial = A.credencial AND
193 AC.agente = $agente AND
194 MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
195 TA.puerta = A.puerta AND
196 AC.desde <= A.fecha AND
197 ( AC.hasta >= A.fecha OR AC.hasta IS NULL)
198 ORDER BY A.fecha, A.hora";
199 $result = $db->query($sql);
200 if (DB::isError($result))
201 die ($result->getMessage("Query mal hecho"));
202 for ($fila = 0; $fila < $result->numRows(); $fila++) {
203 $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
206 $sql = "SELECT diasLaborablesTrabajados, diasTrabajados, promedio, NASN
207 FROM PrecalculoMensual
208 WHERE agente = $agente AND anio = $anio and mes = $mes";
209 $result = $db->query($sql);
210 if (DB::isError($result))
211 die ($result->getMessage("Query mal hecho"));
212 if ( $result->numRows() > 0) {
213 $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
214 $this->_diasTrabajados = $aux['diasTrabajados'];
215 $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
216 $this->_promedio = $aux['promedio'];
217 $this->_NASA = $aux['NASN'];
219 $sql = "SELECT fecha, tiempo, ASN, inconsistencia
220 FROM PrecalculoDiario
221 WHERE agente = $agente AND
222 MONTH(fecha) = $mes AND
225 $result = $db->query($sql);
226 if (DB::isError($result))
227 die ($result->getMessage("Query mal hecho"));
228 for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
229 $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
235 } // -X2C Class :Servicios_Bandas_Agente