<?php

/**
 * plan_regis_planea_comis actions.
 *
 * @package    controlComisiones
 * @subpackage plan_regis_planea_comis
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class plan_regis_planea_comisActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'COM_PLAN_COMISIONES'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'COM_PLAN_COMISIONES' =>
        array(
            'id_plan_comisiones' => 'id_plan_comisiones',
            'vigencia' => 'vigencia',
            'id_area' => 'id_area',
            'tipcomi' => 'tipcomi',
            'id_proyectos' => 'id_proyectos',
            'fecha' => 'fecha',
            'objetivo' => 'objetivo',
            'actividad' => 'actividad',
            'observaciones' => 'observaciones',
            'fecha_log' => 'fecha_log',
            'usuario_log' => 'usuario_log',
            'justificacion' => 'justificacion',
            'interrupcion' => 'interrupcion',
            'id_original' => 'id_original',
            'vobo' => 'vobo',
            'estado' => 'estado',
            'fecha_estado' => 'fecha_estado',
            'id_usuario_estado' => 'id_usuario_estado',
            'observaciones_estado' => 'observaciones_estado',
            'nivel_rechazo' => 'nivel_rechazo',
            'firmado' => 'firmado',
            'fecha_firmado' => 'fecha_firmado',
            'id_usuario_firmado' => 'id_usuario_firmado',
            'autorizado' => 'autorizado',
            'fecha_autorizado' => 'fecha_autorizado',
            'id_usuario_autorizado' => 'id_usuario_autorizado',
            'observacion_aut' => 'observacion_aut'
        )
    ); //por cada tabla especificar los campos del select

    /*
     * OPCIONES DE FILTRO:
     *
     * LIKEALLPLUS- busqueda comparativa de la cadena dividida por los espacios en blanco en cualquier posición
     * LIKEALL - busqueda comparativa de la cadena en cualquier posición
     * LIKE - busqueda en la cadena que inicie por la variable de filtro
     *
     * _filtroNull / para filtro de not null o null - type debe ser is - para todas las variables
     * TYPE NULL / para filtro de not null o null con el valor de campo desde gwt
     * EJEMPLO: 'titular' => array('NULL' => array('titular')),
     *
     * rownum,start - rownum,end / estos campos para uso del Grid live GWT, numero fijo de filas de consulta
     */
    protected $table_field_conditions = array(
        'COM_PLAN_COMISIONES' => array(
            'id_plan_comisiones,a' => array('!=' => array(-1)),
            'id_plan_comisiones,b' => array('=' => array('id_plan_comisiones')),
            'vigencia' => array('=' => array('vigencia')),
            'id_area' => array('=' => array('id_area')),
            'tipcomi' => array('=' => array('tipcomi')),
            'id_proyectos' => array('=' => array('id_proyectos')),
            'fecha' => array('BETWEENFECHA' => array('fecha_ini', 'fecha_fin')),
            'usuario_log' => array('=' => array('usuario_log')),
            'interrupcion' => array('=' => array('interrupcion')),
            'vobo' => array('=' => array('vobo')),
            'estado' => array('=' => array('estado')),
            'nivel_rechazo' => array('=' => array('nivel_rechazo')),
            'firmado' => array('=' => array('firmado')),
            'autorizado' => array('=' => array('autorizado')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        )
    ); //por cada tabla se dan los campos, opcion de filtro y variable que entra para los posibles filtros
    protected $table_field_or_conditions = array(
    ); // filtros de condicion or
//    protected $query_qualifier = 'DISTINCT'; //Variable para el sql para eliminar filas repetidas
    protected $fields_orderBy = array(
        'vigencia', 'id_plan_comisiones'
    ); //campos para el ordenamiento de la consulta
//    protected $table_field_obligatory = array('id_debito'); //campos obligatorios de filtro - estan en el request

    /*
     * Variables manejo de log
     */
    //true - consulta de administracion
    protected $is_admin = true;
    //si es servicio para filtro agregar campo
//    protected $filtro = 'Area';
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;



    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_plan_comisiones'; //identificador de la tabla - solo si es un dato no llave compuesta
    protected $id_names = array('id_plan_comisiones'); //llave primaria
    protected $field_names = array('vigencia', 'id_area', 'tipcomi', 'id_proyectos', 'fecha', 'objetivo',
        'actividad', 'observaciones', 'fecha_log', 'usuario_log', 'justificacion', 'interrupcion',
        'id_original', 'vobo', 'estado', 'fecha_estado', 'id_usuario_estado', 'observaciones_estado',
        'nivel_rechazo', 'firmado', 'fecha_firmado', 'id_usuario_firmado', 'autorizado', 'fecha_autorizado',
        'id_usuario_autorizado', 'observacion_aut'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'COM_PLAN_COMISIONES'; //tabla en la cual se aplican los cambios
    protected $has_activo = true; //si posee campo en la tabla de nombre activo ---- ESTADO PARA REGALIAS - CARTERA
    protected $has_vigencia = false; //si posee vigencia
    protected $has_cen_op = false; //si posee centro de operacion
    protected $has_id_cia = false; //si posee compañia
    protected $has_secuencia = false; //si posee secuencia la tabla - true si es por tabla, false - trigger
//    protected $en_mayuscula = true; // si se pone, se puede poner en mayucula con true y en minuscula con false, de lo contrario la pone tal cual la BD

    /*
     * campos para fecha sistema
     */
//    protected $campo_fecha_sistema = array(
//        'fecha_crea'
//    );

    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_plan_comisiones'; //identificador unico de la tabla
    //false - Registrar log para list - consultar
    protected $log_list = false;
    //false - Registrar log para add - update - remove
    protected $log_crud = false;

    /**
     * Construccion de observacion perzonalizada
     * 
     * Toda variable para tomarla del request con el formato:
     * &request-variable&
     * 
     * false - observacion por defecto
     *
     * @var string 
     */
    protected $observacion_list = false;
    protected $observacion_add = false;
    protected $observacion_update = false;
    protected $observacion_remove = false;

    // Validate
    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Add
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateAdd(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a validateAdd");

        /*
         *  Validar la operación, ya sea por SQL
         */
        $msj = "";

        $fecha_actual = strtotime(date("d-m-Y H:i:00", time()));
        $fecha_salida = strtotime($request['fecha_salida'] . "23:59:59");
        $tipcomi = $request['tipcomi'];
        //20190917 no aplica resolucion de emergencia
        $logger->info("Comperacion fecha actual : $fecha_actual");
        $logger->info("Comperacion fecha Salida :$fecha_salida");
        if ($fecha_salida < $fecha_actual && ($tipcomi != '07')) {
            $msj = $msj . "- La fecha de salida de la comision no puede ser menor a la fecha actual.</br>";
            $mensaje = $msj;
            $errors['servicio'] = "com_plan_comisiones";
        }

        $tipcomi = $request['tipcomi'];
        if ($tipcomi != '07') {//Si es emergencia  omitimos validacion de fecha o hora
            //de la planeacion
            $sql = <<<EOD
select 
(select valor from com_param_control_comis where parametro ='APLICA_HORA_REGIS_PLANEA') as aplica_hora_l,
(select valor from com_param_control_comis where parametro ='HORA_MIN_REGIS_PLANEA') as hora_min_l,
(select valor from com_param_control_comis where parametro ='HORA_MAX_REGIS_PLANEA') as hora_max_l,
(select valor from com_param_control_comis where parametro ='CANT_DIAS_INI_MES_REGIS_PLANEA') as dias_l,
(select to_char(to_date(valor,'yyyy-mm-dd'),'dd-mm-yyyy') as valor from com_param_control_comis where parametro ='FECHA_MIN') as fecha_min,
(select to_char(to_date(valor,'yyyy-mm-dd'),'dd-mm-yyyy') as valor from com_param_control_comis where parametro ='FECHA_MAX') as fecha_max,                      
(SELECT TRUNC(SYSDATE,'MM') FROM DUAL) as fecha_min_l,
DIAS_HABILES((SELECT TRUNC(SYSDATE,'MM') FROM DUAL),(select valor from com_param_control_comis where parametro ='CANT_DIAS_INI_MES_REGIS_PLANEA') ) as fecha_max_l,
case when valor = 1 then
  case when SYSDATE>DIAS_HABILES((SELECT TRUNC(SYSDATE,'MM') FROM DUAL),(select valor from com_param_control_comis where parametro ='CANT_DIAS_INI_MES_REGIS_PLANEA') ) then 1 else 0 end
else 0 end as aplica_dias_fecha_l
from com_param_control_comis 
where parametro ='APLICA_DIAS_INI_MES_REGIS_PLANEA'
EOD;
            $result = CN_TABLE::executeSQL($sql);
            if ($result[0]['aplica_dias_fecha_l'] == 1) {
                $msj = $msj . "- El registro de planeación de comisiones solo puede registrarse los primeros dias habiles de cada mes.</br>";
                $errors['mensaje'] = $msj;
                $errors['servicio'] = "com_plan_comisiones";
            }

            $fecha_min = strtotime($result[0]['fecha_min'] . "00:00:00");
            $fecha_max = strtotime($result[0]['fecha_max'] . "23:59:59");

            if ($fecha_actual < $fecha_min) {

                $msj = $msj . "- Periodo no valido solo es valido desde $fecha_min hasta $fecha_max .</br>";
                $errors['mensaje'] = $msj;
                $errors['servicio'] = "com_plan_comisiones";
            }

            if ($fecha_actual > $fecha_max) {

                $msj = $msj . "- Periodo no valido solo es valido desde $fecha_min hasta $fecha_max .</br>";
                $errors['mensaje'] = $msj;
                $errors['servicio'] = "com_plan_comisiones";
            }
            $aplica_hora = $result[0]['aplica_hora_l'];
            $hora_min = $result[0]['hora_min_l'];
            $hora_max = $result[0]['hora_max_l'];
            //OBTENEMOS hora formato 24 con minutos
            $ahora = date("H") . ":" . date("i");
            $hora_actual = strtotime($ahora);
            $logger->info("traza-");
            if (($aplica_hora == 1)and ( $hora_actual <= strtotime($hora_min) or $hora_actual >= strtotime($hora_max))) {
                $msj = $msj . "- El registro de planeación de comisiones solo puede registrarse de " . $hora_min . " a " . $hora_max . "</br>";
                $mensaje = $msj;
                $errors['mensaje'] = $mensaje;
                $errors['servicio'] = "com_plan_comisiones";
            }
        }

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Update
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateUpdate(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         * Variables request
         */
//        $id_tipo_doc = $request['id_tipo_doc'];
//        $num_doc = $request['num_doc'];
//        $id_clase_fondo = $request['id_clase_fondo'];

        /*
         *  Validar la operación, ya sea por SQL
         */
//        $sql = <<<EOD
//select * 
//from no_afilia_fondo
//where
//id_tipo_doc = $id_tipo_doc
//and num_doc = '$num_doc'
//and id_clase_fondo = $id_clase_fondo 
//EOD;
//        $records = CN_TABLE::executeSQL($sql);
        /*
         *  Generar errores en $errors
         */
//        if (count($records) > 0) {
//            $errors['mensaje'] = "Ya posee un registro de fondo, para la clase de fondo selecionado.";
//            $errors['servicio'] = "afilia_fondo";
//        }

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Remove
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateRemove(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Acciones anteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    protected function preprocessRequest($Action, sfWebRequest $request) {

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a preprocessRequest");

        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    /**
     * Acciones posteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    protected function postprocessRequest($Action, sfWebRequest $request, $list_data_post) {

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a postprocessRequest - " . $list_data_post);

        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    /**
     * Actualizar el estado Planeación de Comisión
     * tipo_boton
     * 0-Rechazado
     * 1-Pendiente
     * 2-Firmado
     * 3-Revisado/NA
     * 4-Autorizado
     * 
     * tipo_trans
     * 1-Ordenador Gasto
     * 2-Supervisor
     * 3-VAF
     *
     * @param sfRequest $request A request object
     */
    public function executeUpdate(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---function executeUpdate");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;
        $response = array();
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        $records = array();

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

            /**
             * Variables globales
             */
            $id_plan_comisiones = $request['id_plan_comisiones'];
            $id_vigencia = $request['vigencia'];

            /*
             * variables por defecto para el registro de log
             */
            $id_tabla = $id_plan_comisiones;

            /*
             * obtener id maestro tabla
             */
            $id_mae_bd = CN_TABLE::consultarIdTablaBD('COM_PLAN_COMISIONES');

            /**
              1	CONSULTAR
              2	ACTUALIZAR
              3	ADICIONAR
              4	ELIMINAR
              5	ANULAR
             */
            $id_ope_bd = 2;

            //id del maestro tercero
            $id_mae_ter = 1;
            if (isset($request['id_username'])) {
                $id_mae_ter = $request['id_username'];
            }

            //username
            $username = 'admin';
            if (isset($request['username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $username = $request['username'];
                }
            }
            //usuario
            $usuario = '0';
            if (isset($request['id_username'])) {
                if (!is_null($request['id_username']) && $request['id_username'] != '') {
                    $usuario = $request['id_username'];
                }
            }

            //comando de la funcionalidad
            $comando = 'sin comando';
            if (isset($request['comando'])) {
                $comando = $request['comando'];
            }

            //construir observacion
            $observacion_log = "'Se intenta actualizar tabla de com_plan_comisiones desde la funcionalidad: " . $comando . "'";
            $subject = "";

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);

            /*
             * Variables de filtro
             */
            $tipo_boton = $request['tipo_boton'];
            $tipo_trans = $request['tipo_trans'];

            $id_usuario_estado = $request['id_username'];
            $fecha_estado = CN_TABLE::fechaSistema();

            $observaciones_estado = '';
            if (isset($request['observaciones'])) {
                $observaciones_estado = $request['observaciones'];
            }

            /*
             * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
             */
            $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

            $int = 0;
            foreach ($array as $routeName => $routeData) {
                //echo $routeName . "\n";
                if ('entidad_cliente' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadCliente = $value;
                        }
                    }
                }
                if ('entidad_nombre' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadNombre = $value;
                        }
                    }
                }
                if ('correoEnvio' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $correoEnvio = $value;
                        }
                    }
                }
                if ('jasper_url' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $url_jasper = $value;
                        }
                    }
                }
                $int++;
            }


            /**
             * Opciones de actualizacion - 20181102
             */
            $mensaje = "Opciones de actualizacion";
            $this->logMessage($mensaje);

            switch ($tipo_boton) {
                //0-Rechazado
                case 0:
                    //actualizar como rechazado
                    //Validamos si es posible rechazar la planeacion en caso de que haya sido autorizada y ya tenga programaciones
                    $sql = <<<EOD
select * from COM_PLAN_PROGRAM_COMIS_V 
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                    $records = CN_TABLE::executeSQL($sql);
                    if (count($records) > 0) {
                        $status = 1;
                        $mensaje = "No es posible Rechazar. La planeación ya tiene al menos una programación.";
                    } else {
                        $observaciones_estado = str_replace("?", "' || chr(63) || '", $observaciones_estado);
                        //20190409 Queda con estado activo para permitir la edicion de la planeacion si tipo_trans != 1
                        if ($tipo_trans == 1) {
                            $sql = <<<EOD
update com_plan_comisiones 
set estado = 0,
fecha_estado = SYSDATE,
observaciones_estado = '$observaciones_estado',
id_usuario_estado = '$id_usuario_estado',
nivel_rechazo = $tipo_trans                      
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                        } else {
                            $sql = <<<EOD
update com_plan_comisiones 
set estado = 1,
firmado = 0,
fecha_firmado = null,
id_usuario_firmado = null,   
autorizado = 0,
fecha_autorizado = null,
id_usuario_autorizado = null, 
aprobado = 0,
fecha_aprobado = null,
id_usuario_aprobado = null, 
fecha_estado = SYSDATE,
observaciones_estado = '$observaciones_estado',
id_usuario_estado = '$id_usuario_estado',
nivel_rechazo = $tipo_trans                      
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                        }
                        $this->conn->execute($sql);

                        //actualizar como rechazado
                        $sql = <<<EOD
update com_plan_comisionados_placom 
set estado = 0                  
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                        //20190809Si tipo transaccion 1 rechazamos los detalles para inhabilitarlos
                        if ($tipo_trans == 1) {
                            $this->conn->execute($sql);
                        }
                        $sql = <<<EOD
update com_plan_comisionados_objs 
set estado = 0                   
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                        //20190809Si tipo transaccion 1 rechazamos los detalles para inhabilitarlos
                        if ($tipo_trans == 1) {
                            $this->conn->execute($sql);
                        }
                        $sql = <<<EOD
update com_plan_destinos 
set estado = 0                   
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                        //20190409 No actualizamos los detalles de la planeacion para poderlos modificar
                        //20190809Si tipo transaccion 1 rechazamos los detalles para inhabilitarlos
                        if ($tipo_trans == 1) {
                            $this->conn->execute($sql);
                        }

                        //METODO ENVIO DE CORREO
                        //1-Responsable
                        if ($tipo_trans != 1) {

                            /**
                             * Envio correo al responsable,supervisor
                             */
                            $this->logMessage("Envio correo al responsable,supervisor.");
                            //Consulta datos envio correo
                            //saltos de linea por br - 20210203::LAVILA
                            //Sql
                            $sql = <<<EOD
SELECT
placom.id_plan_comisiones,
placom.vigencia,
placom.descomi as prefijo,
'$correoEnvio' as email_envio,
replace(placom.observaciones_estado,chr(10),'<br/>') as mensaje_extra,
'' as mensaje_firma,
'Se realiza el cierre de la planeación de comisión No.'|| placom.id_plan_comisiones ||' - ' || placom.vigencia || '; ' || placom.descomi || ', verificar en control de comisiones.' as mensaje,

--Datos correo responsable
nvl(placom.num_doc_terlog,'') as num_doc,
nvl(placom.razon_soc_terlog,'') as razon_soc,
nvl(placom.correo,'') as correo,

--Datos correo supervisor
nvl(placom.num_doc_tersup,'') as num_doc_tersup,
nvl(placom.razon_soc_tersup,'') as razon_soc_tersup,
nvl(placom.correo_tersup,'') as correo_tersup

FROM com_plan_comisiones_v placom

where
placom.id_plan_comisiones = $id_plan_comisiones
and placom.vigencia = $id_vigencia
EOD;
                            //Ejecutar SQL
                            $records = CN_TABLE::executeSQL($sql);

                            $this->logMessage("Envio correo");

                            if (count($records) > 0) {

                                $report_params = $records[0];
                                $prefijo = $records[0]['prefijo'];
                                $mensaje_extra = $records[0]['mensaje_extra'];

                                //Ejemplo de la persona que se envia el correo: 
                                //123;1;pepito perez;correo@gmal.com
                                //DATOS RESPONSABLE
                                $num_doc = $records[0]['num_doc'];
                                $id_tipo_doc = 1;
                                $razon_soc = $records[0]['razon_soc'];
                                $correo = $records[0]['correo'];
                                $datos_usuario = array(
                                    '0' => $num_doc . ';' . $id_tipo_doc . ';' . $razon_soc . ';' . $correo . ';' . $mensaje_extra
                                );

                                //DATOS SUPERVISOR
                                $num_doc_tersup = $records[0]['num_doc_tersup'];
                                $id_tipo_doc_tersup = 1;
                                $razon_soc_tersup = $records[0]['razon_soc_tersup'];
                                $correo_tersup = $records[0]['correo_tersup'];
                                $datos_usuario_tersup = array(
                                    '0' => $num_doc_tersup . ';' . $id_tipo_doc_tersup . ';' . $razon_soc_tersup . ';' . $correo_tersup . ';' . $mensaje_extra,
                                    '1' => '0;1;alexandra.moreno; alexandra.moreno@anm.gov.co' . ';' . $mensaje_extra
                                );
                                //PARAMETROS STANDART                 
                                $subject = "Rechazado - Planeacion de Comision No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                                $currentUri = '';
                                $ruta = '';
                                $adjunto = false;
                                $progress_key = $request['comando'] . $request['username'];
                                $array_adjuntos = array();
                                $entidad_cliente = $entidadCliente;
                                $entidad_nombre = $entidadNombre;
                                $addAddress = true;

                                switch ($tipo_trans) {

                                    //2-Supervisor
                                    case 2:
                                        $subject = "Rechazado - Planeacion de Comision por Supervisor: " . $num_doc_tersup . " No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                                        $mensaje = <<<EOD
La planeación de comisión No.$id_plan_comisiones - $id_vigencia; $prefijo del responsable $num_doc $razon_soc, 
fue rechazado por el siguiente motivo:
EOD;
                                        $report_params['mensaje'] = $mensaje;

                                        $this->logMessage("Subject Supervisor: " . $subject);
                                        CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);

                                        $this->logMessage("FIN Envio correo Rechazado CASE 2");

                                        break;
                                    case 3:
                                        $subject = "Rechazado - Planeacion de Comision por VAF: " . $num_doc_tersup . " No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                                        $mensaje = <<<EOD
La planeación de comisión No.$id_plan_comisiones - $id_vigencia; $prefijo del responsable $num_doc $razon_soc, 
fue rechazado por el siguiente motivo:
EOD;
                                        $report_params['mensaje'] = $mensaje;

                                        $this->logMessage("Subject VAF: " . $subject);
                                        CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);

                                        $this->logMessage("FIN Envio correo Rechazado CASE 3");

                                        break;

                                    default:
                                        break;
                                }
                            }
                        }

                        /**
                          1	CONSULTAR
                          2	ACTUALIZAR
                          3	ADICIONAR
                          4	ELIMINAR
                          5	ANULAR
                         */
                        $id_ope_bd = 5;

                        //construir observacion
                        $observacion_log = "'Planeación de comisión rechazado por proceso del asunto: " . $subject . "'";

                        /*
                         * registro de consulta en tabla de log
                         */
                        $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);
                    }
                    break;
                //1-Pendiente
                case 1:
                    //Sin cambios
                    break;
                //2-Firmado
                case 2:
                    //Comprobamos que tenga detalle
                    $sql = <<<EOD
