function jsaGetIngresosMensualesPorDependencias($fecha)
{
    $xD = new cFecha();
    $fecha = $xD->getFechaISO($fecha);
    $fi = $xD->getDiaInicial();
    $ff = $xD->getDiaFinal();
    $sql = new cSQLListas();
    $xT = new cTabla($sql->getBasesPorFechasPorDependencia($fi, $ff, 2002));
    $xT->setKeyField($sql->getClave());
    $xT->setPrepareChart();
    $xT->setFootSum(false);
    return $xT->Show("Reporte de Ingresos Mensuales por Empresas", true, "tingresos");
}
 function getIDEPagado($socio, $fecha = false)
 {
     if ($fecha == false) {
         $fecha = fechasys();
     }
     $xF = new cFecha(0, $fecha);
     $dia_inicial = $xF->getDiaInicial();
     $dia_final = $xF->getDiaFinal();
     $mvto_ide = 235;
     $idePagado = 0;
     if (!isset($this->mIDEPagado) or $this->mIDEPagado <= 0) {
         $sqlIDE = "SELECT\r\n\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion`,\r\n\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\r\n\t\t\t\t\t\tCOUNT(`operaciones_mvtos`.`idoperaciones_mvtos`) AS 'numero',\r\n\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS 'monto',\r\n\t\t\t\t\t\t`operaciones_mvtos`.`fecha_operacion`\r\n\t\t\t\t\tFROM\r\n\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t(`operaciones_mvtos`.`tipo_operacion` = {$mvto_ide})\r\n\t\t\t\t\t\tAND\r\n\t\t\t\t\t\t(`operaciones_mvtos`.`socio_afectado` =" . $socio . ")\r\n\t\t\t\t\t\tAND\r\n\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_operacion` >='{$dia_inicial}')\r\n\t\t\t\t\t\tAND\r\n\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_operacion` <='{$dia_final}')\r\n\t\t\t\t\tGROUP BY\r\n\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion`,\r\n\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`";
         $MD = obten_filas($sqlIDE);
         $idePagado = $MD["monto"];
         if (!isset($idePagado)) {
             $idePagado = 0;
         }
         $this->mIDEPagado = $idePagado;
         unset($MD);
     }
     return $this->mIDEPagado;
 }
