function jsaGetPerfilDeProducto($producto, $persona)
{
    $OConv = new cProductoDeCredito($producto);
    $OConv->init();
    $tab = new TinyAjaxBehavior();
    $xSoc = new cSocio($persona);
    $pagos = $OConv->getNumeroPagosPreferente();
    $periocidad = $OConv->getPeriocidadPrefente();
    if ($xSoc->init() == true) {
        if ($xSoc->getClaveDeEmpresa() != FALLBACK_CLAVE_EMPRESA) {
            $xEmp = new cEmpresas($xSoc->getClaveDeEmpresa());
            $xEmp->init();
            $tab->add(TabSetValue::getBehavior('idproducto', $xEmp->getProductoPref()));
            $periocidad = $xEmp->getPeriocidadPref();
        }
    }
    $tab->add(TabSetValue::getBehavior('idnumerodepagos', $pagos));
    $tab->add(TabSetValue::getBehavior('idperiocidad', $periocidad));
    return $tab->getString();
}
function jsaGetNumeroDeCredito($idsocio)
{
    $xSoc = new cSocio($idsocio);
    $xSoc->init();
    $solicitud = $xSoc->getIDNuevoDocto(iDE_CREDITO);
    $tab = new TinyAjaxBehavior();
    $tab->add(TabSetValue::getBehavior('iidsolicitud', $solicitud));
    //tipo de credito y preferencia e pago
    //Mayo/2014
    $xEmp = new cEmpresas($xSoc->getClaveDeEmpresa());
    $xEmp->init();
    $tab->add(TabSetValue::getBehavior('idtipoconvenio', $xEmp->getProductoPref()));
    $tab->add(TabSetValue::getBehavior('idperiocidadpagos', $xEmp->getPeriocidadPref()));
    return $tab->getString();
}
 /**
  * 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];
 }
     $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) {
     $TipoDeAutorizacion = CREDITO_AUTORIZACION_RENOVADO;
     $msg .= "WARN\tCredito marcado como Renovado \r\n";
 }
 $xCred = new cCredito();
 $result = $xCred->add($tipoconvenio, $persona, $contrato_corriente, $monto_solicitado, $periocidad, $numeropagos, $dias_solicitados, $rubro_destino, false, $grupo_asociado, $amp_destino, $observaciones, $oficial_de_credito, $fecha_solicitud, $tipo_de_pago, INTERES_POR_SALDO_INSOLUTO, false, $fecha_ministracion, $xSoc->getClaveDeEmpresa(), $TipoDeAutorizacion);
 if ($result == false) {
     $xFRM->addToolbar($xBtn->getRegresar("solicitud_de_credito.frm.php", true));
     $xFRM->addAviso($xHP->lang(MSG_ERROR_SAVE));
     $xFL = new cFileLog();
     $xFL->setWrite($xCred->getMessages(OUT_TXT));
     $xFL->setWrite($xSoc->getMessages());
     $xFL->setClose();
     $xFRM->addToolbar($xFL->getLinkDownload("Log de eventos", ""));
     $xFRM->addAviso($xCred->getMessages());
 } else {
     $xCred->init();
     $credito = $xCred->getNumeroDeCredito();
     //Si es Automatizado
     $xCat = new cCreditosOtrosDatos();
     if ($tieneprops == true) {
         if ($empresa != FALLBACK_CLAVE_EMPRESA) {
             $xAE->setEmpresa($empresa, $puesto, $departamento_ae, $numero_empleado, $nss, $extension_ae);
         }
         if ($iddomicilio > 1) {
             $xAE->setDomicilioVinculado($iddomicilio);
         }
         $success = $xAE->add($tipo_ae, $montoper_ae, $antiguedad_ae, $nombre_ae, $cp, $telefono_ae, $idlocalidad);
         $msg .= $xAE->getMessages();
     }
     if ($success == true) {
         $xFRM->addAvisoRegistroOK();
     } else {
         $xFRM->addAvisoRegistroError();
     }
 } else {
     $empresa = $xSoc->getClaveDeEmpresa();
     if ($empresa != FALLBACK_CLAVE_EMPRESA) {
         $xEmp = new cEmpresas($empresa);
         $xEmp->init();
         $OPersona = $xEmp->getOPersona();
         if ($OPersona !== null) {
             $nombre_ae = $OPersona->getNombreCompleto();
             $telefono_ae = $OPersona->getTelefonoPrincipal();
             //domiclio
             $DDomicilio = $OPersona->getODomicilio();
             if ($DDomicilio != null) {
                 $estado = $DDomicilio->getClaveDeEstado();
                 $localidad_ae = $DDomicilio->getCiudad();
                 $idlocalidad = $DDomicilio->getClaveDeLocalidad();
                 $municipio_ae = $DDomicilio->getMunicipio();
                 $idmunicipio = $DDomicilio->getClaveDeMunicipio();