<?php

require_once(dirname(__FILE__) . '/../../../../../plugins/bhLDAPAuthPlugin/lib/adLDAP.php');

/**
 * Creado: 20191024
 * Link: http://soporte14.sofhouse.net/canon/web/api_dev.php/api/webservice_actualizacion_titulo/list.json
 * webservice_actualizacion_titulo actions.
 *
 * @package    canon
 * @subpackage webservice_actualizacion_titulo
 * @author     Manuel Enrique Paredes Lopez
 * @email      mparedes@sofhouse.net
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class webservice_actualizacion_tituloActions extends sfActions {

    /**
     * Executes list action
     *
     * @param sfRequest $request A request object
     */
    public function executeList(sfWebRequest $request) {

        //Log especifico de procesos completos
        $logPath = sfConfig::get('sf_log_dir') . '/webservice_sigm.log';
        $this->custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
        $this->custom_logger->info("[webservice_actualizacion_titulo] Servicio executeList webservice_actualizacion_titulo.\n");
        $this->custom_logger->info("---BEGIN Logging request--- (Revisar log proceso_completo.log)");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->custom_logger->info("[webservice_actualizacion_titulo] request[$key] = $value\n");
        }
        $this->custom_logger->info("--------------------------------------------------/  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->custom_logger->info("[webservice_actualizacion_titulo] request[$key] = $value");
        }
        $this->custom_logger->info("---END Logging request");

        $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

        //Codigo de error defecto - 20191001
        $codigo_error = 0;

        $int = 0;
        $service_url = "";
        $entidad_cliente = "";

        foreach ($array as $routeName => $routeData) {
            if ('service_url_local' == $routeName) {
                foreach ($routeData as $key => $value) {
                    if ($key == 'value') {
                        $service_url = $value;
                    }
                }
            }
            if ('entidad_cliente' == $routeName) {
                foreach ($routeData as $key => $value) {
                    if ($key == 'value') {
                        $entidad_cliente = $value;
                    }
                }
            }
            $int++;
        }

        //Abrir nueva conexion con la Base de Datos
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        $this->parameters = true;
        $parametros = '';


        //Obtenemos la Hora actual de la BD
        $sql = <<<EOD
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as fecha from dual
EOD;
        //ejecuta el sql
        $this->conn->execute($sql);
        $result = CN_TABLE::executeSQL($sql);
        $fecha_log_ini = $result[0]['fecha']; //Establecemos fechaHora de Inicio de consumo del servicio

        $this->custom_logger->info("HORA INICIO:" . $fecha_log_ini);
        $cliente = !isset($request['cliente']) ? 'ANNA' : $request['cliente']; //Cliente que utiliza el servicio
        //Variables por defecto para el registro de log
        $id_tabla = 'null';
        //obtener id maestro tabla
        $id_mae_bd = CN_TABLE::consultarIdTablaBD('RMN_TITULO');
        //  1- CONSULTAR, 2- ACTUALIZAR, 3 - ADICIONAR, 4 - ELIMINAR, 5 - ANULAR
        $id_ope_bd = 2;
        //id del maestro tercero
        $id_mae_ter_log = 1;
        //el username desde qebsafiERP
        $usuario = 1;
        //comando que identifica la funcionalidad
        $comando = 'webservice_actualizacion_titulo';
        //construir observacion
        $observacion_log = "'Se ingreso a generar titulo desde servicio web webservice_actualizacion_titulo'";
        $error_log = '';
        
        $usuario_web = 'admin';

        //Manejo de errores
        //Variables obligatorias
        $id_vigencia = $id_anhos = date('Y');
        $fecha_proceso = CN_TABLE::fechaSistema();

        //PARAMETROS Y VARIABLES
        /**
         * Variables obligatorias y Opcionales
         */
        $id_titulo = !isset($request['id_titulo']) ? 'null' : $request['id_titulo'];
        $codigo_titulo = $codigo_expediente = !isset($request['codigo_expediente']) ? '' : $request['codigo_expediente'];
        $codigo_rmn = !isset($request['codigo_rmn']) ? '' : $request['codigo_rmn'];
        $fecha_contrato = !isset($request['fecha_contrato']) ? '' : $request['fecha_contrato'];
        $fecha_inscripcion_rmn = !isset($request['fecha_inscripcion_rmn']) ? '' : $request['fecha_inscripcion_rmn'];
        $fecha_terminacion = !isset($request['fecha_terminacion']) ? '' : $request['fecha_terminacion'];
        $area_otorgada = !isset($request['area_otorgada']) ? '' : $request['area_otorgada'];
        $area_definitiva = !isset($request['area_definitiva']) ? '' : $request['area_definitiva'];
        $id_grupo_trabajo = !isset($request['id_grupo_trabajo']) ? '' : $request['id_grupo_trabajo'];
        $tipo_competencia = !isset($request['tipo_competencia']) ? '' : $request['tipo_competencia'];
        $id_modalidad = !isset($request['id_modalidad']) ? '' : $request['id_modalidad'];
        $fecha_inicial_mod = !isset($request['fecha_inicial_mod']) ? '' : $request['fecha_inicial_mod'];
        $fecha_final_mod = !isset($request['fecha_final_mod']) ? '' : $request['fecha_final_mod'];
        $id_persona = !isset($request['id_persona']) ? '' : $request['id_persona'];
        $id_tipo_rol_persona = !isset($request['id_tipo_rol_persona']) ? '' : $request['id_tipo_rol_persona'];
        $fecha_inicial_per = !isset($request['fecha_inicial_per']) ? '' : $request['fecha_inicial_per'];
        $fecha_final_per = !isset($request['fecha_final_per']) ? '' : $request['fecha_final_per'];
        $id_titulo_persona = !isset($request['id_titulo_persona']) ? '' : $request['id_titulo_persona'];
        $id_titulo_municipio = !isset($request['id_titulo_municipio']) ? '' : $request['id_titulo_municipio'];
        $id_titulo_departamento = !isset($request['id_titulo_departamento']) ? '' : $request['id_titulo_departamento'];


        $area_otorgada = str_replace(",", ".", $area_otorgada);
        $area_definitiva = str_replace(",", ".", $area_definitiva);

        //Obtenemos todos los parametros
        //Declaramos variable para almacenar parametros obtenidos en un arreglo
        $json_parametros = array();
        $parameters = 'clave_web;usuario_web;id_titulo;'
                . 'codigo_expediente;codigo_rmn;fecha_contrato;'
                . 'fecha_inscripcion_rmn;fecha_terminacion;area_otorgada;area_definitiva;'
                . 'id_grupo_trabajo;tipo_competencia;id_modalidad;fecha_inicial_mod;fecha_final_mod;id_persona;id_tipo_rol_persona;'
                . 'fecha_inicial_per;fecha_final_per;id_titulo_persona;id_titulo_municipio;id_titulo_departamento';
        $param_oblig = 'id_titulo;'
                . 'codigo_expediente;codigo_rmn;fecha_contrato;'
                . 'fecha_inscripcion_rmn;area_otorgada;area_definitiva;'
                . 'id_grupo_trabajo;tipo_competencia;id_modalidad;fecha_inicial_mod;fecha_final_mod;id_persona;id_tipo_rol_persona;'
                . 'fecha_inicial_per;fecha_final_per;id_titulo_persona;id_titulo_municipio;id_titulo_departamento';
        $campostype = 'num;'
                . 'var;var;date;'
                . 'date;num;num;'
                . 'num;num;num;date;date;var;var'
                . 'date;date;var;var;var';
        $valand = $this->valCAMP($param_oblig, $campostype, $request);
                        
        $parametros_datos = explode(';', $parameters);
        //Recorremos cada una de las variables y almacenamos en json parametros
        foreach ($parametros_datos as $value) {
            if (isset($request[$value])) {
                $json_parametros[$value] = $request[$value];
            }
        }


        /**
         * Inicio del proceso
         */
        try {
               if ($valand!='false'){
                    
                    $id_titulo='null';
                    $codigo_error = 3;
                throw new Exception(" CAMPOS Numericos: $valand");
                    
                }
                
                if (!CN_TABLE::validarStringDateFormat($fecha_contrato)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_contrato no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                 if (!CN_TABLE::validarStringDateFormat($fecha_inscripcion_rmn)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_inscripcion_rmn no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                if (!CN_TABLE::validarStringDateFormat($fecha_terminacion)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_terminacion no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                
                if (!CN_TABLE::validarStringDateFormat($fecha_inicial_mod)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_inicial_mod no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                 if (!CN_TABLE::validarStringDateFormat($fecha_final_mod)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_final_mod no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                
                /* Estas fechas en request pueden venir separadas por ; no validar formato anterior con este metodo
                 * if (!CN_TABLE::validarStringDateFormat($fecha_inicial_per)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_inicial_per no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }
                
                
                  if (!CN_TABLE::validarStringDateFormat($fecha_final_per)) {
                    
                $codigo_error = 26;
                throw new Exception("El formato del parametro fecha_final_per no es valido. el formato correcto es yyyy-mm-dd.");
                
                
                }*/
                
                
                
                

            $id_tabla = $id_titulo;

            // Registro de consulta en tabla de log
            $this->custom_logger->info("[webservice_actualizacion_titulo] " . $observacion_log . ".\n");
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $comando, $observacion_log);

            // Variables de retorno
            $resultado = array();

            /**
             * Verificar acceso a servicio por LDAP - 20191001
             */
            //Para local sofhouse no valida - 20191001
            if ($entidad_cliente != 7) {

                //Variables de configuracion del servidor de conexion LDAP (app.yml)
                $account_suffix = sfConfig::get('app_account_suffix');
                $domain_controllers = sfConfig::get('app_domain_controllers');
                $base_dn = sfConfig::get('app_base_dn');
                $admin_username = sfConfig::get('app_admin_username');
                $admin_password = sfConfig::get('app_admin_password');

                $config = array(
                    'account_suffix' => $account_suffix,
                    'domain_controllers' => array($domain_controllers),
                    'base_dn' => $base_dn,
                    'admin_username' => $admin_username,
                    'admin_password' => $admin_password,
                );

                $adldap = new adLDAP($config);

                if (!isset($request['usuario_web']) || !isset($request['clave_web'])) {
                    //Codigo de error - 20191001
                    $codigo_error = 1;
                    throw new Exception("Falta los parámetros de acceso obligatorios verificar.");
                }
                //Obtenemos datos de validacion de usuario
                //Estos datos deben venir encriptados en base64
                $usuario_web = $request['usuario_web'];
                $clave_web = $request['clave_web'];
                //Desencriptamos los datos de Usuario y contraseña
                $usuario_web = base64_decode($usuario_web);
                $clave_web = base64_decode($clave_web);
                $authUser = $adldap->authenticate($usuario_web, $clave_web);

                if ($authUser != true) {
                    //Codigo de error - 20191001
                    $codigo_error = 2;
                    throw new Exception("La autenticación de usuario($usuario_web) para el servicio web fallo; favor verificar.");
                }
            }


            /*
             * Verificar parametros - 20190911
             */
            //$param_oblig = 'id_titulo;codigo_expediente;codigo_rmn;fecha_contrato;fecha_inscripcion_rmn;area_otorgada;area_definitiva';
            $param_oblig = 'id_titulo;codigo_expediente;codigo_rmn;fecha_contrato;fecha_inscripcion_rmn;area_otorgada;area_definitiva;id_grupo_trabajo;tipo_competencia;id_modalidad;fecha_inicial_mod;fecha_final_mod;id_persona;id_tipo_rol_persona;fecha_inicial_per;fecha_final_per;id_titulo_persona;id_titulo_municipio;id_titulo_departamento';
            $param_oblig_datos = explode(';', $param_oblig);

            foreach ($param_oblig_datos as $value) {
                if (!isset($request[$value])) {
                    $this->parameters = false;
                    $parametros = $parametros . ';' . $value;
                }
            }

            if (!$this->parameters) {
                $parametros = substr($parametros, 1);
                //Codigo de error - 20191001
                $codigo_error = 3;
                throw new Exception("Falta alguno de los parámetros($parametros) obligatorios verificar.");
            }
            
            $sql = <<<EOD
select 
case when to_date('$fecha_terminacion','YYYY-MM-DD') is null or to_date('$fecha_terminacion','YYYY-MM-DD') > sysdate  
    then 1 else 0 end  as termino,
case when to_date('$fecha_terminacion','YYYY-MM-DD') is null or to_date('$fecha_terminacion','YYYY-MM-DD') > sysdate  
    then '' else 'TERMINADO DESDE ANNA' end  as motivo_terminacion
from dual  
EOD;

            //ejecuta y obtiene el resultado del sql
            $records = CN_TABLE::executeSQL($sql, true);
            $termino = $records[0]['termino'];
            $motivo_terminacion = $records[0]['motivo_terminacion'];

            /*
             * Verificar titulo
             */
            //sentencia sql
            $sql = <<<EOD
SELECT
    *
FROM rmn_titulo
where
id_titulo = $id_titulo 
EOD;
            //ejecuta el sql
            $resultado = CN_TABLE::executeSQL($sql);

            /**
             * Crear tercero
             */
            if (count($resultado) <= 0) {

                //sentencia sql
                $sql = <<<EOD
Insert into RMN_TITULO (ID_TITULO,COD_TITULO,FECHA_CONTRATO,FECHA_INSCRIPCION_RMN,PLACA_RMN,
ESTADO,FECHA_TER,MOTIVO_TER,ID_NOVEDAD,COD_EXP,UPD_FECHA_REG,ID_PROFESIONAL,ACTIVO_PIN) 
values ('$id_titulo','$codigo_titulo',to_date('$fecha_contrato','YYYY-MM-DD'),to_date('$fecha_inscripcion_rmn','YYYY-MM-DD'),'$codigo_rmn',
'$termino',to_date('$fecha_terminacion','YYYY-MM-DD'),'$motivo_terminacion',null,'$codigo_expediente','0',null,'0')
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de registro del titulo.");


                /*
                 * Registro de consulta en tabla de log 1 - CONSULTAR, 2 - ACTUALIZAR, 3 - ADICIONAR, 4	- ELIMINAR, 5 - ANULAR
                 */
                $id_ope_bd = 3;
                $observacion_log = "'Se adiciono id_titulo : " . $id_titulo . " desde la funcionalidad: " . $comando . "'";
            } else {

                //ACTUALIZAR SIN CAMBIO DE ESTADO y FECHA INSCRIPCION RMN
                $sql = <<<EOD
select                   
    case when $termino != estado then 0 else 1 end as cambio_estado, 
    upd_fecha_reg
from rmn_titulo 
where id_titulo = $id_titulo     
EOD;

                //ejecuta y obtiene el resultado del sql
                $records = CN_TABLE::executeSQL($sql, true);
                $cambio_estado = $records[0]['cambio_estado'];
                $upd_fecha_reg = $records[0]['upd_fecha_reg'];

                $id_novedad = '';

                //Registra novedad si cambio el estado
                if ($cambio_estado == 0) {

                    //ACTUALIZAR SIN CAMBIO DE ESTADO y FECHA INSCRIPCION RMN
                    $sql = <<<EOD
SELECT CA_NOVEDAD_SEQ.nextval id_novedad from dual     
EOD;

                    //ejecuta y obtiene el resultado del sql
                    $records = CN_TABLE::executeSQL($sql, true);
                    $id_novedad = $records[0]['id_novedad'];

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO CA_NOVEDAD (ID_NOVEDAD, ID_TITULO, ID_TIPO_NOVEDAD, FECHA_REGISTRO, OBSERVACIONES,APROBADA,ID_USUARIO
    )VALUES(
    $id_novedad,   $id_titulo,	    7, TRUNC(SYSDATE),
    'SE ENCONTRO UNA FECHA DE TERMINACION DE CONTRATO PARA EL TITULO: '|| '$codigo_rmn' ||' CON FECHA '|| '$fecha_terminacion' ,1,1 ) 
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);
                    $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo novedad.");
                }

                //sentencia sql
                $sql = <<<EOD
UPDATE RMN_TITULO SET 
COD_TITULO = '$codigo_expediente'
        ,FECHA_CONTRATO = to_date('$fecha_contrato','YYYY-MM-DD')
        ,FECHA_INSCRIPCION_RMN = case when $upd_fecha_reg = 0 then to_date('$fecha_inscripcion_rmn','YYYY-MM-DD') else FECHA_INSCRIPCION_RMN end 
        ,PLACA_RMN = '$codigo_rmn'
        ,ESTADO =  $termino
        ,FECHA_TER = to_date('$fecha_terminacion','YYYY-MM-DD')
        ,MOTIVO_TER = '$motivo_terminacion'			
        ,COD_EXP = '$codigo_expediente' 			
        ,ID_NOVEDAD = '$id_novedad' 
WHERE ID_TITULO  = $id_titulo 
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo del titulo.");

                /*
                 * Registro de consulta en tabla de log 1 - CONSULTAR, 2 - ACTUALIZAR, 3 - ADICIONAR, 4	- ELIMINAR, 5 - ANULAR
                 */
                $id_ope_bd = 2;
                $observacion_log = "'Se actualizo id_titulo : " . $id_titulo . " desde la funcionalidad: " . $comando . "'";
            }

            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $comando, $observacion_log);


            /**
             * Actualizar AREA
             */
            //sentencia sql
            $sql = <<<EOD
select * from in_titulo_area where id_titulo = $id_titulo
EOD;
            //ejecuta el sql
            $this->conn->execute($sql);
            $resultado = CN_TABLE::executeSQL($sql);

            /**
             * Crear AREA
             */
            if (count($resultado) <= 0) {

                //sentencia sql
                $sql = <<<EOD
INSERT INTO IN_TITULO_AREA (ID_TITULO, AREA, AREA_TOTAL,
    FECHA_ASIGNACION, FECHA_FIN,
    ESTADO, ID_NOVEDAD, ACTUAL
    ) VALUES (
    $id_titulo, $area_otorgada, $area_definitiva, TRUNC(SYSDATE),
    NULL, 1, NULL, 1 ) 
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de registro del area.");
            } else {

                //sentencia sql
                $sql = <<<EOD
select 
case when registrado = 0 then CAMBIO else -1 end as cambio,
area 

from
(SELECT
round(AREA, 0) AS AREA
,CASE WHEN round(AREA, 0) != $area_otorgada THEN 1 ELSE 0 END AS CAMBIO
,(select count(1) from in_titulo_area where id_titulo = $id_titulo and area = $area_otorgada ) as registrado
FROM IN_TITULO_AREA WHERE ID_TITULO = $id_titulo AND ACTUAL= 1
)

EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);
                $cambio = $resultado[0]['cambio'];
                $area = $resultado[0]['area'];

                if ($cambio > 0) {

                    //ACTUALIZAR SIN CAMBIO DE ESTADO y FECHA INSCRIPCION RMN
                    $sql = <<<EOD
SELECT CA_NOVEDAD_SEQ.nextval id_novedad from dual     
EOD;

                    //ejecuta y obtiene el resultado del sql
                    $records = CN_TABLE::executeSQL($sql, true);
                    $id_novedad = $records[0]['id_novedad'];

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO CA_NOVEDAD (ID_NOVEDAD, ID_TITULO,ID_TIPO_NOVEDAD,FECHA_REGISTRO, OBSERVACIONES,APROBADA,ID_USUARIO
)VALUES(
$id_novedad, $id_titulo, 1, TRUNC(SYSDATE), 'SE ENCONTRÓ UN CAMBIO EN EL ÁREA ACTUAL, PASO DE ' || '$area' || ' A ' || '$area_otorgada' || ' mt(2)',1,1)
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
UPDATE IN_TITULO_AREA SET
FECHA_FIN = TRUNC(SYSDATE), 
    ACTUAL = 0
WHERE ID_TITULO = $id_titulo AND ACTUAL = 1
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO
IN_TITULO_AREA (ID_TITULO, AREA, AREA_TOTAL, FECHA_ASIGNACION,ESTADO,ID_NOVEDAD, ACTUAL
) VALUES (
$id_titulo,'$area_otorgada', '$area_definitiva', TRUNC(SYSDATE), 1, $id_novedad, 1 )
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);
                    $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo del area.");
                }
            }

            /**
             * Actualizar COMPETENCIA
             */
            //sentencia sql
            $sql = <<<EOD
select * from IN_TITULO_COMPETENCIA where id_titulo = $id_titulo
EOD;
            //ejecuta el sql
            $this->conn->execute($sql);
            $resultado = CN_TABLE::executeSQL($sql);

            /**
             * Crear COMPETENCIA
             */
            if (count($resultado) <= 0) {

                //sentencia sql
                $sql = <<<EOD
INSERT INTO IN_TITULO_COMPETENCIA (ID_TITULO, ID_COMPETENCIA, TIPO,
FECHA_ASIGNACION, ACTUAL) VALUES(
$id_titulo, $id_grupo_trabajo, $tipo_competencia, TRUNC(SYSDATE) , 1)                        
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de registro de la competencia.");
            } else {

                //sentencia sql
                $sql = <<<EOD
SELECT
    *
FROM in_titulo_competencia_mv
where
id_competencia != $id_grupo_trabajo
and actual = 1
and id_titulo = $id_titulo 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) > 0) {

                    $canon_competencia = $resultado[0]['nombre'];

                    //sentencia sql
                    $sql = <<<EOD
SELECT
    *
FROM rmn_competencia
where
id_competencia = $id_grupo_trabajo  
EOD;
                    //ejecuta el sql
                    $resultado = CN_TABLE::executeSQL($sql);

                    if (count($resultado) <= 0) {
                        //Codigo de error - 20191001
                        $codigo_error = 17;
                        throw new Exception("No existe el tipo de competencia $id_grupo_trabajo.");
                    }

                    $nombre = $resultado[0]['nombre'];

                    //ACTUALIZAR SIN CAMBIO DE ESTADO y FECHA INSCRIPCION RMN
                    $sql = <<<EOD
SELECT CA_NOVEDAD_SEQ.nextval id_novedad from dual     
EOD;

                    //ejecuta y obtiene el resultado del sql
                    $records = CN_TABLE::executeSQL($sql, true);
                    $id_novedad = $records[0]['id_novedad'];

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO CA_NOVEDAD (ID_NOVEDAD, ID_TITULO,ID_TIPO_NOVEDAD,FECHA_REGISTRO, OBSERVACIONES,APROBADA,ID_USUARIO
)VALUES(
$id_novedad, $id_titulo, 5, TRUNC(SYSDATE), 'SE ENCONTRO UN CAMBIO EN LA COMPETENCIA, DE '|| '$canon_competencia' ||' A '||'$nombre',1,1)
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
UPDATE IN_TITULO_COMPETENCIA SET
    ACTUAL = 0
WHERE ID_TITULO = $id_titulo AND ACTUAL = 1
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO IN_TITULO_COMPETENCIA (ID_TITULO, ID_COMPETENCIA, TIPO,
FECHA_ASIGNACION, ACTUAL,ID_NOVEDAD) VALUES(
$id_titulo, $id_grupo_trabajo, $tipo_competencia, TRUNC(SYSDATE) , 1,$id_novedad)  
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);
                    $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo la competencia.");
                }
            }

            /**
             * Actualizar MODALIDAD
             */
            //sentencia sql
            $sql = <<<EOD
