/**
  * Probar : 2012-04-02 || terminar 2012-02-15
  * @param integer $TipoDeConvenio
  * @param integer $NumeroDeSocio
  * @param integer $ContratoCorriente
  * @param float $MontoSolicitado
  * @param integer $PeriocidadDePago
  * @param integer $NumeroDePagos
  * @param integer $PlazoEnDias
  * @param integer $DestinoDeCredito
  * @param integer $NumeroDeCredito
  * @param integer $GrupoAsociado
  * @param string $DescripcionDelDestino
  * @param string $Observaciones
  * @param integer $OficialDeCredito
  * @param mixed $FechaDeSolicitud
  * @param integer $TipoDePago
  * @param integer $TipoDeCalculo
  * @param float $TasaDeInteres
  * @return boolean		true/false of query result
  */
 function add($TipoDeConvenio, $NumeroDeSocio, $ContratoCorriente, $MontoSolicitado, $PeriocidadDePago = 0, $NumeroDePagos = 0, $PlazoEnDias = 0, $DestinoDeCredito = CREDITO_DEFAULT_DESTINO, $NumeroDeCredito = false, $GrupoAsociado = DEFAULT_GRUPO, $DescripcionDelDestino = "", $Observaciones = "", $OficialDeCredito = false, $FechaDeSolicitud = false, $TipoDePago = CREDITO_TIPO_PAGO_UNICO, $TipoDeCalculo = INTERES_POR_SALDO_INSOLUTO, $TasaDeInteres = false, $FechaDeMinistracion = false, $persona_asociada = false, $TipoDeAutorizacion = false)
 {
     $xF = new cFecha();
     $xT = new cTipos();
     $xSoc = new cSocio($NumeroDeSocio);
     $xSoc->init();
     $OficialDeCredito = $OficialDeCredito == false ? $_SESSION["SN_b80bb7740288fda1f201890375a60c8f"] : $OficialDeCredito;
     $PlazoEnDias = $PlazoEnDias == 0 ? $PeriocidadDePago * $NumeroDePagos : $PlazoEnDias;
     $NumeroDePagos = $NumeroDePagos == 0 ? $PlazoEnDias / $PeriocidadDePago : $NumeroDePagos;
     $ContratoCorriente = $xT->cInt($ContratoCorriente) < 0 ? CTA_GLOBAL_CORRIENTE : $ContratoCorriente;
     $persona_asociada = $persona_asociada == false ? $xSoc->getClaveDeEmpresa() : $persona_asociada;
     $GrupoAsociado = setNoMenorQueCero($GrupoAsociado);
     $GrupoAsociado = $GrupoAsociado <= 0 ? DEFAULT_GRUPO : $GrupoAsociado;
     if ($NumeroDeCredito == false) {
         $NumeroDeCredito = $xSoc->getIDNuevoDocto(iDE_CREDITO);
     }
     $DConv = $this->getDatosDeProducto($TipoDeConvenio);
     $DOConv = $this->getOProductoDeCredito($TipoDeConvenio);
     $TasaDeInteres = $TasaDeInteres === false ? $DConv["interes_normal"] : $TasaDeInteres;
     $TasaMoratorio = $DConv["interes_moratorio"];
     $TasaDeAhorro = $DConv["tasa_ahorro"];
     $NivelDeRiesgo = $DConv["nivel_riesgo"];
     $TipoDeCredito = $DConv["tipo_de_credito"];
     $TipoDeAutorizacion = $TipoDeAutorizacion == false ? $DConv["tipo_autorizacion"] : $TipoDeAutorizacion;
     $PeriodoDeCredito = EACP_PER_SOLICITUDES;
     $TipoDePago = $NumeroDePagos > 1 ? CREDITO_TIPO_PAGO_PERIODICO : CREDITO_TIPO_PAGO_UNICO;
     $FechaDeSolicitud = $FechaDeSolicitud == false ? $xF->get() : $FechaDeSolicitud;
     $FechaDeMinistracion = $FechaDeMinistracion == false ? $FechaDeSolicitud : $FechaDeMinistracion;
     $FechaDeUltOperacion = $FechaDeSolicitud;
     $FechaDeRevision = $FechaDeSolicitud;
     $FechaConciliada = $FechaDeSolicitud;
     $xP = new cPeriodoDeCredito($PeriodoDeCredito);
     $FechaDeAutorizacion = $FechaDeMinistracion;
     //$xP->getFechaDeReunion();
     $CausaDeMora = 99;
     $EstatusActual = 99;
     $FechaDeVencimiento = $xF->setSumarDias($PlazoEnDias, $FechaDeMinistracion);
     $FechaDeMora = $xF->getFechaMaximaOperativa();
     $FechaDeVencimientoDinamico = $xF->getFechaMaximaOperativa();
     $FechaDeCastigo = $xF->getFechaMaximaOperativa();
     $PagosAutorizados = 0;
     $PlazoEnDiasAutorizado = 0;
     $MontoAutorizado = 0;
     $SaldoActual = 0;
     $SaldoVencido = 0;
     $SaldoConciliado = 0;
     $MontoParcialidad = 0;
     $InteresNormalDevengado = 0;
     $InteresNormalPagado = 0;
     $InteresMoratorioPagado = 0;
     $InteresMoratorioDevengado = 0;
     $InteresDiario = 0;
     $InteresAnticipado = 0;
     $OficialDeSeguimiento = $OficialDeCredito;
     $iduser = getUsuarioActual();
     $PeriodoDeNotificacion = 0;
     $PeriodoAfectado = 0;
     $NotasDeAuditoria = "";
     $CadenaH = "";
     $DoctoDeAutorizacion = "";
     $sucursal = getSucursal();
     $eacp = EACP_CLAVE;
     $sqlNC = "INSERT INTO creditos_solicitud(\n\t\t\t\t\tnumero_socio, numero_solicitud, grupo_asociado, contrato_corriente_relacionado,\n\t\t\t\t\ttipo_convenio, tipo_de_pago, tipo_de_calculo_de_interes, periocidad_de_pago, tipo_credito, nivel_riesgo,\n\t\t\t\t\testatus_actual, tipo_autorizacion, causa_de_mora, periodo_solicitudes, destino_credito,\n\t\t\t\t\tfecha_solicitud, fecha_autorizacion, fecha_ministracion, fecha_ultimo_mvto, fecha_revision, fecha_conciliada, \n\t\t\t\t\tfecha_mora, fecha_vencimiento, fecha_vencimiento_dinamico, fecha_castigo,\n\t\t\t\t\tplazo_en_dias, dias_autorizados, numero_pagos, pagos_autorizados,\n\t\t\t\t\tmonto_solicitado, monto_autorizado, saldo_actual, saldo_vencido, saldo_conciliado, monto_parcialidad, \n\t\t\t\t\tinteres_normal_devengado,  interes_normal_pagado, interes_moratorio_devengado, interes_moratorio_pagado, interes_diario,  sdo_int_ant,\n\t\t\t\t\ttasa_interes, tasa_moratorio, tasa_ahorro,\n\t\t\t\t\tultimo_periodo_afectado,  periodo_notificacion,\n\t\t\t\t\tidusuario, oficial_seguimiento, oficial_credito,\n\t\t\t\t\tdocto_autorizacion, observacion_solicitud, cadena_heredada, notas_auditoria, descripcion_aplicacion,\n\t\t\t\t\tsucursal, eacp, persona_asociada)\n\t\t\t\t\tVALUES (\n\t\t\t\t\t{$NumeroDeSocio}, {$NumeroDeCredito}, {$GrupoAsociado}, {$ContratoCorriente},\n\t\t\t\t\t{$TipoDeConvenio}, {$TipoDePago}, {$TipoDeCalculo}, {$PeriocidadDePago}, {$TipoDeCredito}, {$NivelDeRiesgo},\n\t\t\t\t\t{$EstatusActual}, {$TipoDeAutorizacion}, {$CausaDeMora}, {$PeriodoDeCredito}, {$DestinoDeCredito},\n\t\t\t\t\t'{$FechaDeSolicitud}', '{$FechaDeAutorizacion}', '{$FechaDeMinistracion}', '{$FechaDeUltOperacion}', '{$FechaDeRevision}', '{$FechaConciliada}',\n\t\t\t\t\t'{$FechaDeMora}', '{$FechaDeVencimiento}', '{$FechaDeVencimientoDinamico}', '{$FechaDeCastigo}',\n\t\t\t\t\t{$PlazoEnDias}, {$PlazoEnDiasAutorizado}, {$NumeroDePagos}, {$PagosAutorizados}, \n\t\t\t\t\t{$MontoSolicitado}, {$MontoAutorizado}, {$SaldoActual}, {$SaldoVencido}, {$SaldoConciliado}, {$MontoParcialidad},\n\t\t\t\t\t{$InteresNormalDevengado}, {$InteresNormalPagado}, {$InteresMoratorioDevengado}, {$InteresMoratorioPagado}, {$InteresDiario}, {$InteresAnticipado},\n\t\t\t\t\t{$TasaDeInteres}, {$TasaMoratorio}, {$TasaDeAhorro},\n\t\t\t\t\t{$PeriodoAfectado}, {$PeriodoDeNotificacion},\n\t\t\t\t\t{$iduser}, {$OficialDeSeguimiento}, {$OficialDeCredito},\n\t\t\t\t\t'{$DoctoDeAutorizacion}', '{$Observaciones}', '{$CadenaH}', '{$NotasDeAuditoria}', '{$DescripcionDelDestino}',\n\t\t\t\t\t'{$sucursal}', '{$eacp}', {$persona_asociada}) ";
     $x = my_query($sqlNC);
     if ($x[SYS_ESTADO] == false) {
         $this->mMessages .= "{$NumeroDeSocio}\t{$NumeroDeCredito}\tERROR\tError al agregar el credito {$NumeroDeCredito}\r\n";
         //$this->mMessages		.= $x[SYS_MSG];
     } else {
         $this->set($NumeroDeCredito, true);
         //Actualizar Planeacion en Grupos
         if ($DOConv->getEsProductoDeGrupos() == true) {
             $xGrupo = new cGrupo($xSoc->getClaveDeGrupo());
             $xGrupo->init();
             $xGrupo->setActualizarPlaneacion($FechaDeSolicitud, $NumeroDeSocio, $NumeroDeCredito);
             $this->mMessages .= $xGrupo->getMessages();
         }
     }
     return $x[SYS_ESTADO];
 }