SELECT COUNT(id_plan_comisiones) as total
FROM com_plan_comisionados_placom
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;

                    $records = CN_TABLE::executeSQL($sql);
                    if ($records[0]['total'] == 0) {
                        $status = 1;
                        $mensaje = "No es posible planear. Necesita registrar detalles de planeación.";
                    } else {

                        //Se valida total CDP vs RPs y planeaciones pendientes - 20210922::LAVILA
                        //Se deja asociacion para el saldo unicamente con el Id de CDP y no el año - 20220105::LAVILA
                        $sql = <<<EOD
SELECT 
cdp.valor as valor_cdp,
cdp.valor_rp_tot,
pla.valor as valor_pla,
com.valor_pla_fir,
nvl(cdp.valor,0) - nvl(cdp.valor_rp_tot,0) - nvl(pla.valor,0) - nvl(com.valor_pla_fir,0) as saldo_cdp,
pla.*
FROM com_plan_comisiones_v pla

left join pr_cdp_saldo_v cdp
on /*cdp.ano_fiscal = pla.vigencia
and*/ cdp.cdp = pla.id_cdp_proyecto

left join COM_PLAN_CDP_PEN_V com
on com.vigencia = pla.vigencia
and com.id_cdp_proyecto = pla.id_cdp_proyecto

where
pla.id_plan_comisiones = $id_plan_comisiones
and pla.vigencia = $id_vigencia 
and pla.estado = 1
EOD;

                        $records = CN_TABLE::executeSQL($sql);
                        if ($records[0]['saldo_cdp'] < 0) {
                            $id_cdp_proyecto = $records[0]['id_cdp_proyecto'];
                            $status = 1;
                            $mensaje = "No es posible planear. Necesita verificar saldo de CDP No.$id_cdp_proyecto";
                        } else {

                            //20191016 Validamos que los comisionados de la planeacion tengan al menos un destino seleccionado
                            $sql = <<<EOD
select id_plan_comisiones,vigencia,nitocc,max(estado) as estado
from COM_PLAN_DESTINOS_COMISIONADOS
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
group by id_plan_comisiones,vigencia,nitocc
EOD;

                            $records = CN_TABLE::executeSQL($sql);
                            $flag = 0; //Variable para identificar que algun funcionario no tiene destino marcado
                            $nitoccs = ""; //Para almacenar los documentos de los funcionarios sin destino marcado
                            foreach ($records as $rec) {
                                if ($rec['estado'] == "0") {
                                    $flag = 1;
                                    $nitoccs = $rec['nitocc'] . ", ";
                                }
                            }
                            if ($flag == 1) {
                                $status = 1;
                                $mensaje = "No es posible planear. Los funcionarios con el documento $nitoccs no tienen destino seleccionado.";
                            } else {
                                //actualizar como responsable
                                $sql = <<<EOD
update com_plan_comisiones 
set firmado = 1,
fecha_firmado = SYSDATE,
ID_USUARIO_FIRMADO = '$usuario'
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                                $this->conn->execute($sql);

                                //20190517 Obtenemos el tipo de comision
                                $sql = <<<EOD
select *                                 
from com_plan_comisiones 
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
EOD;
                                //Si el tipo de comision es 02-EXTRAORDINARIA,03-Prorroga y adicion,07-Emergencia
                                //Se revisa y se autoriza automaticamente la planeacion  para que pase directamente a programacion
                                $records = CN_TABLE::executeSQL($sql);

                                $tipcomi = $records[0]['tipcomi'];
                                // 20201013 SE QUITA AUTORIZACION AUTOMATICA DE COMISIONES TIPO 02-EXTRAORDINARIA
                                //if ($tipcomi == "02" || $tipcomi == "03" || $tipcomi == "07") {
                                if ($tipcomi == "03" || $tipcomi == "07") {
                                    $sql = <<<EOD
update com_plan_comisiones 
set aprobado = 1,
fecha_aprobado = SYSDATE,
observacion_aprobado = 'Aprobado automatico por tipo de comision',
id_usuario_aprobado = '$usuario',
autorizado = 1,
fecha_autorizado = SYSDATE,
observacion_aut = 'Autorizado automatico por tipo de comision',
id_usuario_autorizado = '$usuario'                                    
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                                    $this->conn->execute($sql);
                                }

                                //Fin inactivacion de contrato

                                /**
                                 * Envio correo al supervisor
                                 */
                                $this->logMessage("Envio correo al supervisor.");
                                //Consulta datos envio correo
                                //Sql
                                $sql = <<<EOD
SELECT
placom.id_plan_comisiones,
placom.vigencia,
placom.descomi as prefijo,
'$correoEnvio' as email_envio,
'' as mensaje_extra,
'' as mensaje_firma,
'Se realiza el cierre de la planeación de comisión No.'|| placom.id_plan_comisiones ||' - ' || placom.vigencia || '; ' || placom.descomi || ', verificar en control de comisiones.' as mensaje,

--Datos correo responsable
nvl(placom.num_doc_terlog,'') as num_doc,
nvl(placom.razon_soc_terlog,'') as razon_soc,
nvl(placom.correo,'') as correo,

--Datos correo supervisor
nvl(placom.num_doc_tersup,'') as num_doc_tersup,
nvl(placom.razon_soc_tersup,'') as razon_soc_tersup,
nvl(placom.correo_tersup,'') as correo_tersup
    
FROM com_plan_comisiones_v placom

where
placom.id_plan_comisiones = $id_plan_comisiones
and placom.vigencia = $id_vigencia
EOD;
                                //Ejecutar SQL
                                $records = CN_TABLE::executeSQL($sql);

                                $this->logMessage("Envio correo");

                                if (count($records) > 0) {

                                    $report_params = $records[0];
                                    $prefijo = $records[0]['prefijo'];
                                    $mensaje_extra = $records[0]['mensaje_extra'];

                                    //Ejemplo de la persona que se envia el correo: 
                                    //123;1;pepito perez;correo@gmal.com
                                    //DATOS RESPONSABLE
                                    $num_doc = $records[0]['num_doc'];
                                    $id_tipo_doc = 1;
                                    $razon_soc = $records[0]['razon_soc'];
                                    $correo = $records[0]['correo'];
                                    $datos_usuario = array(
                                        '0' => $num_doc . ';' . $id_tipo_doc . ';' . $razon_soc . ';' . $correo
                                    );
                                    //DATOS SUPERVISOR
                                    $num_doc_tersup = $records[0]['num_doc_tersup'];
                                    $id_tipo_doc_tersup = 1;
                                    $razon_soc_tersup = $records[0]['razon_soc_tersup'];
                                    $correo_tersup = $records[0]['correo_tersup'];
                                    $datos_usuario_tersup = array(
                                        '0' => $num_doc_tersup . ';' . $id_tipo_doc_tersup . ';' . $razon_soc_tersup . ';' . $correo_tersup
                                    );

                                    //PARAMETROS STANDART
                                    $subject = "Cierre - Planeacion de Comision No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                                    $currentUri = '';
                                    $ruta = '';
                                    $adjunto = false;
                                    $progress_key = $request['comando'] . $request['username'];
                                    $array_adjuntos = array();
                                    $entidad_cliente = $entidadCliente;
                                    $entidad_nombre = $entidadNombre;
                                    $addAddress = true;

                                    $this->logMessage("Subject: " . $subject);
                                    CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                }

                                /**
                                 * Envio correo a los comisionados
                                 */
                                $this->logMessage("Envio correo a los comisionados.");
                                //Consulta datos envio correo
                                //Sql
                                $sql = <<<EOD
SELECT 
tab1.email,
tab1.razsoc,                                    
tab0.nitocc, 
tab0.nitocc as num_doc, 
'$correoEnvio' as email_envio,
    'El presente correo es para informar que se realizó la planeación de una comisión, en donde usted ha sido asignado.
Revisar documento adjunto.' as mensaje,
'' as mensaje_extra,
'' as mensaje_firma,                                                                        
tab0.id_plan_comisiones,
 tab0.id_transporte,tab0.estado 
FROM COM_PLAN_COMISIONADOS_PLACOM tab0
 JOIN TERCEROS tab1 ON tab0.nitocc=tab1.nitocc
 WHERE 1=1 AND tab0.vigencia=$id_vigencia AND tab0.id_plan_comisiones=$id_plan_comisiones                                    

EOD;
                                //Ejecutar SQL
                                $res = CN_TABLE::executeSQL($sql);

                                if (count($res) > 0) {

                                    //Formato plan comisiones

                                    $nombreArchivo = "formato_plan_comisiones_" . $id_plan_comisiones . "_" . $id_vigencia;
                                    $nombre_reporte = $nombreArchivo . ".pdf";
                                    $this->logMessage("formato plan comisiones :" . $nombreArchivo);
                                    $this->logMessage("JASPER:!!" . $url_jasper);
                                    //Generamos PDF JASPER
                                    $url = $url_jasper;
                                    $url = $url . 'com_plan_comisiones&format=PDF&PARAM_id_mod=20';
                                    $url = $url . '&PARAM_nombre_reporte=' . $nombre_reporte;
                                    $url = $url . '&PARAM_tag_adjunto_modulo=true';
                                    $url = $url . '&PARAM_id_plan_comisioness=' . $id_plan_comisiones;
                                    $url = $url . '&PARAM_vigencia=' . $id_vigencia;



                                    $this->logMessage('URL--' . $url);
                                    $ch = curl_init($url);

                                    //Parametros de retorno en cURL
                                    curl_setopt($ch, CURLOPT_HEADER, 0);
                                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Skip SSL Verification
                                    //Ejecuta la petición
                                    $rta = curl_exec($ch);
                                    //Se cierra la conexión
                                    curl_close($ch);


                                    foreach ($res as $obj) {

                                        $emailp = $obj['email'];

                                        $report_params = $obj;
                                        //$prefijo = $records[0]['prefijo'];
                                        $mensaje_extra = $obj['mensaje_extra'];

                                        //Ejemplo de la persona que se envia el correo: 
                                        //123;1;pepito perez;correo@gmal.com
                                        //DATOS RESPONSABLE
                                        $num_doc = $obj['num_doc'];
                                        $id_tipo_doc = 1;
                                        $razon_soc = $obj['razsoc'];
                                        $correo = $obj['email'];
                                        $datos_usuario = array(
                                            '0' => $num_doc . ';' . $id_tipo_doc . ';' . $razon_soc . ';' . $correo
                                        );

                                        //PARAMETROS STANDART
                                        $subject = "ASUNTO: SE INFORMA QUE SE REGISTRO LA PLANEACION No." . $id_plan_comisiones . " - " . $id_vigencia;
                                        $currentUri = '';

                                        $adjunto = true;
                                        $progress_key = $request['comando'] . $request['username'];

                                        $entidad_cliente = $entidadCliente;
                                        $entidad_nombre = $entidadNombre;
                                        $addAddress = true;


                                        $uploadDir = sfConfig::get("sf_upload_dir");

                                        $ruta = $uploadDir . '/adj_com_plan_comisiones/';
                                        $array_adjuntos = array(
                                            $nombre_reporte => $nombre_reporte
                                        );

                                        $this->logMessage("Subject: " . $subject);
                                        CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                    }
                                }



                                $this->logMessage("FIN Envio correo");

                                //construir observacion
                                $observacion_log = "'Planeación de comisión cerrado del asunto: " . $subject . "'";

                                /*
                                 * registro de consulta en tabla de log
                                 */
                                $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);
                            }
                        }
                    }

                    break;
                //3-Aprobado
                case 3:
                    //$id_supervisor = $request['id_supervisor'];
                    $id_supervisor = $usuario;
                    //actualizar como autorizado
                    $sql = <<<EOD