select * from rmn_titulo_modalidad where id_titulo = $id_titulo
EOD;
            //ejecuta el sql
            $this->conn->execute($sql);
            $resultado = CN_TABLE::executeSQL($sql);

            /**
             * Crear MODALIDAD
             */
            if (count($resultado) <= 0) {

                //sentencia sql
                $sql = <<<EOD
INSERT INTO RMN_TITULO_MODALIDAD (FECHA_INSCRIPCION, FECHA_FIN, ID_MODALIDAD, ID_NOVEDAD, ID_TITULO, ID_TITULO_MODALIDAD, ACTUAL)
    VALUES (TO_DATE('$fecha_inicial_mod', 'YYYY-MM-DD'), TO_DATE('$fecha_final_mod', 'YYYY-MM-DD'), $id_modalidad, NULL ,  $id_titulo , NULL , 1)
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de registro de la modalidad.");

                //sentencia sql
                $sql = <<<EOD
 SELECT N.NORMA,					
    (SELECT COUNT(*) FROM CA_TITULO_NORMA WHERE ID_TITULO = $id_titulo ) AS NORMA_ACTUAL,
    NVL((SELECT ID_NORMA FROM CA_MODALIDAD_NORMA WHERE ID_MODALIDAD = $id_modalidad AND ID_NORMA = N.NORMA ), 0 ) AS ID_NORMA,
    (SELECT COUNT (*) FROM CA_MODALIDAD_NORMA WHERE ID_MODALIDAD = $id_modalidad AND ID_NORMA = N.NORMA) AS CONTADOR 
    FROM 
    (SELECT id_norma AS NORMA from (select max(fecha_vigencia) as fecha_vigencia, id_norma, rownum as num from ca_norma_canon
    where 1 = 1 AND Length('$fecha_inscripcion_rmn') > 1
    and (to_date('$fecha_inscripcion_rmn' , 'YYYY-MM-DD')) >= fecha_vigencia
    group by fecha_vigencia , id_norma, rownum order by fecha_vigencia desc 
    ) WHERE rownum = ( SELECT min(rownum) from ca_norma_canon where 1 = 1 and (TO_DATE('$fecha_inscripcion_rmn', 'YYYY-MM-DD')) >=fecha_vigencia )

    UNION ALL

    SELECT 1
    FROM dual
    WHERE NOT EXISTS (

    SELECT id_norma AS NORMA from (select max(fecha_vigencia) as fecha_vigencia, id_norma, rownum as num from ca_norma_canon
    where 1 = 1 AND Length('$fecha_inscripcion_rmn') > 1
    and (to_date('$fecha_inscripcion_rmn' , 'YYYY-MM-DD')) >= fecha_vigencia
    group by fecha_vigencia , id_norma, rownum order by fecha_vigencia desc 
    ) WHERE rownum = ( SELECT min(rownum) from ca_norma_canon where 1 = 1 and (TO_DATE('$fecha_inscripcion_rmn', 'YYYY-MM-DD')) >=fecha_vigencia )

    )

) N 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) > 0) {

                    $contador = $resultado[0]['contador'];
                    $norma = $resultado[0]['norma'];

                    if ($contador == 0) {
                        //sentencia sql
                        $sql = <<<EOD
INSERT INTO CA_MODALIDAD_NORMA (ID_MODALIDAD, ID_NORMA, ESTADO) VALUES 
                    ($id_modalidad, $norma , 1)
EOD;
                        //ejecuta el sql
                        $this->conn->execute($sql);
                    }
                }
            } else {

                //sentencia sql
                $sql = <<<EOD
SELECT
    *
FROM rmn_titulo_modalidad_mv
where
id_modalidad != $id_modalidad
and actual = 1
and id_titulo = $id_titulo 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) > 0) {

                    $canon_nombre = $resultado[0]['nombre'];

                    //sentencia sql
                    $sql = <<<EOD
SELECT
    *
FROM rmn_modalidad
where
id_modalidad = $id_modalidad 
EOD;
                    //ejecuta el sql
                    $resultado = CN_TABLE::executeSQL($sql);

                    if (count($resultado) <= 0) {
                        //Codigo de error - 20191001
                        $codigo_error = 18;
                        throw new Exception("No existe el tipo de modalidad $id_modalidad.");
                    }

                    $nombre = $resultado[0]['nombre'];

                    //ACTUALIZAR SIN CAMBIO DE ESTADO y FECHA INSCRIPCION RMN
                    $sql = <<<EOD
SELECT CA_NOVEDAD_SEQ.nextval id_novedad from dual     
EOD;

                    //ejecuta y obtiene el resultado del sql
                    $records = CN_TABLE::executeSQL($sql, true);
                    $id_novedad = $records[0]['id_novedad'];

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO CA_NOVEDAD (ID_NOVEDAD, ID_TITULO,ID_TIPO_NOVEDAD,FECHA_REGISTRO, OBSERVACIONES,APROBADA,ID_USUARIO
)VALUES(
$id_novedad, $id_titulo, 3, TRUNC(SYSDATE), 'SE ENCONTRARON CAMBIOS EN LOS TITULOS MODALIDAD DE ' || '$canon_nombre' || ' A ' || '$nombre',1,1)
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
UPDATE RMN_TITULO_MODALIDAD SET
    ACTUAL = 0
WHERE ID_TITULO = $id_titulo AND ACTUAL = 1
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO RMN_TITULO_MODALIDAD (FECHA_INSCRIPCION, FECHA_FIN, ID_MODALIDAD, ID_NOVEDAD, ID_TITULO, ID_TITULO_MODALIDAD, ACTUAL)
    VALUES (TO_DATE('$fecha_inicial_mod', 'YYYY-MM-DD'), TO_DATE('$fecha_final_mod', 'YYYY-MM-DD'), $id_modalidad, $id_novedad ,  $id_titulo , NULL , 1)   
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);
                    $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo la modalidad.");
                }
            }

            /**
             * Actualizar NORMA
             */
            //sentencia sql
            $sql = <<<EOD
