<?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 $
 */
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'
        ),
        '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'); //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
         */
        //accion add
        if ($Action == "ADD") {

            //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"])) {
                $request["email_envio"] = "modulocontratacion@sgc.gov.co";
            }
            $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.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,
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'];
            $objeto = $this->htmlClear($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 = "";



                $logger->info("CN_TABLE::envioCorreo 1");
                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(5);

            $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

            $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>';


            $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 Designación 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);



                $logger->info("CN_TABLE::envioCorreo 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
         */

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

}