update com_plan_comisiones 
set aprobado = 1,
fecha_aprobado = SYSDATE,
observacion_aprobado = '$observaciones_estado',
id_usuario_aprobado = '$id_supervisor'                   
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                    $this->conn->execute($sql);

                    /**
                     * Envio correo al responsable,supervisor
                     */
                    $this->logMessage("Envio correo al responsable,supervisor.");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
SELECT
placom.id_plan_comisiones,
placom.vigencia,
placom.descomi as prefijo,
'$correoEnvio' as email_envio,
'Observacion: '||placom.observacion_aprobado as mensaje_extra,
'' as mensaje_firma,
'Se realiza la autorización de la planeación de comisión No.'|| placom.id_plan_comisiones ||' - ' || placom.vigencia || '; ' || placom.descomi || ', verificar en control de comisiones.' as mensaje,

--Datos correo responsable
nvl(placom.num_doc_terlog,'') as num_doc,
nvl(placom.razon_soc_terlog,'') as razon_soc,
nvl(placom.correo,'') as correo,

--Datos correo supervisor
nvl(placom.num_doc_tersup,'') as num_doc_tersup,
nvl(placom.razon_soc_tersup,'') as razon_soc_tersup,
nvl(placom.correo_tersup,'') as correo_tersup
    
FROM com_plan_comisiones_v placom

