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