<?php

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

    protected $table_names = array(
        'COM_CUMPLIDO_V',
        'COM_PAGO_EGRESO',
        'COM_CUENTA_V',
        'COM_RESOLUCION',
        'COM_COMISION',
        'PROYECTOS',
        'COM_TERCERO',
        'TIPOS_COMISION'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'COM_PAGO_EGRESO' =>
        array(
            'id_pago_egreso' => 'COM_CUMPLIDO_V'
        ),
        'COM_CUENTA_V' =>
        array(
            'id_cuenta' => 'COM_PAGO_EGRESO'
        )
        , 'COM_RESOLUCION' =>
        array(
            'id_resolucion' => 'COM_CUENTA_V'
        ),
        'COM_COMISION' =>
        array(
            'id_comision' => 'COM_RESOLUCION'
        ),
        'PROYECTOS' =>
        array(
            'id_proyecto-id' => 'COM_COMISION'
        ),
        'TIPOS_COMISION' =>
        array(
            'id_tipo_comision' => 'COM_COMISION'
        ),
        'COM_TERCERO' =>
        array(
            'id_tercero' => 'COM_CUENTA_V'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'COM_CUMPLIDO_V' =>
        array(
            'id_cumplido' => 'id_cumplido',
            'id_pago_egreso' => 'id_pago_egreso',
            'id_anhos' => 'id_anhos',
            'fecha_cumplido' => 'fecha_cumplido',
            'fecha_inicio' => 'fecha_inicio',
            'fecha_fin' => 'fecha_fin',
            'dias_cumplido' => 'dias_cumplido',
            'observaciones' => 'observaciones',
            'id_mae_ter' => 'id_mae_ter',
            'num_doc_jefe' => 'num_doc_jefe',
            'razon_soc_jefe' => 'razon_soc_jefe'
        ),
        'COM_PAGO_EGRESO' =>
        array(
            'id_cuenta' => 'id_cuenta',
            'no_pago' => 'no_pago',
            'fecha_pago' => 'fecha_pago',
            'valor_neto' => 'valor_neto',
        ),
        'COM_CUENTA_V' =>
        array(
            'id_resolucion' => 'id_resolucion',
            'no_cuenta' => 'no_cuenta',
            'fecha_cuenta' => 'fecha_cuenta',
            'id_tercero' => 'id_tercero',
            'valor' => 'valor'
        ),
        'COM_RESOLUCION' =>
        array(
            'id_comision' => 'id_comision',
            'no_resolucion' => 'no_resolucion',
            'fecha_resolucion' => 'fecha_resolucion',
            'id_anhos' => 'id_anhos_resol',
            'estado' => 'estado_resol'
        ),
        'COM_COMISION' =>
        array(
            'id_proyecto' => 'id_proyecto',
            'no_comision' => 'no_comision',
            'fecha_solicitud' => 'fecha_solicitud',
            'objeto' => 'objeto',
            'agenda' => 'agenda',
            'fecha_inicio' => 'fecha_inicio_comi',
            'fecha_fin' => 'fecha_fin_comi',
        ),
        'PROYECTOS' =>
        array(
            'descripcion' => 'descripcion_cm',
            'codigo' => 'codigo_cm'
        ),
        'COM_TERCERO' =>
        array(
            'num_doc' => 'num_doc',
            'nombre' => 'nombre'
        )
    ); //por cada tabla especificar los campos del select
    protected $fields_orderBy = array(
        'id_anhos', 'codigo_cm', 'no_pago', 'fecha_cumplido'
    ); //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(
        'COM_CUMPLIDO_V' =>
        array(
            'id_cumplido,a' => array('!=' => array(-1)),
            'id_cumplido,b' => array('=' => array('id_cumplido')),
            'id_pago_egreso' => array('=' => array('id_pago_egreso')),
            'fecha_cumplido' => array('BETWEENFECHA' => array('fecha_ini', 'fecha_fin')),
            'id_anhos' => array('=' => array('id_anhos')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        ),
        'COM_CUENTA_V' =>
        array(
            'id_tercero' => array('=' => array('id_tercero')),
        ),
        'COM_PAGO_EGRESO' =>
        array(
            'no_pago' => array('=' => array('no_pago')),
        ),
        'COM_RESOLUCION' =>
        array(
            'no_resolucion' => array('=' => array('no_resolucion')),
        ),
        'COM_COMISION' =>
        array(
            'id_proyecto' => array('=' => array('id_proyecto')),
            'no_comision' => array('=' => array('no_comision'))
        )
    ); //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_cumplido'; //identificador de la tabla
    protected $id_names = array('id_cumplido'); //llave primaria
    protected $field_names = array('id_pago_egreso', 'id_anhos', 'fecha_cumplido', 'fecha_inicio', 'fecha_fin', 'dias_cumplido', 'observaciones', 'id_mae_ter'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'COM_CUMPLIDO'; //tabla en la cual se aplican los cambios 
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_cumplido'; //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
         */
        //Variables envio email
        //
        //Mensaje
        if (!isset($request["mensaje"])) {
            $request["mensaje"] = "Alarma de Registro de Cumplido";
        }

        //Email Envio
        if (!isset($request["email_envio"])) {
            $request["email_envio"] = "viaticoscolciencias@colciencias.gov.co";
        }

        //Email Para
        if (!isset($request["email"])) {
            $request["email"] = $request["email_envio"];
        } else {
            if ($request["email"] == null || $request["email"] == '' || $request["email"] == 'null') {
                $request["email"] = $request["email_envio"];
            }
        }


        if (!isset($request['progress_key'])) {
            $request['progress_key'] = 'progress_key';
        }

        if (!isset($request['username'])) {
            $request['username'] = 'sofhouse';
        }

        if (!isset($request['ruta'])) {
            $ruta = '';
        }

        if (!isset($request['array_adjuntos'])) {
            $array_adjuntos = '';
        }

        if (!isset($request['progress_key'])) {
            $progress_key = '';
        }
        //accion add
        if ($Action == "ADD") {


            $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
            $this->conn->beginTransaction();
            try {

                $id_pago_egreso = $list_data_post[0]['id_pago_egreso'];
                $id_anhos = $list_data_post[0]['id_anhos'];
                $id_cumplido = $list_data_post[0]['id_cumplido'];
                $dias_cumplido = $list_data_post[0]['dias_cumplido'];
                $fecha_gasto = $list_data_post[0]['fecha_cumplido'];

                $sql = <<<EOD
select tab0.*,tab8.tarifa,tab7.id_mae_ter,tab7.RAZON_SOC,tab3.num_doc,tab3.id_tercero,tab3.num_doc,tab3.id_tipo_doc,tab3.nombre,tab3.email,
tab6.id_elementos_gasto,tab0.fecha_pago,tab9.id_proyecto,proy.DESCRIPCION as caja_menor,
tab9.NO_COMISION,tab9.FECHA_INICIO,destino,cco.valor_gastos

from com_pago_egreso tab0
left join com_cuenta tab1 ON tab1.id_cuenta = tab0.id_cuenta
left join com_resolucion tab2 ON tab2.id_resolucion = tab1.id_resolucion
left join com_tercero tab3 ON tab3.id_tercero = tab1.id_tercero
left join com_comisionado_obj tab4 ON tab4.id_comision = tab2.id_comision and tab4.id_tercero = tab3.id_tercero
join objetos_gasto tab5 ON tab5.id = tab4.id_obj_gasto and tab5.viatico = 1
join pr_elementos_gasto tab6 ON tab6.id_objeto_gasto = tab5.id and tab6.viatico =  1
left join interceros tab7 ON to_char(tab7.num_doc) = to_char(tab3.num_doc)                        
left join com_comisionado tab8 ON tab8.id_comision = tab2.id_comision and tab8.id_tercero = tab3.id_tercero 
left join com_comision tab9 on tab9.id_comision=tab2.id_comision 
left join proyectos proy on proy.ID=tab9.ID_PROYECTO 
left join (select id_comision,id_tercero,munini.MUNICIPIO|| ' - ' ||munfin.MUNICIPIO as destino,id_destino,id_tipo_transporte,observaciones from com_destino cd  
left join municipios munini on munini.codmun=cd.destino_ini 
left join municipios munfin on munfin.CODMUN=cd.DESTINO_FIN)cd on cd.id_comision=tab2.id_comision and cd.id_tercero=tab8.id_tercero
left join (select id_tercero,id_comision,sum(valor) as valor_gastos from com_comisionado_obj group by id_comision,id_tercero)cco on cco.id_tercero=tab3.ID_TERCERO and cco.id_comision=tab9.ID_COMISION

where tab0.id_pago_egreso = $id_pago_egreso
EOD;

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

                $tarifa = $records[0]['tarifa'];
                $id_mae_ter = $records[0]['id_mae_ter'];
                $nombre_tercero=$records[0]['RAZON_SOC'];
                $no_documento = $records[0]['num_doc'];
                $id_elementos_gasto = $records[0]['id_elementos_gasto'];
                $fecha_pago=$records[0]['fecha_pago'];
                $caja_menor=$records[0]['caja_menor'];
                $no_comision=$records[0]['no_comision'];
                $fecha_comision=$records[0]['fecha_solicitud'];
                $valor_pago=$records[0]['valor_neto'];
                $destino=$records[0]['destino'];
                $gastos=$records[0]['valor_gastos'];

                $valor = $dias_cumplido * $tarifa;
                $valor = round($valor);
                $observaciones = "GASTO CORRESPONDIENTE A VIATICOS";
                
                
                $id_tercero = $correos['id_tercero'];
                $documento = $correos['num_doc'];
                $tipo_doc = $correos['id_tipo_doc'];
                $nombre = $correos['nombre'];
                $email = $correos['email'];
                //$rol = $correos['rol'];


                $parametros = $documento . ";$tipo_doc;" . $email . ";" . $nombre . ";Envio notificacion";

                $datos_usuario = array();

                if ($parametros != "") {
                    $datos_usuario = explode('/', $parametros);
                }


                if(count($record)>0){

                    $sql = <<<EOD
                INSERT INTO COM_REGISTRO_GASTO (ID_PAGO_EGRESO,ID_ANHOS,ID_ELEMENTOS_GASTO,ID_MAE_TER,NO_DOCUMENTO,FECHA_GASTO,VR_BRUTO,VR_IVA,VR_RETENCION,
                            VR_NETO,OBSERVACIONES)
                   VALUES($id_pago_egreso,$id_anhos,$id_elementos_gasto,$id_mae_ter,$no_documento,to_date('$fecha_gasto','YYYY-MM-DD'),$valor,0,0,$valor
                       ,'$observaciones')
EOD;

                //20170614  se omite la creacion de registros de gastos cuando se realiza el cumplido de l acomision
                //ticket 6489
                //$this->conn->execute($sql);

                    
               $this->conn->commit();
                   
            }
                                
            } catch (Exception $e) {

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

        //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") {
            
        }

        //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
         */


        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

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

        $id_cumplido = $request['id_cumplido'];

        $sql = <<<EOD
select id_pago_egreso from com_cumplido where id_cumplido = $id_cumplido
EOD;

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

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


        $sql = <<<EOD
SELECT count(tab0.id_registro_gasto) cantidad

from com_registro_gasto tab0
join pr_elementos_gasto tab1 ON tab1.id_elementos_gasto = tab0.id_elementos_gasto
where tab0.id_pago_egreso = $id_pago_egreso
EOD;

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

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

        if ($cantidad > 0) {

            $errors['mensaje'] = "Ya se han registrado gastos para esta comision, no se puede eliminar.";
            $errors['servicio'] = "cumplido";
        }


        $sql = <<<EOD
SELECT count(tab0.id_radicado) cantidad

from com_radicado tab0
where tab0.id_pago_egreso = $id_pago_egreso
EOD;

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

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

        if ($cantidad > 0) {

            $errors['mensaje'] = "Ya se ha registrado radicado para esta comision, no se puede eliminar.";
            $errors['servicio'] = "cumplido";
        }

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

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

        $id_cumplido = $request['id_cumplido'];

        $sql = <<<EOD
select id_pago_egreso from com_cumplido where id_cumplido = $id_cumplido
EOD;

        $records = CN_TABLE::executeSQL($sql);
        $id_pago_egreso = $records[0]['id_pago_egreso'];


        $sql = <<<EOD
SELECT count(tab0.id_radicado) cantidad

from com_radicado tab0
where tab0.id_pago_egreso = $id_pago_egreso
EOD;

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

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

        if ($cantidad > 0) {

            $errors['mensaje'] = "Ya se ha registrado radicado para esta comision, no se puede editar.";
            $errors['servicio'] = "registrado_gasto";
        }

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }
    
    public static function envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body) {

        
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a Evio de correo - " . $list_data_post);
        
        
        $ipServidorCorreo = "chiminigagua.colciencias.local";


        /**
         * Clase de log
         */
        /**
         * ipServidorCorreo
         */
        //$ipServidorCorreo = $report_params["ipServidorCorreo"];


        /**
         * Variables configuración
         */
        //;Indica la entidad cliente (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
        $entidad_cliente = 7;
        $entidad_nombre = "Sofhouse";
        //;Correo Envio
        $correoEnvio = "lavila@sofhouse.net";
        //;ip Servidor Correo
        $ipServidorCorreo = "correo.sofhouse.net";
        //;telling the class to use SMTP tsl, ssl o vacia
        $SMTPSecure = "tls";
        //;enable SMTP authentication
        $SMTPAuth = false;
        //;set the SMTP port for the GMAIL server
        $port = 25;
        //;SMTP account username
        $username = "nomina";
        //;SMTP account password
        $password = "Nominaanm";
        //
        $i = 1;
        //$ini_array = parse_ini_file("app_config.ini");
        //$entidad_nombre = $ini_array['entidad_nombre'];
        //$ipServidorCorreo = $ini_array['ipServidorCorreo'];
        //$SMTPSecure = $ini_array['SMTPSecure'];
        //$SMTPAuth = $ini_array['SMTPAuth'];
        //$port = $ini_array['port'];
        //$username = $ini_array['username'];
        //$password = $ini_array['password'];

        /**
         * PHPMailer
         */
        // Instanciar PHPMailer una primera Vez
        $mail = new PHPMailer(); // defaults to using php "mail()"


        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->SMTPSecure = $SMTPSecure;
        $mail->Host = $ipServidorCorreo;      // SMTP server
        //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
        $mail->SMTPAuth = $SMTPAuth;                  // enable SMTP authentication
        $mail->Port = $port;                    // set the SMTP port for the GMAIL server
        $mail->Username = $username;              // SMTP account username
        $mail->Password = $password;           // SMTP account password
        $mail->SetFrom($report_params["email_envio"], utf8_decode($entidad_nombre));
        $mail->AddReplyTo($report_params["email_envio"], utf8_decode($entidad_nombre));
        /*
         * INCI
         */
//        $mail->IsSMTP(); // telling the class to use SMTP
//        $mail->SMTPSecure = "ssl";
//        $mail->Host = $ipServidorCorreo;      // SMTP server
        //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
//        $mail->SMTPAuth = true;                  // enable SMTP authentication
//        $mail->Port = 465;                    // set the SMTP port for the GMAIL server
//        $mail->Username = "inci";              // SMTP account username
//        $mail->Password = "Sistemas";           // SMTP account password
//        $mail->SetFrom($report_params["email_envio"], utf8_decode('Contratación Sofhouse'));
//        //$mail->AddReplyTo($report_params["email_envio"], utf8_decode('Nómina INCI'));
//        $mail->AddAddress($report_params["email_envio"], utf8_decode('Contratación Sofhouse'));


        /*
         * ANM
         */
//            $mail->IsSMTP(); // telling the class to use SMTP
//            $mail->SMTPSecure = "tls";
//            $mail->Host = $ipServidorCorreo;      // SMTP server
//            //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
//            // 1 = errors and messages
//            // 2 = messages only
//            $mail->SMTPAuth = true;                  // enable SMTP authentication
//            $mail->Port = 25;                    // set the SMTP port for the GMAIL server
//            $mail->Username = "nomina";              // SMTP account username
//            $mail->Password = "Nominaanm";           // SMTP account password
//            $mail->SetFrom($report_params["email_envio"], 'Nómina ANM');
//            $mail->AddReplyTo($report_params["email_envio"], 'Nómina ANM');

        /*
         * SGC
         */
        /* $mail->IsSMTP(); // telling the class to use SMTP
          $mail->SMTPSecure = "tls";
          $mail->Host = "172.25.1.3";      // SMTP server
          $mail->SMTPDebug  = false;                     // enables SMTP debug information (for testing)
          // 1 = errors and messages
          // 2 = messages only
          $mail->SMTPAuth = false;                  // enable SMTP authentication
          $mail->Port = 587;                    // set the SMTP port for the GMAIL server
          $mail->Username = "websafi";              // SMTP account username
          $mail->Password = "wsaf0SGC$";           // SMTP account password
          $mail->SetFrom($report_params["email_envio"], utf8_decode('Contratación Websafi'));
         */
        //CORREGIR
        //$mail->AddReplyTo("alexia.velasquez@sofhouse.net", 'Contratación ANM');

        /*
         * COLCIENCIAS
         */
        /*$mail->IsSMTP(); // telling the class to use SMTP
        $mail->SMTPSecure = "";
        $mail->Host = $ipServidorCorreo;      // SMTP server
//            $mail->Host = "chiminigagua.colciencias.local";      // SMTP server
        //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
        $mail->SMTPAuth = false;                  // enable SMTP authentication
        $mail->Port = 25;                    // set the SMTP port for the GMAIL server
        $mail->Username = "safiweb";              // SMTP account username
        $mail->Password = "OSI%safi28";           // SMTP account password
        $mail->SetFrom($report_params["email_envio"], utf8_decode('Comisiones COL'));

*/

        $mail->Subject = $subject;

        /**
         * Recorre usuarios para envio de correo
         */
        $i_porcentaje = 1;
        $cantidad_array = count($datos_usuario);

        // Antes de inicar el proceso largo
        $brecha = 1;
        if ($cantidad_array > 100)
            $brecha = $cantidad_array - (0.99 * $cantidad_array);

        foreach ($datos_usuario as $value) {


//            // Guardar un valor en el proceso largo
//            if ($i_porcentaje % $brecha == 0) {
//                MemcacheHandler::getInstance()->set($progress_key, round(($i_porcentaje / $cantidad_array) * 100, 0));
//            }



            $datos = explode(';', $value);

            //Datos del funcionario para el envio del correo
            $report_params["num_doc"] = $datos[0];
            $report_params["id_tipo_doc"] = $datos[1];
            //$report_params["email"] = $datos[2];
            $report_params["email"] = "dortega@sofhouse.net";
            $nombre_completo = $report_params["nombre_completo"] = $datos[3];

            //mensaje_extra
            if (isset($report_params["mensaje_extra"])) {
                $report_params["mensaje_extra"] = "<br/><br/>" . $datos[4];
            }

            //arrayadjuntos
            if (isset($report_params["arrayadjuntos"])) {
                $array_adjuntos = array();
                $cant_adjuntos = $report_params["arrayadjuntos"];
                for ($i = 1; $i <= $cant_adjuntos; $i++) {
                    $datos_adj = explode('+', $datos[3 + $i]);
                    $key_datos = $datos_adj[1];
                    $array_adjuntos[$key_datos] = str_replace("+", "/", $datos[3 + $i]);
                }
            }



            /*
             * Operacion con el archivo
             */
            if (true) {

                /*
                 * $mail->AddReplyTo($report_params["email"], $report_params["username"]);
                 */

                // Agregar El correo
                // Agregar el Attachment
                // Cambiar el body
                $address = $report_params["email"];
                //$mail->AddAddress($address, $report_params["num_doc"]);
                //$mail->AddAddress("viaticoscolciencias@colciencias.gov.co", "Seguimiento Comisiones");
                $mail->AddAddress("dortega@sofhouse.net", "Seguimiento");
                /**
                 * Reemplazo de caracteres
                 */
                $subject = str_replace("ó", "&oacute;", $subject);
                $report_params["mensaje_extra"] = "";
                $report_params["mensaje_extra"] = str_replace("ó", "&oacute;", $report_params["mensaje_extra"]);
                $report_params["mensaje_extra"] = str_replace(",", "<br/>", $report_params["mensaje_extra"]);
                $report_params["mensaje_extra"] = str_replace("null", " ", $report_params["mensaje_extra"]);


                //$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; // optional, comment out and test

                $body = str_replace("á", "&aacute;", $body);
                $body = str_replace("é", "&eacute;", $body);
                $body = str_replace("í", "&iacute;", $body);
                $body = str_replace("ó", "&oacute;", $body);
                $body = str_replace("ú", "&uacute;", $body);
                $body = str_replace("ñ", "&ntilde;", $body);
                $mail->MsgHTML($body);
                /**
                 * Si el envio es con adjunto de jasper
                 */
                if ($adjunto) {
//                    $mail->AddAttachment("$ruta/nivel/2- Competencias comunes.docx", "ManualNomina.pdf");      // attachment
//                    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
                    foreach ($array_adjuntos as $key => $value) {
                        $mail->AddAttachment("$ruta/$value", $key);      // attachment                        
                    }
                }

                /*
                 *  Enviar el correo
                 */
                $logger->info("Previo Intento Evio de correo");
                if (!$mail->Send()) {
                    echo "Mailer Error: " . $mail->ErrorInfo;
                } else {
                    echo "Message sent! ";
                }

                /*
                 * Limpiar datos del correo
                 */
                $mail->ClearAllRecipients();
                $mail->ClearAttachments();
            } else {
                header('Content-type: application/pdf');
                header('Content-Disposition: attachment; filename="ManualNomina.pdf"');
                readfile("$ruta/Comprobante$i.pdf");
            }

            //Contadores
            $i = $i + 1;
            $i_porcentaje = $i_porcentaje + 1;
//                echo 'Correo enviado por el usuario ' . $report_params["username"] . ' al funcionario ' .
//                $report_params["nombre_completo"] . ' al correo ' . $report_params["email"];
//                echo '<br/>';
        }

        //Actualizar el Memcache
        //MemcacheHandler::getInstance()->set($progress_key, 99);
    }

}
