function setPrevalidarCredito($arrDatos, $retornarMonto = false)
 {
     //$periocidad, $convenio, $contrato
     $xF = new cFecha(0);
     $sucess = true;
     $xT = new cTipos();
     $socio = $this->mCodigo;
     //Datos a Manejar
     $monto_maximo = 0;
     $solicitud = isset($arrDatos["numero_de_solicitud"]) ? $arrDatos["numero_de_solicitud"] : false;
     $periocidad = isset($arrDatos["periocidad_de_pago"]) ? $arrDatos["periocidad_de_pago"] : 1;
     $convenio = isset($arrDatos["tipo_de_producto"]) ? $arrDatos["tipo_de_producto"] : false;
     $pagos = isset($arrDatos["numero_de_pagos"]) ? $arrDatos["numero_de_pagos"] : 0;
     $fecha_de_venc = isset($arrDatos["fecha_de_vencimiento"]) ? $arrDatos["fecha_de_vencimiento"] : $xF->get();
     $fecha_de_min = isset($arrDatos["fecha_de_ministracion"]) ? $arrDatos["fecha_de_ministracion"] : $xF->get();
     $contrato_corr = isset($arrDatos["contrato_corriente_relacionado"]) ? $arrDatos["contrato_corriente_relacionado"] : DEFAULT_CUENTA_CORRIENTE;
     $monto = isset($arrDatos["monto_solicitado"]) ? $arrDatos["monto_solicitado"] : 0;
     //
     $dias = ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO or $periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) ? $xF->setRestarFechas($fecha_de_venc, $fecha_de_min) : $periocidad * $pagos;
     //enviar false
     if ($convenio == false) {
         $sucess = false;
         $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl tipo de Convenio no es Valido\r\n";
     } else {
         $xConv = new cProductoDeCredito($convenio);
         //si es nomina y no tiene empresa. mostrar false
         if ($xConv->getEsProductoDeNomina() == true) {
             $this->mMessages .= "WARN\t{$socio}\t{$solicitud}\tEl Producto e de Nomina\r\n";
             if ($this->getClaveDeEmpresa() == FALLBACK_CLAVE_EMPRESA) {
                 $sucess = false;
                 $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl Producto es de Nomina y No hay EMPRESA\r\n";
             }
         }
         $DConv = $xConv->getDatosInArray();
         $dias_maximo = $DConv["dias_maximo"];
         $tasa_ahorro = $DConv["tasa_ahorro"];
         $pagos_maximo = $DConv["pagos_maximo"];
         $validacion_php = $DConv["php_monto_maximo"];
         //cargar datos economicos del socio
         $ingreso_mensual = $this->getIngresosMensuales();
         $DTotCreds = $this->getTotalColocacionActual();
         $DTotCredsByConvenio = $this->getTotalColocacionActual($convenio);
         $DTotCapt = $this->getTotalCaptacionActual();
         //Datos de los Creditos segun referencias
         $monto_de_aportaciones = $this->getFondoPatrimonial();
         $saldos_de_creditos = $xT->cFloat($DTotCreds["saldo"]);
         $saldo_por_producto = $xT->cFloat($DTotCredsByConvenio["saldo"]);
         $monto_de_planeacion = get_monto_planeacion_credito($socio);
         //TODO: modificar
         $monto_linea_credito = $this->getMontoLineaDeCredito();
         $saldo_de_captacion = $xT->cFloat($DTotCapt["saldo"]);
         //Datos de los Creditos segun Productos
         $producto_monto_maximo = $DConv["maximo_otorgable"];
         //Valorar Dias Maximo del Credito
         if ($dias > $dias_maximo) {
             $sucess = false;
             $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Dias del Credito[{$dias}] se exceden a lo permitido[{$dias_maximo}]\r\n";
         } else {
             if ($dias < EACP_DIAS_MINIMO_CREDITO) {
                 $sucess = false;
                 $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Dias del Credito[{$dias}] son Menores al Minimo Permitido [" . EACP_DIAS_MINIMO_CREDITO . "] por la Institucion\r\n";
             } else {
                 $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tDias de Pago dentro del Rango Permitido:[{$dias}]\r\n";
             }
         }
         //Valorar Pagos Maximo del Credito
         if ($pagos > $pagos_maximo) {
             $sucess = false;
             $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Numero de Pagos[{$pagos}] Execeden a lo Permitido[{$pagos_maximo}]\r\n";
         } else {
             $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tNumero de Pagos dentro del Rango Permitido[{$pagos}]\r\n";
         }
         //tasa de ahorro
         if ($tasa_ahorro > 0) {
             $this->mMessages .= "WARN\t{$socio}\t{$solicitud}\tEl Ahorro para este Convenio es Obligatorio\r\n";
             //Valorar Contrato de Captacion
             if ($contrato_corr == DEFAULT_CUENTA_CORRIENTE or strlen($contrato_corr) < DIGITOS_DE_CLAVE_DE_SOCIO) {
                 $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tDebe Capturar un Numero de Contrato de Cuenta Corriente\tpara que los Pagos de Credito se Acumulen\r\n";
                 $sucess = false;
             } else {
                 $xCta = new cCuentaDeCaptacion($contrato_corr);
                 $existe = $this->existeCuenta($contrato_corr, CAPTACION_TIPO_VISTA);
                 if ($existe == false) {
                     //
                     $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLa Cuenta {$contrato_corr} No existe, o no es del Tipo requerido\r\n";
                     $sucess = false;
                 } else {
                     //
                     $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tLa Cuenta {$contrato_corr}  es valida para Utilizar\r\n";
                 }
             }
             //end: contrato
         }
         // end: tasa ahorro
         //
         eval($validacion_php);
         if ($monto > $monto_maximo) {
             $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl Monto Solicitado {$monto} es mayor al Maximo Permitido {$monto_maximo}\r\n";
             $sucess = false;
         }
     }
     $this->mUUID = md5($socio . $convenio . $monto . $pagos . ROTTER_KEY . date("Ymd"));
     return $retornarMonto == false ? $sucess : $monto_maximo;
     //obtener mensajes
 }
 function getDatosDeProducto($convenio = false)
 {
     $convenio = $convenio == false ? $this->mTipoDeConvenio : $convenio;
     $xCV = new cProductoDeCredito($convenio);
     $xCV->init();
     return $xCV->getDatosInArray();
 }
 //Si es a Final de Plazo
 if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
     $dias_solicitados = restarfechas($fecha_vencimiento, $fecha_ministracion);
 } elseif ($periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) {
     $dias_solicitados = restarfechas($fecha_vencimiento, $fecha_ministracion);
     $numeropagos = $dias_solicitados - $xFecha->getDiasHabilesEnRango($fecha_vencimiento, $fecha_ministracion);
 } else {
     $dias_solicitados = $numeropagos * $periocidad;
     $fecha_vencimiento = sumardias($fecha_ministracion, $dias_solicitados);
 }
 $dias_autorizados = 0;
 $monto_autorizado = 0;
 $pagos_autorizados = 0;
 $saldo_actual = 0;
 $xConv = new cProductoDeCredito($tipoconvenio);
 $dconv = $xConv->getDatosInArray();
 //Datos de los Creditos segun Productos
 $producto_monto_maximo = $dconv["maximo_otorgable"];
 $tipo_autorizacion = $dconv["tipo_autorizacion"];
 $docto_autorizacion = $dconv["leyenda_docto_autorizacion"];
 $interes_normal = $xConv->getTasaDeInteres();
 $interes_moratorio = $dconv["interes_moratorio"];
 $tipo_credito = $dconv["tipo_de_credito"];
 $estatus_pred = $dconv["estatus_predeterminado"];
 $nivel_riesgo = $dconv["nivel_riesgo"];
 $tasa_ahorro = $dconv["tasa_ahorro"];
 $tipo_de_calculo_interes = $dconv["base_de_calculo_de_interes"];
 //Si es Automatizado
 if ($tipo_autorizacion == CREDITO_TIPO_AUTORIZACION_AUTOMATICA) {
     $monto_autorizado = $monto_solicitado;
     $dias_autorizados = $dias_solicitados;