function setGenerarInteresSobreSDPM($recibo = false, $fecha_de_corte = false) { $sucursal = getSucursal(); $xQL = new MQL(); $xErC = new cErrorCodes(); $xLog = new cCoreLog(); $xDTb = new cSAFETabla(TCAPTACION_CUENTAS); //(`captacion_cuentas`.`sucursal` ='$sucursal') AND $txtlog = ""; $txtlog .= "==========================================================================================\r\n"; $txtlog .= "==========\tCALCULO DE INTERESES SOBRE SDPM DE CUENTAS A LA VISTA EN LA SUCURSAL {$sucursal}\r\n"; $txtlog .= "==========\tRECIBO DE CALCULO {$recibo}\r\n"; $txtlog .= "==========================================================================================\r\n"; $xF0 = new cFecha(0, $fecha_de_corte); $fecha_de_corte = $fecha_de_corte == false ? fechasys() : $fecha_de_corte; $dias_del_mes = $xF0->getDiasDelMes(); $fecha_de_inicio = $xF0->getDiaInicial(); $fecha_de_termino = $xF0->getDiaFinal(); $ejer = $xF0->anno(); $peri = $xF0->mes(); //(`captacion_cuentas`.`sucursal` ='$sucursal') AND /** * Reestructurar los Dias SDPM para los Creditos que no han tenido Movimiento */ //Generando el SDPM de los Credito sin movimiento o ultimo SDPM del mes $SQL_LST = $xDTb->getQueryInicial() . "\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t(`captacion_cuentas`.`estatus_cuenta` ='10') AND\n\t\t\t\t\t\t\t(`captacion_subproductos`.`metodo_de_abono_de_interes` ='AL_FIN_DE_MES')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_cuentas`.`saldo_cuenta`>= " . A_LA_VISTA_MONTO_MINIMO . " )\n\t\t\t\t\t\t"; $txtlog .= date("H:i:s") . "\t=========Cerrando las cuentas a su ultimo SDPM\r\n"; $txtlog .= date("H:i:s") . "\tLas Cuentas con Saldo Menor a " . A_LA_VISTA_MONTO_MINIMO . " no se Incluyen\r\n"; $rsUSDPM = $xQL->getDataRecord($SQL_LST); foreach ($rsUSDPM as $rwUSDPM) { $cuenta = $rwUSDPM["numero_cuenta"]; $socio = $rwUSDPM["numero_socio"]; $fecha_ultimo_mvto = $rwUSDPM["fecha_afectacion"]; $saldo_actual = $rwUSDPM["saldo_cuenta"]; $dias_de_sdpm = restarfechas($fecha_de_corte, $fecha_ultimo_mvto); $xCta = new cCuentaALaVista($cuenta); $xCta->init($rwUSDPM); if ($dias_de_sdpm > $dias_del_mes) { $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tLos dias del SDPM son de {$dias_de_sdpm} Mayores al del Mes {$dias_del_mes}, se ajustan\r\n"; $xFMes = new cFecha(0, $fecha_de_corte); $dias_de_sdpm = $xF0->setRestarFechas($fecha_de_corte, $xF0->getDiaInicial()); } $sdpm = $saldo_actual * $dias_de_sdpm; //Obtiene la Tasa $tasa = $xCta->getTasaAplicable(0, 0, $saldo_actual); //Inserta el SDPM $sqlUS = "INSERT INTO captacion_sdpm_historico\n\t\t\t\t\t\t(ejercicio, periodo, cuenta, fecha, dias, tasa, monto, recibo)\n\t \t\t\t\tVALUES( {$ejer}, {$peri}, {$cuenta}, '{$fecha_de_corte}', {$dias_de_sdpm}, {$tasa},{$sdpm}, {$recibo})"; my_query($sqlUS); //Actualiza la Cuenta $sqlUI = "UPDATE captacion_cuentas\n\t \t\t\t\t\t\tSET fecha_afectacion='{$fecha_de_corte}', ultimo_sdpm={$sdpm}\n\t \t\t\t\t\t\tWHERE numero_cuenta={$cuenta}"; my_query($sqlUI); $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tAgregando y Actualizando el SDPM por {$sdpm} del {$fecha_ultimo_mvto} al {$fecha_de_corte} por {$saldo_actual}\r\n"; } //considerar fecha de Apertura //agregar al Recibo //TODO: Actualizar esta linea $SQL_Captacion = "\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t`captacion_cuentas`.*,\n\t\t\t\t\t\t\t`captacion_subproductos`.*,\n\t\t\t\t\n\t\t\t\t\t`captacion_cuentas`.`numero_cuenta` AS `cuenta`,\n\t\t\t\t\t`captacion_cuentas`.`fecha_afectacion` AS `apertura`,\n\t\t\t\t\t`captacion_cuentas`.`inversion_fecha_vcto` AS `vencimiento`,\n\t\t\t\t\t`captacion_cuentas`.`tasa_otorgada` AS `tasa`,\n\t\t\t\t\t`captacion_cuentas`.`dias_invertidos` AS `dias`,\n\t\t\t\t\t`captacion_cuentas`.`observacion_cuenta` AS `observaciones`,\n\t\t\t\t\t`captacion_cuentas`.`saldo_cuenta` \t\t\t AS `saldo`,\n\t\t\t\t\t`captacion_subproductos`.`descripcion_subproductos` AS `subproducto`,\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`monto`) AS 'suma_sdpm'\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\tINNER JOIN `captacion_subproductos` `captacion_subproductos`\n\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_subproducto` = `captacion_subproductos`.\n\t\t\t\t\t\t\t\t`idcaptacion_subproductos`\n\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_sdpm_historico` `captacion_sdpm_historico`\n\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`numero_cuenta` = `captacion_sdpm_historico`.\n\t\t\t\t\t\t\t\t\t`cuenta`\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t(`captacion_cuentas`.`estatus_cuenta` ='10') AND\n\t\t\t\t\t\t\t(`captacion_subproductos`.`metodo_de_abono_de_interes` ='AL_FIN_DE_MES')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` >='{$fecha_de_inicio}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` <='{$fecha_de_termino}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_cuentas`.`saldo_cuenta`>=" . A_LA_VISTA_MONTO_MINIMO . ")\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`\n\t\t\t\t\t\t\t"; setLog($SQL_Captacion); $rsCAP = $xQL->getDataRecord($SQL_Captacion); if (!$rsCAP) { if (MODO_DEBUG == true) { $txtlog .= $xQL->getMessages(); //date("H:i:s") . "\tERROR (" . mysql_errno() . ") AL EJECUTAR LA CONSULTA"; } } else { $txtlog .= "==========================================================================================\r\n"; //$xT1 = new cTipos(); foreach ($rsCAP as $rwC) { $cuenta = $rwC["numero_cuenta"]; $socio = $rwC["numero_socio"]; $apertura = $rwC["fecha_apertura"]; $sumaSDPM = $rwC["suma_sdpm"]; $dias_de_calc = $dias_del_mes; $promedio = $rwC["saldo_cuenta"]; $modificadorDeInteres = $rwC["algoritmo_modificador_del_interes"]; $modificadorDeTasa = $rwC["algoritmo_de_tasa_incremental"]; $interes = 0; $producto = $rwC["tipo_subproducto"]; //Si la Fecha de Apertura es Menor al Inicio de mes if (strtotime($apertura) > strtotime($fecha_de_inicio)) { $dias_de_calc = restarfechas($fecha_de_termino, $apertura); //Corrige el TIMESTAMP de Interes, la rotacion debe ser de al menos 24 Horas if ($dias_de_calc == 0) { $dias_de_calc = 1; } elseif ($dias_de_calc < 0) { $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tEROR_DIAS\t SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; $dias_de_calc = 1; $sumaSDPM = $promedio; } } $xCta = new cCuentaALaVista($cuenta); $xCta->init($rwC); $promedio = round($sumaSDPM / $dias_de_calc, 2); $tasa_nueva = $xCta->getTasaAplicable(0, 0, $promedio); $tasa = $tasa_nueva; //OK: Ejecutar Modificador de Tasa eval($modificadorDeTasa); //setLog("$modificadorDeTasa"); $interes = $sumaSDPM * $tasa / EACP_DIAS_INTERES; //OK: Ejecutar Consulta de Modificador de Interes eval($modificadorDeInteres); $interes = round($interes, 2); //$txtlog .= $modificadorDeInteres; if ($interes > 0) { $rsx = setNuevoMvto($socio, $cuenta, $recibo, $fecha_de_corte, $interes, 222, 1, "CALCULO_AUTOMATICO"); if ($rsx == false) { $txtlog .= "ERROR\t{$socio}\t{$cuenta}\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; } else { $txtlog .= "OK\t{$socio}\t{$cuenta}\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc} en Rec {$recibo}\r\n"; } $sqlUI = "UPDATE captacion_cuentas\n\t\t \t\t\t\t\t\tSET saldo_cuenta = (saldo_cuenta + {$interes})\n\t\t \t\t\t\t\t\tWHERE numero_cuenta={$cuenta} AND numero_socio={$socio}"; $x = my_query($sqlUI); } else { $txtlog .= "WARN\t{$socio}\t{$cuenta}\tNOINT\t({$interes} / {$tasa_nueva}) Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; } } } return $txtlog; }
$txtLst .= $xFld->get(); } } if ($getPDF == true) { //base64_encode($sql) $xFMT = new cFormato(8801); $xFMT->setProcesarVars(array("variable_listado_de_cedulas" => $txtLst, "variable_item_buscado" => "{$nombre} / {$apaterno} / {$amaterno}", "variable_cadena_consulta" => "")); $xRPT = new cReportes($xHP->getTitle()); $xRPT->getEncabezado($xHP->getTitle()); if ($ret == true) { $xRPT->setOut(OUT_HTML); $xRPT->setFile("ofacs_list_"); $xRPT->addContent($xFMT->get()); $xRPT->render(true); $dompdf = new DOMPDF(); $dompdf->load_html($xRPT->render(true)); $dompdf->set_paper("letter", "portrait"); $dompdf->render(); $json["pdf"] = base64_encode($dompdf->output()); } else { $xRPT->setSenders($mails); $xRPT->setOut(OUT_PDF); $xRPT->setFile("ofacs_list_"); $xRPT->addContent($xFMT->get()); $xRPT->render(true); } } } else { $json = $json["error"] = $mql->getMessages(OUT_TXT); } echo json_encode($json);
$clave = parametro("id", false, MQL_RAW); $rs = array(); //AND MODO_DEBUG == true if ($tabla != false and $clave != false) { $xObj = new cSAFETabla($tabla); if ($xObj->obj() == null) { $rs["message"] = "ERROR\tAl eliminar el Registro con ID {$clave} en la Tabla {$tabla}\r\n"; $rs["error"] = true; } else { $obj = $xObj->obj(); $key = $obj->getKey(); $obj = new cSocios_aeconomica(); $obj->setData($obj->query()->initByID($clave)); $data = base64_encode(json_encode($obj->query()->getCampos())); $ql->setRawQuery("DELETE FROM {$tabla} WHERE {$key}='{$clave}'"); $rs["message"] = "OK\tSe elimina el Registro con ID {$clave} en la Tabla {$tabla}\r\n"; if (MODO_DEBUG == true) { $rs["message"] .= $ql->getMessages(); } $rs["error"] = false; //guardar error $xLog = new cCoreLog(); $xLog->add($rs["message"] . " {$data}", $xLog->COMMON); $xLog->guardar($xLog->OCat()->ELIMINAR_RAW); //agregar memo } } header('Content-type: application/json'); echo json_encode($rs); //setLog(json_encode($rs)); //setLog($sql);
function getJsonSelect() { $json = array(); $mql = new MQL(); $rs = $mql->getRecordset($this->mSQL); $idx = 0; if ($rs) { while ($row = $rs->fetch_assoc()) { foreach ($row as $campo => $valor) { if (is_string($valor)) { $valor = htmlentities($valor); //htmlentities( (string) $valor, ENT_QUOTES, 'utf-8', FALSE); } $json["record_{$idx}"][$campo] = $valor; //base64_encode($valor);//utf8_encode($valor); } $idx++; } } else { $json = $json["error"] = $mql->getMessages(OUT_TXT); } return json_encode($json); }