<?php

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

    protected $table_names = array(
        'COM_PAGO_EGRESO',
        'COM_CUENTA_V',
        'COM_RESOLUCION',
        'COM_COMISION',
        'PROYECTOS',
        'COM_TERCERO',
        'TIPOS_COMISION',
        'COM_COMISIONADO'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        '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'
        ),
        'COM_COMISIONADO' =>
        array(
            'id_tercero' => 'COM_CUENTA_V',
            'id_comision' => 'COM_COMISION'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'COM_PAGO_EGRESO' =>
        array(
            'id_pago_egreso' => 'id_pago_egreso',
            'id_cuenta' => 'id_cuenta',
            'no_pago' => 'no_pago',
            'fecha_pago' => 'fecha_pago',
            'valor_neto' => 'valor_neto',
            'estado' => 'estado',
            'id_anhos' => 'id_anhos',
            'fecha_anulacion' => 'fecha_anulacion',
            'motivo_anulacion' => 'motivo_anulacion',
            'observaciones' => 'observaciones',
            'valor_retencion'=>'valor_retencion'
        ),
        '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(
            'no_comision' => 'no_comision',
            'fecha_solicitud' => 'fecha_solicitud',
            'id_proyecto' => 'id_proyecto',
            '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'
        ),
        'COM_COMISIONADO' =>
        array(
            'num_dias' => 'num_dias',
            'fecha_salida' => 'fecha_salida',
            'fecha_regreso' => 'fecha_regreso'
        )
    ); //por cada tabla especificar los campos del select
    protected $fields_orderBy = array(
        'id_anhos', 'codigo_cm', 'no_pago', 'fecha_pago'
    ); //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_PAGO_EGRESO' =>
        array(
            'id_pago_egreso,a' => array('!=' => array(-1)),
            'id_pago_egreso,b' => array('=' => array('id_pago_egreso')),
            'id_cuenta' => array('=' => array('id_cuenta')),
            'no_pago' => array('=' => array('no_pago')),
            'fecha_pago' => array('BETWEENFECHA' => array('fecha_ini', 'fecha_fin')),
            'estado' => array('=' => array('estado')),
            '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_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 SERVICIO DE SUMATORIA - SUM
     *
     */
    protected $summatory_data = array(
        'COM_PAGO_EGRESO' => array(
            'fields' => array(
                'nvl(valor_neto,0)#valor_neto'
            ),
            'labels' => array('descripcion_cm,Total'),
            'count' => 'id_pago_egreso'
        )
    ); //se especifica por tabla los campos de suma y condiciones de filtro


    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_pago_egreso'; //identificador de la tabla
    protected $id_names = array('id_pago_egreso'); //llave primaria
    protected $field_names = array('id_cuenta', 'no_pago', 'fecha_pago', 'estado', 'valor_neto', 'id_anhos', 'fecha_anulacion', 'motivo_anulacion', 'observaciones','valor_retencion'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'COM_PAGO_EGRESO'; //tabla en la cual se aplican los cambios 
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_pago_egreso'; //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") {
            //ALERTA DE PAGO
            //Recuperamos el ultimo pago agregado para el numero de cuenta
            $id_cuenta = $request['id_cuenta'];
            $sql = <<<EOD
            Select max(id_pago_egreso) as id_pago_egreso from COM_PAGO_EGRESO where id_cuenta=$id_cuenta 
EOD;
            $records = CN_TABLE::executeSQL($sql);
            
            $id_pago_egreso = $records[0]['id_pago_egreso'];

            $sql = <<<EOD
select tab0.*,tab8.tarifa,tab7.id_mae_ter,tab7.razon_soc,tab3.num_doc,tab3.id_tercero,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,to_char(tab9.FECHA_INICIO,'dd/mm/yyyy') as fecha_inicio,to_char(tab9.FECHA_FIN,'dd/mm/yyyy') as fecha_fin,destino,cco.valor_gastos,tab9.fecha_solicitud,nvl(imp.reteiva,0) as reteiva,nvl(imp.reteica,0) as reteica,
tab2.ID_RESOLUCION,tab2.NO_RESOLUCION,tab2.FECHA_RESOLUCION,tab3.tipter

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 tab0.id_comision,tab0.ID_TERCERO,
    case when count(tab0.municipio_ini)=1 then
          listagg(tab0.MUNICIPIO_INI||'-'||tab0.MUNICIPIO_FIN||'-'||tab0.MUNICIPIO_INI) within group( order by tab0.id_destino )
        else
        listagg(tab0.MUNICIPIO_INI||'-'||tab0.MUNICIPIO_FIN||' ') within group( order by tab0.id_destino ) end  AS DESTINO
        from COM_DESTINO_V tab0
        LEFT JOIN TRANSPORTES tab1 ON tab1.ID = tab0.ID_TIPO_TRANSPORTE
        group by tab0.id_comision,tab0.ID_TERCERO
    )cd ON cd.id_comision = tab8.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
left join(select 
id_comision,
ID_TERCERO,
SUM(RETEIVA) as RETEIVA,
SUM(RETEICA) as RETEICA
from
(SELECT 
tab0.id_comision,
tab0.ID_TERCERO,
case when id_ts_im=41 then sum(valor_imp) else 0 end as RETEIVA,
case when id_ts_im=42 then sum(valor_imp) else 0 end as RETEICA
FROM COM_COMISIONADO_IMP tab0
GROUP BY tab0.id_comision,
  tab0.ID_TERCERO,id_ts_im)tab0
group by id_comision,ID_TERCERO)IMP on imp.id_comision = tab8.id_comision and imp.id_tercero = tab8.id_tercero

where tab0.id_pago_egreso = $id_pago_egreso
EOD;

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

                $tipter=$records[0]['tipter'];
                $id_resolucion=$records[0]['id_resolucion'];
                $no_resolucion=$records[0]['no_resolucion'];
                $fecha_resolucion=$records[0]['fecha_resolucion'];
                $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'];
                $fecha_inicio=$records[0]['fecha_inicio'];
                $fecha_fin=$records[0]['fecha_fin'];
                $fecha_solicitud=$records[0]['fecha_solicitud'];
                $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'];
                $reteiva=$records[0]['reteiva'];
                $reteica=$records[0]['reteica'];

                
                $id_tercero = $records[0]['id_tercero'];
                $documento = $records[0]['num_doc'];
                $tipo_doc = $records[0]['id_tipo_doc'];
                $nombre = $records[0]['nombre'];
                $email = $records[0]['email'];
                //$rol = $correos['rol'];


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

                $datos_usuario = array();

                if ($parametros != "") {
                    $datos_usuario = explode('/', $parametros);
                }
            //20170531 PROCESO PARA ENVIO DE CORREO LUEGO DE REGISTRAR EL CUMPLIDO
                
                $subject = "Pago de Comision No. ".$no_comision;
                                
                                
                $mensaje = "Por medio de la presente se informa que la entrega del formato del cumplido de comisión vence el ".$fecha_maxima.".";
                                    
                                

                                //CUERPO DEL MENSAJE

                               // $body = "<html><body> </body></html>";
                                //Body
                //si es 01 funcionario o contratista
                if ($tipter=="01"){
                    $texto1="mediante Resolucion No <strong>$no_resolucion</strong> del <strong>$fecha_resolucion</strong>";
                    $texto2="Valor a reportar en cumplido de comision";
                } else {
                    $texto1="mediante Autorizaci&oacute;n Gastos de Desplazamiento No <strong>$no_comision</strong> del <strong>$fecha_solicitud</strong>";
                    $texto2="Valor a reportar en informe y gasto de desplazamiento";
                }
                //acomodamos texto segun las fechas de inicio y fin
                if ($fecha_inicio==$fecha_fin){
                    $texto3=" el d&iacute;as&nbsp;<strong>$fecha_inicio</strong>";
                } else {
                    $texto3=" entre los d&iacute;as&nbsp;<strong>$fecha_inicio</strong> y <strong>$fecha_fin</strong>";
                }
                //Incidente #9930, se agrega CAJA MENOR - 20180925
                $body = <<<EOD
<table width="571">
<tbody>
<tr style="height: 42px;">
<td style="height: 42px; text-align: center;" colspan="7" width="571">
<strong>DEPARTAMENTO ADMINISTRATIVO DE CIENCIA TECNOLOG&Iacute;A E INNOVACI&Oacute;N- COLCIENCIAS</strong></td>
</tr>
<tr style="height: 31px;">
<td style="height: 31px;" colspan="7" width="571">
<p>GRUPO FINANCIERO -VI&Aacute;TICOS</p>
</td>
</tr>
<tr style="height: 31px;">
<td style="height: 31px;" colspan="7" width="571">
<p><strong><em>NOTIFICACI&Oacute;N DE ABONO RECURSOS<br /> </em></strong></p>
</td>
</tr>
<tr style="height: 31px;">
<td style="height: 31px;" width="81">
<p><strong>NOMBRE: </strong></p>
</td>
<td style="height: 31px;" colspan="4" width="331">
<p><strong>$nombre</strong></p>
</td>
<td style="height: 31px;" width="81">&nbsp;</td>
<td style="height: 31px;" width="79">
<p>&nbsp;</p>
</td>
</tr>
<tr style="height: 121px;">
<td style="height: 847px;" colspan="7" rowspan="7" width="571">
<p>&nbsp;Con la presente me permito informarle que el d&iacute;a <strong>$fecha_pago,</strong> a trav&eacute;s de la CAJA MENOR 
    <strong>$caja_menor</strong>, 
        $texto1, 
        se abon&oacute; el valor total de <strong>$valor_pago</strong> correspondiente a la comisi&oacute;n por realizar $texto3 con destino <strong><u>$destino</u></strong></p>
<p>&nbsp;</p>
<p>&nbsp;<strong><u>CONSIGNACION DISCRIMINADA</u></strong></p>
<p>&nbsp;</p>
<p>Gastos de desplazamiento&nbsp;$gastos $texto2</p>
<p>Retenci&oacute;n ICA practicada&nbsp;&nbsp;&nbsp;&nbsp; $reteica</p>
<p>Rete IVA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; $reteiva</p>
<p>Total abonado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $valor_pago</p>
<p>&nbsp;<strong><u><br /></u></strong></p>
<p>Por tanto, le agradezco confirmar el abono de los recursos al correo electr&oacute;nico de donde se le envi&oacute; este mensaje.</p>
<p>&nbsp;</p>
<p><strong>NOTA: La legalizaci&oacute;n de las comisiones de servicios autorizadas y de los vi&aacute;ticos y gastos de desplazamiento generados en su cumplimiento deber&aacute; efectuarse dentro de los cinco (5) d&iacute;as siguientes a la fecha de su terminaci&oacute;n, sin perjuicio de&nbsp; las responsabilidades disciplinarias y fiscales a que haya lugar. (Art&iacute;culo d&eacute;cimo Resoluci&oacute;n 147 de 2014)</strong></p>
<p>&nbsp;</p>
<p>&nbsp;Si ya se Registr&oacute; la entrega del cumplido por favor hacer caso omiso a este mensaje</p>
<p>&nbsp;Atentamente,</p>
<p><strong>Patricia Guioth Martinez</strong><br />Responsable Caja Menor<br />Ext. 7606</p>
</td>
</tr>
</tbody>
</table>
EOD;
            $currentUri = "";


            $this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);                    
                                
            $logger->info("Tremino proceso envio");
            
        }

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

            $sql = <<<EOD