where
placom.id_plan_comisiones = $id_plan_comisiones
and placom.vigencia = $id_vigencia 
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);

                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {

                        $report_params = $records[0];
                        $prefijo = $records[0]['prefijo'];
                        $mensaje_extra = $records[0]['mensaje_extra'];

                        //Ejemplo de la persona que se envia el correo: 
                        //123;1;pepito perez;correo@gmal.com
                        //DATOS RESPONSABLE
                        $num_doc = $records[0]['num_doc'];
                        $id_tipo_doc = 1;
                        $razon_soc = $records[0]['razon_soc'];
                        $correo = $records[0]['correo'];
                        $datos_usuario = array(
                            '0' => $num_doc . ';' . $id_tipo_doc . ';' . $razon_soc . ';' . $correo . ';' . $mensaje_extra
                        );
                        //DATOS SUPERVISOR
                        $num_doc_tersup = $records[0]['num_doc_tersup'];
                        $id_tipo_doc_tersup = 1;
                        $razon_soc_tersup = $records[0]['razon_soc_tersup'];
                        $correo_tersup = $records[0]['correo_tersup'];
                        $datos_usuario_tersup = array(
                            '0' => $num_doc_tersup . ';' . $id_tipo_doc_tersup . ';' . $razon_soc_tersup . ';' . $correo_tersup . ';' . $mensaje_extra,
                            '1' => '0;1;alexandra.moreno; alexandra.moreno@anm.gov.co' . ';' . $mensaje_extra
                        );
                        //PARAMETROS STANDART                 
                        $subject = "Autorizado - Planeacion de Comision por Supervisor: " . $num_doc_tersup . " No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                        $currentUri = '';
                        $ruta = '';
                        $adjunto = false;
                        $progress_key = $request['comando'] . $request['username'];
                        $array_adjuntos = array();
                        $entidad_cliente = $entidadCliente;
                        $entidad_nombre = $entidadNombre;
                        $addAddress = true;

                        $this->logMessage("Subject: " . $subject);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                    }

                    /**
                      1	CONSULTAR
                      2	ACTUALIZAR
                      3	ADICIONAR
                      4	ELIMINAR
                      5	ANULAR
                     */
                    $id_ope_bd = 2;

                    //construir observacion
                    $observacion_log = "'Planeación de comisión autorizado por proceso del asunto: " . $subject . "'";

                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);

                    break;
                //4-Autorizado
                case 4:

                    //$id_supervisor = $request['id_supervisor'];
                    $id_supervisor = $usuario;

                    //actualizar como autorizado
                    $sql = <<<EOD
