/** * Obtiene el Maximo a Retirar por Cuenta * @param date $fecha Fecha del Retiro * @return float Monto Maximo permitido */ function getMaximoRetirable($fecha = false) { if ($fecha == false) { $fecha = fechasys(); } if ($this->mCuentaIniciada == false) { $this->init(); } //Obtener la Captacion Total $xSoc = new cSocio($this->mSocioTitular); $DTCap = $xSoc->getTotalCaptacionActual(); $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, El Saldo Total de Captacion es " . $DTCap["saldo"] . " \r\n"; $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, El saldo por Esta Cuenta es " . $this->mNuevoSaldo . " \r\n"; $saldo = $this->mSaldoAnterior; $saldo = $DTCap["saldo"] - $saldo + $this->mNuevoSaldo; $maximo_retirable = 0; //obtener los maximos retirables por credito //2011-1-30 cambio de monto_autorizado a saldo_actual $sqlCompCreditos = "SELECT\n\t\t\t\t\t\t\t\tSUM(`creditos_solicitud`.`saldo_actual`) AS `monto`\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\tON `creditos_solicitud`.`tipo_convenio` =\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t(`creditos_solicitud`.`numero_socio` = " . $this->mSocioTitular . ")\n\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 1110)\n\t\t\t\t\t\t\t\t\tAND\n \t\t\t\t\t(`creditos_solicitud`.`saldo_actual` > " . TOLERANCIA_SALDOS . ")\n\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio`,\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`\n "; $d = obten_filas($sqlCompCreditos); //Obtener el Maximo Comprometidos por Garantia Liquida $sqlCC = "SELECT\n\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio`,\n\t\t\t\t\t\t\tSUM(`creditos_solicitud`.`saldo_actual`) AS 'monto_creditos',\n\t\t\t\t\t\t\tSUM(`creditos_solicitud`.`saldo_Actual` *\n\t\t\t\t\t\t\t`creditos_tipoconvenio`.`porciento_garantia_liquida`) AS 'monto_garantia'\n\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t`creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\t\t\tINNER JOIN `creditos_tipoconvenio` `creditos_tipoconvenio`\n\t\t\t\t\t\t\t\tON `creditos_solicitud`.`tipo_convenio` = `creditos_tipoconvenio`.\n\t\t\t\t\t\t\t\t`idcreditos_tipoconvenio`\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t(`creditos_solicitud`.`numero_socio` =" . $this->mSocioTitular . ")\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`creditos_solicitud`.`saldo_actual` > " . TOLERANCIA_SALDOS . ")\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio` "; $comprometido_por_garantia = 0; $comprometido_por_creditos = setNoMenorQueCero($d["monto"]); $comprometido_por_ide = 0; //Terminar el saldo de IDE retirable $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, Lo Comprometido por Creditos es de {$comprometido_por_creditos} \r\n"; $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, Lo Comprometido por IDE es de {$comprometido_por_ide}\r\n"; // if ($this->mSubProducto == CAPTACION_PRODUCTO_GARANTIALIQ) { $c = obten_filas($sqlCC); $comprometido_por_garantia = setNoMenorQueCero($c["monto_garantia"]); $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, Lo Comprometido por GARANTIA LIQUIDA ES {$comprometido_por_garantia} \r\n"; $saldo = $this->mNuevoSaldo; //correccion por garantia liquida $comprometido_por_creditos = 0; //La ganartia liquida solo es presionado por lo comprometido por garantia } // $maximo_retirable = $saldo - ($comprometido_por_creditos + $comprometido_por_ide + $comprometido_por_garantia); $maximo_retirable = setNoMenorQueCero($maximo_retirable); $this->mMessages .= "MAX_RETIRABLE\tA la fecha {$fecha}, El Maximo Retirable es de {$maximo_retirable} de un Monto de {$saldo}\r\n"; //Componer el Saldo, no puede ser mayor al nuevo saldo return $maximo_retirable <= $this->mNuevoSaldo ? round($maximo_retirable, 2) : round($this->mNuevoSaldo, 2); }