select * from ca_titulo_norma where id_titulo = $id_titulo
EOD;
            //ejecuta el sql
            $this->conn->execute($sql);
            $resultado = CN_TABLE::executeSQL($sql);

            /**
             * Crear NORMA
             */
            if (count($resultado) <= 0) {

                //sentencia sql
                $sql = <<<EOD
 SELECT N.NORMA,					
    (SELECT COUNT(*) FROM CA_TITULO_NORMA WHERE ID_TITULO = $id_titulo ) AS NORMA_ACTUAL,
    NVL((SELECT ID_NORMA FROM CA_MODALIDAD_NORMA WHERE ID_MODALIDAD = $id_modalidad AND ID_NORMA = N.NORMA ), 0 ) AS ID_NORMA,
    (SELECT COUNT (*) FROM CA_MODALIDAD_NORMA WHERE ID_MODALIDAD = $id_modalidad AND ID_NORMA = N.NORMA) AS CONTADOR 
    FROM 
    (SELECT id_norma AS NORMA from (select max(fecha_vigencia) as fecha_vigencia, id_norma, rownum as num from ca_norma_canon
    where 1 = 1 AND Length('$fecha_inscripcion_rmn') > 1
    and (to_date('$fecha_inscripcion_rmn' , 'YYYY-MM-DD')) >= fecha_vigencia
    group by fecha_vigencia , id_norma, rownum order by fecha_vigencia desc 
    ) WHERE rownum = ( SELECT min(rownum) from ca_norma_canon where 1 = 1 and (TO_DATE('$fecha_inscripcion_rmn', 'YYYY-MM-DD')) >=fecha_vigencia )

    UNION ALL

    SELECT 1
    FROM dual
    WHERE NOT EXISTS (

    SELECT id_norma AS NORMA from (select max(fecha_vigencia) as fecha_vigencia, id_norma, rownum as num from ca_norma_canon
    where 1 = 1 AND Length('$fecha_inscripcion_rmn') > 1
    and (to_date('$fecha_inscripcion_rmn' , 'YYYY-MM-DD')) >= fecha_vigencia
    group by fecha_vigencia , id_norma, rownum order by fecha_vigencia desc 
    ) WHERE rownum = ( SELECT min(rownum) from ca_norma_canon where 1 = 1 and (TO_DATE('$fecha_inscripcion_rmn', 'YYYY-MM-DD')) >=fecha_vigencia )

    )

) N  
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) > 0) {

                    $norma = $resultado[0]['norma'];

                    //sentencia sql
                    $sql = <<<EOD
INSERT INTO CA_TITULO_NORMA (ACTUAL, FECHA_INSCRIPCION, ID_NORMA,  ID_TITULO
)VALUES(1, to_date('$fecha_inscripcion_rmn','YYYY-MM-DD'),$norma,$id_titulo     				
) 
EOD;
                    //ejecuta el sql
                    $this->conn->execute($sql);
                    $this->logMessage("[webservice_actualizacion_titulo] SQL de registro de la norma.");
                }
            }


            /**
             * Actualizar PERSONA
             */
            /**
             * Recorrer todos los titulo persona
             */
            $param_id_persona = explode(';', $id_persona);
            $param_id_tipo_rol_persona = explode(';', $id_tipo_rol_persona);
            $param_fecha_inicial_per = explode(';', $fecha_inicial_per);
            $param_fecha_final_per = explode(';', $fecha_final_per);
            $param_id_titulo_persona = explode(';', $id_titulo_persona);

            $cant_tit_per = count($param_id_titulo_persona);

            if ($cant_tit_per != count($param_id_persona) || $cant_tit_per != count($param_id_tipo_rol_persona) || $cant_tit_per != count($param_fecha_inicial_per) || $cant_tit_per != count($param_fecha_final_per)) {
                //Codigo de error - 20191001
                $codigo_error = 19;
                throw new Exception("Valores erroneos para las cadenas de personas por titulo.");
            }

            for ($i = 0; $i < $cant_tit_per; $i++) {

                $id_titulo_persona = $param_id_titulo_persona[$i];
                $id_persona = $param_id_persona[$i];
                $id_tipo_rol_persona = $param_id_tipo_rol_persona[$i];
                $fecha_inicial_per = $param_fecha_inicial_per[$i];
                $fecha_final_per = $param_fecha_final_per[$i];

                //sentencia sql
                $sql = <<<EOD
SELECT 
CASE WHEN TITULO = 0 THEN -1 ELSE CONTA END AS CONTA
FROM ( SELECT  
(SELECT COUNT(*) AS CONTA FROM RMN_TITULO_PERSONA P WHERE ID_TITULO_PERSONA = $id_titulo_persona )  AS CONTA,
(SELECT COUNT (*) AS TITULO FROM RMN_TITULO WHERE ID_TITULO = $id_titulo ) AS TITULO
FROM DUAL) 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                /**
                 * Crear PERSONA
                 */
                if (count($resultado) > 0) {

                    $conta = $resultado[0]['conta'];

                    //sentencia sql
                    $sql = <<<EOD
SELECT
    *
FROM rmn_persona
where
id_persona = $id_persona 
EOD;
                    //ejecuta el sql
                    $resultado = CN_TABLE::executeSQL($sql);

                    if (count($resultado) <= 0) {
                        //Codigo de error - 20191001
                        $codigo_error = 20;
                        throw new Exception("No existe persona $id_persona.");
                    }

                    //sentencia sql
                    $sql = <<<EOD
SELECT
    *
FROM rmn_tipo_rol_persona
where
id_tipo_rol_persona = $id_tipo_rol_persona 
EOD;
                    //ejecuta el sql
                    $resultado = CN_TABLE::executeSQL($sql);

                    if (count($resultado) <= 0) {
                        //Codigo de error - 20191001
                        $codigo_error = 21;
                        throw new Exception("No existe rol persona $id_tipo_rol_persona.");
                    }

                    if ($conta == 0) {

                        //sentencia sql
                        $sql = <<<EOD
INSERT INTO RMN_TITULO_PERSONA (ID_TITULO, ID_TITULAR, ID_ROL_TITULO, FECHA_INICIAL ,FECHA_FIN ,ID_TITULO_PERSONA ,ID_NOVEDAD,ACTUAL
) VALUES (
(CASE WHEN $id_titulo =-110 THEN NULL ELSE $id_titulo END),
(CASE WHEN $id_persona  =-110 THEN NULL ELSE $id_persona END),
(CASE WHEN $id_tipo_rol_persona  =-110 THEN NULL ELSE $id_tipo_rol_persona END), 
(to_DATE((CASE WHEN length('$fecha_inicial_per')= 1 THEN NULL ELSE to_date('$fecha_inicial_per' , 'YYYY-MM-DD') END) , 'YYYY-MM-DD')),  
(to_DATE((CASE WHEN length('$fecha_final_per')= 1 THEN NULL ELSE to_date('$fecha_final_per' , 'YYYY-MM-DD') END) , 'YYYY-MM-DD')),
$id_titulo_persona, NULL,1)
EOD;
                        //ejecuta el sql
                        $this->conn->execute($sql);
                        $this->logMessage("[webservice_actualizacion_titulo] SQL de registro de los titulares.");
                    } else {

                        //sentencia sql
                        $sql = <<<EOD
update RMN_TITULO_PERSONA set
ID_TITULO = (CASE WHEN $id_titulo =-110 THEN NULL ELSE $id_titulo END),
ID_TITULAR= (CASE WHEN $id_persona  =-110 THEN NULL ELSE $id_persona END),
ID_ROL_TITULO = (CASE WHEN $id_tipo_rol_persona  =-110 THEN NULL ELSE $id_tipo_rol_persona END), 
FECHA_FIN= (to_DATE((CASE WHEN length('$fecha_final_per') = 0 THEN NULL ELSE to_date('$fecha_final_per' , 'YYYY-MM-DD') END) , 'YYYY-MM-DD')),  
FECHA_INICIAL=(to_DATE((CASE WHEN length('$fecha_inicial_per')= 0 THEN NULL ELSE to_date('$fecha_inicial_per' , 'YYYY-MM-DD') END) ,'YYYY-MM-DD')), 									        
ACTUAL=ACTUAL	 
where ID_TITULO_PERSONA = $id_titulo_persona 
EOD;
                        //ejecuta el sql
                        $this->conn->execute($sql);
                        $this->logMessage("[webservice_actualizacion_titulo] SQL de actualizo los titulares.");
                    }
                }
            }//FIN for titulo persona

            /**
             * Actualizar DEPTO_MUNI
             */
            /**
             * Recorrer todos los titulo persona
             */
            $param_id_titulo_municipio = explode(';', $id_titulo_municipio);
            $param_id_titulo_departamento = explode(';', $id_titulo_departamento);

            $cant_tit_mun = count($param_id_titulo_municipio);

            if ($cant_tit_mun != count($param_id_titulo_departamento)) {
                //Codigo de error - 20191001
                $codigo_error = 22;
                throw new Exception("Valores erroneos para las cadenas de municipio por titulo.");
            }


            //sentencia sql
            $sql = <<<EOD
