<?php
/************************************************************************************************************
 * DEV: CONTRALORIA DEL ESTADO.
 * MODULO: Logistica
 * PROGRAMADORES.____________________________________________________________________________________________
 * | # | NOMBRE.              | CORREO.                                 | TELEFONO.         | CONTRALORIA
 * | 1 | Fernando Rosillo     | f.rosillo@contraloriamonagas.gob.ve     | 0414-8807980      | MONAGAS
 * | 2 |
 * |_________________________________________________________________________________________________________
 * **********************************************************************************************************/
class reportesModelo extends Modelo
{
    private $atIdUsuario;
    private $atIdEmpleado;
    public function __construct()
    {
        parent::__construct();
        $this->atIdUsuario = Session::metObtener('idUsuario');
        $this->atIdEmpleado = Session::metObtener('idEmpleado');
    }

    public function metLogoContraloria()
    {
        $miscelaneoDetalle = $this->_db->query("
            SELECT
              *
            FROM
              a001_organismo
            LIMIT 0, 1
        ");
        $miscelaneoDetalle->setFetchMode(PDO::FETCH_ASSOC);
        $firma = $miscelaneoDetalle->fetch();
        return $firma['ind_logo'];
    }

    public function metMostrarPlan($idPlan){
        $mostrarPlan = $this->_db->query("
              SELECT
                po_b001_poa.*,
                  case po_b001_poa.ind_estado
                      when 'PR' then 'Preparado'
                      when 'RV' then 'Revisado'
                      when 'AP' then 'Aprobado'
                      when 'AN' then 'Anulado'
                      when 'RP' then 'Reprogramado'
                    end as estatus,
                    a004_dependencia.ind_dependencia,
                    po_b005_plan_estrategico.ind_periodo
              FROM
                po_b001_poa 
                INNER JOIN a004_dependencia ON po_b001_poa.fk_a004_num_dependencia = a004_dependencia.pk_num_dependencia
                INNER JOIN po_b005_plan_estrategico ON po_b001_poa.fk_pob005_num_plan_estrategico = po_b005_plan_estrategico.pk_num_plan_estrategico
              WHERE
                pk_num_poa='$idPlan' 
        ");
        $mostrarPlan->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarPlan->fetch();
    }

    public function metProgreso($data) {
        $fec_anio = $data['cbox_yearplan'];
        $dependencia = !empty($data['cbox_dependencia']) ? "poa.fk_a004_num_dependencia = $data[cbox_dependencia] AND" : '';

        $mostrarPlan = $this->_db->query("
        SELECT 
          poa.fk_a004_num_dependencia,
          SUM(ind_trimestre_planificado1) AS total_trimestre_planificado1,
            SUM(ind_trimestre_planificado2) AS total_trimestre_planificado2,
            SUM(ind_trimestre_planificado3) AS total_trimestre_planificado3,
            SUM(ind_trimestre_planificado4) AS total_trimestre_planificado4,
            SUM(( ind_trimestre_planificado1 + ind_trimestre_planificado2 + ind_trimestre_planificado3 + ind_trimestre_planificado4 )) as total_planificado,
            SUM((detalle.num_mes1 + detalle.num_mes2 + detalle.num_mes3)) as primer_trimestre_total_ejecutado,
            SUM((detalle.num_mes4 + detalle.num_mes5 + detalle.num_mes6)) as segundo_trimestre_total_ejecutado,
            SUM((detalle.num_mes7 + detalle.num_mes8 + detalle.num_mes9)) as tercer_trimestre_total_ejecutado,
            SUM((detalle.num_mes10 + detalle.num_mes11 + detalle.num_mes12)) as cuarto_trimestre_total_ejecutado,
            SUM((
                detalle.num_mes1 + detalle.num_mes2 + detalle.num_mes3 +
                detalle.num_mes4 + detalle.num_mes5 + detalle.num_mes6 +
                detalle.num_mes7 + detalle.num_mes8 + detalle.num_mes9 +
                detalle.num_mes10 + detalle.num_mes11 + detalle.num_mes12
            )) as total_ejecutado,
            x.fec_anio_real
        FROM po_b002_poa_detalle detalle
        INNER JOIN po_b001_poa poa ON poa.pk_num_poa = detalle.fk_pob001_num_poa
        INNER JOIN po_b004_productos producto ON producto.pk_num_productos = detalle.fk_pob004_num_producto
        INNER JOIN po_b003_actividad actividad ON detalle.fk_pob003_num_actividad = actividad.pk_num_actividad
        INNER JOIN (SELECT a.pk_num_poa, SUBSTRING_INDEX(a.fec_inicio, '-', 1) as fec_anio_real FROM po_b001_poa a) x ON x.pk_num_poa = poa.pk_num_poa
        WHERE $dependencia x.fec_anio_real = '$fec_anio' 
        	AND ( producto.fk_a006_num_miscelaneos_tipo_producto = 5901 OR producto.fk_a006_num_miscelaneos_tipo_producto = 5946 )
        ORDER BY detalle.fk_pob003_num_actividad ASC");

        $mostrarPlan->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarPlan->fetch();
    }

    public function metMostrarPoaDetalle($data){
        $fec_anio = $data['cbox_yearplan'];
        $idDependencia = $data['cbox_dependencia'];
        $where = '';

        if (isset($data['cbox_actividades']) AND ($data['cbox_actividades'] != 0)){
            $actividad = $data['cbox_actividades'];
            $where = " AND detalle.fk_pob003_num_actividad = $actividad";
        }

        $mostrarPlan = $this->_db->query("
        SELECT 
          poa.fk_a004_num_dependencia,
          detalle.pk_num_poa_detalle,
          actividad.cod_actividad as cod_actividad,
          producto.cod_producto as cod_producto,
          detalle.fk_pob003_num_actividad as num_actividad,
          actividad.ind_descripcion as ind_actividad,
          detalle.ind_descripcion as ind_producto,
          producto.fk_a006_num_miscelaneos_tipo_producto as tipo,
          ind_trimestre_planificado1,
            ind_trimestre_planificado2,
            ind_trimestre_planificado3,
            ind_trimestre_planificado4,
            (
                ind_trimestre_planificado1 + ind_trimestre_planificado2 + 
                ind_trimestre_planificado3 + ind_trimestre_planificado4
            ) as total_planificado,
            (detalle.num_mes1 + detalle.num_mes2 + detalle.num_mes3) as primer_trimestre_ejecutado,
            (detalle.num_mes4 + detalle.num_mes5 + detalle.num_mes6) as segundo_trimestre_ejecutado,
            (detalle.num_mes7 + detalle.num_mes8 + detalle.num_mes9) as tercer_trimestre_ejecutado,
            (detalle.num_mes10 + detalle.num_mes11 + detalle.num_mes12) as cuarto_trimestre_ejecutado,
            (
                detalle.num_mes1 + detalle.num_mes2 + detalle.num_mes3 +
                detalle.num_mes4 + detalle.num_mes5 + detalle.num_mes6 +
                detalle.num_mes7 + detalle.num_mes8 + detalle.num_mes9 +
                detalle.num_mes10 + detalle.num_mes11 + detalle.num_mes12
            ) as total_ejecutado,
            x.fec_anio_real
        FROM po_b002_poa_detalle detalle
        INNER JOIN po_b001_poa poa ON poa.pk_num_poa = detalle.fk_pob001_num_poa
        INNER JOIN po_b004_productos producto ON producto.pk_num_productos = detalle.fk_pob004_num_producto
        INNER JOIN po_b003_actividad actividad ON detalle.fk_pob003_num_actividad = actividad.pk_num_actividad
        INNER JOIN (SELECT a.pk_num_poa, SUBSTRING_INDEX(a.fec_inicio, '-', 1) as fec_anio_real FROM po_b001_poa a) x ON x.pk_num_poa = poa.pk_num_poa
        WHERE poa.fk_a004_num_dependencia = '$idDependencia' AND x.fec_anio_real = '$fec_anio' $where
        ORDER BY detalle.fk_pob003_num_actividad ASC
      ");
        $mostrarPlan->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarPlan->fetchAll();
    }

    function metComboBoxYears(){
        $arrYear=array(); $yearActual = date('Y');
        $result = $this->_db->query("SELECT MIN(fec_anio) AS fecha FROM po_b001_poa LIMIT 1");
        $result->setFetchMode(PDO::FETCH_ASSOC);
        $rcset = $result->fetch();
        if($rcset['fecha']){
            $arrfecha=explode('-',$rcset['fecha']);
            $yearInicial=$arrfecha[0];
        }else{
            $yearInicial=date('Y');
        }
        for($year = $yearInicial; $year<=$yearActual; $year++){
            $arrYear[]=$year;
        }
        if(COUNT($arrYear)==0){//Entra cuando la fecha del server es menor a la fecha actual.
            $arrYear[]='Error: la fecha('.$yearActual.') del server no es válida';
        }
        $rcset=null; return $arrYear;
    }

    function metComboBoxDep(){
        $mostrarDep = $this->_db->query("
              SELECT 
                pk_num_dependencia as id_dependencia,
                ind_dependencia as nombre_dependencia
              FROM a004_dependencia 
              WHERE (ind_codpadre = 8 OR ind_codpadre = 11 OR ind_codpadre = '') AND pk_num_dependencia <> 8
    ");
        $mostrarDep->setFetchMode(PDO::FETCH_ASSOC);

        return $mostrarDep->fetchAll();
    }

    function metBuscaActividades($fec_anio, $idDependencia){
        $mostrarDep = $this->_db->query("
      SELECT 
        DISTINCT detalle.fk_pob003_num_actividad as num_actividad, 
          CONCAT(actividad.cod_actividad,' - ',actividad.ind_descripcion) as descripcion_actividad
      FROM po_b002_poa_detalle detalle
      INNER JOIN po_b001_poa poa ON poa.pk_num_poa = detalle.fk_pob001_num_poa
      INNER JOIN po_b003_actividad actividad ON actividad.pk_num_actividad = detalle.fk_pob003_num_actividad
      INNER JOIN (SELECT a.pk_num_poa, SUBSTRING_INDEX(a.fec_inicio, '-', 1) as fec_anio_real FROM po_b001_poa a) x ON x.pk_num_poa = poa.pk_num_poa
      WHERE x.fec_anio_real = '$fec_anio' AND poa.fk_a004_num_dependencia = $idDependencia
      ORDER BY actividad.cod_actividad ASC
    ");
        $mostrarDep->setFetchMode(PDO::FETCH_ASSOC);

        return $mostrarDep->fetchAll();
    }

}

?>