<?php

/**
 * Descripción del Modelo de Datos PlanesOperacionesSQL
 *
 * Consultas SQL para el Modelo de Datos PlanesOperaciones
 *
 * Licenciado bajo la Licencia Apache, Versión 2.0;
 * Usted no puede usar este archivo excepto en conformidad con la Licencia.
 * Usted puede obtener una copia de la Licencia en:
 *      http://www.php.net/license/3_01.txt. 
 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software
 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
 *
 * @package    Modelos\Datos\Planeador\PlanesOperaciones
 * @author     RONALD ANDRES FABRA JIMENEZ <rfabra@ccsm.org.co>
 * @author     SICAM 20171025 <sicam32@ccsm.org.co>
 * @copyright  2017 Cámara de Comercio de Santa Marta para el Magdalena
 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
 * @version    201711111116
 * @link       http://sicam.ccsm.org.co/docs/modelos/sql/PlanesOperacionesSQL
 */
 
class PlanesOperacionesSQL extends ModeloDatos {
    /**
     * Consulta SQL que permite SELECCIONAR los datos básicos y sus datos relacionados
     */
    const DATOS_COMPLETOS = <<<sql
    SELECT 
        PlanesOperaciones.*
    FROM PlanesOperaciones
    
        
sql;
    /**
     * Consulta SQL  que permite SELECIONAR con los datos básicos de un registro.
     */
    const DATOS_BASICOS = <<<sql
   SELECT
    PlanesOperaciones.*
    ,PlanesOperacionesClases.claseOperacionCODIGO
    , PlanesOperacionesClases.claseOperacionTITULO
    , PlanesProgramas.programaCODIGO
    , PlanesProgramas.programaTITULO
    , PlanesProgramas.programaJUSTIFICACION
    , PlanesAcciones.accionCODIGO
    , PlanesAcciones.accionTITULO
    , PlanesAcciones.accionJUSTIFICACION
    , CamaraCargos.cargoTITULO
    , CamaraFuncionesLey.*
    , PlanesOperacionesEstados.estadoOperacionCODIGO
    , PlanesOperacionesEstados.estadoOperacionTITULO
    , PlanesOperacionesTipos.tipoOperacionCODIGO
    , PlanesOperacionesTipos.tipoOperacionTITULO
    , PlanesOperacionesClases.claseOperacionCODIGO
    , PlanesOperacionesClases.claseOperacionTITULO
    , PlanesActividades.actividadCODIGO
    , PlanesActividades.actividadTITULO
    , Rubros.rubroCODIGO
    , Rubros.rubroTITULO
    , CentrosCostos.centroCostosCODIGO
    , CentrosCostos.centroCostosTITULO
    , TiposPlanes.tipoPlanTITULO
    , TiposGastos.tipoGastoTITULO
    , PlanesOperacionesPredefinidas.operacionPredefinidaTITULO
    , PlanesOperacionesPredefinidas.operacionPredefinidaCODIGO
    , CamaraColaboradores.*
    , Prioridades.prioridadTITULO
    FROM
        PlanesOperaciones
        INNER JOIN PlanesOperacionesEstados 
            ON (PlanesOperaciones.estadoOperacionID = PlanesOperacionesEstados.estadoOperacionID)
        INNER JOIN PlanesOperacionesTipos 
            ON (PlanesOperaciones.tipoOperacionID = PlanesOperacionesTipos.tipoOperacionID)
        LEFT JOIN PlanesOperacionesClases 
            ON (PlanesOperaciones.operacionClaseID = PlanesOperacionesClases.claseOperacionID)
        INNER JOIN PlanesActividades 
            ON (PlanesOperaciones.actividadID = PlanesActividades.actividadID)
        INNER JOIN PlanesAcciones
            ON (PlanesActividades.accionID = PlanesAcciones.accionID)
        LEFT JOIN Rubros 
            ON (PlanesOperaciones.rubroID = Rubros.rubroID)
        LEFT JOIN CentrosCostos 
            ON (PlanesOperaciones.centroCostoID = CentrosCostos.centroCostosID)
        LEFT JOIN CamaraFuncionesLey 
            ON (PlanesOperaciones.camaraFuncionID = CamaraFuncionesLey.camaraFuncionID)
        LEFT JOIN TiposPlanes 
            ON (PlanesOperaciones.tipoPlanID = TiposPlanes.tipoPlanID)
        LEFT JOIN Prioridades 
            ON (PlanesOperaciones.tipoPlanID = TiposPlanes.tipoPlanID)
        LEFT JOIN TiposGastos 
            ON (PlanesOperaciones.prioridadID = Prioridades.prioridadID)
        LEFT JOIN CamaraCargos
            ON (PlanesAcciones.accionRESPONSABLE = CamaraCargos.cargoID)
        INNER JOIN PlanesProgramas
            ON (PlanesAcciones.programaID = PlanesProgramas.programaID)
        INNER JOIN PlanesOperacionesPredefinidas 
            ON (PlanesOperaciones.operacionPredefinidaID = PlanesOperacionesPredefinidas.operacionPredefinidaID)
        INNER JOIN Usuarios 
            ON ( PlanesOperaciones.PlanOperacionUSRCREADA = Usuarios.usuarioID ) 
        INNER JOIN CamaraColaboradores 
            ON ( Usuarios.colaboradorID = CamaraColaboradores.colaboradorID ) 
        
sql;
    /**
     * Consulta SQL que permite INSERTAR los datos básicos de un nuevo registro.
     */
    const CREAR_REGISTRO = <<<sql
    INSERT INTO nes (
        actividadID,
        tipoOperacionID,
        operacionPredefinidaID,
        planOperacionCODIGO,
        planOperacionDESCRIPCION,
        planOperacionFCHINICIO,
        planOperacionFCHFINAL,
        planOperacionPRESUPUESTADO,
        rubroID,
        centroCostoID,
        operacionClaseID,
        planOperacionUSRCREADA
    )
    VALUES
    (
        ?,?,?,?,?,?,?,?,?,?,?,?
    );         
        
sql;
    /**
     * Consulta SQL que ACTUALIZA los datos básicos de un registro
     */
    const ACTUALIZAR_REGISTRO = <<<sql
    UPDATE
        PlanesOperaciones
    SET
      planOperacionDESCRIPCION = ?,
      planOperacionFCHINICIO = ?,
      planOperacionFCHFINAL = ?,
      planOperacionPRESUPUESTADO = ?,
      planOperacionFCHMODIFICADA = NOW(),
      planOperacionUSRMODIFICA = ?
    WHERE planOperacionID = ?
sql;