select to_char(sysdate,'YYYY') as ID_ANHOS FROM DUAL
EOD;

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

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

            $request['id_anhos'] = $id_anhos;

            $sql = <<<EOD
select consecutivo from com_consecutivo_pago where id_anhos = $id_anhos
EOD;
            $records = CN_TABLE::executeSQL($sql);
            
            if (count($records) > 0) {

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

                $request['no_pago'] = $consecutivo;

                $sql = <<<EOD
update com_consecutivo_pago set consecutivo =($consecutivo+1) where id_anhos = $id_anhos
EOD;
            }else{
               $consecutivo = 1;

                $request['no_pago'] = $consecutivo;

                $sql = <<<EOD
Insert into com_consecutivo_pago (ID_CONSECUTIVO_PAGO,ID_ANHOS,CONSECUTIVO) values (null,'$id_anhos',($consecutivo+1)) 
EOD;
            }
                        
            $request['estado'] = 1;


            CN_TABLE::executeSQL($sql);

/*            $sql = <<<EOD
select valor from com_cuenta_v where id_cuenta = $id_cuenta
EOD;//*/
            //20170606 se actualizo la consulta para traer tambien las retenciones
            $sql= <<<EOD
            SELECT valor,nvl(valor_imp,0) as valor_imp
FROM com_cuenta_v
JOIN com_resolucion cr
ON cr.id_resolucion=com_cuenta_v.id_resolucion
LEFT JOIN
  (SELECT id_comision,id_tercero,sum(valor_imp) as valor_imp FROM com_comisionado_imp group by id_comision,id_tercero)imp on imp.id_comision=cr.id_comision and imp.id_tercero=com_cuenta_v.ID_TERCERO