//Correccciones
$contrato_corriente = setNoMenorQueCero($contrato_corriente) <= 0 ? DEFAULT_CUENTA_CORRIENTE : $contrato_corriente;
$xSoc = new cSocio($persona);
$arrDatos = array("periocidad_de_pago" => $periocidad, "tipo_de_producto" => $tipoconvenio, "numero_de_pagos" => $numeropagos, "contrato_corriente_relacionado" => $contrato_corriente, "fecha_de_ministracion" => $ministrado, "fecha_de_vencimiento" => $vencido, "monto_solicitado" => $monto_solicitado);
$sucess = true;
if ($xSoc->isOperable() == true) {
    $sucess = $xSoc->setPrevalidarCredito($arrDatos);
    if ($xSoc->getUUID() != $_SESSION[SYS_UUID]) {
        $msg .= "ERROR\tEl credito Validado no es el mismo que intenta guardar(" . $xSoc->getUUID() . "|" . $_SESSION[SYS_UUID] . ")\r\n";
        $sucess = false;
    }
} else {
    $sucess = false;
}
if ($sucess == true) {
    $grupo_asociado = $xSoc->getClaveDeGrupo();
    if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
        $dias_solicitados = $xFecha->setRestarFechas($fecha_vencimiento, $fecha_ministracion);
    } elseif ($periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) {
        $dias_solicitados = $xFecha->setRestarFechas($fecha_vencimiento, $fecha_ministracion);
        $numeropagos = $dias_solicitados - $xFecha->getDiasHabilesEnRango($fecha_vencimiento, $fecha_ministracion);
    } else {
        $dias_solicitados = $numeropagos * $periocidad;
        $fecha_vencimiento = $xFecha->setSumarDias($dias_solicitados, $fecha_ministracion);
    }
    $xConv = new cProductoDeCredito($tipoconvenio);
    $xConv->init();
    if (USE_OFICIAL_BY_PRODUCTO == true) {
        $oficial_de_seguimiento = $xConv->getOficialDeSeguimiento();
    }
    if ($esrenovado == true) {