<?php

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

    /**
     * Executes index action
     *
     * @param sfRequest $request A request object
     */
    protected $table_names = array(
        'CO_MODIFICA_SUPERVISOR_V', 'CO_ESTUDIOS_PREVIOS_V'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'CO_ESTUDIOS_PREVIOS_V' =>
        array(
            'id_estudios_previos' => 'CO_MODIFICA_SUPERVISOR_V'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'CO_MODIFICA_SUPERVISOR_V' =>
        array(
            'id_modifica_supervisor' => 'id_modifica_supervisor',
            'id_estudios_previos' => 'id_estudios_previos',
            'id_supervisor_ini' => 'id_supervisor_ini',
            'id_supervisor_new' => 'id_supervisor_new',
            'fecha_modificacion' => 'fecha_modificacion',
            'id_mae_ter' => 'id_mae_ter',
            'motivo_actualiza' => 'motivo_actualiza',
            'supervisor_anterior' => 'supervisor_anterior',
            'supervisor_nuevo' => 'supervisor_nuevo',
            'usuario' => 'usuario'
        ),
        'CO_ESTUDIOS_PREVIOS_V' =>
        array(
            'proceso' => 'proceso',
            'modalidad' => 'modalidad'
        )
    ); //por cada tabla especificar los campos del select

    /*
     * 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(
    ); //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
    protected $fields_orderBy = array(
        'id_estudios_previos'
    ); //campos para el ordenamiento de la consulta
//    protected $table_field_obligatory = array('id_debito'); //campos obligatorios de filtro - estan en el request

    /*
     * Variables manejo de log
     */
    //true - consulta de administracion
    protected $is_admin = true;
    //si es servicio para filtro agregar campo
//    protected $filtro = 'Area';
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;


    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_modifica_supervisor'; //identificador de la tabla
    protected $id_names = array('id_modifica_supervisor'); //llave primaria
    protected $field_names = array('id_estudios_previos', 'id_supervisor_ini', 'id_supervisor_new', 'fecha_modificacion', 'id_mae_ter', 'motivo_actualiza'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'CO_MODIFICA_SUPERVISOR'; //tabla en la cual se aplican los cambios
    protected $has_activo = true; //si posee campo en la tabla de nombre activo ---- ESTADO PARA REGALIAS - CARTERA
    protected $has_vigencia = false; //si posee vigencia
    protected $has_cen_op = false; //si posee centro de operacion
    protected $has_id_cia = false; //si posee compañia
    protected $has_secuencia = false; //si posee secuencia la tabla - true si es por tabla, false - trigger
//    protected $en_mayuscula = true; // si se pone, se puede poner en mayucula con true y en minuscula con false, de lo contrario la pone tal cual la BD
    protected $campo_fecha_sistema = array();


    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_modifica_supervisor'; //identificador unico de la tabla
    //false - Registrar log para list - consultar
    protected $log_list = false;
    //false - Registrar log para add - update - remove
    protected $log_crud = false;

    /**
     * Construccion de observacion perzonalizada
     * 
     * Toda variable para tomarla del request con el formato:
     * &request-variable&
     * 
     * false - observacion por defecto
     *
     * @var string 
     */
    protected $observacion_list = false;
    protected $observacion_add = false;
    protected $observacion_update = false;
    protected $observacion_remove = false;

    // Validate
    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Add
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateAdd(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        $id_estudios_previos = $request['id_estudios_previos'];

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

        $sql = <<<EOD
select tab0.*

from co_contrato tab0
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
join co_estudios_previos tab2 ON tab2.id_estudios_previos = tab1.id_estudios_previos

where tab2.id_estudios_previos = $id_estudios_previos
EOD;


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

        //Validar que hay contrato para el ep, para que en el post process envie correo( Generación del PDF de Comunicacion Interna ) - 20240705
        if (count($records) > 0) {

            $id_contrato = $records[0]['id_contrato'];
            $no_contrato = $records[0]['no_contrato'];
            $id_anhos = $records[0]['id_anhos'];

            $sql = <<<EOD
select 
tab0.*
from co_legaliza_contrato tab0
where tab0.id_contrato = $id_contrato
EOD;


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

            /*
             *  Generar errores en $errors
             */
            if (count($records) == 0) {
                //Incidente #38381, validacion por falta de datos - 20240705::LAVILA
                $errors['mensaje'] = "No existe legalizacion del contrato($no_contrato-$id_anhos) verificar, refrescar pantalla y volver a probar.";
                $errors['servicio'] = "co_contrato";
            }
        }

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Update
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateUpdate(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Ejecuta una validación previa a la ejecución de una operación tipo Remove
     *
     * @param sfWebRequest $request
     * @return array 
     */
    protected function validateRemove(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

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

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    /**
     * Acciones anteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    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") {
            $request['id_mae_ter'] = $request['id_username'];
        }

        //accion update
        if ($Action == "UPDATE") {
            $request['id_mae_ter'] = $request['id_username'];
        }

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

        return $request;
    }

    /**
     * Acciones posteriores a la original
     * 
     * return sfWebRequest Changed Request with additional parameters.
     * 
     * @param type $Action ( ADD, UPDATE, REMOVE )
     * @param sfWebRequest $request
     * @return \sfWebRequest 
     */
    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);
        //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;
        }

        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {

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

                $id_estudios_previos = $list_data_post[0]['id_estudios_previos'];
                $id_supervisor_nuevo = $list_data_post[0]['id_supervisor_new'];
                $invalida = <<<EOD
update co_estudios_previos set id_supervisor = $id_supervisor_nuevo where id_estudios_previos=$id_estudios_previos
EOD;
                CN_TABLE::executeSQL($invalida);

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

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

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

            $sql = <<<EOD
select tab0.*

from co_contrato tab0
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
join co_estudios_previos tab2 ON tab2.id_estudios_previos = tab1.id_estudios_previos

where tab2.id_estudios_previos = $id_estudios_previos
EOD;


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

            //Validar que hay contrato para el ep - 20160718
            if (count($records) > 0) {

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

                $sql = <<<EOD
select tab0.*

from co_legaliza_contrato tab0

where tab0.id_contrato = $id_contrato
EOD;


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

                $id_legaliza_contrato = $records[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'];



                $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 = $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

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

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



                $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);
                    }
                    // 20250416 se añade copia al correo contratosyconvenios@sgc.gov.co 39756
                    array_push($datos_usuario, "0;1;contratosyconvenios@sgc.gov.co;contratosyconvenios@sgc;Envio notificacion");

//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/>
                (Novedad de Modificación)
                                
                </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);



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

        return $request;
    }

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

}
