<?php

/**
 * co_legaliza_contrato actions.
 *
 * @package    contratacion
 * @subpackage co_legaliza_contrato
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */

require_once 'HTMLPurifier.auto.php';
require 'HTMLPurifier.autoload.php';

class co_legaliza_contratoActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'CO_LEGALIZA_CONTRATO', 'CO_CONTRATO_V', 'RPS_CONTRATO_V'//, 'RPS_V'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'CO_CONTRATO_V' =>
        array(
            'id_contrato' => 'CO_LEGALIZA_CONTRATO'
        ),
        'RPS_CONTRATO_V,LEFT' =>
        array(
            'id_rp-id' => 'CO_LEGALIZA_CONTRATO',
            'vigencia_rp-vigencia' => 'CO_LEGALIZA_CONTRATO',
            'rp_sgr-sgr' => 'CO_LEGALIZA_CONTRATO',
        )
            /* 'RPS_V,LEFT' =>
              array(
              'id_rp-id' => 'CO_LEGALIZA_CONTRATO'
              ) */
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'CO_LEGALIZA_CONTRATO' =>
        array(
            'id_legaliza_contrato' => 'id_legaliza_contrato',
            'id_contrato' => 'id_contrato',
            'id_rp' => 'id_rp',
            'fecha_aprueba_poliza' => 'fecha_aprueba_poliza',
            'fecha_inicio' => 'fecha_inicio',
            'fecha_terminacion' => 'fecha_terminacion',
            'adjunto_contrato' => 'adjunto_contrato',
            'fecha_liquidacion' => 'fecha_liquidacion',
            'adjunto_poliza' => 'adjunto_poliza',
            'adjunto_rp' => 'adjunto_rp',
            'vigencia_rp' => 'vigencia_rp',
            'rp_sgr' => 'rp_sgr',
            'fecha_firma_secop' => 'fecha_firma_secop'
        ),
        'CO_CONTRATO_V' =>
        array(
            'no_contrato' => 'no_contrato',
            'id_anhos' => 'id_anhos',
            'proceso' => 'proceso',
            'valor' => 'valor_contrato',
            'completo_contra' => 'completo_contra',
            'completo_supervisor' => 'completo_supervisor'
        ),
        'RPS_CONTRATO_V' =>
        array(
            'rp' => 'rp',
            'fecha' => 'fecha_rp',
            'valor' => 'valor_rp',
            'rp,||, - ,||,vigencia' => 'completo_rp'
        )
            /* 'RPS_V' =>
              array(
              'rp' => 'rp',
              'vigencia' => 'vigencia_rp',
              'fecha' => 'fecha_rp',
              'valor' => 'valor_rp',
              'rp,||, - ,||,vigencia' => 'completo_rp'
              ) */
    ); //por cada tabla especificar los campos del select
    protected $fields_orderBy = array(
    ); //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(
        'CO_LEGALIZA_CONTRATO' =>
        array(
            'id_legaliza_contrato,a' => array('!=' => array(-1)),
            'id_legaliza_contrato,b' => array('=' => array('id_legaliza_contrato')),
            'id_contrato,b' => array('=' => array('id_contrato')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        ),
        'CO_CONTRATO_V' =>
        array(
            'id_anhos' => array('=' => array('id_anhos'))
        )
    ); //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_legaliza_contrato'; //identificador de la tabla
    protected $id_names = array('id_legaliza_contrato'); //llave primaria
    protected $field_names = array('id_contrato', 'id_rp', 'fecha_aprueba_poliza', 'fecha_inicio', 'fecha_terminacion',
        'adjunto_contrato', 'fecha_liquidacion', 'adjunto_poliza', 'adjunto_rp', 'vigencia_rp', 'rp_sgr','fecha_firma_secop'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'CO_LEGALIZA_CONTRATO'; //tabla en la cual se aplican los cambios 
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_legaliza_contrato'; //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
         */
        //Obtenemos la entidad
        $array = sfYaml::load(dirname(__FILE__) . '/../../../../api/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;
                    }
                }
            }
            $int++;
        }
        //accion add
        if ($Action == "ADD") {
            
            // 20230213 Actualiza el numero de pagos del contrato segun fecha de inicio y terminacion
            $id_contrato = $request['id_contrato'];
            $fecha_inicio = $request['fecha_inicio'];
            $fecha_terminacion = $request['fecha_terminacion'];
            
            $sql = <<<EOD
UPDATE CO_CONTRATO 
set  numero_pago = ceil(MONTHS_BETWEEN(last_day(max(to_date('$fecha_inicio','YYYY-MM-DD'))), to_date(to_char(min(to_date('$fecha_terminacion','YYYY-MM-DD')),'YYYY-MM') || '-01','YYYY-MM-DD')))
where id_contrato = $id_contrato
EOD;
            $this->conn->execute($sql);
            

            //ENVIO CORREO 7 - Notificacion de Legalización de Contrato
           /* $logger->info("ENVIO CORREO 7 - Notificacion de Legalización de Contrato");

            //PARAMETROS GENERALES
            $subject = "Notificacion de Legalizacion de Contrato";

            //Email Envio
            if (!isset($request["email_envio"])) {


                //Obtenemos la entidad
                $array = sfYaml::load(dirname(__FILE__) . '/../../../../api/config/app-gwt.yml');
                $int = 0;
                foreach ($array as $routeName => $routeData) {
                    //echo $routeName . "\n";
                    if ('correoEnvio' == $routeName) {
                        foreach ($routeData as $key => $value) {
                            //echo $value . "\n";
                            if ($key == 'value') {
                                $email_envio = $value;
                            }
                        }
                    }
                    $int++;
                }

                $request["email_envio"] = $email_envio;
            }
            $adjunto = false;
            $ruta = "";

            
            // Variable Memcache
             
            $progress_key = $request['progress_key'] . $request['username'];
            $this->logMessage("Valor de progress_key: " . $progress_key);

            $array_adjuntos = array();


            $sql = "
        SELECT tab0.dia_sistema||' de '||tab0.mes_sistema||' del '||anho_sistema AS FECHA_SISTEMA
           from(
            select LPAD(to_char(sysdate,'dd'),2,'0') as dia_sistema,
            trim(initcap(to_char(sysdate,'MONTH','nls_date_language=spanish'))) as mes_sistema,
            TO_CHAR(sysdate,'yyyy') as anho_sistema
            from dual
        )tab0
        ";

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



            $id_contrato = $list_data_post[0]['id_contrato'];
            $id_legaliza_contrato = $list_data_post[0]['id_legaliza_contrato'];

            $sql = <<<EOD
select tab0.no_contrato,tab0.id_anhos,tab0.valor, tab0.objeto, tab0.tipo, tab0.nom_contra,tab0.completo_contra, tab0.completo_supervisor,
    tab0.completo_ordenador,
    tab0.NOMBRE_ORDENADOR_GASTO,
    tab0.id_estudios_previos, tab0.rp
, tab0.dia_rp||' de '||tab0.mes_rp||' del '||tab0.anho_rp AS FECHA_RP
, tab0.dia_poliza||' de '||tab0.mes_poliza||' del '||tab0.anho_poliza AS FECHA_POLIZA
, tab0.dia_inicio||' de '||tab0.mes_inicio||' del '||tab0.anho_inicio AS FECHA_INICIO
, tab0.dia_terminacion||' de '||tab0.mes_terminacion||' del '||tab0.anho_terminacion AS FECHA_TERMINACION
, case when tab0.dia_liquida is null then 'No Aplica' else tab0.dia_liquida||' de '||tab0.mes_liquida||' del '||tab0.anho_liquida end AS FECHA_LIQUIDACION
from(


select tab0.no_contrato,tab0.id_anhos, tab0.valor, tab0.objeto, tab0.tipo, tab0.nom_contra,tab0.completo_contra, 
    tab0.completo_supervisor, tab1.id_estudios_previos, tab0.completo_ordenador,tab0.NOMBRE_ORDENADOR_GASTO,
nvl(tab3.rp,0) as rp,
LPAD(to_char(tab3.fecha,'dd'),2,'0') as dia_rp,
trim(initcap(to_char(tab3.fecha,'MONTH','nls_date_language=spanish'))) as mes_rp,
TO_CHAR(tab3.fecha,'yyyy') as anho_rp,

LPAD(to_char(tab2.fecha_aprueba_poliza,'dd'),2,'0') as dia_poliza,
trim(initcap(to_char(tab2.fecha_aprueba_poliza,'MONTH','nls_date_language=spanish'))) as mes_poliza,
TO_CHAR(tab2.fecha_aprueba_poliza,'yyyy') as anho_poliza,

LPAD(to_char(tab2.fecha_inicio,'dd'),2,'0') as dia_inicio,
trim(initcap(to_char(tab2.fecha_inicio,'MONTH','nls_date_language=spanish'))) as mes_inicio,
TO_CHAR(tab2.fecha_inicio,'yyyy') as anho_inicio,

LPAD(to_char(tab2.fecha_terminacion,'dd'),2,'0') as dia_terminacion,
trim(initcap(to_char(tab2.fecha_terminacion,'MONTH','nls_date_language=spanish'))) as mes_terminacion,
TO_CHAR(tab2.fecha_terminacion,'yyyy') as anho_terminacion,

LPAD(to_char(tab2.fecha_liquidacion,'dd'),2,'0') as dia_liquida,
trim(initcap(to_char(tab2.fecha_liquidacion,'MONTH','nls_date_language=spanish'))) as mes_liquida,
TO_CHAR(tab2.fecha_liquidacion,'yyyy') as anho_liquida

from co_legaliza_contrato tab2
join co_contrato_v tab0 ON tab0.id_contrato = tab2.id_contrato
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
left join rps_v tab3 ON tab3.id = tab2.id_rp
where tab2.id_contrato = $id_contrato
)tab0
EOD;

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

            $rp = $records[0]['rp'];
            $fecha_rp = $records[0]['fecha_rp'];
            $fecha_poliza = $records[0]['fecha_poliza'];
            $fecha_inicio = $records[0]['fecha_inicio'];
            $fecha_terminacion = $records[0]['fecha_terminacion'];
            $fecha_liquidacion = $records[0]['fecha_liquidacion'];

            $no_contrato = $records[0]['no_contrato'];
            $id_anhos = $records[0]['id_anhos'];
            $tipo = $records[0]['tipo'];
            $contratista = $records[0]['completo_contra'];
            $nom_contra = $records[0]['nom_contra'];
            $supervisor = $records[0]['completo_supervisor'];
            $nom_ordenador = $records[0]['nombre_ordenador_gasto'];
            
            $config = HTMLPurifier_Config::createDefault();
            $config->set('CSS.AllowedProperties', array());
            $config->set('HTML.ForbiddenElements', array('font'));
            $purifier = new HTMLPurifier($config);
            
            $objeto = $this->htmlClear($purifier->purify($records[0]['objeto']));
            $id_estudios_previos = $records[0]['id_estudios_previos'];

            $sql = <<<EOD
select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos
EOD;

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

            $responsable = $records[0]['nombre_responsable'];
            $area = $records[0]['area'];
            $valor = $records[0]['valor'];
            $valor = number_format($valor);
            $modalidad = $records[0]['modalidad'];
            $abogado = $records[0]['abogado'];
            $proceso = $records[0]['proceso'];





//1. Se realiza Consulta a la tabla de administracion alarmas para saber a quien van dirigidos los correos

            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'mesadeayuda@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = 7 and tab1.id_mae_ter is not null
EOD;

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

            foreach ($records as $correos) {

                $documento = $correos['num_doc'];
                $tipo_doc = $correos['id_tipo_doc'];
                $nombre = $correos['razon_soc'];
                $email = $correos['email'];
                $rol = $correos['rol'];

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

                $datos_usuario = array();

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

//CUERPO DEL MENSAJE

                $body = "<html><body> </body></html>";
//Body
                $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_creacion
                <br/>
                <br/>
                Señor(a)<br/>
                $nombre<br/>
                $rol
                <br/><br/>
                Por medio de la presente se notifica la <b>Legalización de contrato No. $no_contrato</b><br/><br/>
                            
                <b>DATOS DE LA LEGALIZACION:</b><br/>
                <b>Registro Presupuestal: </b> $rp $fecha_rp<br/><br/>
                <b>Fecha Aprobacion Poliza:</b> $fecha_poliza<br/><br/>
                <b>Fecha Inicio</b> $fecha_inicio<br/><br/>
                <b>Fecha Terminacion</b> $fecha_terminacion<br/><br/>
                <b>Fecha Liquidacion:</b> $fecha_liquidacion<br/><br/>
                <br></br>
                <b>DATOS DEL CONTRATO:</b><br/>
                <b>Contratista.</b> $contratista<br/><br/>
                <b>Supervisor:</b> $supervisor<br/><br/>
                <b>Tipo de Contrato:</b> $tipo<br/><br/>
                <b>Valor del Contrato:</b> $valor<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br></br>
                <b>DATOS DEL PROCESO</b>
                <br></br>
                <b>Proceso No.</b> $proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <br/><br/>
                
                </body></html>
EOD;

                $currentUri = "";



                //Se desactiva Incidente #18295 - 20200813::LAVILA
                $logger->info("CN_TABLE::envioCorreo 1");
                //SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7, CEV-8, CEV PUB-9
                if ($entidadCliente != "2") {
                    CN_TABLE::envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                }
            }



            //NOTIFICACION DE DESIGNACION DE SUPERVISOR
            $logger->info("NOTIFICACION DE DESIGNACION DE SUPERVISOR");

 
            // 1. Se genera el PDF de la comunicación interna y se guarda en la carpeta de memorandos



            //Inicio Paso 1. Generación del PDF de Comunicacion Interna

            $pdf = new CDPDF('P', 'mm', 'letter');

            $pdf->SetFont('helvetica', '', 10);
            $pdf->SetFillColor(255);
            $pdf->SetTextColor(0);
            $pdf->setTipo(17);

            $pdf->setTitulo("COMUNICACIÓN INTERNA");

            $pdf->AddPage(); //adhiero la pagina

            $pdf->SetTopMargin(50);
            $pdf->SetRightMargin(30);
            $pdf->SetLeftMargin(30);


            $sql = <<<EOD
select 
tab1.razon_soc as secretario

from co_param_gen tab0
left join interceros_v tab1 ON tab1.id_mae_ter = tab0.id_secretario_general

where tab0.id_param_gen = 1
EOD;

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

            $secretario = "";
            if (count($records) > 0) {
                $secretario = $records[0]['secretario'];
            }

            //Actualización 4 de Junio: Se modifica quien firma el memorando para que unicamente salga el cargo de Secretario General y no el nombre
            if ($entidadCliente != 1) {
                $html = "";


                $html .= "<p><b>PARA: $supervisor</b></p><br/>";

                //$html.="<p><b>DE: $secretario<br>Secretario General</b></p>";
                $html .= "<p><b>DE: Secretario General</b></p>";
                $html .= "<p><b>ASUNTO: Asignacion de supervisión</b></p><br/>";

                $html .= '<p style="text-align:justify">Teniendo en cuenta que el SERVICIO GEOLÓGICO COLOMBIANO como parte contratante, '
                        . 'ha celebrado un contrato  de prestación de servicios para ser ejecutado en el área ' . $area . ''
                        . ', cordialmente le informo que ha sido designado(a) supervisor(a) del contrato No. ' . $no_contrato . " de " . $id_anhos . ' '
                        . 'suscrito con ' . $nom_contra . '.</p><br/>';

                $html .= '<p style="text-align:justify">Con fundamento en lo anterior, se adjunta copia del contrato citado, así como del formulario de aprobación de póliza, '
                        . 'con el fin de dar cumplimiento a lo establecido en la Resolución No. 166 del 4 de abril de 2014, por medio de la cual '
                        . 'se adoptó el nuevo Manual de Supervisión e Interventoría del SERVICIO GEOLÓGICO COLOMBIANO, resaltando que la supervisión '
                        . 'de los contratos inicia con la suscripción de los mismos.</p><br/>';

                //$html.='<p><b>Atentamente,<br/><br/><br/><br/><br/>'.$secretario.'<br/>SECRETARIO GENERAL</b>';
                $html .= '<p><b>Atentamente,<br/><br/><br/><br/><br/>SECRETARIO GENERAL</b>';
            } else {
            
                // 20210311 ACtualizacion memorandum ticket 20820
                //Se cambia a SECOP I - 20210603::LAVILA
                $fecha_memo = date("d/m/Y");
                $ciudad_memo = "Bogota D.C.";
                $html = <<<EOD
<p style="text-align:center"> 
<u><strong>COMUNICACIÓN DESIGNACIÓN DE SUPERVISIÓN</strong></u>
</p>
<strong>Ciudad:</strong> $ciudad_memo<br/>
<strong>Fecha:</strong> $fecha_memo
<br/>
<p><b>PARA: $supervisor</b></p>
<p><b>DE: $nom_ordenador <br>Secretario General</b></p>
<p><b>ASUNTO: Comunicación de Supervisión Contrato $no_contrato - $id_anhos</b></p>
<p style="text-align:justify"> 
Por medio de la presente se informa que ha sido designado(a) supervisor(a) del contrato de prestación de servicios No. $no_contrato - $id_anhos, 
suscrito entre el <strong>SERVICIO GEOLOGICO COLOMBIANO</strong> y <strong>$nom_contra</strong>, cuyo objeto consiste en “<i>$objeto</i>", 
el cual fue perfeccionado y ha cumplido los requisitos señalados en el artículo 41° de la Ley 80 de 1993 para su ejecución.
</p>
<p style="text-align:justify">
En consecuencia y con el propósito de realizar el seguimiento y supervisión del mismo, le solicito revisar el expediente contractual 
a través del Sistema Electrónico de Contratación Pública - SECOP I, en donde encontrará la documentación que requiera con el fin de realizar su 
labor como supervisor del contrato.
</p>
<p style="text-align:justify">
Es importante resaltar que para que inicie la ejecución del contrato se requiere la expedición del Registro Presupuestal, 
la aprobación de la garantía única de cumplimiento en el Sistema Electrónico de Contratación Pública - SECOP I y el inicio de la cobertura 
de la Administración de Riesgos Laborales a el contratista que se genera a partir del día siguiente de la afiliación a ARL. 
</p> 
<p style="text-align:justify">
Para el ejercicio de la función de supervisión es importante que tenga en cuenta las siguientes pautas:
</p>
<p style="text-align:justify">
1. Es su responsabilidad cumplir con las obligaciones derivadas de esta designación, de conformidad con lo establecido en el 
artículo 84 de la Ley 1474 de 2011, por lo cual se recomienda efectuar la revisión de las cláusulas contractuales y el manual de contratación, 
supervisión e interventoría de la Entidad.
</p>
<p style="text-align:justify">
2. Es necesario que verifique con el Área de Talento Humano – Salud Ocupacional de la Entidad, que el contratista este afiliado y ya amparado 
ante la ARL respectiva.
</p>
<p style="text-align:justify">
3. Es importante que como supervisor asista a las capacitaciones – socializaciones de contratación, que convoque el Grupo de Contratos y 
Convenios u otras dependencias de la Entidad y que se encuentre relacionadas con la función de supervisión.
</p>
<p style="text-align:justify">
Cordialmente,
</p>
EOD;
            }


            $pdf->writeHTML($html, true, false, true, false, '');

            $pdf->Output($_SERVER['DOCUMENT_ROOT'] . "/contratacion/web/uploads/memorando_supervisor/MemorandoContrato_" . $no_contrato . "_" . $id_anhos . ".pdf", "F");


            //Inicio Paso 2. Generación del Correo Electronico

            $subject = "Notificacion de Designacion de Supervisor";


            $sql = <<<EOD
                    select tab0.adjunto_contrato, tab0.adjunto_poliza

from co_legaliza_contrato tab0
where tab0.id_legaliza_contrato = $id_legaliza_contrato

EOD;

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

            $adjunto_contrato = $records[0]['adjunto_contrato'];
            $adjunto_poliza = $records[0]['adjunto_poliza'];
            $adjunto_rp = $records[0]['adjunto_rp'];



            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'mesadeayuda@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = 48 and tab1.id_mae_ter is not null
EOD;

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

            foreach ($records as $correos) {

                $documento = $correos['num_doc'];
                $tipo_doc = $correos['id_tipo_doc'];
                $nombre = $correos['razon_soc'];
                $email = $correos['email'];
                $rol = $correos['rol'];

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

                $datos_usuario = array();

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

//CUERPO DEL MENSAJE

                $body = "<html><body> </body></html>";
//Body
                $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_creacion
                <br/>
                <br/>
                Señor(a)<br/>
                $nombre<br/>
                $rol
                <br/><br/>
                Por medio del presente se notifica la designación como supervisor del Contrato No. $no_contrato del $id_anhos, 
                    Adjunto encontrara el memorando de designación asi como el Contrato y el formulario de aprobación de la póliza.</b><br/><br/>
                                
                </body></html>
EOD;

                $currentUri = "";

                $adjunto = true;
                $ruta = $_SERVER['DOCUMENT_ROOT'] . "/contratacion/web/uploads/";
                $array_adjuntos = array("MemorandoContrato_" . $no_contrato . "_" . $id_anhos . ".pdf" => "memorando_supervisor/MemorandoContrato_" . $no_contrato . "_" . $id_anhos . ".pdf",
                    $adjunto_contrato => "contrato/" . $adjunto_contrato,
                    $adjunto_poliza => "adjunto_poliza/" . $adjunto_poliza,
                    $adjunto_rp => "adjunto_rp/" . $adjunto_rp);


                //Obtenemos la entidad
                $array = sfYaml::load(dirname(__FILE__) . '/../../../../api/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;
                            }
                        }
                    }
                    $int++;
                }


                //Se desactiva Incidente #18295 - 20200813::LAVILA
                $logger->info("CN_TABLE::envioCorreo 2");
                //SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7, CEV-8, CEV PUB-9
                if ($entidadCliente != "2") {
                    CN_TABLE::envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                }
            } */  
        }

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

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

        $logger->info("Fin a postprocessRequest");
        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") {




            $id_contrato = $request['id_contrato'];

            $sql = <<<EOD
