<?php

/**
 * update_rvsp_estado actions.
 *
 * @package    radicacionVirtualCuentas
 * @subpackage update_rvsp_estado
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class update_formato_factura_estadoActions extends sfActions {

    /**
     * 
     * @param sfWebRequest $request
     */
    public function executeList(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---function executeList");
        $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 {


            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[rvsp_update_estado] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[rvsp_update_estado] 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 = "[acta_inicio_estado] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[acta_inicio_estado] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * 
     * tipo_boton
     * 1-Firmado
     * 2-Revisado
     * 3-Autorizado
     * 4-Radicado
     * 5-Rechazado
     * 6-Aprobado
     * 7-Reactivacion
     * 
     * tipo_trans
     * 1-Contratista
     * 4-Financiera
     *
     * @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 por defecto para el registro de log
             */
            $id_tabla = $request['id_formato_factura'];

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

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

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


            //construir observacion
            $observacion_log = "'Se actualizo tabla de RVSP_FORMATO_FACTURA y se ingreso un registro en la tabla RVSP_FORMATO_FACTURA_ESTADO desde la funcionalidad: " . $comando . "'";
            $subject = "";

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

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


            //$id_acta_inicio = $request['id_acta_inicio'];
            //$anho_completo = date('Y'); //anho completo cuatro digitos

            $usuario_estado = $request['username'];
            $fecha_estado = CN_TABLE::fechaSistema();

            $observaciones_estado = '';
            if (isset($request['observaciones'])) {
                $observaciones_estado = $request['observaciones'];
            }
            $id_formato_factura = $request['id_formato_factura'];
            /*
             * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
             */
            $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

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

            //Opcion segun boton
            switch ($tipo_boton) {
                //FIRMADO
                case 1:
                    $this->logMessage("FIRMAR");
                    //validamos que la factura se pueda firmar
                    //Solo es posible firmar una factura donde la suma del valor de sus detalles es igual al valor de la factura
                    //y que posea al menos un detalle registrado
                    $sql = <<<EOD
select 
tab0.id_formato_factura,
tab0.valor,
nvl(tab1.valor_detalles,0),
nvl(tab1.cantidad_detalle,0),
case when (tab0.valor - nvl(tab1.valor_detalles,0)) = 0 and nvl(tab1.cantidad_detalle,0)>0 then 1 else 0 end as posible_firmar
from rvsp_formato_factura_v tab0
left join (select id_formato_factura,sum(valor) as valor_detalles,count(id_formato_factura) as cantidad_detalle from RVSP_FORMATO_FACTURA_DET group by id_formato_factura)tab1 on tab0.id_formato_factura = tab1.id_formato_factura
where tab0.id_formato_factura =  $id_formato_factura
EOD;
                    $records = CN_TABLE::executeSQL($sql);
                    if ($records[0]['posible_firmar'] == 0) {
                        $this->logMessage("No es posible firmar el formato factura ID:".$id_formato_factura);
                        $status = 1;
                        $mensaje = "No es posible Firmar. Se debe agregar el detalle de la factura y la suma del valor de los mismos debe ser igual al valor de la factura.";
                    }else{
                        //insertamos el registro en la tabla RVSP_FORMATO_FACTURA_ESTADO
                        $sql = <<<EOD
insert into RVSP_FORMATO_FACTURA_ESTADO(id_formato_factura,id_estado,fecha_log,usuario_log,observacion)
   VALUES ($id_formato_factura,2,SYSDATE,'$usuario_estado','$observaciones_estado')
EOD;
                        $this->conn->execute($sql);
                        //actualizar el estado en la tabla
                        $sql = <<<EOD
update RVSP_FORMATO_FACTURA 
set id_estado = 2
where
id_formato_factura = $id_formato_factura
EOD;
                        $this->conn->execute($sql);

                        /**
                         * Envio correo al apoyo si tiene, sino al supervisor
                         */
                        $this->logMessage("Envio correo");
                        //Consulta datos envio correo
                        //Sql
                        $sql = <<<EOD
select 
  tab0.id_formato_factura,
  tab0.no_cliente,
  tab0.DOCUMENTO_PROVEEDOR as num_doc,
  tab0.NOMBRE_PROVEEDOR,
  --tab0.EMAIL_PROVEEDOR,
  '$correoEnvio' as email_envio,
  --'Observacion: '||tab0.OBS_AUTorizado as mensaje_extra,
  '' as mensaje_extra,
  '' as mensaje_firma,
  'Se realiza la firma de la factura de servicio publico No '|| tab0.no_factura ||' por '|| tab0.documento_firma ||' '|| tab0.nombre_firma || '.' as mensaje,
  --datos de envio
  tab0.documento_firma as num_doc_env,
  1 as id_tipo_doc_env,
  tab0.nombre_firma as razon_social_env,
  tab0.email_firma as correo_env,
  --Datos Supervisor centro de operaciones
  nvl(tab0.documento_supervisor_sede,'') as num_doc_sup,
  1 as id_tipo_doc_sup,
  nvl(tab0.nombre_supervisor_sede,'') as razon_soc_sup,
  nvl(tab0.email_supervisor_sede,'') as correo_sup,
  '' as mensaje_extra_sup
from 
rvsp_formato_factura_v tab0 
where tab0.id_formato_factura = $id_formato_factura 
EOD;
                        //Ejecutar SQL
                        $records = CN_TABLE::executeSQL($sql);

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

                        if (count($records) > 0) {
                            
                            
                             //ENVIAMOS CORREO A terceros
                        //Sql para traer los correos de terceros de la tabla correspondiente
                        $sql = <<<EOD
        SELECT NUM_DOC,
       NOMBRES,
       APELLIDOS,
       ESTADO,
       EMAIL
FROM RVSP_CORREOS_FIRMAR WHERE ESTADO=1
EOD;
                        $this->logMessage('SQL '.$sql);
                        //Ejecutar SQL
                        $rec = CN_TABLE::executeSQL($sql);
                   
                        if(count($rec)>0){
                            foreach ($rec as $key => $value){
                            
                                $report_params = $records[0];
                          $no_cliente = $records[0]['no_cliente'];
                          $num_doc = $records[0]['num_doc'];

                          //Ejemplo de la persona que se envia el correo:
                          //123;1;pepito perez;correo@gmal.com
                          $num_doc_env = $value['num_doc'];
                          $id_tipo_doc_env = 1;//$records[0]['id_tipo_doc_env'];
                          $razon_social_env = $value['nombres'].' '.$value['apellidos'];
                          $correo_env = $value['email'];

                          

                          $datos_usuario = array(
                          '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                          );

                          $subject = "Firmado - Factura de servicios publicos del proveedor:" . $num_doc . " para el cliente:" . $no_cliente;
                          $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, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                
                                
                            
                            }
                        
                        }
                                                      
                        }

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

                          //construir observacion
                          $observacion_log = "'firmado factura de sericios publicos del asunto: " . $subject . "'";

                          /*
                         * registro de consulta en tabla de log
                         */
                        $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);
                    }
                    break;
                //AUTORIZADO
                case 3:
                    $this->logMessage("AUTORIZAR");
                    //insertamos el registro en la tabla RVSP_FORMATO_FACTURA_ESTADO
                    $sql = <<<EOD
insert into RVSP_FORMATO_FACTURA_ESTADO(id_formato_factura,id_estado,fecha_log,usuario_log,observacion)
   VALUES ($id_formato_factura,4,SYSDATE,'$usuario_estado','$observaciones_estado')
EOD;
                    $this->conn->execute($sql);
                    //actualizar el estado en la tabla
                    $sql = <<<EOD
update RVSP_FORMATO_FACTURA 
set id_estado = 4
where
id_formato_factura = $id_formato_factura
EOD;
                    $this->conn->execute($sql);

                    /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
  tab0.id_formato_factura,
  tab0.no_cliente,
  tab0.DOCUMENTO_PROVEEDOR as num_doc,
  tab0.NOMBRE_PROVEEDOR,
  --tab0.EMAIL_PROVEEDOR,
  '$correoEnvio' as email_envio,
  'Observacion: '||tab0.OBS_AUTorizado as mensaje_extra,
  --'' as mensaje_extra,
  '' as mensaje_firma,
  'Se realiza la autorización de la factura de servicio publico No '|| tab0.no_factura ||' por '|| tab0.documento_firma ||' '|| tab0.nombre_firma || '.' as mensaje,
  --datos de envio
  tab0.documento_firma as num_doc_env,
  1 as id_tipo_doc_env,
  tab0.nombre_firma as razon_social_env,
  tab0.email_firma as correo_env,
  --Datos Supervisor centro de operaciones
  nvl(tab0.documento_supervisor_sede,'') as num_doc_sup,
  1 as id_tipo_doc_sup,
  nvl(tab0.nombre_supervisor_sede,'') as razon_soc_sup,
  nvl(tab0.email_supervisor_sede,'') as correo_sup,
  '' as mensaje_extra_sup
from 
rvsp_formato_factura_v tab0 
where tab0.id_formato_factura = $id_formato_factura 
EOD;
                    //Ejecutar SQL
                     $records = CN_TABLE::executeSQL($sql);

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

                      if (count($records) > 0) {
                          
                         //ENVIAMOS CORREO A terceros
                        //Sql para traer los correos de terceros de la tabla correspondiente
                        $sql = <<<EOD
        SELECT NUM_DOC,
       NOMBRES,
       APELLIDOS,
       ESTADO,
       EMAIL
FROM RVSP_CORREOS_AUTORIZAR WHERE ESTADO=1
EOD;
                        $this->logMessage('SQL '.$sql);
                        //Ejecutar SQL
                        $rec = CN_TABLE::executeSQL($sql);
                   
                        if(count($rec)>0){
                            foreach ($rec as $key => $value){
                                
                                    
                          
                          

                      $report_params = $records[0];
                      $no_cliente = $records[0]['no_cliente'];
                      $num_doc = $records[0]['num_doc'];

                      //Ejemplo de la persona que se envia el correo:
                      //123;1;pepito perez;correo@gmal.com
                      $num_doc_env = $value['num_doc'];
                      $id_tipo_doc_env = 1;//$records[0]['id_tipo_doc_env'];
                      $razon_social_env = $value['nombres'].' '.$value['apellidos'];
                      $correo_env = $value['email'];
                      
                      
                      

                      $datos_usuario = array(
                      '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                      );

                      $subject = "Autorizado - Factura de servicios publicos del proveedor:" . $num_doc . " para el cliente:" . $no_cliente;
                      $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, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                                
                                
                            }
                        }
                          
                      }

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

                      //construir observacion
                      $observacion_log = "'Autorizado factura de sericios publicos del asunto:: " . $subject . "'";

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

                    break;

                case 4:
                    //RADICADO

                    $this->logMessage("RADICADO");
                    //insertamos el registro en la tabla RVSP_FORMATO_FACTURA_ESTADO
                    $sql = <<<EOD
insert into RVSP_FORMATO_FACTURA_ESTADO(id_formato_factura,id_estado,fecha_log,usuario_log,observacion)
   VALUES ($id_formato_factura,10,SYSDATE,'$usuario_estado','$observaciones_estado')
EOD;
                    $this->conn->execute($sql);
                    //actualizar el estado en la tabla
                    $sql = <<<EOD
update RVSP_FORMATO_FACTURA 
set id_estado = 10
where
id_formato_factura = $id_formato_factura
EOD;
                    $this->conn->execute($sql);


                    //Obtenemos el numero de radicado
                    $sql = <<<EOD
select nvl(max(numero_radicado),0) as consecutivo from RVSP_FORMATO_FACTURA where EXTRACT(YEAR from fecha_log)=EXTRACT(YEAR FROM sysdate)
EOD;
                    $records = CN_TABLE::executeSQL($sql);
                    $numero_radicado = $records[0]['consecutivo'] + 1;
                    //radicar como contratista
                    $sql = <<<EOD
update RVSP_FORMATO_FACTURA 
set 
numero_radicado=$numero_radicado
where
id_formato_factura = $id_formato_factura 
EOD;
                    $this->conn->execute($sql);

                    //Obtenemos el numero de radicado que acabamos de crear
                    $sql = <<<EOD
Select NUMERO_RADICADO from RVSP_FORMATO_FACTURA where id_formato_factura = $id_formato_factura 
EOD;
                    $records = CN_TABLE::executeSQL($sql);
                    if (count($records) > 0) {
                        //$response[0] = $records[0];
                    }
                    /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
  tab0.id_formato_factura,
  tab0.no_cliente,
  tab0.no_factura as no_factura,  
  tab0.adjunto as adjunto,    
  tab0.DOCUMENTO_PROVEEDOR as num_doc,
  tab0.NOMBRE_PROVEEDOR,
  --tab0.EMAIL_PROVEEDOR,
  '$correoEnvio' as email_envio,
  --'Observacion: '||tab0.OBS_AUTorizado as mensaje_extra,
  '' as mensaje_extra,
  '' as mensaje_firma,
  'Se realiza el radicado de la factura de servicio publico No '|| tab0.no_factura ||' por '|| tab0.documento_firma ||' '|| tab0.nombre_firma || '.' as mensaje,
  --datos de envio
  tab0.documento_firma as num_doc_env,
  1 as id_tipo_doc_env,
  tab0.nombre_firma as razon_social_env,
  tab0.email_firma as correo_env,
  --Datos Supervisor centro de operaciones
  nvl(tab0.documento_supervisor_sede,'') as num_doc_sup,
  1 as id_tipo_doc_sup,
  nvl(tab0.nombre_supervisor_sede,'') as razon_soc_sup,
  nvl(tab0.email_supervisor_sede,'') as correo_sup,
  '' as mensaje_extra_sup
from 
rvsp_formato_factura_v tab0 
where tab0.id_formato_factura = $id_formato_factura 
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);
                    
                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {
                        
                        
                         //ENVIAMOS CORREO A terceros
                        //Sql para traer los correos de terceros de la tabla correspondiente
                        $sql = <<<EOD
        SELECT NUM_DOC,
       NOMBRES,
       APELLIDOS,
       ESTADO,
       EMAIL
FROM RVSP_CORREOS_RADICAR WHERE ESTADO=1
EOD;
                        $this->logMessage('SQL '.$sql);
                        //Ejecutar SQL
                        $rec = CN_TABLE::executeSQL($sql);
                   
                        if(count($rec)>0){
                        foreach ($rec as $key => $value){
                            
                             $adjunto_nombre = $records[0]['adjunto'];
                        $report_params = $records[0];
                        $no_cliente = $records[0]['no_cliente'];
                        $num_doc = $records[0]['num_doc'];
                        $no_factura = $records[0]['no_factura'];
                        //Ejemplo de la persona que se envia el correo:
                        //123;1;pepito perez;correo@gmal.com
                        $num_doc_env = $value['num_doc'];
                        $id_tipo_doc_env = 1;//$records[0]['id_tipo_doc_env'];
                        $razon_social_env = $value['nombres'].' '.$value['apellidos'];
                        $correo_env = $value['email'];
                       

                        $datos_usuario = array(
                            '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                        );

                        $subject = "Radicado - Factura de servicios publicos del proveedor:" . $num_doc . " para el cliente:" . $no_cliente;
                        $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, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);

                       

                        /*
                            GENERAMOS EL REPORTE DE FACTURACIÓN UNICA MEJOR CONOCIDO COMO CONSTANCIA QUE GENERA EL SISTEMAS
                         *                          */
                        
                        $nombreArchivo = "factura_unica_".$id_formato_factura;
                        $nombre_reporte = $nombreArchivo.".pdf";
                        $this->logMessage("factura_unica :".$nombreArchivo);
                        $this->logMessage("JASPER:!!".$url_jasper);
                        //Generamos PDF JASPER
                        $url = $url_jasper;
                        $url = $url . 'const_sup_pago_sp&format=PDF&PARAM_id_mod=25&PARAM_username=sofhouse&PARAM_nitocc=800189921&PARAM_id_username=946';
                        $url = $url . '&PARAM_nombre_reporte=' . str_replace(' ', ':', $nombre_reporte);
                        $url = $url . '&PARAM_tag_adjunto_modulo=true';
                        $url = $url .'&PARAM_id_formato_factura='.$id_formato_factura.'&PARAM_usuario_log=sofhouse&PARAM_adjunto=report.pdf&PARAM_entidad_cliente=7';
                                               

                        $this->logMessage('URL--'.$url);
                        $ch = curl_init($url);
                        
                        //Parametros de retorno en cURL
                        curl_setopt($ch, CURLOPT_HEADER, 0);

                        //Ejecuta la petición
                        $rta = curl_exec($ch);
                        //Se cierra la conexión
                        curl_close($ch);
                        
                        
                       
                        $this->logMessage('REGRESO');
                        
                    
                        //ENVIAMOS CORREO A terceros
                        //Sql para traer los correos de terceros de la tabla correspondiente
                        
                            if (isset($adjunto_nombre)) {
                                $uploadDir = sfConfig::get("sf_upload_dir");
                                $adjunto = true;
                                $ruta = $uploadDir.'/adj_facturasp/';
                                $array_adjuntos = array(
                                    $adjunto_nombre => $adjunto_nombre,
                                    $nombre_reporte =>  $nombre_reporte
                                );
                            }else{
                                
                                $uploadDir = sfConfig::get("sf_upload_dir");
                                $adjunto = true;
                                $ruta = $uploadDir.'/adj_facturasp/';
                                $array_adjuntos = array(
                                    $nombre_reporte =>  $nombre_reporte
                                );
                                
                            }
                            $this->logMessage(' PREPARO ENVIO');
                            
                                $this->logMessage("Envio a terceros nombre: " . $value['nombres']);
                                if (isset($no_factura)) {
                                    $subject = "Solicitud - registro presupuestal para factura " . $no_factura;
                                    $this->logMessage("Subject: " . $subject);
                                    $report_params['mensaje'] = "Amablemente solicitamos la expedicion del Registro Presupuestal para la factura de servicios publicos Nro. " .$no_factura." "." Verificar sus adjuntos";
                                } else {
                                    $subject = "Solicitud - registro presupuestal para factura " . $id_formato_factura;
                                    $this->logMessage("Subject: " . $subject);
                                    $report_params['mensaje'] = "Amablemente solicitamos la expedicion del Registro Presupuestal para la factura de servicios publicos ID Nro.".$id_formato_factura." "." Verificar sus adjuntos";
                                }
                                
                                $datos_usuario = array(
                                '0' => $value['num_doc'] . ';' . '1' . ';' . $value['nombres'] . ';' . $value['email'] . ';' . '  '
                                );
                                CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                            
                        
                            
                            
                            
                        }}
                       
                    }
                    $this->logMessage("FIN Envio correo");

                    //construir observacion
                    $observacion_log = "'Formato de factura radicado del proceso del asunto: ".$subject."'";
                        
                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);


                    break;

                //RECHAZADO
                case 5:
                    $this->logMessage("RECHAZAR");
                    //insertamos el registro en la tabla RVSP_FORMATO_FACTURA_ESTADO
                    $sql = <<<EOD
insert into RVSP_FORMATO_FACTURA_ESTADO(id_formato_factura,id_estado,fecha_log,usuario_log,observacion)
    VALUES($id_formato_factura,9,SYSDATE,'$usuario_estado','$observaciones_estado')
EOD;
                    $this->conn->execute($sql);
                    //actualizar el estado en la tabla
                    $sql = <<<EOD
update RVSP_FORMATO_FACTURA 
set id_estado = 9
where
id_formato_factura = $id_formato_factura
EOD;
                    $this->conn->execute($sql);

                    $this->conn->commit();

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

                   /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
  tab0.id_formato_factura,
  tab0.no_cliente,
  tab0.DOCUMENTO_PROVEEDOR as num_doc,
  tab0.NOMBRE_PROVEEDOR,
  --tab0.EMAIL_PROVEEDOR,
  '$correoEnvio' as email_envio,
  'Observacion: '||tab0.OBS_rechazado as mensaje_extra,
  --'' as mensaje_extra,
  '' as mensaje_firma,
  'Se rechaza la factura de servicio publico No '|| tab0.no_factura ||' por '|| tab0.documento_firma ||' '|| tab0.nombre_firma || '.' as mensaje,
  --datos de envio
  tab0.documento_firma as num_doc_env,
  1 as id_tipo_doc_env,
  tab0.nombre_firma as razon_social_env,
  tab0.email_firma as correo_env,
  --Datos Supervisor centro de operaciones
  nvl(tab0.documento_supervisor_sede,'') as num_doc_sup,
  1 as id_tipo_doc_sup,
  nvl(tab0.nombre_supervisor_sede,'') as razon_soc_sup,
  nvl(tab0.email_supervisor_sede,'') as correo_sup,
  '' as mensaje_extra_sup
from 
rvsp_formato_factura_v tab0 
where tab0.id_formato_factura = $id_formato_factura 
EOD;
                    //Ejecutar SQL
                     $records = CN_TABLE::executeSQL($sql);

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

                      if (count($records) > 0) {

                      $report_params = $records[0];
                      $no_cliente = $records[0]['no_cliente'];
                      $num_doc = $records[0]['num_doc'];

                      //Ejemplo de la persona que se envia el correo:
                      //123;1;pepito perez;correo@gmal.com
                      $num_doc_env = $records[0]['num_doc_env'];
                      $id_tipo_doc_env = $records[0]['id_tipo_doc_env'];
                      $razon_social_env = $records[0]['razon_social_env'];
                      $correo_env = $records[0]['correo_env'];
                      //DATOS SUPERVISOR -
                      $num_doc_sup = $records[0]['num_doc_sup'];
                      $id_tipo_doc_sup = $records[0]['id_tipo_doc_sup'];
                      $razon_social_sup = $records[0]['razon_social_sup'];
                      $correo_sup = $records[0]['correo_sup'];

                      $datos_usuario = array(
                      '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                      );

                      $subject = "Rechazado - Factura de servicios publicos del proveedor:" . $num_doc . " para el cliente:" . $no_cliente;
                      $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, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);

                      //ENVIAMOS CORREO A Supervisor - 20180620
                      $mensaje_extra_sup = $records[0]['mensaje_extra_sup'];

                      $datos_usuario = array(
                      '0' => $num_doc_sup . ';' . $id_tipo_doc_sup . ';' . $razon_social_sup . ';' . $correo_sup . ';' . $mensaje_extra_sup
                      );

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

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

                      //construir observacion
                      $observacion_log = "'Rechazada factura de servicios publicos asunto: " . $subject . "'";

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

                    break;

                default:
                    break;
            }


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

}