update com_plan_comisiones 
set autorizado = 1,
fecha_autorizado = SYSDATE,
observacion_aut = '$observaciones_estado',
id_usuario_autorizado = '$id_supervisor'                   
where
id_plan_comisiones = $id_plan_comisiones
and vigencia = $id_vigencia 
and estado = 1
EOD;
                    $this->conn->execute($sql);

                    /**
                     * Envio correo al responsable,supervisor
                     */
                    $this->logMessage("Envio correo al responsable,supervisor.");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
SELECT
placom.id_plan_comisiones,
placom.vigencia,
placom.descomi as prefijo,
'$correoEnvio' as email_envio,
'Observacion: '||placom.observacion_aut as mensaje_extra,
'' as mensaje_firma,
'Se realiza la autorización de la planeación de comisión No.'|| placom.id_plan_comisiones ||' - ' || placom.vigencia || '; ' || placom.descomi || ', verificar en control de comisiones.' as mensaje,

--Datos correo responsable
nvl(placom.num_doc_terlog,'') as num_doc,
nvl(placom.razon_soc_terlog,'') as razon_soc,
nvl(placom.correo,'') as correo,

--Datos correo supervisor
nvl(placom.num_doc_tersup,'') as num_doc_tersup,
nvl(placom.razon_soc_tersup,'') as razon_soc_tersup,
nvl(placom.correo_tersup,'') as correo_tersup
    
