function ListadoConsulta($strNumDesde, $strNumDesdeAnio, $strNumHasta, $strNumHastaAnio, $datFechaAltaDesde, $datFechaAltaHasta, $datFechaMaxCierreDesde, $datFechaMaxCierreHasta, $optTipoAccion, $optEstado, $strOficina, $strDepartamento)
 {
     require_once '../general/' . $_SESSION['mapeo'];
     require_once '../CAD/clsCADUsu.php';
     $clsCADUsu = new clsCADUsu();
     //extraigo la oficina y departamento del usuario
     $OficinaDepartamento = $clsCADUsu->ObtieneOficinaDep_usuario($_SESSION['usuario']);
     $codOficina = explode('.', $OficinaDepartamento['strOficina']);
     $codOficina = $codOficina[0];
     $codDepartamento = $OficinaDepartamento['lngDepartamento'];
     $permiso = $clsCADUsu->ObtienePermisoUsuario($_SESSION['strUsuario']);
     $strSQL = "SELECT DISTINCT A.lngId AS Numero,A.strAccionCorrPrev,T.strDescripcion,DATE_FORMAT(A.datFechaAlta,'%d/%m/%Y') AS datFechaAlta,OA.strDescripcion as Origen, A.strNumDocOrigen,DATE_FORMAT(A.datFechaMaxCierre,'%d/%m/%Y') AS datFechaMaxCierre,concat(E.strNombre, ' ',E.strApellidos) as Responsable\r\n                from tbaccioncorrprev A, tbempleados E, tbtipoaccioncp T, tborigenaccioncp OA, tboficinas O\r\n\t\t\t\t\t where A.lngTipoAccion = T.lngId and A.lngIdTipoOrigen = OA.lngId and E.lngIdEmpleado = A.lngIdResponsable ";
     //        //veo si tiene permiso 2 o no
     //        if($permiso !== '2'){
     //            //por defecto filtro por oficina y departamento del usuario
     //            if((!isset($datFechaAltaDesde) || $datFechaAltaDesde === '') &&
     //               (!isset($datFechaAltaHasta) || $datFechaAltaHasta === '') &&
     //               (!isset($datFechaMaxCierreDesde) || $datFechaMaxCierreDesde === '') &&
     //               (!isset($datFechaMaxCierreHasta) || $datFechaMaxCierreHasta === '') &&
     //               (!isset($strOficina) || $strOficina === '') &&
     //               (!isset($strDepartamento) || $strDepartamento === '') &&
     //               (!isset($optTipoAccion) || $optTipoAccion === '')){
     //                $strSQL = $strSQL . " AND (A.strCodigoOficina = '$codOficina' OR A.lngIdDepartamento = $codDepartamento)";
     //            }
     //        }
     //si no hubiese datos de fechas se filtra por los del año actual
     if ($datFechaAltaDesde == '' && $datFechaAltaHasta == '') {
         date_default_timezone_set('Europe/Madrid');
         $datFechaAltaDesde = '01/01/' . date("Y");
     }
     if ($datFechaAltaDesde != '') {
         $strSQL = $strSQL . " AND A.datFechaAlta >= '" . fecha_to_DATETIME($datFechaAltaDesde) . "'";
     }
     if ($datFechaAltaHasta != '') {
         $strSQL = $strSQL . " AND A.datFechaAlta <= '" . fecha_to_DATETIME_F($datFechaAltaHasta) . "'";
     }
     //        if($datFechaAltaDesde=='' && $datFechaAltaHasta==''){
     //            date_default_timezone_set('Europe/Madrid');
     //            $datFechaAltaDesde='01/01/'.date ("Y");
     //        }
     if ($datFechaMaxCierreDesde != '') {
         $strSQL = $strSQL . " AND A.datFechaMaxCierre >= '" . fecha_to_DATETIME($datFechaMaxCierreDesde) . "'";
     }
     if ($datFechaMaxCierreHasta != '') {
         $strSQL = $strSQL . "  AND A.datFechaMaxCierre <= '" . fecha_to_DATETIME_F($datFechaMaxCierreHasta) . "'";
     }
     if ($strOficina != '' && $strDepartamento != '') {
         $strSQL = $strSQL . " AND (A.strCodigoOficina = '" . $strOficina . "' OR A.lngIdDepartamento = " . $strDepartamento . ")";
     } else {
         if ($strOficina != '') {
             $strSQL = $strSQL . " AND A.strCodigoOficina = '" . $strOficina . "'";
         } else {
             if ($strDepartamento != '') {
                 $strSQL = $strSQL . " AND A.lngIdDepartamento = " . $strDepartamento . "";
             }
         }
     }
     if ($optTipoAccion == '1') {
         //Pdte. Analisis
         $strSQL = $strSQL . " AND A.lngTipoAccion=1";
     } else {
         if ($optTipoAccion == '0') {
             //Pdte. cierre
             $strSQL = $strSQL . " AND A.lngTipoAccion=0 ";
         }
     }
     if ($optEstado != 3) {
         if ($optEstado == 4) {
             //Sin Verificar
             $strSQL = $strSQL . " AND A.lngVerificacion=0";
         } else {
             if ($optEstado == 5) {
                 //Verif. Sin Cerrar
                 $strSQL = $strSQL . " AND A.lngVerificacion=1 AND A.estadoCierre=0";
             } else {
                 if ($optEstado == 6) {
                     //Verificadas
                     $strSQL = $strSQL . " AND A.lngVerificacion=1";
                 } else {
                     if ($optEstado == 7) {
                         //Cerradas
                         $strSQL = $strSQL . " AND A.estadoCierre<>0";
                     } else {
                         if ($optEstado == 8) {
                             //Cerradas Fuera
                             $strSQL = $strSQL . " AND A.estadoCierre=2";
                         }
                     }
                 }
             }
         }
     }
     $strSQL = $strSQL . " ORDER BY A.datFechaAlta DESC, A.strAccionCorrPrev DESC";
     logger('traza', 'clsCADacp.php-', "Usuario: " . $_SESSION['strUsuario'] . ', Empresa: ' . $_SESSION['mapeo'] . ', SesionID: ' . session_id() . " clsCADacp->ListadoConsulta() : SQL: " . $strSQL);
     //para el filtro de Nº Reclamaciones como por consulta es complicado de resolver lo hago al guardar los datos
     //hago la consulta que llevo en este momento (con o sin fechas)
     $db = new Db();
     $db->conectar($_SESSION['mapeo']);
     $stmt = $db->ejecutar($strSQL);
     $db->desconectar();
     //ahora guardo en un array los datos de la consulta
     //al guardar ahora compruebo si tengo datos en los filtros de reclamacion y antes de guardar compruebo si
     //cumple esos filtros, sino no los guardo, sino hay filtro guardo la consulta tal cual
     if ($stmt) {
         $this->filtrarArray($arcDoc, $stmt, $strNumDesde, $strNumDesdeAnio, $strNumHasta, $strNumHastaAnio);
         //devuelvo el listado
         return $arcDoc;
     } else {
         //no hay datos
         return '';
     }
 }
 function ObtieneLista($strUsuario, $strNumDesde, $strNumDesdeAnio, $strNumHasta, $strNumHastaAnio, $datAltaDesde, $datAltaHasta, $tipologiaRecl, $strTipologia, $strOficina, $strDepartamento)
 {
     require_once '../general/' . $_SESSION['mapeo'];
     require_once '../general/funcionesGenerales.php';
     require_once '../CAD/clsCADUsu.php';
     $clsCADUsu = new clsCADUsu();
     logger('traza', 'clsCADRecl.php-', 'clsCADRecl->ObtieneLista()');
     //extraigo la oficina y departamento del usuario
     $OficinaDepartamento = $clsCADUsu->ObtieneOficinaDep_usuario($_SESSION['usuario']);
     $codOficina = explode('.', $OficinaDepartamento['strOficina']);
     $codOficina = $codOficina[0];
     $codDepartamento = $OficinaDepartamento['lngDepartamento'];
     $permiso = $clsCADUsu->ObtienePermisoUsuario($strUsuario);
     //Para llamara a la función hay que pasar 0-> Sí sólo queremos la visbilidad sobre los departamento, 1  si queremos la visibilidad sobre las oficinas
     //        $visibilidad = DameVisibilidad($strUsuario, 1);
     //echo $visibilidad;
     //echo "<br>";
     //        $strSQL = "SELECT R.lngId as Id, R.strReclamacion, DATE_FORMAT(R.datFechaAlta,'%d/%m/%Y') AS datFechaAlta,CONCAT(R.strClienteNombre,' ',R.strClienteApellidos) AS strNombreYApellidos, " .
     //                "LEFT(R.strDescripcion, 30) AS Causa,R.strEmpresa,R.strServAfect AS strNombreServicio, " .
     //                "CONCAT(ERecib.strNombre , ' ' , ERecib.strApellidos) AS RegistradoPor, IF(R.lngAccion=1,'Si','No') AS lngAccion,R.lngTipo,R.lngTipologia " .
     //                "FROM tbreclamaciones R, tbempleados ERecib, tbempleados EResp, tbusuarios U,tboficinas O " .
     //                "WHERE R.lngIdEmpleado = ERecib.lngIdEmpleado AND ";
     //
     //        if ($visibilidad <> NULL) {
     //            $strSQL = $strSQL . " (U.lngPermiso = 2 OR U.lngPermiso = 1 OR R.strCodigoOficina = O.strCodigo OR R.strCodigoOficina IN (" . $visibilidad . ")) AND EResp.lngIdOficina = O.lngId ";
     //        } else {
     //            $strSQL = $strSQL . " (U.lngPermiso = 2 OR U.lngPermiso = 1 OR R.strCodigoOficina = O.strCodigo OR R.strCodigoOficina IN (SELECT lngVisibilidad FROM tbvisibilidad2 WHERE lngidEmpleado = U.lngIdEmpleado)) AND EResp.lngIdOficina = O.lngId ";
     //        }
     //        $strSQL = $strSQL . " AND U.lngIdEmpleado = EResp.lngIdEmpleado AND U.strUsuario = '" . $strUsuario . "'  AND R.lngStatus<>0";
     $strSQL = "\r\n                    SELECT R.lngId as Id, R.strReclamacion, DATE_FORMAT(R.datFechaAlta,'%d/%m/%Y') AS datFechaAlta,CONCAT(R.strClienteNombre,' ',R.strClienteApellidos) AS strNombreYApellidos,\r\n                    LEFT(R.strDescripcion,50) AS Causa,R.strEmpresa,R.strServAfect AS strNombreServicio,\r\n                    CONCAT(E.strNombre , ' ' , E.strApellidos) AS RegistradoPor, IF(R.lngAccion=1,'Si','No') AS lngAccion,R.lngTipo,R.lngTipologia,R.strTelefono2\r\n                    FROM tbreclamaciones R, tbempleados E WHERE R.lngIdEmpleado = E.lngIdEmpleado AND R.lngStatus<>0\r\n                    ";
     //veo si tiene permiso 2 o no
     if ($permiso !== '2') {
         //por defecto filtro por oficina y departamento del usuario
         if ((!isset($datAltaDesde) || $datAltaDesde === '') && (!isset($datAltaHasta) || $datAltaHasta === '') && (!isset($strOficina) || $strOficina === '') && (!isset($strDepartamento) || $strDepartamento === '') && (!isset($strTipologia) || $strTipologia === '')) {
             $strSQL = $strSQL . " AND (R.strCodigoOficina = '{$codOficina}' OR R.lngIdDepartamento = {$codDepartamento})";
         }
     }
     //condiciones de filtros
     if ($tipologiaRecl != 0) {
         if ($tipologiaRecl == 1) {
             //Pdte. Analisis
             $strSQL = $strSQL . " AND ISNULL(R.datFechaAceptadoResponsable) ";
         } else {
             if ($tipologiaRecl == 2) {
                 //Pdte. cierre
                 $strSQL = $strSQL . " AND NOT ISNULL(R.datFechaAceptadoResponsable) AND R.lngCerrado = 0 ";
             } else {
                 if ($tipologiaRecl == 3) {
                     //cerrado
                     $strSQL = $strSQL . " AND R.lngCerrado = 1 ";
                 }
             }
         }
     }
     //si no hubiese datos de fechas se filtra por los del año actual
     if ($datAltaDesde == '' && $datAltaHasta == '') {
         date_default_timezone_set('Europe/Madrid');
         $datAltaDesde = '01/01/' . date("Y");
     }
     //veo si hay datos en las fechas y añado los filtros
     if ($datAltaDesde != '') {
         $strSQL = $strSQL . " AND R.datFechaAlta >= '" . fecha_to_DATETIME($datAltaDesde) . "'";
     }
     if ($datAltaHasta != '') {
         $strSQL = $strSQL . " AND R.datFechaAlta <= '" . fecha_to_DATETIME_F($datAltaHasta) . "'";
     }
     if ($strOficina != '' && $strDepartamento != '') {
         $strSQL = $strSQL . " AND (R.strCodigoOficina = '" . $strOficina . "' OR R.lngIdDepartamento = " . $strDepartamento . ")";
     } else {
         if ($strOficina != '') {
             $strSQL = $strSQL . " AND R.strCodigoOficina = '" . $strOficina . "'";
         } else {
             if ($strDepartamento != '') {
                 $strSQL = $strSQL . " AND R.lngIdDepartamento = " . $strDepartamento . "";
             }
         }
     }
     if ($strTipologia === '1' || $strTipologia === '2' || $strTipologia === '3') {
         $strSQL = $strSQL . " AND R.lngTipologia =" . $strTipologia;
     }
     logger('traza', 'clsCADRecl.php-', 'clsCADRecl->ObtieneLista() : SQL : ' . $strSQL);
     //para el filtro de Nº Reclamaciones como por consulta es complicado de resolver lo hago al guardar los datos
     //hago la consulta que llevo en este momento (con o sin fechas)
     $db = new Db();
     $db->conectar($_SESSION['mapeo']);
     $stmt = $db->ejecutar($strSQL);
     $db->desconectar();
     //ahora guardo en un array los datos de la consulta
     //al guardar ahora compruebo si tengo datos en los filtros de reclamacion y antes de guardar compruebo si
     //cumple esos filtros, sino no los guardo, sino hay filtro guardo la consulta tal cual
     $arcDoc = '';
     if ($stmt) {
         //preparamos los numeros ordenados de 'desde' y 'hasta'
         $desdeOrd = $strNumDesdeAnio . $strNumDesde;
         $hastaOrd = $strNumHastaAnio . $strNumHasta;
         //recoremos la consulta y vamos incluyendo o descartando los resultados segun si cumplen o no el filtro
         while ($row = mysql_fetch_array($stmt, MYSQL_ASSOC)) {
             //extraemos el numero de reclamacion para poder comprobar que cumple los filtros
             $numRecl = explode('/', $row['strReclamacion']);
             //preparamos el numero ordenado primero el año y despues el numero
             $numRecOrdenado = $numRecl[1] . $numRecl[0];
             //ahora comprobamos si tenemos datos en 'desde', 'hasta' o 'desde' y 'hasta'
             //hay datos de 'desde' y 'hasta'
             if ($strNumDesde != '' && $strNumDesdeAnio != '' && $strNumHasta != '' && $strNumHastaAnio != '') {
                 //comprobamos si el nº reclamacion esta entre estos los numeros
                 if ($desdeOrd <= $numRecOrdenado && $hastaOrd >= $numRecOrdenado) {
                     //si lo cumple lo incluimos en el listado
                     $this->guardarArrayListar($arcDoc, $row);
                 }
             } else {
                 if ($strNumDesde != '' && $strNumDesdeAnio != '' && $strNumHasta == '' && $strNumHastaAnio == '') {
                     //comprobamos si el nº reclamacion es igual o mayor que el 'desde'
                     if ($desdeOrd <= $numRecOrdenado) {
                         //si lo cumple lo incluimos en el listado
                         $this->guardarArrayListar($arcDoc, $row);
                     }
                 } else {
                     if ($strNumDesde == '' && $strNumDesdeAnio == '' && $strNumHasta != '' && $strNumHastaAnio != '') {
                         //comprobamos si el nº reclamacion es igual o menor que el 'hasta'
                         if ($hastaOrd >= $numRecOrdenado) {
                             //si lo cumple lo incluimos en el listado
                             $this->guardarArrayListar($arcDoc, $row);
                         }
                     } else {
                         //se incluye tal cual en el listado
                         $this->guardarArrayListar($arcDoc, $row);
                     }
                 }
             }
         }
         //devuelvo el listado
         logger('traza', 'clsCADRecl.php-', 'clsCADRecl->ObtieneLista(' . $strUsuario . ',' . $strNumDesde . ',' . $strNumDesdeAnio . ',' . $strNumHasta . ',' . $strNumHastaAnio . ',' . $datAltaDesde . ',' . $datAltaHasta . ',' . $tipologiaRecl . ',' . $strTipologia . '): Hay listado datos');
         return $arcDoc;
     } else {
         //no hay datos
         logger('traza', 'clsCADRecl.php-', 'clsCADRecl->ObtieneLista(' . $strUsuario . ',' . $strNumDesde . ',' . $strNumDesdeAnio . ',' . $strNumHasta . ',' . $strNumHastaAnio . ',' . $datAltaDesde . ',' . $datAltaHasta . ',' . $tipologiaRecl . ',' . $strTipologia . '): Esta vacio, no hay datos');
         return '';
     }
 }
 function ObteneListaCons($strNumDesde, $strNumDesdeAnio, $strNumHasta, $strNumHastaAnio, $datAltaDesde, $datAltaHasta, $strProductos2, $optEstado, $strOficina, $strDepartamento)
 {
     require_once '../general/' . $_SESSION['mapeo'];
     require_once '../general/funcionesGenerales.php';
     require_once '../CAD/clsCADUsu.php';
     $clsCADUsu = new clsCADUsu();
     //extraigo la oficina y departamento del usuario
     $OficinaDepartamento = $clsCADUsu->ObtieneOficinaDep_usuario($_SESSION['usuario']);
     $codOficina = explode('.', $OficinaDepartamento['strOficina']);
     $codOficina = $codOficina[0];
     $codDepartamento = $OficinaDepartamento['lngDepartamento'];
     $permiso = $clsCADUsu->ObtienePermisoUsuario($_SESSION['strUsuario']);
     //	logger('traza','clsCAD.php-', 'clsCADRecl->ObtieneLista('.$strUsuario.','.$strNumDesde.','.$strNumDesdeAnio.','.$strNumHasta.','.$strNumHastaAnio.','.$datAltaDesde.','.$datAltaHasta.','.$strProductos2.','.$optEstado.')');
     $strSQL = "SELECT N.lngId as Numero, N.strPropuestaMejora,DATE_FORMAT(N.datFechaAlta,'%d/%m/%Y') AS datFechaAlta, Left(N.strReqIncumplido, 50) as ReqIncumplido, \r\n                D.strDescripcion as Departamento, N.lngAccion ,N.strContrato\r\n                from tbpropmej N,tbdepartamentos D\r\n                Where N.lngIdDepartamento = D.lngId AND N.lngStatus=1";
     //veo si tiene permiso 2 o no
     if ($permiso !== '2') {
         //por defecto filtro por oficina y departamento del usuario
         if ((!isset($datAltaDesde) || $datAltaDesde === '') && (!isset($datAltaHasta) || $datAltaHasta === '') && (!isset($strOficina) || $strOficina === '') && (!isset($strDepartamento) || $strDepartamento === '') && (!isset($strProductos2) || $strProductos2 === '')) {
             $strSQL = $strSQL . " AND (N.strCodigoOficina = '{$codOficina}' OR N.lngIdDepartamento = {$codDepartamento})";
         }
     }
     //si no hubiese datos de fechas se filtra por los del año actual
     if ($datAltaDesde == '' && $datAltaHasta == '') {
         date_default_timezone_set('Europe/Madrid');
         $datAltaDesde = '01/01/' . date("Y");
     }
     //veo si hay datos en las fechas y añado los filtros
     if ($datAltaDesde != '') {
         $strSQL = $strSQL . " AND N.datFechaAlta >= '" . fecha_to_DATETIME($datAltaDesde) . "'";
     }
     if ($datAltaHasta != '') {
         $strSQL = $strSQL . " AND N.datFechaAlta <= '" . fecha_to_DATETIME_F($datAltaHasta) . "'";
     }
     if ($strOficina != '' && $strDepartamento != '') {
         $strSQL = $strSQL . " AND (N.strCodigoOficina = '" . $strOficina . "' OR N.lngIdDepartamento = " . $strDepartamento . ")";
     } else {
         if ($strOficina != '') {
             $strSQL = $strSQL . " AND N.strCodigoOficina = '" . $strOficina . "'";
         } else {
             if ($strDepartamento != '') {
                 $strSQL = $strSQL . " AND N.lngIdDepartamento = " . $strDepartamento . "";
             }
         }
     }
     if ($optEstado == 1) {
         //Pdte. Analisis
         $strSQL = $strSQL . " AND ISNULL(N.datFechaAceptadoResponsable) ";
     } else {
         if ($optEstado == 2) {
             //Pdte. cierre
             $strSQL = $strSQL . " AND NOT ISNULL(N.datFechaAceptadoResponsable) AND N.lngCerrado = 0 ";
         } else {
             if ($optEstado == 3) {
                 //Cierre
                 $strSQL = $strSQL . " AND N.lngCerrado = 1 ";
             }
         }
     }
     if ($strProductos2 != '') {
         $strSQL = $strSQL . " AND N.strContrato = '" . $strProductos2 . "' ";
     }
     $strSQL = $strSQL . " ORDER BY N.datFechaAlta DESC, N.strPropuestaMejora DESC";
     //para el filtro de Nº Reclamaciones como por consulta es complicado de resolver lo hago al guardar los datos
     //hago la consulta que llevo en este momento (con o sin fechas)
     $db = new Db();
     $db->conectar($_SESSION['mapeo']);
     $stmt = $db->ejecutar($strSQL);
     $db->desconectar();
     //ahora guardo en un array los datos de la consulta
     //al guardar ahora compruebo si tengo datos en los filtros de reclamacion y antes de guardar compruebo si
     //cumple esos filtros, sino no los guardo, sino hay filtro guardo la consulta tal cual
     if ($stmt) {
         $this->filtrarArray($arcDoc, $stmt, $strNumDesde, $strNumDesdeAnio, $strNumHasta, $strNumHastaAnio);
         //devuelvo el listado
         return $arcDoc;
     } else {
         //no hay datos
         return '';
     }
 }
 function ObtieneOficinaDep_usuario($usuario)
 {
     logger('traza', 'clsCNUsu.php-', "Usuario: " . $_SESSION['strUsuario'] . ', Empresa: ' . $_SESSION['base'] . ', SesionID: ' . session_id() . " clsCNUsu->ObtieneOficinaDep_usuario({$usuario})>");
     require_once '../CAD/clsCADUsu.php';
     $clsCADUsu = new clsCADUsu();
     $clsCADUsu->setStrBD($this->getStrBD());
     return $clsCADUsu->ObtieneOficinaDep_usuario($usuario);
 }