/** * 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) {