<?php
/****************************************************************************************
 * DEV: CONTRALORÍA DEL ESTADO.
 * MODULO: Reporte de Empleado. Recursos Humanos
 * PROGRAMADORES.________________________________________________________________________
 * | # | NOMBRE.              | CORREO.                              | TELÉFONO.
 * | 1 | María B. Rondón R    | dt.ait.programador3@cgesucre.gob.ve  | 0416-3853790
 * | * |_________________________________________________________________________________
 ****************************************************************************************/
// Esta clase contiene las consultas necesarias para gestionar las solicitud de vacaciones por parte de los funcionarios
require_once RUTA_MODELO.'miscelaneoModelo.php';
class empleadoReporteModelo extends miscelaneoModelo
{
    public function __construct()
    {
        parent::__construct();
    }

    // Método encargado de obtener el empleado asociado a una cuenta de ususario
    public function metUsuario($usuario, $metodo)
    {
        $obtenerUsuario = $this->_db->query(
            "select c.ind_nombre1, c.ind_nombre2, c.ind_apellido1, c.ind_apellido2, b.pk_num_empleado from a018_seguridad_usuario as a, rh_b001_empleado as b, a003_persona as c where a.pk_num_seguridad_usuario='$usuario' and a.fk_rhb001_num_empleado= b.pk_num_empleado and b.fk_a003_num_persona=c.pk_num_persona"
        );
        $obtenerUsuario->setFetchMode(PDO::FETCH_ASSOC);
        if($metodo==1)
            return $obtenerUsuario->fetch();
        else return $obtenerUsuario->fetchAll();
    }

    // Método que permite obtener los datos del empleado
    public function metEmpleado($pkNumEmpleado)
    {
        $empleado = $this->_db->query(
            "select fk_a001_num_organismo, fk_a004_num_dependencia from vl_rh_persona_empleado_datos_laborales where pk_num_empleado=$pkNumEmpleado"
        );
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetch();
    }

    // Método que permite listar los organismos
    public function metListarOrganismo($pk_num_organismo, $metodo)
    {
        if($metodo==1){
            $listadoOrganismo = $this->_db->query(
                "select pk_num_organismo, ind_descripcion_empresa from a001_organismo"
            );
            $listadoOrganismo->setFetchMode(PDO::FETCH_ASSOC);
            return   $listadoOrganismo->fetchAll();
        } else {
            $listadoOrganismo = $this->_db->query(
                "select pk_num_organismo, ind_descripcion_empresa from a001_organismo where pk_num_organismo=$pk_num_organismo"
            );
            $listadoOrganismo->setFetchMode(PDO::FETCH_ASSOC);
            return   $listadoOrganismo->fetch();
        }
    }

    // Método que permite listar las dependencias del organismo seleccionado
    public function metListarDependencia($pkNumOrganismo, $metodo, $pk_num_dependencia)
    {
        if($metodo==1){
            $listarDependencia =  $this->_db->query(
                "SELECT pk_num_dependencia, ind_dependencia FROM a004_dependencia WHERE fk_a001_num_organismo=$pkNumOrganismo ORDER BY ind_dependencia ASC"
            );
            $listarDependencia->setFetchMode(PDO::FETCH_ASSOC);
            return $listarDependencia->fetchAll();
        } else {
            $listarDependencia =  $this->_db->query(
                "SELECT pk_num_dependencia, ind_dependencia FROM a004_dependencia WHERE pk_num_dependencia=$pk_num_dependencia ORDER BY ind_dependencia ASC"
            );
            $listarDependencia->setFetchMode(PDO::FETCH_ASSOC);
            return $listarDependencia->fetch();
        }

    }

