<?php

/**
 * Descripción del Modelo de Datos PlanesOperaciones
 *
 * %%DESC_MODELO%%
 *
 * 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/datos/PlanesOperaciones
 */
 
class PlanesOperaciones extends ModeloDatos {

    const ACTIVO     = 'ACTIVO';
    const DESACTIVO  = 'DESACTIVO';
    const SUSPENDIDO = 'SUSPENDIDO';
    /**
     * Recibe el Identificador del registro de PlanOperacion y 
     * devuelve un objeto con sus datos.
     * @param int $planOperacionID
     * @return Objeto PlanOperacion
     */
    public static function datos($planOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS . " WHERE PlanesOperaciones.planOperacionID =  ? ; ";
        $PlanOperacion = SicamDB::selectUnaFila($sqlQuery, array($planOperacionID));
        if(PlanesOperacionesAvances::datosporOperacion($planOperacionID)):
            $PlanOperacion->TotalGastado = PlanesOperacionesAvances::GastadoTotalPorOperacion($PlanOperacion->actividadID, $planOperacionID);
        endif;
        return $PlanOperacion;
    }
    /**
     * Devuelve todos los registros de PlanOperaciones, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $planOperacionESTADO
     * @return Array de Objetos PlanOperaciones
    */
    public static function delaActividad($actividadID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE PlanesOperaciones.actividadID = ? ";
        return SicamDB::selectVariasFilas($sqlQuery, array($actividadID));
    }
    
    /**
     * Devuelve todos los registros de PlanOperaciones, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $planOperacionESTADO
     * @return Array de Objetos PlanOperaciones
     */
    public static function delaActividadPorTipo($actividadID, $tipoOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE PlanesOperaciones.actividadID = ? AND PlanesOperaciones.tipoOperacionID = ?";
        return SicamDB::selectVariasFilas($sqlQuery, array($actividadID, $tipoOperacionID));
    }
    
    /**
     * Devuelve todos los registros de PlanOperaciones, según el colaborador.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $planOperacionESTADO
     * @return Array de Objetos PlanOperaciones
     */
    public static function delColaborador($colaboradorID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE planOperacionUSRCREADA = ?";
        return SicamDB::selectVariasFilas($sqlQuery, array($colaboradorID));
    }
    
