/**
  * 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);
 }