$xRec->setGenerarPoliza();
$xRec->setForceUpdateSaldos();
$idrecibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaop, 1, 12, "CIERRE_DE_COLOCACION_{$fechaop}", DEFAULT_CHEQUE, DEFAULT_TIPO_PAGO, DEFAULT_RECIBO_FISCAL, DEFAULT_GRUPO);
$xRec->setNumeroDeRecibo($idrecibo);
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\t" . EACP_NAME . " \r\n";
$messages .= "=========================\t\t" . getSucursal() . " \r\n";
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\tINICIANDO EL CIERRE DE COLOCACION ====================\r\n";
$messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
//reconstruir db de pagos
$ql->setRawQuery("CALL `proc_historial_de_pagos` ");
$xCUtils = new cUtileriasParaCreditos();
$messages .= $xCUtils->setEstatusDeCreditos($idrecibo, $fechaop, false, true);
if (date("Y-m-t", strtotime($fechaop)) == date("Y-m-d", strtotime($fechaop))) {
    $messages .= $xCUtils->setGenerarMvtoFinDeMes($xF->getDiaInicial(), $xF->getDiaFinal());
}
if (CREDITO_CIERRE_FORZAR_DEVENGADOS == true) {
    $messages .= $xCUtils->setReestructurarSDPM_Planes(true, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setReestructurarSDPM(true, false, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setRegenerarInteresDevengado(false, $xF->get(), $xF->get());
}
$messages .= $xCUtils->setAcumularIntereses();
$xRec->setFinalizarRecibo(true);
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre del colocacion");
}
if ($parser != false) {
    header("Location: ./cierre_de_captacion.frm.php?s=true&k=" . $key . "&f={$fechaop}");
 function setRegenerarSDPM($PFechaInicial, $PFechaFinal, $GenerarInteres = true, $incluirSinSaldo = false, $NumeroCuenta = false)
 {
     //		$PFechaFinal		= "";
     $mBase = 3100;
     $xT = new cTipos();
     $ql = new MQL();
     $BySaldo = $incluirSinSaldo == false ? " AND captacion_cuentas.saldo_cuenta >=" . TOLERANCIA_SALDOS : "";
     $ByCuentaSDPM = $NumeroCuenta == false ? "" : " AND `captacion_sdpm_historico`.`cuenta` = {$NumeroCuenta} ";
     $ByCuentaMvto = $NumeroCuenta == false ? "" : " AND `operaciones_mvtos`.`docto_afectado` = {$NumeroCuenta} ";
     $ByCuentaCta = $NumeroCuenta == false ? "" : " AND captacion_cuentas.numero_cuenta = {$NumeroCuenta} ";
     $msg = "";
     $msg .= "==========================================================================================\r\n";
     $msg .= "==================\tGenerando SDPM desde el {$PFechaInicial} al {$PFechaFinal}\r\n";
     $msg .= "==========================================================================================\r\n";
     $msg .= "Socio\tCuenta\tOPER\tEjercicio\tPeriodo\tFecha\tDias\tMonto\tSaldo\tSDPM\r\n";
     $sqlM = "SELECT \n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`fecha_operacion`  AS 'fecha_operacion',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado` AS 'recibo_afectado',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado` AS 'docto_afectado',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`afectacion_real` AS 'afectacion_real',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`valor_afectacion`,\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`afectacion` AS 'afectacion'\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos` \n\t\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\t\t`eacp_config_bases_de_integracion_miembros` \n\t\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = \n\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro` \n\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` ={$mBase})\n\t\t\t\t\t\t\t\t\t{$ByCuentaMvto}\n\t\t\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`fecha_operacion` ASC";
     $rsM = getRecordset($sqlM);
     $arrOps = array();
     //Array de montos de operacion
     $arrRecs = array();
     //Array de Recibos de Operacion
     while ($rwM = mysql_fetch_array($rsM)) {
         //clave cuenta fecha
         $cuenta = $rwM["docto_afectado"];
         $fecha = $rwM["fecha_operacion"];
         if (isset($arrOps[$cuenta . "-" . $fecha])) {
             $arrOps[$cuenta . "-" . $fecha] += $rwM["afectacion_real"] * $rwM["afectacion"];
         } else {
             $arrOps[$cuenta . "-" . $fecha] = $rwM["afectacion_real"] * $rwM["afectacion"];
         }
         $arrRecs[$cuenta . "-" . $fecha] = $rwM["recibo_afectado"];
         //$msg					.= "WARN\t$cuenta\tAgregar " . ($rwM["afectacion_real"] * $rwM["afectacion"] ) . "\r\n";
     }
     //Eliminar periodos anteriores
     $sqlDF = "DELETE FROM captacion_sdpm_historico WHERE (fecha>='{$PFechaInicial}' AND fecha<='{$PFechaFinal}') {$ByCuentaSDPM} ";
     my_query($sqlDF);
     //FECHAS
     $xF = new cFecha(0);
     //
     $xTbl = new cSAFETabla(TCAPTACION_CUENTAS);
     $sqlCX = $xTbl->getQueryInicial() . " WHERE captacion_cuentas.tipo_cuenta = " . CAPTACION_TIPO_VISTA . " {$BySaldo} {$ByCuentaCta} ";
     $rs1 = getRecordset($sqlCX);
     while ($rw1 = mysql_fetch_array($rs1)) {
         $socio = $rw1["numero_socio"];
         $cuenta = $rw1["numero_cuenta"];
         $xCta = new cCuentaALaVista($cuenta, $socio);
         $xCta->init($rw1);
         $DCta = $xCta->getDatosInArray();
         $FApertura = $DCta["fecha_apertura"];
         $dias = $xF->setRestarFechas($PFechaFinal, $FApertura);
         $dias += 1;
         $sucursal = $DCta["sucursal"];
         $FechaAnterior = $FApertura;
         $saldoAnterior = 0;
         $xF2 = new cFecha(1);
         for ($i = 0; $i <= $dias; $i++) {
             $OpFecha = $xF->setSumarDias($i, $FApertura);
             $xF->set($OpFecha);
             $OpFechaFin = $xF->getDiaFinal();
             $OpMonto = isset($arrOps[$cuenta . "-" . $OpFecha]) ? $arrOps[$cuenta . "-" . $OpFecha] : 0;
             $idrecibo = isset($arrRecs[$cuenta . "-" . $OpFecha]) ? $arrRecs[$cuenta . "-" . $OpFecha] : DEFAULT_RECIBO;
             //si la operacion es mayor a cero o es FIN DE MES
             if ($OpMonto != 0 or $OpFecha == $OpFechaFin) {
                 $diasTrans = $xF2->setRestarFechas($OpFecha, $FechaAnterior);
                 $xF2->set($OpFecha);
                 $ejercicio = $xF2->anno();
                 $periodo = $xF2->mes();
                 $sdpd = $saldoAnterior * $diasTrans;
                 $nuevatasa = $xCta->getTasaAplicable(0, 0, $saldoAnterior);
                 //corregir fecha
                 $sqlUSPM = "INSERT INTO captacion_sdpm_historico\n\t\t\t\t\t\t\t\t\t\t(ejercicio, periodo, cuenta, fecha, dias, tasa, monto, recibo, numero_de_socio, sucursal)\n\t    \t\t\t\t\t\t\t\tVALUES( {$ejercicio}, {$periodo}, {$cuenta}, '{$OpFecha}', {$diasTrans}, {$nuevatasa}, {$sdpd}, {$idrecibo}, {$socio}, '{$sucursal}') ";
                 //si es valida la operacion, se actualizan
                 if ($OpFecha >= $PFechaInicial and $OpFecha <= $PFechaFinal) {
                     my_query($sqlUSPM);
                     $msg .= "{$socio}\t{$cuenta}\t+SDPM\t{$ejercicio}\t{$periodo}\t{$OpFecha}\t{$diasTrans}\t{$OpMonto}\t{$saldoAnterior}\t{$sdpd}\r\n";
                 } else {
                     $msg .= "{$socio}\t{$cuenta}\t=SDPM\t{$ejercicio}\t{$periodo}\t{$OpFecha}\t{$diasTrans}\t{$OpMonto}\t{$saldoAnterior}\t{$sdpd}\r\n";
                 }
                 $FechaAnterior = $OpFecha;
                 $saldoAnterior += $OpMonto;
             }
         }
     }
     //Agregar Movimientos Finales del MES.
     //FIXME: Corregir incidencias
     //opcional: agregar Interes
     if ($GenerarInteres == true) {
         $xRec = new cReciboDeOperacion(12, false);
         $recibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, 1, $PFechaFinal, 1, 12, "REGENERAR_INTERES_SDPM_{$PFechaFinal}", "NA", "ninguno", "NA", DEFAULT_GRUPO);
         $msg .= "==========================================================================================\r\n";
         $msg .= "==================\tAGREGADO INTERES :: RECIBO {$recibo}\r\n";
         $msg .= "==========================================================================================\r\n";
         $_SESSION["recibo_en_proceso"] = $recibo;
         //sumar sdpm del mes por cuenta
         $sqlSDPM = "SELECT\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`numero_de_socio`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`,\n\t\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`dias`)  AS `dias_transcurridos`,\n\t\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`monto`) AS `sdpm`,\n\t\t\t\t\t\t\t\tROUND( (`captacion_sdpm_historico`.`monto` / `captacion_sdpm_historico`.`dias`), 2) AS `ultimo_saldo`,\n\t\t\t\t\t\t\t\tMAX(`captacion_sdpm_historico`.`fecha`) AS 'UltimaFecha'\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico` `captacion_sdpm_historico` \n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` >= '{$PFechaInicial}')\n\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` <= '{$PFechaFinal}')\n\t\t\t\t\t\t\t\t{$ByCuentaSDPM}\n\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`ejercicio`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`periodo`\n\t\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`fecha` DESC ";
         $rsCAP = $ql->getDataRecord($sqlSDPM);
         //setLog($sqlSDPM);
         foreach ($rsCAP as $rwC) {
             $socio = $rwC["numero_de_socio"];
             $cuenta = $rwC["cuenta"];
             $dias_de_calc = $rwC["dias_transcurridos"];
             $sumaSDPM = $rwC["sdpm"];
             $FechaI = $rwC["UltimaFecha"];
             $promedio = $xT->cFloat($sumaSDPM / $dias_de_calc, 2);
             //XXX: Solucionar Tasa de Interes y hacer las rapida la consulta
             $xCta = new cCuentaDeCaptacion($cuenta);
             $xCta->init();
             $subtipo = $xCta->getTipoDeSubproducto();
             $tasa_nueva = obtentasa($promedio, CAPTACION_TIPO_VISTA, 0, $subtipo);
             $interes = $sumaSDPM * $tasa_nueva / EACP_DIAS_INTERES;
             $interes = $xT->cFloat($interes, 2);
             //agregar movimiento
             if ($interes > 0) {
                 setNuevoMvto($socio, $cuenta, $recibo, $FechaI, $interes, 222, 1, "CALCULO_AUTOMATICO_DESDE_{$PFechaInicial}");
                 $msg .= "{$socio}\t{$cuenta}\tAGREGAR\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n";
             } else {
                 $msg .= "{$socio}\t{$cuenta}\tIGNORAR\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n";
             }
         }
     }
     return $msg;
 }
    //$xRec->setGenerarPoliza();
    $xRec->setForceUpdateSaldos();
    $idrecibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CUENTA_CORRIENTE, $fechaop, 1, 12, "CIERRE_DE_CAPTACION_{$fechaop}", "", TESORERIA_COBRO_NINGUNO, "", DEFAULT_GRUPO);
    $xRec->setNumeroDeRecibo($idrecibo);
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\t" . EACP_NAME . " \r\n";
    $messages .= "=========================\t\t" . getSucursal() . " \r\n";
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\tINICIANDO EL CIERRE DE CAPTACION   ====================\r\n";
    $messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
    $messages .= "=======================================================================================\r\n";
    $xUCapt = new cUtileriasParaCaptacion();
    $messages .= "=========================\t\tPurgando Dias Minimo de Inversion \t====================\r\n";
    $messages .= $xUCapt->vencer_intereses_de_inversion($idrecibo, $fechaop);
    $messages .= $xUCapt->inversiones_automaticas($idrecibo, $fechaop);
    if ($xF->getDiaFinal() == $xF->get()) {
        $messages .= $xUCapt->setGenerarInteresSobreSDPM($idrecibo, $fechaop);
        if (CAPTACION_IMPUESTOS_A_DEPOSITOS_ACTIVO == true) {
            $messages .= $xUCapt->getGenerarBaseGravadaMensualIDE($fechaop);
            $messages .= $xUCapt->setGenerarIDE_mensual($idrecibo, $fechaop);
        }
    }
    $xRec->setFinalizarRecibo(true);
    $xLog->setWrite($messages);
    $xLog->setClose();
    if (ENVIAR_MAIL_LOGS == true) {
        $xLog->setSendToMail("TR.Eventos del Cierre del Captacion");
    }
}
if ($parser == true) {
    header("Location: ./cierre_de_seguimiento.frm.php?s=true&k=" . $key . "&f={$fechaop}");
$tipo_cuentas = parametro("tipo", SYS_TODAS, MQL_RAW);
$nivel_cuentas = parametro("nivel", SYS_TODAS, MQL_RAW);
$incluir_cuentas = parametro("estado", SYS_TODAS, MQL_RAW);
$ByCuentas = "";
$ByCuentasSaldos = "";
if ($cuenta_inicial > 0 and $cuenta_final > 0) {
    $xCtaInit = new cCuentaContableEsquema($cuenta_inicial);
    $cuenta_inicial = $xCtaInit->CUENTA;
    $ByCuentas .= " AND (`contable_catalogo`.`numero`>={$cuenta_inicial}) ";
    $xCtaFin = new cCuentaContableEsquema($cuenta_final);
    $cuenta_final = $xCtaFin->CUENTA;
    $ByCuentas .= " AND (`contable_catalogo`.`numero`<={$cuenta_final}) ";
    $ByCuentasSaldos = "  AND (`contable_movimientos`.`numerocuenta` >= {$cuenta_inicial}) AND  (`contable_movimientos`.`numerocuenta` <= {$cuenta_final}) ";
}
$FechaInicial = $xF->getDiaInicial("{$ejercicio}-{$periodo}-01");
$FechaFinal = $xF->getDiaFinal("{$ejercicio}-{$periodo}-01");
$xRPT = new cReportes($xHP->getTitle());
$xRPT->addContent($xRPT->getEncabezado($xHP->getTitle(), $FechaInicial, $FechaFinal));
$InitRecords = parametro("init", 0, MQL_INT);
$xRPT->addCSSFiles("../css/flags.css");
$xRPT->setOut($out);
//=================================================================================================================
//$xRPT->setToPagination($InitRecords);
/**
 * Paginacion
 * I.- Parte
 */
$rowLimit = 1500;
//4Paginas aprox
//marca el Final de los Registros
$EndRecords = $InitRecords + $rowLimit;
 function getIDExPagarByPeriodo($fecha = false, $monto = 0, $tipodepago = "efectivo")
 {
     $fecha = $fecha == false ? fechasys() : $fecha;
     $xF = new cFecha(0, $fecha);
     $mes = $xF->mes();
     $anno = $xF->anno();
     $dia_inicial = $xF->getDiaInicial();
     $dia_final = $xF->getDiaFinal();
     $monto = $tipodepago != "efectivo" ? 0 : $monto;
     $xT = new cTipos();
     $monto = 0;
     if (CAPTACION_IMPUESTOS_A_DEPOSITOS_ACTIVO == true) {
         $sqlGravados = "SELECT\n\t\t\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS 'monto'\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\t\t\tINNER JOIN `operaciones_recibos` `operaciones_recibos`\n\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`recibo_afectado` = `operaciones_recibos`.\n\t\t\t\t\t\t\t\t\t`idoperaciones_recibos`\n\t\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\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` =\n\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` >='{$dia_inicial}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` <='{$dia_final}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 2600)\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`operaciones_mvtos`.`socio_afectado` = " . $this->mCodigo . " )\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`operaciones_recibos`.`tipo_pago` = 'efectivo' )\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t\t\t`operaciones_recibos`.`tipo_pago` ";
         $DGrav = obten_filas($sqlGravados);
         /**
          * Obtiene la formula IDE
          */
         $base_gravada = isset($DGrav["monto"]) ? $DGrav["monto"] : 0;
         $base_de_calculo = $base_gravada + $monto;
         $base_gravada = $base_de_calculo;
         $this->mMessages .= "WARN\tINF_IDE\tLa Base Gravada Registrada es {$base_gravada}, y el Monto de Referencia es {$monto}\r\n";
         $tasa_ide = TASA_IDE;
         $excencion = EXCENCION_IDE;
         $this->mMessages .= "WARN\tINF_IDE\tLa Tasa de IDE es {$tasa_ide}, y la Excencion es de {$excencion}\r\n";
         $ide = 0;
         $cFormulaIDE = new cFormula("formula_ide");
         $ide_pagado = $this->getIDEPagadoByPeriodo($fecha);
         $this->mIDEPagado = $ide_pagado;
         if ($base_de_calculo > EXCENCION_IDE) {
             eval($cFormulaIDE->getFormula());
             $this->mIDECalculado = $xT->cFloat($ide, 2);
             $this->mBaseGravadaIDE = $xT->cFloat($base_gravada, 2);
             $this->mMessages .= "WARN\tINF_IDE\tA la Fecha {$fecha}, La Base de Calculo es " . $this->mBaseGravadaIDE . ", el IDE Pagado es " . $this->mIDEPagado . " y el IDE Calculado es " . $this->mIDECalculado . "\r\n";
         } else {
             $this->mMessages .= "OK\tNO_IDE\tA la Fecha {$fecha}, no hay IDE por que el Monto Exento(" . EXCENCION_IDE . ") es Mayor a la Base de Calculo {$base_de_calculo} \r\n";
         }
         /**
          * Disminuir el IDE Retenido
          */
         $this->mIDEPendiente = $ide - $ide_pagado;
         $this->mMessages .= "WARN\tINF_IDE\tEl IDE es de {$ide}, IDE Pagado de {$ide_pagado}, IDE por pagar " . $this->mIDEPendiente . ", Base de Calculo {$base_de_calculo}\r\n";
         $this->mIDEAsSet = true;
         $monto = $this->mIDEPendiente;
     }
     return $monto;
 }
$xIdNRec = $xNRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $diaSig, 1, 10, "MOVIMIENTOS_ESTADISTICOS_DEL_DIA", "NA", "ninguno", "NA", DEFAULT_GRUPO);
//actualiza la configuracion del sistema
$xCx = new cConfiguration();
$xUtil = new cUtileriasParaOperaciones();
$xCx->set("numero_de_recibo_por_defecto", $xIdNRec);
$messages .= date("Y-m-d") . "\tSe Agrego el Recibo {$xIdNRec}  para ESTADISTICOS del proximo dia( {$diaSig} )\n";
//=================================
$messages .= $xUtil->setEliminarRecibosDuplicados();
$x20 = setFoliosAlMaximo();
$messages .= date("Y-m-d") . "\tSe llevaron Folios al Maximo, los recibos quedaron en " . $x20["recibos"] . "  \n";
$messages .= date("Y-m-d") . "\tSe llevaron la Cuenta de Polizas Contables al Maximo \n";
setSociosAlMaximo();
clearCacheSessions();
$messages .= date("Y-m-d") . "\tSe limpio la Cache de sessiones\n";
$messages .= date("Y-m-d") . "\tSe llevaron los socios al Maximo \n";
if ($xF->getDiaFinal() == $xF->get()) {
    $messages .= CongelarSaldos($idrecibo);
} else {
    $messages .= date("Y-m-d") . "\tNO SE CONGELAN SALDOS, NO ES FIN DE MES\r\n";
}
/**
 * Actualiza Recibos de Operaciones
 **/