    public function metListarSexo()
    {
        $sexo = $this->_db->query("
            SELECT
                a006_miscelaneo_detalle.pk_num_miscelaneo_detalle,
                a006_miscelaneo_detalle.cod_detalle,
                a006_miscelaneo_detalle.ind_nombre_detalle,
                a006_miscelaneo_detalle.num_estatus,
                a006_miscelaneo_detalle.fk_a005_num_miscelaneo_maestro
           FROM
                a006_miscelaneo_detalle
           WHERE
                a006_miscelaneo_detalle.fk_a005_num_miscelaneo_maestro = 35
           ORDER BY a006_miscelaneo_detalle.ind_nombre_detalle ASC
        ");
        $sexo->setFetchMode(PDO::FETCH_ASSOC);
        return  $sexo->fetchAll();
    }

    public function metListarGradoInstruccion()
    {
        $gradoInstruccion = $this->_db->query("
            SELECT
            a006_miscelaneo_detalle.pk_num_miscelaneo_detalle AS pk_num_miscelaneo_detalle_grado_instruccion,
            a006_miscelaneo_detalle.cod_detalle,
            a006_miscelaneo_detalle.ind_nombre_detalle,
            a006_miscelaneo_detalle.num_estatus,
            a006_miscelaneo_detalle.fk_a005_num_miscelaneo_maestro 
        FROM
            a006_miscelaneo_detalle 
        WHERE
            a006_miscelaneo_detalle.fk_a005_num_miscelaneo_maestro = 42
        ");
        $gradoInstruccion->setFetchMode(PDO::FETCH_ASSOC);
        return  $gradoInstruccion->fetchAll();
    }

    // Método que permite listar lo empleados de acuerdo a la busqueda
    //public function metListadoEmpleados($pkNumOrganismo, $pkNumDependencia, $tipoNomina, $tipoTrabajador,  $edo_reg, $sit_trab, $fechaInicio, $fechaFin, $buscar, $centroCosto, $sexo, $gradoInstruccion, $serieOcupacional)
    public function metListadoEmpleados($pkNumOrganismo, $pkNumDependencia, $tipoNomina, $tipoTrabajador, $fechaInicio, $fechaFin, $buscar, $centroCosto, $sexo, $gradoInstruccion, $serieOcupacional, $profesion)
    {
        if ($pkNumOrganismo!='') {
            $filtro = " AND a.fk_a001_num_organismo=$pkNumOrganismo";
        }
        if ($pkNumDependencia!='') {
            $filtro .= " AND a.fk_a004_num_dependencia IN ($pkNumDependencia)";
        }
        if( $tipoNomina != ''){
            $filtro .= " AND a.fk_nmb001_num_tipo_nomina IN ($tipoNomina)";
        }
        if($tipoTrabajador!=''){
            $filtro .= " AND a.fk_a006_num_miscelaneo_detalle_tipotrabajador IN ($tipoTrabajador)";
        }
        if($buscar!=''){
            $filtro .= " AND a.pk_num_empleado IN ($buscar)";
        }
        if(($fechaInicio!='')&&($fechaFin!='')){
            $filtro .= " AND a.fec_ingreso between '$fechaInicio' AND '$fechaFin'";
        }
        /*if($sit_trab!=''){
            $filtro .= " AND a.ind_estatus=$sit_trab";
        }
        if($edo_reg!=''){
            $filtro .= " AND d.ind_estatus_persona=$edo_reg";
        }*/
        if($centroCosto!=''){
            $filtro .= " AND a.fk_a023_num_centro_costo IN ($centroCosto)";
        }
        if ($sexo!='') {
            $filtro .= " AND d.fk_a006_num_miscelaneo_detalle_sexo=$sexo";
        }
        if ($gradoInstruccion!='') {
            $filtro .= " AND a.num_grado_instruccion_ultimo IN ($gradoInstruccion)";
        }
        if ($serieOcupacional!='') {
            $filtro .= " AND rh_c010.pk_num_serie IN ($serieOcupacional)";
        }
        if ($profesion!='') {
            $filtro .= " AND rh_c057.pk_num_profesion IN ($profesion)";
        }
        $empleado = $this->_db->query(
            "SELECT
                @nom:=a.fk_nmb001_num_tipo_nomina,
                (CASE 
                        WHEN @nom = 1 THEN 
                        if(sep.num_sueldo_promedio>0,
                            CONCAT(
                                REPLACE ( FORMAT( FLOOR( sep.num_sueldo_promedio ), 0 ), ',', '.' ),
                                ',',
                                SUBSTRING_INDEX( FORMAT( sep.num_sueldo_promedio, 2 ), '.', - 1 ) 
                            ),
                            CONCAT(
                                REPLACE ( FORMAT( FLOOR( se.num_sueldo_promedio ), 0 ), ',', '.' ),
                                ',',
                                SUBSTRING_INDEX( FORMAT( se.num_sueldo_promedio, 2 ), '.', - 1 ) 
                            )
                        )
                        WHEN @nom = 2 THEN CONCAT(REPLACE ( FORMAT( FLOOR( se.num_sueldo_promedio ), 0 ), ',', '.' ),',',SUBSTRING_INDEX( FORMAT( se.num_sueldo_promedio, 2 ), '.', - 1 ))
                        WHEN @nom = 4 THEN CONCAT(REPLACE (FORMAT( FLOOR( a.num_sueldo ), 0 ), ',', '.' ),',',SUBSTRING_INDEX(FORMAT( a.num_sueldo, 2 ), '.', - 1 ))
                        WHEN @nom = 5 THEN CONCAT(REPLACE (FORMAT( FLOOR( a.num_sueldo ), 0 ), ',', '.' ),',',SUBSTRING_INDEX(FORMAT( a.num_sueldo, 2 ), '.', - 1 ))
                        WHEN @nom = 6 THEN CONCAT(REPLACE (FORMAT( FLOOR( sep.num_sueldo_promedio ), 0 ), ',', '.' ),',',SUBSTRING_INDEX(FORMAT( sep.num_sueldo_promedio, 2 ), '.', - 1 ))
                END) AS num_sueldo_basico,
                a.pk_num_persona,
                a.pk_num_empleado,
                FORMAT(a.ind_cedula_documento,0,'de_DE') AS ind_cedula_documento,
                a.ind_documento_fiscal,
                a.ind_nombre1,
                a.ind_nombre2,
                a.ind_apellido1,
                a.ind_apellido2,
                d.fk_a006_num_miscelaneo_detalle_sexo,
                a006_sexo.ind_nombre_detalle AS ind_sexo,
                b.ind_dependencia,
                c.ind_descripcion_cargo,
                DATE_FORMAT(a.fec_ingreso, '%d-%m-%Y') AS fec_ingreso,
                a.ind_resolucion_ingreso,
                a.fk_rhc063_num_puestos_cargo,
                a.fk_rhc063_num_puestos_cargotmp,
                a.fk_rhb007_num_horario,
                a.fk_a006_num_miscelaneo_detalle_paso,
                a.fk_a001_num_organismo,
                a.fk_a004_num_dependencia,
                a.fk_a004_num_dependencia_tmp,
                a.fk_a023_num_centro_costo,
                a.fk_nmb001_num_tipo_nomina,
                a.fk_a006_num_miscelaneo_detalle_tipopago,
                a.fk_a006_num_miscelaneo_detalle_tipotrabajador,
                a.fk_a006_num_miscelaneo_detalle_grupoocupacional,
                a.fk_rhc010_num_serie,
                a.fk_a006_num_miscelaneo_detalle_categoria,
                a.categoria_cargo,
                a.ind_estatus,
                DATE_FORMAT(a.fec_ingreso_anterior, '%d-%m-%Y') AS fec_ingreso_anterior,
                DATE_FORMAT(a.fec_egreso, '%d-%m-%Y') AS fec_egreso,
                a.ind_resolucion_egreso,
                a.num_sueldo_ant,
                FORMAT( a.num_sueldo, 2 ) AS num_sueldo,
                a.num_sueldo_bsf,
                a.num_grado_instruccion,
                a.num_grado_instruccion_ultimo,
                a006_gradoinstruccion.ind_nombre_detalle AS ind_grado_instruccion,
                d.ind_email,
                DATE_FORMAT(a003.fec_nacimiento, '%d-%m-%Y') AS fec_nacimiento,
                a003.ind_lugar_nacimiento,
                d.fk_a006_num_miscelaneo_detalle_edocivil,
                a006_edocivil.ind_nombre_detalle AS ind_estado_civil,
                a006_gruposanguineo.ind_nombre_detalle AS ind_grupo_sanguineo,
                GROUP_CONCAT( ' ', a007.ind_telefono ) AS ind_telefono,
                a036.ind_direccion,
                a023.ind_descripcion_centro_costo,
                rhc063.ind_descripcion_cargo,
                a006_grupoocupacional.ind_nombre_detalle AS ind_grupo_ocupacional,
                a006_paso.ind_nombre_detalle AS ind_paso,
                rh_b007.ind_descripcion AS ind_horario,
                rh_c010.ind_nombre_serie,
                nm_b001.ind_nombre_nomina,
                a006_tipopago.ind_nombre_detalle AS ind_tipo_pago,
                rh_c077.txt_observacion_egreso AS ind_observacion_egreso,
                rh_b010.ind_observacion_cese AS ind_observacion_jubilacion,
                FORMAT( rh_c083.num_monto_jubilacion, 2 ) AS num_monto_jubilacion,
                rh_c018.fk_rhc057_num_profesion,
                rh_c057.ind_nombre_profesion,
		rh_c012.ind_cuenta
            FROM
                vl_rh_persona_empleado_datos_laborales AS a
                LEFT JOIN vl_rh_sueldo_empleado AS se ON se.pk_num_empleado = a.pk_num_empleado
	            LEFT JOIN vl_rh_sueldo_empleado_paso AS sep ON sep.pk_num_empleado = a.pk_num_empleado
                LEFT JOIN a004_dependencia AS b ON b.pk_num_dependencia = a.fk_a004_num_dependencia
                LEFT JOIN rh_c063_puestos AS c ON c.pk_num_puestos = a.fk_rhc063_num_puestos_cargo
                LEFT JOIN vl_rh_persona_empleado AS d ON d.pk_num_empleado = a.pk_num_empleado
                LEFT JOIN a006_miscelaneo_detalle AS a006_edocivil ON a006_edocivil.pk_num_miscelaneo_detalle = d.fk_a006_num_miscelaneo_detalle_edocivil
                LEFT JOIN a006_miscelaneo_detalle AS a006_gruposanguineo ON a006_gruposanguineo.pk_num_miscelaneo_detalle = d.fk_a006_num_miscelaneo_det_gruposangre
                LEFT JOIN a006_miscelaneo_detalle AS a006_gradoinstruccion ON a006_gradoinstruccion.pk_num_miscelaneo_detalle = a.num_grado_instruccion_ultimo
                LEFT JOIN a006_miscelaneo_detalle AS a006_grupoocupacional ON a006_grupoocupacional.pk_num_miscelaneo_detalle = a.fk_a006_num_miscelaneo_detalle_grupoocupacional
                LEFT JOIN a006_miscelaneo_detalle AS a006_tipopago ON a006_tipopago.pk_num_miscelaneo_detalle = a.fk_a006_num_miscelaneo_detalle_tipopago
                LEFT JOIN a006_miscelaneo_detalle AS a006_sexo ON a006_sexo.pk_num_miscelaneo_detalle = d.fk_a006_num_miscelaneo_detalle_sexo
                LEFT JOIN a006_miscelaneo_detalle AS a006_paso ON a006_paso.pk_num_miscelaneo_detalle = a.fk_a006_num_miscelaneo_detalle_paso
                LEFT JOIN a007_persona_telefono AS a007 ON a007.fk_a003_num_persona = a.pk_num_persona
                LEFT JOIN a003_persona AS a003 ON a003.pk_num_persona = a.pk_num_persona
                LEFT JOIN a036_persona_direccion AS a036 ON a036.fk_a003_num_persona = a.pk_num_persona
                LEFT JOIN rh_c063_puestos AS rhc063 ON rhc063.pk_num_puestos = a.fk_rhc063_num_puestos_cargo
                LEFT JOIN a023_centro_costo AS a023 ON a023.pk_num_centro_costo = a.fk_a023_num_centro_costo
                LEFT JOIN rh_b007_horario_laboral AS rh_b007 ON rh_b007.pk_num_horario = a.fk_rhb007_num_horario
                LEFT JOIN rh_c010_serie AS rh_c010 ON rh_c010.pk_num_serie = a.fk_rhc010_num_serie
                LEFT JOIN nm_b001_tipo_nomina AS nm_b001 ON nm_b001.pk_num_tipo_nomina = a.fk_nmb001_num_tipo_nomina
                LEFT JOIN  rh_c077_empleado_cese_reingreso AS rh_c077 ON rh_c077.fk_rhb001_num_empleado = a.pk_num_empleado
                LEFT JOIN  rh_b010_jubilacion AS rh_b010 ON rh_b010.fk_rhb001_num_empleado = a.pk_num_empleado
                LEFT JOIN rh_c083_montos_jubilacion AS rh_c083 ON rh_c083.fk_rhb010_num_jubilacion = rh_b010.pk_num_jubilacion
                LEFT JOIN rh_c018_empleado_instruccion AS rh_c018 ON rh_c018.fk_rhb001_num_empleado = a.pk_num_empleado
                LEFT JOIN rh_c057_profesiones AS rh_c057 ON rh_c057.pk_num_profesion = rh_c018.fk_rhc057_num_profesion
		LEFT JOIN rh_c012_empleado_banco AS rh_c012 ON rh_c012.fk_rhb001_num_empleado = a.pk_num_empleado
                WHERE 1 $filtro
                GROUP BY a.fk_a004_num_dependencia, a.ind_cedula_documento"
        );
        //var_dump($empleado);
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetchAll();
    }

    // Método que permite listar lo empleados de acuerdo a la busqueda
    public function metListadoEmpleados2($pkNumOrganismo, $pkNumDependencia, $edo_reg, $sit_trab)
    {
        if ($pkNumOrganismo!='') {
            $filtro = " and o.fk_a001_num_organismo=$pkNumOrganismo";
        }
        if ($pkNumDependencia!='') {
            $filtro .= " and o.fk_a004_num_dependencia=$pkNumDependencia";
        }

        if($sit_trab!=''){
            $filtro .= " and e.num_estatus=$sit_trab";
        }

        if($edo_reg!=''){
            $filtro .= " and p.num_estatus=$edo_reg";
        }        

        $empleado = $this->_db->query(
            "
            SELECT
                p.pk_num_persona,
                p.ind_cedula_documento,
                p.ind_nombre1,
                p.ind_nombre2,
                p.ind_apellido1,
                p.ind_apellido2,
                pl.ind_descripcion_cargo,
                pl.txt_descripcion_gen,
                a004_dependencia.ind_codinterno,
                a004_dependencia.ind_dependencia,
                a036_persona_direccion.ind_direccion,
                a036_persona_direccion.pk_num_direccion_persona,
                o.fk_a001_num_organismo,e.num_estatus,GROUP_CONCAT(a007_persona_telefono.ind_telefono) as ind_telefono
            FROM
                rh_b001_empleado AS e
            INNER JOIN a003_persona AS p ON e.fk_a003_num_persona = p.pk_num_persona
            INNER JOIN rh_c005_empleado_laboral AS el ON e.pk_num_empleado = el.fk_rhb001_num_empleado
            INNER JOIN rh_c063_puestos AS pl ON el.fk_rhc063_num_puestos_cargo = pl.pk_num_puestos
            INNER JOIN rh_c076_empleado_organizacion AS o ON e.pk_num_empleado = o.fk_rhb001_num_empleado
            INNER JOIN a004_dependencia ON a004_dependencia.pk_num_dependencia = o.fk_a004_num_dependencia
            INNER JOIN a036_persona_direccion ON a036_persona_direccion.fk_a003_num_persona = p.pk_num_persona
            INNER JOIN a007_persona_telefono ON a007_persona_telefono.fk_a003_num_persona = p.pk_num_persona
            WHERE 1
             $filtro
            AND (
                pl.ind_descripcion_cargo LIKE '%AUDITOR%'
                OR pl.ind_descripcion_cargo LIKE '%ABOGADO%'
            )
            GROUP BY p.ind_cedula_documento
            ORDER BY o.fk_a004_num_dependencia


        "
        );
        //var_dump($empleado);
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetchAll();
    }    

    public function metEmpleadoDireccion($persona)
    {
        $empleado = $this->_db->query(
            "
            select * from vl_rh_persona_empleado_direccion where pk_num_persona=$persona

        "
        );
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetch();
    }
    
    public function metListadoEmpleadosDependencia($pkNumOrganismo, $pkNumDependencia, $tipoNomina, $tipoTrabajador,  $edo_reg, $sit_trab, $fechaInicio, $fechaFin, $buscar, $centroCosto, $sexo, $gradoInstruccion, $serieOcupacional, $profesion)
    {
        if ($pkNumOrganismo!='') {
            $filtro = " AND a.fk_a001_num_organismo=$pkNumOrganismo";
        }
        if ($pkNumDependencia!='') {
            $filtro .= " AND a.fk_a004_num_dependencia IN ($pkNumDependencia)";
        }
        if($tipoNomina!=''){
            $filtro .= " AND a.fk_nmb001_num_tipo_nomina IN ($tipoNomina)";
        }
        if($tipoTrabajador!=''){
            $filtro .= " AND a.fk_a006_num_miscelaneo_detalle_tipotrabajador IN ($tipoTrabajador)";
        }
        if($buscar!=''){
            $filtro .= " AND a.pk_num_empleado IN ($buscar)";
        }
        if(($fechaInicio!='')&&($fechaFin!='')){
            $filtro .= " AND a.fec_ingreso between '$fechaInicio' AND '$fechaFin'";
        }
        if($sit_trab != ''){
            $filtro .= " AND a.ind_estatus=$sit_trab";
        }
        if($centroCosto != ''){
            $filtro .= " AND a.fk_a023_num_centro_costo IN ($centroCosto)";
        }
        if ($sexo != '') {
            $filtro .= " AND d.fk_a006_num_miscelaneo_detalle_sexo=$sexo";
        }
        if ($gradoInstruccion != '') {
            $filtro .= " AND a.num_grado_instruccion_ultimo IN ($gradoInstruccion)";
        }
        if ($serieOcupacional != '') {
            $filtro .= " AND e.pk_num_serie IN ($serieOcupacional)";
        }
        if ($profesion != '') {
            $filtro .= " AND g.pk_num_profesion IN ($profesion)";
        }

        $empleado = $this->_db->query(
            "SELECT
			COUNT(*) as empleados
		FROM
			vl_rh_persona_empleado_datos_laborales AS a,
			a004_dependencia AS b,
			rh_c063_puestos AS c,
			vl_rh_persona_empleado AS d,
            rh_c010_serie AS e
		WHERE
			a.fk_a004_num_dependencia     = b.pk_num_dependencia
		AND a.fk_rhc063_num_puestos_cargo = c.pk_num_puestos
		AND a.pk_num_empleado             = d.pk_num_empleado
        AND e.pk_num_serie                = a.fk_rhc010_num_serie
       
		$filtro"
        );
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetch();
    }

    public function metListadoEmpleadosMasculinos($pkNumOrganismo, $pkNumDependencia, $tipoNomina, $tipoTrabajador,  $edo_reg, $sit_trab, $fechaInicio, $fechaFin, $buscar, $centroCosto, $gradoInstruccion, $serieOcupacional, $profesion)
    {
        if ($pkNumOrganismo!='') {
            $filtro = " and a.fk_a001_num_organismo=$pkNumOrganismo";
        }
        if ($pkNumDependencia!='') {
            $filtro .= " and a.fk_a004_num_dependencia IN ($pkNumDependencia)";
        }
        if($tipoNomina!=''){
            $filtro .= " and a.fk_nmb001_num_tipo_nomina IN ($tipoNomina)";
        }
        if($tipoTrabajador!=''){
            $filtro .= " and a.fk_a006_num_miscelaneo_detalle_tipotrabajador IN ($tipoTrabajador)";
        }
        if($buscar!=''){
            $filtro .= " and a.pk_num_empleado IN ($buscar)";
        }
        if(($fechaInicio!='')&&($fechaFin!='')){
            $filtro .= " and a.fec_ingreso between '$fechaInicio' and '$fechaFin'";
        }
        if($sit_trab!=''){
            $filtro .= " and a.ind_estatus=$sit_trab";
        }
        if($centroCosto!=''){
            $filtro .= " and a.fk_a023_num_centro_costo IN ($centroCosto)";
        }
        if ($gradoInstruccion!='') {
            $filtro .= " AND a.num_grado_instruccion_ultimo IN ($gradoInstruccion)";
        }
        if ($serieOcupacional!='') {
            $filtro .= " AND e.pk_num_serie IN ($serieOcupacional)";
        }
        if ($profesion!='') {
            $filtro .= " AND g.pk_num_profesion IN ($profesion)";
        }

        $empleado = $this->_db->query("   
            SELECT
			     COUNT(*) as masculinos
    		FROM
    			vl_rh_persona_empleado_datos_laborales AS a,
    			a004_dependencia AS b,
    			rh_c063_puestos AS c,
    			vl_rh_persona_empleado AS d,
                rh_c010_serie AS e,
                rh_c018_empleado_instruccion AS f,
                rh_c057_profesiones AS g
    		WHERE
    			a.fk_a004_num_dependencia = b.pk_num_dependencia
    		AND a.fk_rhc063_num_puestos_cargo = c.pk_num_puestos
    		AND a.pk_num_empleado = d.pk_num_empleado
            AND e.pk_num_serie = a.fk_rhc010_num_serie
            AND f.fk_rhb001_num_empleado = a.pk_num_empleado
            AND g.pk_num_profesion = f.fk_rhc057_num_profesion
    		$filtro and d.fk_a006_num_miscelaneo_detalle_sexo=248
        ");
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetch();//*/
        //return $pkNumDependencia;
    }

    public function metListadoEmpleadosFemeninos($pkNumOrganismo, $pkNumDependencia, $tipoNomina, $tipoTrabajador,  $edo_reg, $sit_trab, $fechaInicio, $fechaFin, $buscar, $centroCosto, $gradoInstruccion, $serieOcupacional, $profesion)
    {
        if ($pkNumOrganismo!='') {
            $filtro = " and a.fk_a001_num_organismo=$pkNumOrganismo";
        }
        if ($pkNumDependencia!='') {
            $filtro .= " and a.fk_a004_num_dependencia IN ($pkNumDependencia)";
        }
        if($tipoNomina!=''){
            $filtro .= " and a.fk_nmb001_num_tipo_nomina IN ($tipoNomina)";
        }
        if ($gradoInstruccion!='') {
            $filtro .= " AND a.num_grado_instruccion_ultimo IN ($gradoInstruccion)";
        }
        if($tipoTrabajador!=''){
            $filtro .= " and a.fk_a006_num_miscelaneo_detalle_tipotrabajador IN ($tipoTrabajador)";
        }
        if($buscar!=''){
            $filtro .= " and a.pk_num_empleado IN ($buscar)";
        }
        if(($fechaInicio!='')&&($fechaFin!='')){
            $filtro .= " and a.fec_ingreso between '$fechaInicio' and '$fechaFin'";
        }
        if($sit_trab!=''){
            $filtro .= " and a.ind_estatus=$sit_trab";
        }
        if($centroCosto!=''){
            $filtro .= " and a.fk_a023_num_centro_costo IN ($centroCosto)";
        }
        if ($serieOcupacional!='') {
            $filtro .= " AND e.pk_num_serie IN ($serieOcupacional)";
        }
        if ($profesion!='') {
            $filtro .= " AND g.pk_num_profesion IN ($profesion)";
        }

        $empleado = $this->_db->query("
            SELECT
                 COUNT(*) as femeninos
            FROM
                vl_rh_persona_empleado_datos_laborales AS a,
                a004_dependencia AS b,
                rh_c063_puestos AS c,
                vl_rh_persona_empleado AS d,
                rh_c010_serie AS e,
                rh_c018_empleado_instruccion AS f,
                rh_c057_profesiones AS g
            WHERE
                a.fk_a004_num_dependencia = b.pk_num_dependencia
            AND a.fk_rhc063_num_puestos_cargo = c.pk_num_puestos
            AND a.pk_num_empleado = d.pk_num_empleado
            AND e.pk_num_serie = a.fk_rhc010_num_serie
            AND f.fk_rhb001_num_empleado = a.pk_num_empleado
            AND g.pk_num_profesion = f.fk_rhc057_num_profesion
            $filtro and d.fk_a006_num_miscelaneo_detalle_sexo=249
        ");
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return  $empleado->fetch();
    }

    // Método que permite listar los tipos de nóminas
    public function metListarNomina()
    {
        $nomina =  $this->_db->query(
            "SELECT pk_num_tipo_nomina, ind_nombre_nomina FROM nm_b001_tipo_nomina ORDER BY ind_nombre_nomina"
        );
        $nomina->setFetchMode(PDO::FETCH_ASSOC);
        return $nomina->fetchAll();
    }

    public function metConsultarEmpleados()
    {
        $empleado =  $this->_db->query(
            "select pk_num_empleado, ind_nombre1, ind_nombre2, ind_apellido1, ind_apellido2 from vl_rh_persona_empleado"
        );
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return $empleado->fetchAll();
    }

    public function metConsultarEmpleadosActivo()
    {
        $empleado =  $this->_db->query(
            "select pk_num_empleado, ind_nombre1, ind_nombre2, ind_apellido1, ind_apellido2 from vl_rh_persona_empleado WHERE ind_estatus_empleado = 1"
        );
        $empleado->setFetchMode(PDO::FETCH_ASSOC);
        return $empleado->fetchAll();
    }

    // Método que permite listar los centros de costos
    public function metListarCentroCosto()
    {
        $centroCosto =  $this->_db->query(
            "SELECT pk_num_centro_costo, ind_descripcion_centro_costo FROM a023_centro_costo ORDER BY ind_descripcion_centro_costo"
        );
        $centroCosto->setFetchMode(PDO::FETCH_ASSOC);
        return $centroCosto->fetchAll();
    }

    /**
     * [metListarSerieOcupacional lista las series ocupacionales]
     * @return [array] [con el pk_num_serie, ind_nombre_serie, *]
     */
    public function metListarSerieOcupacional()
    {
        $series =  $this->_db->query(
            "SELECT * FROM rh_c010_serie"
        );
        $series->setFetchMode(PDO::FETCH_ASSOC);
        return $series->fetchAll();
    }

    /**
     * [metListarProfesiones lista las diferentes profesiones registradas en el sistema]
     * @return [array] [pk_num_profesion, ind_nombre_profesion, *]
     */
    public function metListarProfesiones()
    {
        $profesiones =  $this->_db->query(
            "SELECT * FROM rh_c057_profesiones ORDER BY ind_nombre_profesion ASC"
        );
        $profesiones->setFetchMode(PDO::FETCH_ASSOC);
        return $profesiones->fetchAll();
    }
}// fin de la clase