    /**
     * Consulta SQL que permite ELIMINAR un registro
     */
    const ELIMINAR_REGISTRO = "DELETE FROM PlanesOperaciones WHERE planOperacionID = ? ";
    /**
     * Consulta SQL que actualiza el ESTADO de un registro.
     */
    const ACTUALIZAR_ESTADO_REVISIONTECNICA = "UPDATE PlanesOperaciones SET planOperacionESTADOREVISIONTECNICA = ?  WHERE planOperacionID = ? ";
    
    /**
     * Consulta SQL que permite SELECCIONAR los datos básicos y sus datos relacionados
     */
    const DATOS_PARA_PLAN = <<<sql
    SELECT 
        PlanesOperaciones.*
        , PlanesOperacionesTipos.tipoOperacionCODIGO
        , PlanesOperacionesTipos.tipoOperacionTITULO
        FROM PlanesOperaciones
        INNER JOIN PlanesOperacionesTipos ON (PlanesOperaciones.tipoOperacionID = PlanesOperacionesTipos.tipoOperacionID)
        
    
        
sql;

/**
     * Consulta SQL que permite SELECCIONAR el total del presupuesto de las operaciones segun el planm y tipo de plan
     */
    const TOTAL_PRESUPUESTO = <<<sql
    SELECT 
        SUM(PlanesOperaciones.planOperacionPRESUPUESTADO) AS TOTAL
    FROM PlanesOperaciones
    INNER JOIN PlanesActividades ON PlanesOperaciones.actividadID = PlanesActividades.actividadID
    INNER JOIN PlanesAcciones ON PlanesActividades.accionID = PlanesAcciones.accionID
    INNER JOIN PlanesProgramas ON PlanesAcciones.programaID = PlanesProgramas.programaID
    
        
sql;

/**
     * Consulta SQL que permite SELECCIONAR el total gastado de las operaciones segun la actividad y tipo de plan
     */
    const TOTAL_GASTADO = <<<sql
    SELECT 
        SUM(PlanesOperacionesAvances.operacionAvanceEJECUTADO) AS totalGASTADO
    FROM PlanesOperaciones
    INNER JOIN PlanesOperacionesAvances ON PlanesOperaciones.planOperacionID = PlanesOperacionesAvances.planOperacionID
    INNER JOIN PlanesActividades ON PlanesOperaciones.actividadID = PlanesActividades.actividadID
    INNER JOIN PlanesAcciones ON PlanesActividades.accionID = PlanesAcciones.accionID
    INNER JOIN PlanesProgramas ON PlanesAcciones.programaID = PlanesProgramas.programaID
    
        
sql;

/**
     * Consulta SQL que permite SELECCIONAR la fecha más temprana de las operaciones segun la actividad y tipo de plan
     */
    const FECHA_TEMPRANA = <<<sql
    SELECT 
        MIN(PlanesOperaciones.planOperacionFCHINICIO) AS FECHAINICIO
    FROM PlanesOperaciones
    INNER JOIN PlanesActividades ON PlanesOperaciones.actividadID = PlanesActividades.actividadID
    INNER JOIN PlanesAcciones ON PlanesActividades.accionID = PlanesAcciones.accionID
    INNER JOIN PlanesProgramas ON PlanesAcciones.programaID = PlanesProgramas.programaID
    
        
sql;

/**
     * Consulta SQL que permite SELECCIONAR la fecha más temprana de las operaciones segun la actividad y tipo de plan
     */
    const FECHA_TARDIA = <<<sql
    SELECT 
        MAX(PlanesOperaciones.planOperacionFCHFINAL) AS FECHAFINAL
    FROM PlanesOperaciones
    INNER JOIN PlanesActividades ON PlanesOperaciones.actividadID = PlanesActividades.actividadID
    INNER JOIN PlanesAcciones ON PlanesActividades.accionID = PlanesAcciones.accionID
    INNER JOIN PlanesProgramas ON PlanesAcciones.programaID = PlanesProgramas.programaID
    
        
sql;
    
}
// Generado el 2017-11-11 11:16:50:000000