FROM com_plan_comisiones_v placom

where
placom.id_plan_comisiones = $id_plan_comisiones
and placom.vigencia = $id_vigencia 
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);

                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {

                        $report_params = $records[0];
                        $prefijo = $records[0]['prefijo'];
                        $mensaje_extra = $records[0]['mensaje_extra'];
                        //Ejemplo de la persona que se envia el correo: 
                        //123;1;pepito perez;correo@gmal.com
                        //DATOS RESPONSABLE
                        $num_doc = $records[0]['num_doc'];
                        $id_tipo_doc = 1;
                        $razon_soc = $records[0]['razon_soc'];
                        $correo = $records[0]['correo'];
                        $datos_usuario = array(
                            '0' => $num_doc . ';' . $id_tipo_doc . ';' . $razon_soc . ';' . $correo . ';' . $mensaje_extra
                        );
                        //DATOS SUPERVISOR
                        $num_doc_tersup = $records[0]['num_doc_tersup'];
                        $id_tipo_doc_tersup = 1;
                        $razon_soc_tersup = $records[0]['razon_soc_tersup'];
                        $correo_tersup = $records[0]['correo_tersup'];
                        $datos_usuario_tersup = array(
                            '0' => $num_doc_tersup . ';' . $id_tipo_doc_tersup . ';' . $razon_soc_tersup . ';' . $correo_tersup . ';' . $mensaje_extra,
                            '1' => '0;1;alexandra.moreno; alexandra.moreno@anm.gov.co' . ';' . $mensaje_extra
                        );
                        //PARAMETROS STANDART                 
                        $subject = "Autorizado - Planeacion de Comision por VAF: " . $num_doc_tersup . " No." . $id_plan_comisiones . " - " . $id_vigencia . "; " . $prefijo;
                        $currentUri = '';
                        $ruta = '';
                        $adjunto = false;
                        $progress_key = $request['comando'] . $request['username'];
                        $array_adjuntos = array();
                        $entidad_cliente = $entidadCliente;
                        $entidad_nombre = $entidadNombre;
                        $addAddress = true;

                        $this->logMessage("Subject: " . $subject);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario_tersup, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                    }

                    /**
                      1	CONSULTAR
                      2	ACTUALIZAR
                      3	ADICIONAR
                      4	ELIMINAR
                      5	ANULAR
                     */
                    $id_ope_bd = 2;

                    //construir observacion
                    $observacion_log = "'Planeación de comisión autorizado por proceso del asunto: " . $subject . "'";

                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $username, $comando, $observacion_log);

                    break;

                default:
                    break;
            }

            /*
             * COMMIT DE TODAS LAS TRANSACCIONES
             */
            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[plan_regis_planea_comis] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[plan_regis_planea_comis] ERROR!");
                $this->logMessage($mensaje);
            }
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();

            $this->status = 1;
            $this->mensajeError = "[plan_regis_planea_comis] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[plan_regis_planea_comis] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

}