DELETE FROM rmn_titulo_depto_muni where id_titulo = $id_titulo
EOD;
            //ejecuta el sql
            $this->conn->execute($sql);

            /**
             * Crear DEPTO_MUNI
             */
            for ($i = 0; $i < $cant_tit_mun; $i++) {

                $id_municipio = $param_id_titulo_municipio[$i];
                $id_departamento = $param_id_titulo_departamento[$i];

                //sentencia sql
                $sql = <<<EOD
SELECT
    *
FROM rmn_municipio
where
id_municipio = $id_municipio 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) <= 0) {
                    //Codigo de error - 20191001
                    $codigo_error = 23;
                    throw new Exception("No existe municipio $id_municipio.");
                }

                //sentencia sql
                $sql = <<<EOD
SELECT
    *
FROM rmn_departamento
where
id_departamento = $id_departamento 
EOD;
                //ejecuta el sql
                $resultado = CN_TABLE::executeSQL($sql);

                if (count($resultado) <= 0) {
                    //Codigo de error - 20191001
                    $codigo_error = 24;
                    throw new Exception("No existe departamento $id_departamento.");
                }

                //sentencia sql
                $sql = <<<EOD
Insert into RMN_TITULO_DEPTO_MUNI (ID_TITULO_DEPTO_MUNI,ID_TITULO,ID_DEPARTAMENTO,ID_MUNICIPIO) 
    values (null,'$id_titulo','$id_departamento','$id_municipio') 