WHERE id_cuenta =$id_cuenta
EOD;
            $records = CN_TABLE::executeSQL($sql);

            $valor = $records[0]['valor'];
            $valor_imp=$records[0]['valor_imp'];
            //20170606 el valor del pago de egreso es igual al valor de la cuenta - las retenciones
            $request['valor_neto'] = $valor-$valor_imp;
            $request['valor_retencion'] = $valor_imp;
        }

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

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

        return $request;
    }

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

        $id_cuenta = $request['id_cuenta'];

        $sql = <<<EOD
select count(id_pago_egreso) cantidad from com_pago_egreso where id_cuenta = $id_cuenta and estado = 1
EOD;

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

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

        if ($cantidad > 0) {

            $errors['mensaje'] = "Ya existe un pago asociado a esta cuenta. Favor verificar";
            $errors['servicio'] = "pago_egreso";
        }


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


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

        $id_pago_egreso = $request['id_pago_egreso'];

        $sql = <<<EOD
select count(id_cumplido) cantidad from com_cumplido where 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 cumplido para este pago, no se puede anular.";
            $errors['servicio'] = "cuenta";
        }

        /*
         *  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";
        $ipServidorCorreo = "kankuama.colciencias.local";


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



        /**
         * Variables
         */
        $i = 0;




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


        /*
         * Sofhouse
         */
         /*$mail->IsSMTP(); // telling the class to use SMTP
          $mail->SMTPSecure = "ssl";
          $mail->SetFrom($report_params["email_envio"], 'Sofhouse');
          $mail->AddReplyTo($report_params["email_envio"], 'Sofhouse');
          $mail->SMTPAuth = true;
          $ipServidorCorreo = "192.168.2.1";
          $mail->Host = $ipServidorCorreo;      // SMTP server
          $mail->Port = 465;                    // set the SMTP port for the GMAIL server
          $mail->Username = "alexia.velasquez";              // SMTP account username
          $mail->Password = "51s4em@s";           // SMTP account password */
        /*
         * 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->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->SetFrom("safiweb@colciencias.gov.co", "safiweb");



        $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"] = "alexia.velasquez@sofhouse.net";
            //$report_params["email"] = "safiweb@colciencias.gov.co";
            $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("hpguioth@colciencias.gov.co", "Seguimiento COLCIENCIAS");
                //$mail->AddAddress("dortega@sofhouse.net");
                $mail->AddAddress("safiweb@colciencias.gov.co", "Seguimiento");
                /**
                 * Reemplazo de caracteres
                 */
                $subject = str_replace("ó", "&oacute;", $subject);
                $mail->Subject = $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
                 */
	            //OJO::Se deshabilita el envio de correo, $report_params["email"] = $datos[2] y la ipServidorCorreo - 20150604
                //Se desactiva envio de correo Ticket COM-78  - 20151002
                if (!$mail->Send()) {
                    //echo "Mailer Error: " . $mail->ErrorInfo;
                    $logger->info("Mailer Error - " . $mail->ErrorInfo);
                } else {
                    //echo "Message sent! ";
                    $logger->info("Mailer Sent!!! - a ".$address." -  body".$body);
                }

                /*
                 * 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);
    }

}