select tab0.*,tab1.descripcion as ini_contra
    from co_contrato tab0 
    left join co_inicio_contrato tab1 ON tab1.id_inicio_contrato = tab0.id_inicio_contrato 
        where tab0.id_contrato = $id_contrato
EOD;
            $records = CN_TABLE::executeSQL($sql);

            $ini_contra = $records[0]['ini_contra'];
            $terminacion = $records[0]['terminacion'];
            $liquidacion = $records[0]['liquidacion'];

            //Validar sino posee rp - 20150907
            if (isset($request['id_rp'])) {
                $id_rp = $request['id_rp'];
            } else {
                $id_rp = 0;
            }

            $dias_plazo = $records[0]['dias_plazo'];
            $meses_plazo = $records[0]['meses_plazo'];
            $anhos_plazo = $records[0]['anhos_plazo'];

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


            if ($dias_plazo == "")
                $dias_plazo = 0;

            if ($meses_plazo == "")
                $meses_plazo = 0;

            if ($anhos_plazo == "")
                $anhos_plazo = 0;


            if ($meses_liquida == "")
                $meses_liquida = 0;

            $sql = <<<EOD
select to_char(fecha,'YYYY-MM-DD') AS FECHA_RP from rps_v where id = $id_rp
EOD;
            $records = CN_TABLE::executeSQL($sql);

            //Validar sino posee rp - 20150907
            if (count($records) > 0) {
                $fecha_rp = $records[0]['fecha_rp'];
            } else {
                $fecha_rp = $request['fecha_inicio'];
            }

            if ($ini_contra == "FECHA ACTA DE INICIO") {

                $request['fecha_inicio'] = $request ['fecha_inicio'];
            } else if ($ini_contra == "FECHA APROBACION POLIZA") {

                $request['fecha_inicio'] = $request['fecha_aprueba_poliza'];
            } else {

                $request['fecha_inicio'] = $fecha_rp;
            }

            if ($terminacion == "0") {

                $fecha_inicio = $request['fecha_inicio'];

                //Se cambia de sumar mes con intervalo, por la funcion add_months de oracle - 20150929
                //select to_char(to_date('$fecha_inicio','YYYY-MM-DD') + INTERVAL '$dias_plazo' DAY + INTERVAL '$meses_plazo' MONTH + INTERVAL '$anhos_plazo' YEAR,'YYYY-MM-DD')as fecha_termina  from dual
                //Se quita sumar dias con intervalos - 20160520
                //to_char( add_months( (to_date('$fecha_inicio','YYYY-MM-DD') + INTERVAL '$dias_plazo' DAY) , $meses_plazo) + INTERVAL '$anhos_plazo' YEAR,'YYYY-MM-DD')as fecha_termina  
                $sql = <<<EOD
select 
to_char( add_months( (to_date('$fecha_inicio','YYYY-MM-DD') + '$dias_plazo' ) , $meses_plazo) + INTERVAL '$anhos_plazo' YEAR,'YYYY-MM-DD')as fecha_termina  
from dual
EOD;
                $records = CN_TABLE::executeSQL($sql);

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

                $request['fecha_terminacion'] = $fecha_termina;
            } else {

                $request['fecha_terminacion'] = $request['fecha_terminacion'];
            }

            if ($liquidacion == "1") {

                $fecha_inicio = $request['fecha_inicio'];

                //Se cambia de sumar mes con intervalo, por la funcion add_months de oracle - 20150929
                //select to_char(to_date('$fecha_inicio','YYYY-MM-DD') + INTERVAL '$meses_plazo' MONTH,'YYYY-MM-DD')as fecha_liquida  from dual
                $sql = <<<EOD
select 
to_char( add_months( to_date('$fecha_inicio','YYYY-MM-DD') , $meses_plazo) ,'YYYY-MM-DD')as fecha_liquida  
from dual
EOD;
                $records = CN_TABLE::executeSQL($sql);

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

                $request['fecha_liquidacion'] = $fecha_liquida;
            }
        }

        //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
         */
        $id_rp = $request['id_rp'];
        $vigencia_rp = $request['vigencia_rp'];
        $id_contrato = $request['id_contrato'];
        $rp_sgr = $request['rp_sgr'];

        $sql = <<<EOD
        select tab1.id_contrato,rpanm.rp, tab0.*,nvl(tab1.valor,0) as valor_contrato, nvl(rpanm.VALOR,0),nvl(rpnew.valor,0) as valor_new,