EOD;
                //ejecuta el sql
                $this->conn->execute($sql);
                $this->logMessage("[webservice_actualizacion_titulo] SQL de registro los municipios del titulo.");
            }

            /**
             * COMMIT
             */
            $this->conn->commit();

            $mensaje = 'Proceso terminado exitoso.';
            $this->logMessage("COMMIT " . $mensaje);
            $this->custom_logger->info("COMMIT " . $mensaje);

            $this->status = 0;
            //$this->mensajeError = $mensaje;
            $respuesta = array(
                'mensaje' => $mensaje,
                'id_titulo' => $id_titulo,
                'codigo_titulo' => $codigo_titulo,
                'servicio' => 'webservice_actualizacion_titulo',
                'modulo' => 'CARTERA'
            );
            $this->list_data = array($respuesta);
        } catch (Exception $e) {

            //rollback de todas las transacciones en caso de que ocurra algun error
            $this->conn->rollback();

            $mensaje = "[webservie_actualizacion_titulo] ROLLBACK ERROR al acceder a titulo. !!!";
            $this->custom_logger->info($mensaje);
            $this->custom_logger->info("state 1");
            $this->custom_logger->info("Code " . $e->getCode());
            $this->custom_logger->info("Message " . $e->getMessage());

            $this->status = 1;
            //$this->mensajeError = $mensaje;
            $respuesta = array(
                'code' => $e->getCode(),
                'mensaje' => $e->getMessage(),
                'servicio' => 'webservice_actualizacion_titulo',
                'modulo' => 'CANON',
                'codigo_error' => $codigo_error
            );
            $this->list_data = array($respuesta);

            /*
             * Registro de consulta en tabla de log 1 - CONSULTAR, 2 - ACTUALIZAR, 3 - ADICIONAR, 4	- ELIMINAR, 5 - ANULAR
             */
            $id_tabla = $id_titulo;
            $id_ope_bd = 3;
            $observacion_log = "'Se termino el proceso de webservice_actualizacion_titulo, se generaron errores en el proceso de creación.'";
            $this->custom_logger->info("[webservice_actualizacion_titulo] " . $observacion_log . ".\n");

            /**
             * Abrir nueva conexion con la Base de Datos
             */
            $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
            $this->conn->beginTransaction();

            CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $usuario, $comando, $observacion_log);

            //Se cambian ' por chr(39), para no dañar el insert del log - 20161202            
            //$error_log = $mensaje . ' error message: ' . $e->getMessage() . ' code: ' . $e->getCode();
            $error_log = $mensaje . ' error message: ' . str_replace("'", "'|| chr(39) ||'", $e->getMessage()) . ' code: ' . $e->getCode();
            $error_log = substr($error_log, 1, 4000);

            /**
             * COMMIT
             */
            $this->conn->commit();

            /**
             * Envio de correo de error - 20190911
             */
            $this->custom_logger->info("Envio de correo de error inicio ");

            $url = $service_url . "webservice_envio_correo/list.json";

            $email_destino = sfConfig::get('app_email_destino');

            $recipients = $email_destino . ';' . 'Admin';

            $body = <<<EOD