$sqlS = "UPDATE operaciones_recibos SET tipo_pago = \"ninguno\" WHERE tipo_pago = \"\" OR IsNULL(tipo_pago) ";
my_query($sqlS);
/**
 * Actualiza los Periodos a Formatos Validos en el Caso que el sistema les haya asigando otro valor
 */
$sqlPeriodosCorrectos = "UPDATE operaciones_mvtos\r\n\t\t\t\t\t\t\t\tSET periodo_mensual = DATE_FORMAT(fecha_afectacion, '%c'),\r\n\t\t\t\t\t\t\t\tperiodo_anual = DATE_FORMAT(fecha_afectacion, '%Y'),\r\n\t\t\t\t\t\t\t\tperiodo_semanal = DATE_FORMAT(fecha_afectacion, '%w')\r\n\t\t\t\t\t\t\t\t";
$x1 = my_query($sqlPeriodosCorrectos);
$messages .= $x1[SYS_INFO];
 function addFechaFinal($fecha = false)
 {
     $xF = new cFecha(0, $fecha);
     $this->mOFRM->ODate("idfechafinal", $xF->getDiaFinal(), "TR.Fecha Final");
 }
$persona = parametro("socio", $persona, MQL_INT);
$persona = parametro("idsocio", $persona, MQL_INT);
$credito = parametro("credito", DEFAULT_CREDITO, MQL_INT);
$credito = parametro("idsolicitud", $credito, MQL_INT);
$credito = parametro("solicitud", $credito, MQL_INT);
$cuenta = parametro("cuenta", DEFAULT_CUENTA_CORRIENTE, MQL_INT);
$cuenta = parametro("idcuenta", $cuenta, MQL_INT);
$jscallback = parametro("callback");
$tiny = parametro("tiny");
$form = parametro("form");
$action = parametro("action", SYS_NINGUNO);
$xHP->init();
$xFRM = new cHForm("frm", "./");
$msg = "";
$FechaInit = $xF->getDiaInicial();
$FechaFin = $xF->getDiaFinal();
$otros = " AND (`operaciones_recibostipo`.`tipo_poliza_generada` != 999) AND `operaciones_recibos`.`total_operacion` > 0 ";
$xTbl = new cTabla($xLi->getListadoDeRecibos("", "", "", $FechaInit, $FechaFin, $otros));
//$xTbl->addEspTool();
$xTbl->OButton("TR.Poliza", "jsBuscarPoliza(" . HP_REPLACE_ID . ")", $xTbl->ODicIcons()->CONTABLE);
$xTbl->OButton("TR.Factura", "jsBuscarFactura(" . HP_REPLACE_ID . ")", $xTbl->ODicIcons()->REPORTE);
$xTbl->setEventKey("jsGetPanel");
//$table_s->addEspTool("\$xS=new cSocio(_REPLACE_ID_,true);\$D=\$xS->getTotalColocacionActual();PHP::(\$D[SYS_NUMERO]>0) ? \"<div class='noticon'><i class='fa fa-credit-card fa-lg'></i><span class='noticount'>\" . \$D[SYS_NUMERO] . \"</span></div>\":\"\";");
$xFRM->addHTML($xTbl->Show());
//$xFRM->addJsBasico();
//$xFRM->addCreditBasico();
//$xFRM->addSubmit();
$xFRM->OHidden("idclaveactual", 0, "");
$xFRM->addAviso("");
echo $xFRM->get();
$jxc->drawJavaScript(false, true);
include_once "../core/core.html.inc.php";
include_once "../core/core.init.inc.php";
include_once "../core/core.db.inc.php";
$theFile = __FILE__;
$permiso = getSIPAKALPermissions($theFile);
if ($permiso === false) {
    header("location:../404.php?i=999");
}
$_SESSION["current_file"] = addslashes($theFile);
//=====================================================================================================
$xHP = new cHPage("TR.REPORTE DE MOVIMIENTOS DE AUXILIARES", HP_REPORT);
$xL = new cSQLListas();
$xF = new cFecha();
$ql = new MQL();
$fecha_inicial = parametro("on", $xF->getDiaInicial(), MQL_DATE);
$fecha_final = parametro("off", $xF->getDiaFinal(), MQL_DATE);
$cuenta_inicial = parametro("for", 0, MQL_INT);
$cuenta_final = parametro("to", 0, MQL_INT);
$out = parametro("out", SYS_DEFAULT, MQL_RAW);
//---------------- Valuar Tipo de Cuenta ----------------
$tipo_cuentas = parametro("tipo", SYS_TODAS, MQL_RAW);
$nivel_cuentas = parametro("nivel", SYS_TODAS, MQL_RAW);
$incluir_cuentas = parametro("estado", SYS_TODAS, MQL_RAW);
$netoCargoRpt = 0;
$netoAbonoRpt = 0;
$ByCuentas = "";
$xRPT = new cReportes($xHP->getTitle());
$xRPT->addContent($xRPT->getEncabezado($xHP->getTitle(), $fecha_inicial, $fecha_final));
$InitRecords = parametro("init", 0, MQL_INT);
$xRPT->setOut($out);
//=================================================================================================================
 function setGenerarMvtoFinDeMes($fecha_inicial, $fecha_final, $NumeroDeCredito = false, $ForzarEnPeriodo = false)
 {
     /**
      * @var $ForzarPeriodo
      * se refiere a que debe actualizar el saldo conciliado segun los pagos acumulados a la fecha
      * */
     $msg = "==\t\tGENERAR MOVIMIENTOS DEL FIN DE MES\t\t==\r\n";
     $arrPagosF = array();
     $arrPagosM = array();
     $xQl = new MQL();
     //$wByCredito			= " AND ( (`creditos_solicitud`.`fecha_ministracion` >= '$fecha_inicial' ) AND (`creditos_solicitud`.`fecha_ministracion` <= '$fecha_final' ) ) ";
     $wByCredito = "";
     $wByCredito = $NumeroDeCredito != false ? " AND (`creditos_solicitud`.`numero_solicitud` = {$NumeroDeCredito}) " : $wByCredito;
     $wByMvto = " AND fecha_operacion>='{$fecha_inicial}' AND fecha_operacion<='{$fecha_final}'  ";
     $wByMvto = $NumeroDeCredito != false ? " AND docto_afectado = {$NumeroDeCredito} " : $wByMvto;
     //==============================================================================
     $fechaRec = fechasys();
     $observaciones = "GENERADO_EN_LA_UTILERIA_888";
     //==============================================================================
     $sqlDM = "DELETE FROM operaciones_mvtos WHERE tipo_operacion=999 {$wByMvto} ";
     // Agregado el 2012-01-17- Ya lo habia corregido???
     my_query($sqlDM);
     //==============================================================================
     if ($ForzarEnPeriodo == true) {
         $sqlP = "SELECT\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`       AS `socio`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado`       AS `documento`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion`       AS `operacion`,\n\t\t\t\t\t\t\t\tMAX(`operaciones_mvtos`.`fecha_operacion`) AS `fecha`,\n\t\t\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS `monto` \n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos` \n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`tipo_operacion` = 120) \n\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_operacion` <='{$fecha_final}')\n\t\t\t\t\t\t\t\t{$wByMvto}\n\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion` ";
         $rsP = $xQl->getDataRecord($sqlP);
         $msg .= "============ ULTIMOS MVTOS HASTA LA FECHA {$fecha_final} \r\n";
         foreach ($rsP as $rwP) {
             $mSocio = $rwP["socio"];
             $mCredito = $rwP["documento"];
             $mFecha = $rwP["fecha"];
             $mMonto = $rwP["monto"];
             $arrPagosF[$mCredito] = $mFecha;
             $arrPagosM[$mCredito] = $mMonto;
             $msg .= "{$mSocio}\t{$mCredito}\tFecha {$mFecha}\t Monto: {$mMonto}\r\n";
         }
     }
     //==============================================================================
     $CRecibo = new cReciboDeOperacion(10, false);
     $sql = "SELECT SQL_CACHE\n\t\t\t\t\t`creditos_solicitud`.*,\n\t\t\t\t\t`creditos_tipoconvenio`.*,\n\t\t\t\t\t`creditos_periocidadpagos`.*,\n\t\t\t\t\t`creditos_estatus`.*,\n\t\t\t\t\t`creditos_solicitud`.`tasa_interes` AS `tasa_ordinaria_anual`,\n\t\t\t\t\t`creditos_solicitud`.`tipo_autorizacion` AS `tipo_de_autorizacion`,\n\t\t\t\t\t`creditos_solicitud`.`tasa_ahorro` AS `tasa_de_ahorro`\n\t\t\t\tFROM\n\t\t\t\t\t`creditos_tipoconvenio` `creditos_tipoconvenio`\n\t\t\t\t\t\tINNER JOIN `creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\tON `creditos_tipoconvenio`.`idcreditos_tipoconvenio`\n\t\t\t\t\t\t= `creditos_solicitud`.`tipo_convenio`\n\t\t\t\t\t\t\tINNER JOIN `creditos_periocidadpagos`\n\t\t\t\t\t\t\t`creditos_periocidadpagos`\n\t\t\t\t\t\t\tON `creditos_periocidadpagos`.\n\t\t\t\t\t\t\t`idcreditos_periocidadpagos` =\n\t\t\t\t\t\t\t`creditos_solicitud`.`periocidad_de_pago`\n\t\t\t\t\t\t\t\tINNER JOIN `creditos_estatus`\n\t\t\t\t\t\t\t\t`creditos_estatus`\n\t\t\t\t\t\t\t\tON `creditos_estatus`.`idcreditos_estatus` =\n\t\t\t\t\t\t\t\t`creditos_solicitud`.`estatus_actual`\n\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t(`creditos_solicitud`.`estatus_actual` !=50)\n\t\t\t\t\t\t\t\t{$wByCredito}\n\t\t\t\t\t\t\t\t ";
     $rsMx = $xQl->getDataRecord($sql);
     // mysql_query($sql, cnnGeneral() );
     //$msg				.= $sql ."\r\n" . $sqlDM  . "\r\n";
     $msg .= "============ GENERANDO MOVIMIENTOS 999: Saldos al Fin del mes \r\n";
     $xF = new cFecha();
     $recibo = $CRecibo->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaRec, 1, 10, $observaciones, DEFAULT_CHEQUE, "ninguno", DEFAULT_RECIBO_FISCAL, DEFAULT_GRUPO);
     $CRecibo->setNumeroDeRecibo($recibo);
     foreach ($rsMx as $rw) {
         //corregir cuando yo me acuerde
         //Corregi accion de forzado... que mas?
         $solicitud = $rw["numero_solicitud"];
         $socio = $rw["numero_socio"];
         $fechaMinistracion = $rw["fecha_ministracion"];
         $montoMinistrado = $rw["monto_autorizado"];
         //Datos a conciliar
         $fechaUltimoMvto = $rw["fecha_ultimo_mvto"];
         $saldoActual = $rw["saldo_actual"];
         $FechaInicial = $fechaMinistracion;
         if ($ForzarEnPeriodo == true) {
             $pagos = isset($arrPagosM[$solicitud]) ? $arrPagosM[$solicitud] : 0;
             $saldo = $montoMinistrado - $pagos;
             $fechaUltimoMvto = isset($arrPagosF[$solicitud]) ? $arrPagosF[$solicitud] : $fechaUltimoMvto;
             //notas_auditoria= '', fecha_revision='2011-10-23',
             //si la fecha de ministracion es mayor a la final, invalidad fecha y saldo a cero
             $saldo_conciliado = $fechaMinistracion > $fecha_final ? 0 : $saldo;
             $fecha_conciliada = $fechaMinistracion > $fecha_final ? $fechaMinistracion : $fechaUltimoMvto;
             $sqlUC = "UPDATE creditos_solicitud SET saldo_conciliado={$saldo_conciliado}, fecha_conciliada='{$fecha_conciliada}'\n\t\t\t\t\t\t\t\t\t    \tWHERE numero_solicitud={$solicitud} ";
             $msg .= "{$socio}\t{$solicitud}\tActualizar Saldo a {$saldo_conciliado}, Fecha a {$fecha_conciliada}, Ministrado: {$montoMinistrado}, Monto Pagado: {$pagos}\r\n";
             my_query($sqlUC);
         }
         $FechaFinal = $saldoActual <= TOLERANCIA_SALDOS ? $fechaUltimoMvto : fechasys();
         $dias = $xF->setRestarFechas($FechaFinal, $FechaInicial);
         $monto = 1;
         //$saldoActual;
         //$msg					.= "Dias $dias \r\n";
         for ($i = 0; $i <= $dias; $i++) {
             $fecha = $xF->setSumarDias($i, $FechaInicial);
             $fin_de_mes = $xF->getDiaFinal($fecha);
             if ($fecha == $fin_de_mes) {
                 //guardar solo los datos del fin de mes
                 if ($fecha >= $fecha_inicial and $fecha <= $fecha_final) {
                     $observaciones = "Cierre a {$fecha}, Fin de mes {$fin_de_mes}";
                     $operacion = $CRecibo->setNuevoMvto($fecha, $monto, OPERACION_CLAVE_FIN_DE_MES, 1, $observaciones, 0, TM_CARGO, $socio, $solicitud);
                     $msg .= "{$i}\t{$socio}\t{$solicitud}\t{$fecha}\t{$fin_de_mes}\t{$saldoActual}\t{$operacion}\r\n";
                 } else {
                     $msg .= "{$i}\t{$socio}\t{$solicitud}\t{$fecha}\t{$fin_de_mes}\t{$saldoActual}\tNO_REG\r\n";
                 }
             }
         }
     }
     $CRecibo->setFinalizarRecibo();
     return $msg;
 }