    /**
     * Recibe el Identificador del registro de PlanOperacion y 
     * devuelve un objeto con sus datos completos con todas sus relacion.
     * @param int $planOperacionID
     * @return Objeto PlanOperacion
     */
    public static function datosCompletos($planOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_COMPLETOS . " WHERE planOperacionID =  ? ; ";
        $PlanOperacion = SicamDB::selectUnaFila($sqlQuery, array($planOperacionID));
        $PlanOperacion->Items = Items::delPlanOperacion($planOperacionID);
        $PlanOperacion->Usuario = Usuarios::datos($PlanOperacion->planOperacionUSRCREO);
        return $PlanOperacion;
    }
    /**
     * Devuelve todos los registros de PlanOperaciones, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $planOperacionESTADO
     * @return Array de Objetos PlanOperaciones
     */
    public static function todos($planOperacionESTADO = null) {
        $datos    = array();
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS;
        if (!is_null($planOperacionESTADO)) {
            $sqlQuery .= " WHERE planOperacionESTADO = ? ";
            array_push($datos, $planOperacionESTADO);
        }
        return SicamDB::selectVariasFilas($sqlQuery, $datos);
    }
    /**
     * Devuelve los registros de PlanOperaciones en estado ACTIVO.
     * @return Array de Objetos PlanOperaciones
     */
    public static function activos() {
        return self::todos(self::ACTIVO);
    }  
    /**
     * Recibe Todos los datos de necesarios para la creación de un nuevo 
     * registro de PlanOperaciones.
     * @param int $categoriaID Identificador de la Categoria
     * @param String $planOperacionCODIGO Código de PlanOperaciones 
     * @param String $planOperacionTITULO Titulo de PlanOperaciones 
     * @param Texto $planOperacionDESCRIPCION Descripción de PlanOperaciones
     * @param Url $planOperacionURL Url del archivo asociado al PlanOperaciones
     * @param String $planOperacionESTADO Estado del registro de PlanOperaciones
     * @return int con el Identificador del Registro PlanOperaciones 
     */
    public static function guardar( $actividadID, $tipoOperacionID, $operacionPredefinidaID, $planOperacionCODIGO, $planOperacionDESCRIPCION, $planOperacionFCHINICIO,
        $planOperacionFCHFINAL, $planOperacionPRESUPUESTADO, $rubroID, $centroCostoID, $operacionClaseID ) {
        $sqlQuery = PlanesOperacionesSQL::CREAR_REGISTRO;
        return SicamDB::insertFila($sqlQuery, array(
              $actividadID, $tipoOperacionID, $operacionPredefinidaID, $planOperacionCODIGO, $planOperacionDESCRIPCION, $planOperacionFCHINICIO,
                $planOperacionFCHFINAL, $planOperacionPRESUPUESTADO, $rubroID, $centroCostoID, $operacionClaseID,  Cliente::usuarioID()
            )
        );
    }
    /**
     * Recibe los todos los datos del registro para ser actualizados, junto con
     * el identificador del registro que se va ha actualizar.
     * @param int $planOperacionID Identificador del Registro de PlanOperaciones
     * @param int $categoriaID Identificador de la Categoria
     * @param String $planOperacionCODIGO Código de PlanOperaciones 
     * @param String $planOperacionTITULO Titulo de PlanOperaciones 
     * @param Texto $planOperacionDESCRIPCION Descripción de PlanOperaciones
     * @param Url $planOperacionURL Url del archivo asociado al PlanOperaciones
     * @param String $planOperacionESTADO Estado del registro de PlanOperaciones
     * @return int cantidad de registros actualziados en la operacion
     */
    public static function actualizar($planOperacionDESCRIPCION,$planOperacionFCHINICIO,$planOperacionFCHFINAL, $planOperacionPRESUPUESTADO, $planOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::ACTUALIZAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array($planOperacionDESCRIPCION,$planOperacionFCHINICIO,$planOperacionFCHFINAL, $planOperacionPRESUPUESTADO, Cliente::usuarioID() ,$planOperacionID ));
    }
    /**
     * Recibe un identificador de PlanOperaciones y elimina el registro.
     * @param int $planOperacionID Identificador del registro
     * ha eliminar.
     * @return int Cantidad de registros eliminados
     */
    public static function eliminar($planOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::ELIMINAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array($planOperacionID));
    }
    /**
     * Recibe un identificador de PlanOperaciones y reactiva el registro.
     * @param int $planOperacionID Identificador del registro
     * @return int Cantidad de registros reactivados
     */
    public static function reactivar($planOperacionID) {
        return self::cambiarEstado(self::ACTIVO, $planOperacionID);
    }
    /**
     * Recibe un identificador y el Estado y actualiza el estado del registro
     * @param String $planOperacionESTADO Nuevo estado del registro.
     * @param int $planOperacionID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function cambiarEstado($planOperacionESTADO, $planOperacionID) {
        $sqlQuery = PlanesOperacionesSQL::ACUALIZAR_ESTADO;
        return SicamDB::actualizarFila($sqlQuery, array($planOperacionESTADO, $planOperacionID));
    }
    /**
     * Recibe un identificador de PlanOperaciones y desactiva el registro.
     * @param int $planOperacionID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function desactivar($planOperacionID) {
        return self::cambiarEstado(self::DESACTIVO, $planOperacionID);
    }
    
    /**
     * Devuelve todos los registros de PlanOperaciones, según el tipo de plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function delPlan($tipoPlanID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE tipoPlanID = ? ";
        return SicamDB::selectVariasFilas($sqlQuery, array($tipoPlanID));
    }
    
    /**
     * Devuelve todos los registros de PlanOperaciones, según la actividad y tipo de Plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $actividadID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function delaActividadYTipoPlan($actividadID,$operacionTipoID, $tipoPlanID = null) {
         if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesSQL::DATOS_PARA_PLAN. " WHERE actividadID = ? AND PlanesOperaciones.tipoOperacionID = ? AND tipoPlanID = ? ; ";
        return SicamDB::selectVariasFilas($sqlQuery, array($actividadID,$operacionTipoID, $tipoPlanID));
        }else{
            $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE PlanesOperaciones.actividadID = ? AND PlanesOperaciones.tipoOperacionID = ?";
            return SicamDB::selectVariasFilas($sqlQuery, array($actividadID, $operacionTipoID));
        }
    }
    
    
     /**
     * Devuelve todos los registros de PlanOperaciones, según la actividad y tipo Operacion.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $actividadID
     * @param Id $operacionTipoID
     * @return Array de Objetos PlanOperaciones
     */
    public static function delaActividadYTipoOperacion($actividadID, $operacionTipoID) {
        $sqlQuery = PlanesOperacionesSQL::DATOS_BASICOS. " WHERE PlanesOperaciones.actividadID = ? AND PlanesOperaciones.tipoOperacionID = ? ; ";
        return SicamDB::selectVariasFilas($sqlQuery, array($actividadID, $operacionTipoID));
    }
    
    /**
     * Devuelve el total del presupuesto de las operaciones, según el plan y tipo de Plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorPlanyTipoPlan($planID,$tipoPlanID) {
        $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesActividades.planID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($planID,$tipoPlanID));
    }
    
    /**
     * Devuelve el total del presupuesto de las operaciones, según el plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorPlan($planID) {
        $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesActividades.planID = ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($planID));
    }
    
    /**
     * Devuelve el total gastado de las operaciones, según el plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @return Array de Objetos PlanOperaciones
     */
    public static function GastadoTotalPorPlan($planID) {
        $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesActividades.planID = ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($planID));
    }
    
     /**
     * Devuelve el total del presupuesto de las operaciones, según el programa y tipo de Plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorPrograma($programaID,$tipoPlanID = null) {
        if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesProgramas.programaID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($programaID,$tipoPlanID));
        }else{
            $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesProgramas.programaID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($programaID));
        }
    }
    
     /**
     * Devuelve el total del presupuesto de las operaciones, según la accion y tipo de Plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorAccion($accionID,$tipoPlanID = null) {
        if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesAcciones.accionID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($accionID,$tipoPlanID));
        }else{
            $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesAcciones.accionID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($accionID));
        }
    }
    
     /**
     * Devuelve el total del presupuesto de las operaciones, según la actividad y tipo de Plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorActividadyTipoPlan($actividadID,$tipoPlanID) {
        $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($actividadID,$tipoPlanID));
    }
    
    /**
     * Devuelve el total del presupuesto de las operaciones, según la actividad.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $planID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function presupuestoTotalPorActividad($actividadID) {
        $sqlQuery = PlanesOperacionesSQL::TOTAL_PRESUPUESTO. "WHERE PlanesActividades.actividadID = ?; ";
        return SicamDB::selectUnaFila($sqlQuery, array($actividadID));
    }
    
    /**
     * Devuelve la fecha mas temprana de las operaciones, según la actividad y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $actividadID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTempranaPorActividad($actividadID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesActividades.actividadID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID));
        }
    }
    
    /**
     * Devuelve la fecha mas tardia de las operaciones, según la actividad y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $actividadID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTardiaPorActividad($actividadID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesActividades.actividadID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID));
        }
    }
    
    /**
     * Devuelve la fecha mas temprana de las operaciones, según la accion y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $accionID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTempranaPorAccion($accionID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesAcciones.accionID = ? AND PlanesOperaciones.tipoPlanID = ?  ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesAcciones.accionID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID));
        }
    }
    
    /**
     * Devuelve la fecha mas tardia de las operaciones, según la accion y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $accionID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTardiaPorAccion($accionID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesAcciones.accionID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesAcciones.accionID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID));
        }
    }
    
    
    /**
     * Devuelve la fecha mas temprana de las operaciones, según el programa y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $programaID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTempranaPorPrograma($programaID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesProgramas.programaID = ? AND PlanesOperaciones.tipoPlanID = ?  ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TEMPRANA. "WHERE PlanesProgramas.programaID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID));
        }
    }
    
    /**
     * Devuelve la fecha mas tardia de las operaciones, según el programa y tipo plan si viene.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $programaID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function fechaTardiaPorPrograma($programaID, $tipoPlanID = null) {
        if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesProgramas.programaID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::FECHA_TARDIA. "WHERE PlanesProgramas.programaID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID));
        }
    }
    
    /**
     * Devuelve el total gastado de las operaciones, según la actividad y tipo plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $actividadID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function GastadoTotalPorActividad($actividadID, $tipoPlanID = null) {
       if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesActividades.actividadID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID));
        }
    }
    
    /**
     * Devuelve el total gastado de las operaciones, según la accion y tipo plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $accionID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function GastadoTotalPorAccion($accionID, $tipoPlanID = null) {
       if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesAcciones.accionID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesAcciones.accionID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($accionID));
        }
    }
    
    /**
     * Devuelve el total gastado de las operaciones, según el programa y tipo plan.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param Id $programaID
     * @param Id $tipoPlanID
     * @return Array de Objetos PlanOperaciones
     */
    public static function GastadoTotalPorPrograma($programaID, $tipoPlanID = null) {
       if(!is_null($tipoPlanID)){
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesProgramas.programaID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID, $tipoPlanID)); 
        }else{
            $sqlQuery = PlanesOperacionesSQL::TOTAL_GASTADO. "WHERE PlanesProgramas.programaID = ?; ";   
            return SicamDB::selectUnaFila($sqlQuery, array($programaID));
        }
    }
    
     /**
     * Recibe los todos los datos del registro para ser actualizados, junto con
     * el identificador del registro que se va ha actualizar.
     * @param int $planOperacionID Identificador del Registro de PlanOperaciones
     * @param int $categoriaID Identificador de la Categoria
     * @param String $planOperacionCODIGO Código de PlanOperaciones 
     * @param String $planOperacionTITULO Titulo de PlanOperaciones 
     * @param Texto $planOperacionDESCRIPCION Descripción de PlanOperaciones
     * @param Url $planOperacionURL Url del archivo asociado al PlanOperaciones
     * @param String $planOperacionESTADO Estado del registro de PlanOperaciones
     * @return int cantidad de registros actualziados en la operacion
     */
    public static function actualizarEstadoRevisionTecnica($planOperacionID,$estadoRevision) {
        $sqlQuery = PlanesOperacionesSQL::ACTUALIZAR_ESTADO_REVISIONTECNICA;
        return SicamDB::actualizarFila($sqlQuery, array($estadoRevision, $planOperacionID));
    }
        
    
    
}
// Generado el 2017-11-11 11:16:49:000000
