<?php

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

    protected $table_names = array(
        'PR_RESOLUCIONES_V'
    ); //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(
        'PR_RESOLUCIONES_V' =>
        array(
            'id_resoluciones' => 'id_resoluciones',
            'id_resol_orig' => 'id_resol_orig',
            'resolucion' => 'resolucion',
            'firma' => 'firma',
            'id_vigencia' => 'id_vigencia',
            'vigencia' => 'vigencia',
            'id_tipo_resol' => 'id_tipo_resol',
            'tipo_resol' => 'tipo_resol',
            'modificacion' => 'modificacion',
            'aclaracion' => 'aclaracion',
            'fecha_resol' => 'fecha_resol',
            'usuariolog' => 'usuariolog',
            'fechalog' => 'fechalog',
            'tipo_comisionado' => 'tipo_comisionado',
            'edicion_pdf' => 'edicion_pdf',
            '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',
            'estado_general' => 'estado_general',
            'desc_estado_general' => 'desc_estado_general',
            'fecha_estado_general' => 'fecha_estado_general',
            'usuario_estado_general' => 'usuario_estado_general',
            'obs_estado_general' => 'obs_estado_general',
            'num_doc_terlog' => 'num_doc_terlog',
            'razon_soc_terlog' => 'razon_soc_terlog',
            'num_doc_terest' => 'num_doc_terest',
            'razon_soc_terest' => 'razon_soc_terest',
            'num_doc_terfir' => 'num_doc_terfir',
            'razon_soc_terfir' => 'razon_soc_terfir',
            'num_doc_teraut' => 'num_doc_teraut',
            'razon_soc_teraut' => 'razon_soc_teraut',
            'id_cdp_resol' => 'id_cdp_resol',
            'resolucion_orig' => 'resolucion_orig',
            'adjunto_firmado_digital' => 'adjunto_firmado_digital',
            'tipcomi' => 'tipcomi',
            'fecha_ini_prorr' => 'fecha_ini_prorr',
            'fecha_fin_prorr' => 'fecha_fin_prorr',
            'codobj' => 'codobj',
            'valor_adicion' => 'valor_adicion',
        ),
    ); //por cada tabla especificar los campos del select
    protected $fields_orderBy = array(
        'vigencia', 'fecha_resol', 'resolucion'
    ); //campos para el ordenamiento de la consulta
    /*
     * 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
     *
     * rownum,start - rownum,end / estos campos para uso del Grid live GWT, numero fijo de filas de consulta
     */
    protected $table_field_conditions = array(
        'PR_RESOLUCIONES_V' =>
        array(
            'id_resoluciones,a' => array('!=' => array(-1)),
            'id_resoluciones,b' => array('=' => array('id_resoluciones')),
            'resolucion' => array('=' => array('resolucion')),
            'resolucion_orig' => array('=' => array('resolucion_orig')),
            'fechalog' => array('BETWEENFECHA' => array('fecha_ini', 'fecha_fin')),
            'vigencia' => array('=' => array('vigencia')),
            'usuariolog' => array('=' => array('id_mae_ter')),
            'estado_general' => array('IN' => array('estado_general')),
            'id_tipo_resol' => array('IN' => array('id_tipo_resol_in')),
            'num_doc_terlog' => array('=' => array('num_doc_terlog')),
            '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
    /*
     * Variable manejo de log
     */
    //true - consulta de menu administracion
    protected $is_admin = true;
    //si es servicio para filtro agregar campo
//    protected $filtro = 'Perfiles';
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;
    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_resoluciones'; //identificador de la tabla
    protected $id_names = array('id_resoluciones'); //llave primaria
    protected $field_names = array('id_resol_orig', 'resolucion', 'firma', 'id_vigencia', 'vigencia', 'id_tipo_resol',
        'modificacion', 'aclaracion', 'fecha_resol', 'usuariolog', 'fechalog', 'tipcomi', 'fecha_ini_prorr',
        'fecha_fin_prorr', 'codobj', 'valor_adicion'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'PR_RESOLUCIONES'; //tabla en la cual se aplican los cambios 
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_resoluciones'; //identificador unico de la tabla

    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;
    }

    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") {
            //
            $request['fechalog'] = CN_TABLE::fechaSistema();
            $request['usuariolog'] = $request['id_username'];
            //20200713 Omitimos numeracion de resolucion al guardar ticket 17185
            //$request['fecha_resol'] = CN_TABLE::fechaSistema();
            //OBETNEMOS LA VIGENCIA ACTUAL PARA EL REGISTRO A CREAR
            $sql = <<<EOD
select to_char(sysdate,'YYYY') as ID_ANHOS FROM DUAL
EOD;

            $records = CN_TABLE::executeSQL($sql);

            $id_anhos = $records[0]['id_anhos'];

            $request['id_vigencia'] = 1;
            $request['vigencia'] = $id_anhos;
            //OBTENEMOS EL CONSECUTIVO Y GENERAMOS EL NUMERO DE LA RESOLUCION
            $sql = <<<EOD
select * from pr_consecutivo_comis
EOD;
            $records = CN_TABLE::executeSQL($sql);

            $prefijo = $records[0]['prefijo_resol'];
            $consecutivo = $records[0]['consecutivo_resol'];
            $linea = "";
            $i = strlen($consecutivo);
            for (; $i < 4; $i++) {
                $linea .= "0";
            }
            $resolucion = $prefijo . " - " . $linea . "" . $consecutivo;
            //$request['resolucion'] = $resolucion;
            //Actualizamos el consecutivo
            $sql = <<<EOD
UPDATE pr_consecutivo_comis SET CONSECUTIVO_RESOL=($consecutivo + 1) WHERE ID_CONSECUTIVO_COMIS=1
EOD;
            //CN_TABLE::executeSQL($sql);
        }

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

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

        return $request;
    }

    protected function validateAdd(\sfWebRequest $request) {
        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */
        // 20240401 Validaion segun tipo
        // Anulación: Solo debe permitir un registro, a menos que el registrado se encuentre en estado rechazado
        // Modificación:  Solo una en estado borrador para poder registrar otra la anterior debe estar en estado rechazado o firmada digitalmente

        $tipo_resol = $request['id_tipo_resol'];
        $id_resol_orig = $request['id_resol_orig'];
        // Obtenemos datos resolucion origen
        $sql = <<<EOD
                select tab0.* 
                from pr_resol_comis tab0
                where tab0.id = $id_resol_orig 
EOD;
        $records = CN_TABLE::executeSQL($sql);
        $resolucion_orig = $records[0]['resolucion'];
        switch ($tipo_resol) {
            CASE 1://MODIFICACION
                $sql = <<<EOD
                select tab0.* 
                from pr_resoluciones tab0
                where tab0.id_tipo_resol = 1 and tab0.id_resol_orig = $id_resol_orig and tab0.estado <> 0 and tab0.firmado_digital = 0
EOD;
                $records = CN_TABLE::executeSQL($sql);
                if(count($records) > 0) {
                    $errors['mensaje'] = "Ya existe una resolucion de modificacion sin procesar, asociada a la resolucion $resolucion_orig.";
                    $errors['servicio'] = "pr_resoluciones";
                }
                Break;
            CASE 2: // ANULACION
                $sql = <<<EOD
                select tab0.* 
                from pr_resoluciones tab0
                where tab0.id_tipo_resol = 2 and tab0.id_resol_orig = $id_resol_orig and tab0.estado <> 0
EOD;
                $records = CN_TABLE::executeSQL($sql);
                if(count($records) > 0) {
                    $errors['mensaje'] = "Ya existe una resolucion de anulacion, asociada a la resolucion $resolucion_orig.";
                    $errors['servicio'] = "pr_resoluciones";
                }
                Break;
        }
        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    protected function validateRemove(\sfWebRequest $request) {
        //valor por defecto
        $errors = null;

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    protected function validateUpdate(\sfWebRequest $request) {
        //valor por defecto
        $errors = null;

        return $errors;
    }

    /**
     * Actualizar el estado de la Resolucion
     * tipo_boton
     * 0-Rechazado
     * 1-Pendiente
     * 2-Firmado
     * 3-Revisado/NA
     * 4-Autorizado
     * 
     * tipo_trans
     * 1-Ordenador Gasto
     * 2-Supervisor
     *
     * @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'];
            //$id_comisiones = $request['id_comisiones'];
            //$vigencia_comisiones = $request['vigencia_comisiones'];
            //$id_resol_comis = $request['id_resol_comis'];
            $id_resoluciones = $request['id_resoluciones'];
            /*
             * variables por defecto para el registro de log
             */
            $id_tabla = $id_resoluciones;

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

            /**
              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 PR_RESOLUCIONES 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;
                        }
                    }
                }
                $url_presup = "http://10.0.100.66/presupuesto/web/pr_resolucion_comis/";
                $int++;
            }


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

            if (isset($request['tipo_boton'])) {

                switch ($tipo_boton) {
                    //Rechazado
                    case 0:
                        // por defecto rechazo 1
                        $this->logMessage("Rechazar======================================================");
                        $nivel_rechazo = '1';
                        if (isset($request['nivel_rechazo'])) {
                            $nivel_rechazo = $request['nivel_rechazo'];
                        }
                        //actualizar como rechazado
                        $sql = <<<EOD
update pr_resoluciones 
set estado = 0,
fecha_estado = SYSDATE,
id_usuario_estado = '$id_usuario_estado',
observaciones_estado = '$observaciones_estado',
nivel_rechazo = $nivel_rechazo
where
id_resoluciones = $id_resoluciones                   
EOD;

                        //Consulta datos envio correo
                        //Sql
                        $this->conn->execute($sql);
                        /* $sql = <<<EOD
                          SELECT
                          placom.id_plan_comisiones,
                          placom.vigencia,
                          placom.id_comisiones,
                          placom.vigencia_comisiones,
                          placom.id_resol_comis,
                          --comis.descomi as prefijo,
                          '$correoEnvio' as email_envio,
                          'Observacion: '||placom.observaciones_estado as mensaje_extra,
                          '' as mensaje_firma,
                          'Se realiza el rechazo de la resolucion No. '|| placom.id_resol_comis ||' del plan de comisión No.'|| placom.id_comisiones ||' - ' || placom.vigencia_comisiones || '; ' || comis.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_terlog,'') 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_resol_comis_v placom

                          left join comisiones_v comis
                          on comis.id_comisiones = placom.id_comisiones
                          and comis.vigencia = placom.vigencia_comisiones

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

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

                          if (count($records) > 0) {

                          $report_params = $records[0];
                          $id_resol_comis = $records[0]['id_resol_comis'];

                          //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 = "Rechazo - Resolucion por Supervisor: " . $num_doc_tersup . " No." . $id_resol_comis . " - " . $vigencia_comisiones . "; ";
                          $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 = "'Reoslucion Modificacion Anulacion 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;
                    //2-Firmado
                    case 2:

                        //$id_supervisor = $request['id_supervisor'];
                        //Actualizacion 20190422 al firmar tambien se aprueba ya que el paso de aprobado se omite para que luego de firmado revisado 
                        //continue con el firmado digital
                        //actualizar como autorizado
                        $sql = <<<EOD
update pr_resoluciones 
set firmado = 1,
fecha_firmado = SYSDATE,
id_usuario_firmado = '$id_usuario_estado',
autorizado = 1,
fecha_autorizado = SYSDATE,
observacion_aut = 'Autorizado automaticamente al firmar',
id_usuario_autorizado = '$id_usuario_estado' 
where
id_resoluciones = $id_resoluciones                       
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.id_comisiones,
                          placom.vigencia_comisiones,
                          placom.id_resol_comis,
                          --comis.descomi as prefijo,
                          '$correoEnvio' as email_envio,
                          --'Observacion: '||placom.observacion_aut as mensaje_extra,
                          '' as mensaje_firma,
                          'Se realiza la Firma de la resolucion No. '|| placom.id_resol_comis ||' del plan de comisión No.'|| placom.id_comisiones ||' - ' || placom.vigencia_comisiones || '; ' || comis.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_terlog,'') 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_resol_comis_v placom

                          left join comisiones_v comis
                          on comis.id_comisiones = placom.id_comisiones
                          and comis.vigencia = placom.vigencia_comisiones

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

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

                          if (count($records) > 0) {

                          $report_params = $records[0];
                          $id_resol_comis = $records[0]['id_resol_comis'];

                          //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 = "Firmado - Resolucion por Supervisor: " . $num_doc_tersup . " No." . $id_resol_comis . " - " . $vigencia_comisiones . "; ";
                          $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 = "'Resolucion modificacion anulacion 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-Aprobado
                    case 4:
                        /*
                          //$id_supervisor = $request['id_supervisor'];

                          //actualizar como autorizado
                          $sql = <<<EOD
                          update com_plan_resol_comis
                          set autorizado = 1,
                          fecha_autorizado = SYSDATE,
                          observacion_aut = '$observaciones_estado',
                          id_usuario_autorizado = '$id_usuario_estado'
                          where
                          id_plan_comisiones = $id_plan_comisiones
                          and vigencia = $id_vigencia
                          and id_comisiones = $id_comisiones
                          and vigencia_comisiones = $vigencia_comisiones
                          and id_resol_comis = $id_resol_comis
                          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.id_comisiones,
                          placom.vigencia_comisiones,
                          placom.id_resol_comis,
                          --comis.descomi as prefijo,
                          '$correoEnvio' as email_envio,
                          'Observacion: '||placom.observacion_aut as mensaje_extra,
                          '' as mensaje_firma,
                          'Se realiza la aprobación de la resolucion No. '|| placom.id_resol_comis ||' del plan de comisión No.'|| placom.id_comisiones ||' - ' || placom.vigencia_comisiones || '; ' || comis.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_terlog,'') 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_resol_comis_v placom

                          left join comisiones_v comis
                          on comis.id_comisiones = placom.id_comisiones
                          and comis.vigencia = placom.vigencia_comisiones

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

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

                          if (count($records) > 0) {

                          $report_params = $records[0];
                          $id_resol_comis = $records[0]['id_resol_comis'];

                          //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 = "Aprobado - Resolucion por Supervisor: " . $num_doc_tersup . " No." . $id_resol_comis . " - " . $vigencia_comisiones . "; ";
                          $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 = "'Programación de comision 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;
                }
            }


            /**
             * Actualiza campos de resolucion si estan - 20201119
             */
            if (isset($request['firma']) && isset($request['id_tipo_resol']) && isset($request['modificacion']) && isset($request['aclaracion'])) {

                $firma = $request['firma'];
                $id_tipo_resol = $request['id_tipo_resol'];
                $modificacion = $request['modificacion'];
                $aclaracion = $request['aclaracion'];
                $tipcomi = $request['tipcomi'];

                //actualizar como autorizado
                $sql = <<<EOD
update pr_resoluciones set  firma = $firma, id_tipo_resol = $id_tipo_resol, 
modificacion = '$modificacion', aclaracion = '$aclaracion', tipcomi = '$tipcomi'
where
id_resoluciones = $id_resoluciones 
EOD;
                $this->conn->execute($sql);
            }

            /*
             * COMMIT DE TODAS LAS TRANSACCIONES
             */
            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[pr_resoluciones] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[pr_resoluciones] 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 = "[com_plan_aprob_plan_comis] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[pr_resoluciones] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

}