<br/>
Se envia correo por fallo de webservice_actualizacion_titulo; Id ($id_titulo) y Título Minero ($codigo_titulo).                                       
<br/> <br/> 
Error: 
<br/> <br/> 
$error_log
<br/> 
EOD;

            $params = array(
                'user_from' => 'webservice',
                'recipients' => $recipients,
                'asunto' => 'Error webservice_actualizacion_titulo',
                'body' => $body
            );

            if ($service_url != null) {
                CN_TABLE::curlPostAsync($url, $params);
            }

            $this->custom_logger->info("Envio de correo de error fin");
        }

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        //$parametros = "{".implode($json_parametros,',')."}";
        $parametros = json_encode($json_parametros);
        $respuesta = json_encode($respuesta);
        $termino_proceso = $this->status == 1 ? "0" : "1";

        CN_TABLE::registroWebservicesLog($usuario_web, $cliente, $comando, $fecha_log_ini, $parametros, $respuesta, $termino_proceso, $error_log);

        /**
         * COMMIT
         */
        $this->conn->commit();
    }

    /**
     * Executes list action construcción
     *
     * @param sfRequest $request A request object
     */
    public function executeList0(sfWebRequest $request) {

        $this->status = 1;
        $this->list_data = array(
            array(
                'code' => "0",
                'mensaje' => 'Servicio en construcción.',
                'servicio' => 'webservice_actualizacion_titulo',
                'modulo' => 'CANON'
            )
        );
    }
    
    
       /**
     * Validador de campos numericos
     * @campval Tipos de campos
     * @param type $param_oblig
     * @param sfWebRequest $request
     * @return string
     */
    public function valCAMP($param_oblig,$campval, sfWebRequest $request){
        $param_oblig_datos = explode(';', $param_oblig);
        $param_faltantes = 'false';
        $campval_type= explode(';', $campval);
        $cont=0;
        foreach ($param_oblig_datos as $value){
            
            if($campval_type[$cont]=='num'){
                
                if(CN_TABLE::validarNumeroFormat($request[$value])==false){
                    if ($param_faltantes == 'false') {
                        $param_faltantes = '';
                    }
                    $param_faltantes = $param_faltantes ." ". $value.", ";
                }
                
                
            }
            /*
             if($campval_type[$cont]=='date'){
                
                if(CN_TABLE::validarStringDateFormat($request[$value])==false){
                    if ($param_faltantes == 'false') {
                        $param_faltantes = '';
                    }
                    
                    $param_faltantes = $param_faltantes ." CAMPOS de fecha debe tener formato yyyy-mm-dd: ". $value.",";
                }
                
            } */
            
            $cont++;
            
        }
        
        return $param_faltantes;
        
        
    }

}
