/**
  * Genera las Inversiones Automaticas
  * @param integer	$recibo numero de recvio al que se agrega los movimientos
  * @param date		$fecha	Fecha de Inversión
  */
 function inversiones_automaticas($recibo = false, $fecha = false)
 {
     $fecha = $fecha == false ? fechasys() : $fecha;
     $msg = "=================\tINVERSIONES_AUTOMATICAS\t======================\r\n";
     $msg .= "=================\tFECHA:\t{$fecha}\t======================\r\n";
     $msg .= date("H:i:s") . "\tLas Cuentas con Saldo Minimo a " . INVERSION_MONTO_MINIMO . " se ignoran\r\n";
     $cierre_sucursal = getSucursal();
     $fecha_operacion = $fecha;
     $xTb = new cSAFETabla(TCAPTACION_CUENTAS);
     $QL = new MQL();
     $BySucursal = "";
     //AND (`captacion_cuentas`.`sucursal` = '$cierre_sucursal') ";
     $sql_invs = $xTb->getQueryInicial() . "\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t  (`captacion_cuentas`.`inversion_fecha_vcto` = '{$fecha}')\n\t\t\t\t\t\t  AND\n\t\t\t\t\t\t  (`captacion_cuentas`.`saldo_cuenta` >=" . INVERSION_MONTO_MINIMO . ") AND\n\t\t\t\t\t\t  (`captacion_subproductos`.`metodo_de_abono_de_interes` =\"AL_VENCIMIENTO\") {$BySucursal} ";
     $rs = $QL->getDataRecord($sql_invs);
     //setLog($sql_invs);
     foreach ($rs as $rw) {
         $socio = $rw["numero_socio"];
         $cuenta = $rw["numero_cuenta"];
         $dias = $rw["dias_invertidos"];
         $periodo = $rw["inversion_periodo"];
         $tasa_anterior = $rw["tasa_otorgada"];
         $subproducto = $rw["tipo_subproducto"];
         $saldo = $rw["saldo_cuenta"];
         $tasa = $tasa_anterior;
         $tasa2 = $tasa_anterior;
         $periodo = $rw["inversion_periodo"];
         $cInv = new cCuentaInversionPlazoFijo($cuenta, $socio, $dias);
         $cInv->init($rw);
         if ($subproducto != 70) {
             $cInv->setReinversion($fecha, true);
         } else {
             $acciones = floor($saldo / COSTE_POR_ACCION);
             $tasa = 0.08;
             $tasa2 = 0.09;
             //Algoritmo de inversion parcial de
             $cientos = floor($acciones / 100);
             if ($cientos >= 1) {
                 //TODO: considerar una buena revision
                 /*SI: Periodo == PRIMO
                  * TONS DIAS = 180
                  * SI NO: DIAS = (365 - 180)*/
                 if ($periodo % 2 == 0) {
                     //par
                     $dias = 365 - 180;
                 } else {
                     $dias = 180;
                 }
                 $msg .= "MAS_CIEN\tExisten {$cientos} CENTENAS DE ACCIONES\r\n";
                 //inversiones de 100
                 $IDeCien = COSTE_POR_ACCION * ($cientos * 100);
                 //prevee que no se invierta mas de el saldo
                 $IDeCien = $IDeCien > $saldo ? $saldo : $IDeCien;
                 $RInversion = $xInv->setReinversion($fecha, true, $tasa2, $dias, true, $IDeCien);
                 $msg .= "MAS_CIEN\tLa Inversion a tasa de {$tasa2} es de {$IDeCien}\r\n";
                 //inversiones < 100
                 $IMenorDeCien = $saldo - $IDeCien;
                 if ($IMenorDeCien > 0) {
                     $RInversion2 = $xInv->setReinversion($fecha, true, $tasa, $dias, true, $IMenorDeCien);
                     $msg .= "REM_CIEN\tEl remanente a invertir a tasa de {$tasa} es de {$IMenorDeCien}\r\n";
                 }
                 $xInv->setUpdateInversion(true);
             }
         }
         $msg .= $cInv->getMessages("txt");
     }
     return $msg;
 }
                 if ($xCL->getExistenciaSocio($socio) <= 0) {
                     $msg .= "{$iReg}\t{$socio}\tERROR_SOCIO\tLa Linea({$iReg}) no se leyo por que no existe el socio({$bufer})\r\n";
                 } else {
                     $xInv = new cCuentaInversionPlazoFijo(false, $socio, $plazo, $tasa, $fechaApertura);
                     //Agrega la Cuenta
                     $ClaveCuenta = $xInv->setNuevaCuenta(99, 2, $socio, $observaciones, DEFAULT_CREDITO, "", "", DEFAULT_GRUPO, $fechaApertura, CAPTACION_TIPO_PLAZO, 99, $plazo, $tasa);
                     if ($ClaveCuenta != false) {
                         $msg .= "{$iReg}\t{$socio}\tCUENTA\tSe Agrego Exitosamente la cuenta {$ClaveCuenta}\r\n";
                         if ($importe > 0) {
                             $xInv->init();
                             $xInv->setFechaDeOperacion($fechaApertura);
                             $xInv->setDiasInvertidos($plazo);
                             $RDeposito = $xInv->setDeposito($importe, DEFAULT_CHEQUE, DEFAULT_TIPO_PAGO, DEFAULT_RECIBO_FISCAL, $observaciones, DEFAULT_GRUPO, $fechaApertura);
                             $msg .= "{$iReg}\t{$socio}\tRECIBO_DEPOSITO\tSe Efectua un Deposito de {$importe} al Recibo {$RDeposito}\r\n";
                             $xInv->init();
                             $recibo_de_reinversion = $xInv->setReinversion($fechaApertura, true, $tasa, $plazo);
                             $msg .= "{$iReg}\t{$socio}\tRECIBO_INVERSION\tSe Efectua una Inversion de {$importe} al Recibo {$recibo_de_reinversion}\r\n";
                             $msg .= $xInv->getMessages("txt");
                         }
                     } else {
                         $msg .= "{$iReg}\t{$socio}\tERROR\tSe Fallo al Agregar la Cuenta\r\n";
                     }
                 }
             }
             $iReg++;
         }
     }
     fclose($gestor);
     $xLog->setWrite($msg);
     echo $xLog->getLinkDownload("Archivo del proceso");
 } else {
/**
 * Genera las Inversiones Automaticas
 * @param integer $recibo numero de recio al que se agrega los movimientos
 */
function inversiones_automaticas($recibo = false, $fecha = false)
{
    if ($fecha == false) {
        $fecha = fechasys();
    }
    $msg = "=================INVERSIONES_AUTOMATICAS======================\n";
    $msg .= date("Y-m-d H:i:s") . "\tLas Cuentas con Saldo Minimo a " . INVERSION_MONTO_MINIMO . " se ignorar�n\r\n";
    $cierre_sucursal = getSucursal();
    if ($fecha == false) {
        $fecha_operacion = date("Y-m-d");
    } else {
        $fecha_operacion = $fecha;
    }
    $sql_invs = "SELECT\r\n  `captacion_cuentas`.`numero_cuenta`,\r\n  `captacion_cuentas`.`numero_socio`,\r\n  `captacion_cuentas`.`inversion_fecha_vcto`,\r\n  `captacion_cuentas`.`inversion_periodo`,\r\n  `captacion_cuentas`.`tasa_otorgada`,\r\n  `captacion_cuentas`.`dias_invertidos`,\r\n  `captacion_cuentas`.`saldo_cuenta`,\r\n  `captacion_cuentas`.`eacp`\r\nFROM\r\n  `captacion_subproductos` `captacion_subproductos`\r\n    INNER JOIN `captacion_cuentas` `captacion_cuentas`\r\n    ON `captacion_subproductos`.\r\n    `idcaptacion_subproductos` = `captacion_cuentas`.\r\n    `tipo_subproducto`\r\nWHERE\r\n  (`captacion_cuentas`.`inversion_fecha_vcto` = '{$fecha}')\r\n  AND\r\n  (`captacion_cuentas`.`saldo_cuenta` >=" . INVERSION_MONTO_MINIMO . ") AND\r\n  (`captacion_subproductos`.`metodo_de_abono_de_interes` =\"AL_VENCIMIENTO\")\r\n\tAND\r\n\t(`captacion_cuentas`.`sucursal` = '{$cierre_sucursal}')\r\n";
    $rs = mysql_query($sql_invs, cnnGeneral());
    if (!$rs) {
        $msg .= "<p>LA CONSULTA NO SE EJECUTO (CODE: " . mysql_errno() . ")</p>";
    }
    while ($rw = mysql_fetch_array($rs)) {
        $socio = $rw["numero_socio"];
        $cuenta = $rw["numero_cuenta"];
        $dias = $rw["dias_invertidos"];
        $periodo = $rw["inversion_periodo"];
        $tasa_anterior = $rw["tasa_otorgada"];
        //$numero_de_cuenta, $dias_invertidos, $tasa = false
        $cInv = new cCuentaInversionPlazoFijo($cuenta, $socio, $dias);
        $cInv->setReinversion($fecha, true);
        $msg .= $cInv->getMessages();
    }
    return $msg;
}
     //
     //$xC->init();
     //$saldo			= $xC->getNuevoSaldo();
 }
 //Algoritmo de inversion parcial de
 $cientos = floor($acciones / 100);
 if ($cientos >= 1) {
     $xC->init();
     $saldo = $xC->getNuevoSaldo();
     ///
     $msg .= "MAS_CIEN\tExisten {$cientos} CENTENAS DE ACCIONES\r\n";
     //inversiones de 100
     $IDeCien = COSTE_POR_ACCION * ($cientos * 100);
     //prevee que no se invierta mas de el saldo
     $IDeCien = $IDeCien > $saldo ? $saldo : $IDeCien;
     $RInversion = $xC->setReinversion($fecha_actual, true, $tasa2, $dias, true, $IDeCien);
     $msg .= "MAS_CIEN\tLa Inversion a tasa de {$tasa2} es de {$IDeCien}\r\n";
     //inversiones < 100
     $IMenorDeCien = $saldo - $IDeCien;
     if ($IMenorDeCien > 0) {
         $RInversion2 = $xC->setReinversion($fecha_actual, true, $tasa, $dias, true, $IMenorDeCien);
         $msg .= "REM_CIEN\tEl remanente a invertir a tasa de {$tasa} es de {$IMenorDeCien}\r\n";
     }
     $xC->setUpdateInversion(true);
 } else {
     //
     $RInversion = $xC->setReinversion($fecha_actual, true, $tasa, $dias);
 }
 echo $cSoc->getFicha(true);
 //$xC->init();
 echo $xC->getFicha(true);
 $arrUpdate = array("tasa_otorgada" => $tasa, "dias_invertidos" => $dias);
 //actualizar datos de la Inversion
 if ($CuentaDeInteres != false and $xSoc->existeCuenta($CuentaDeInteres) == false) {
     $arrUpdate["cuenta_de_intereses"] = $CuentaDeInteres;
     $messages .= "ERROR\tNO_ACT\tLa Cuenta Corriente de Interes es {$CuentaDeInteres}\r\n";
 }
 if ($sucess == true) {
     $xCta->setUpdate($arrUpdate);
     $xCta->init();
 } else {
     $messages .= "WARN\\NO_ACT\tLa Cuenta no se actualizo\r\n";
 }
 $saldo = $xCta->getNuevoSaldo();
 if ($sucess == true) {
     if ($saldo > INVERSION_MONTO_MINIMO) {
         $recibo_de_reinversion = $xCta->setReinversion($fecha_actual, true);
         $messages .= "WARN\tLa Inversion se CIERRA\r\n";
     } elseif ($saldo >= TOLERANCIA_SALDOS) {
         $messages .= "ERROR\tSDO_MIN\tEL saldo de la Inversion({$saldo}) es menor a " . INVERSION_MONTO_MINIMO . ", la Inversion no se efectua\r\n";
         //LLevar a cuenta Corriente
         $mCorriente = $xSoc->getCuentaDeCaptacionPrimaria(CAPTACION_TIPO_VISTA);
         if ($xTyp->getEvalNotNull(array($mCorriente)) == true) {
             $messages .= "WARN\tSDO_MIN\tSe intenta el Traspaso a cuenta Corriente\r\n";
             $messages .= $xCta->setTraspaso($mCorriente, CAPTACION_TIPO_VISTA);
         }
     }
 } else {
     $messages .= "WARN\tLa Inversion permanece Abierta\r\n";
 }
 $url_recibo_inversion = $xCta->getURLReciboInversion($recibo_de_reinversion);
 if (MODO_DEBUG == true) {