case when (nvl(rpanm.VALOR,0)+nvl(rpnew.valor,0)) > nvl(tab1.valor,0) then 1 else 0 end as excede_contrato
from CO_LEGALIZA_CONTRATO tab0
left join co_contrato tab1 on tab0.ID_CONTRATO = tab1.ID_CONTRATO
left join RPS_CONTRATO_V rpanm on rpanm.rp = tab0.ID_RP and tab0.rp_sgr = rpanm.sgr and rpanm.VIGENCIA= tab1.ID_ANHOS
left join RPS_CONTRATO_V rpnew on rpnew.rp = $id_rp and rpnew.VIGENCIA= $vigencia_rp and rpnew.sgr = $rp_sgr
where tab1.id_contrato = $id_contrato
EOD;
        $records = CN_TABLE::executeSQL($sql);

        $excede_contrato = $records[0]['excede_contrato'];
        if($excede_contrato != 0){
            $errors['mensaje'] = "No se puede agregar RP ya que excederia el valor del contrato.";
            $errors['servicio'] = "co_legaliza_contrato";
        }

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

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    private function htmlClear($string) {
        $string = str_replace('<p>', '<p align="justify">', $string);
        $string = str_replace('<br>', '<br/>', $string);
        $string = str_replace('class=', '', $string);
        $string = str_replace('<img', '', $string);
        $string = str_replace('<td>X</td>', '<td align="center">X</td>', $string);
        //$string = str_replace('<td align="top">', '<td align="justify">', $string);
        //$string = str_replace('<td align="justify">X</td>', '<td align="center">X</td>', $string);
        $string = str_replace('<td rowspan="2">', '<td rowspan="2" align="justify">', $string);

        $string = str_replace('<font size="2">', '<font size="10">', $string);
        $string = str_replace('<font size="3">', '<font size="12">', $string);
        $string = str_replace('<font size="4">', '<font size="14">', $string);
        $string = str_replace('<font size="5">', '<font size="18">', $string);
        $string = str_replace('<font size="6">', '<font size="24">', $string);
        $string = str_replace('<font size="7">', '<font size="36">', $string);
        $string = str_replace('<table ', '<center><table ', $string);
        $string = str_replace('</table> ', '</table></center>', $string);
        $string = str_replace('<table ', '<table border="1"', $string);
        $string = str_replace('size="2"', 'size="10"', $string);
        $string = str_replace('size="3"', 'size="12"', $string);
        $string = str_replace('size="4"', 'size="14"', $string);
        $string = str_replace('size="5"', 'size="18"', $string);
        $string = str_replace('size="6"', 'size="24"', $string);
        $string = str_replace('size="7"', 'size="36"', $string);
        $string = str_replace('border="0"', 'border="1"', $string);
        $string = str_replace('<div>', '<div align="justify">', $string);
        $string = str_replace('&amp;amp;amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;nbsp;', '', $string);
        $string = str_replace('&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;', '', $string);
        $string = str_replace('<style type="text/css">P { margin-bottom: 0.08in; direction: ltr; color: rgb(0, 0, 0); line-height: 100%; text-align: justify; widows: 2; orphans: 2; }P.western { font-family: "Tahoma",sans-serif; font-size: 11pt; }P.cjk { font-family: "Times New Roman",serif; font-size: 11pt; }P.ctl { font-family: "Tahoma",sans-serif; font-size: 11pt; }A:link { color: rgb(0, 0, 255); }</style>', ' ', $string);

        $string = str_replace('<td colspan="2">', '<td colspan="2" align="justify">', $string);
        $string = str_replace('<td rowspan="3">', '<td rowspan="3" align="justify">', $string);
        $string = str_replace('<td colspan="3">', '<td colspan="3" align="justify">', $string);
        $string = str_replace('<td rowspan="4">', '<td rowspan="4" align="justify">', $string);
        $string = str_replace('<td colspan="4">', '<td colspan="4" align="justify">', $string);
        $string = str_replace('  ', ' ', $string);
        $string = str_replace('   ', ' ', $string);
        $string = str_replace('    ', ' ', $string);
        $string = str_replace('	    ', ' ', $string);
        $string = str_replace('		    ', ' ', $string);
        //$string = str_replace('<span lang="ES-TRAD">', '<span>', $string);
        $string = str_replace('<span lang="ES-COL">', '<span>', $string);
        $string = str_replace('<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->', '', $string);
        $string = str_replace('<p lang="es-MX" align="justify">', '', $string);
        //$string = str_replace('<span>', '', $string);
        //$string = str_replace('</span>', '', $string); #Este es el que MAS jode :::::::::::::::::
        $string = str_replace('valign', 'align', $string);
        ;
        $string = str_replace('width=', '', $string);
        //    $string = str_replace('&nbsp;', '', $string);
        //      $string = str_replace('cellspacing=', '', $string);
        //      $string = str_replace('cellpadding=', '', $string);
        $string = str_replace('bordercolor=', '', $string);
        $string = str_replace('<td>', '<td align="justify">', $string);
        $string = str_replace('<li>', '<li align="justify">', $string);
        $string = str_replace('style=', '', $string);
        $string = str_replace('<br clear="all">', '', $string);
        return trim($string);
    }

}
