function setGenerarIDE_mensual($recibo, $fecha_de_corte = false)
 {
     if ($fecha_de_corte == false) {
         $fecha_de_corte = fechasys();
     }
     $dia_inicial = date("Y-m", strtotime($fecha_de_corte)) . "-01";
     $dia_final = date("Y-m-t", strtotime($fecha_de_corte));
     $BySucursal = "";
     //" AND (`operaciones_recibos`.`sucursal` = '" . getSucursal() . "') ";
     $msg = "=============\t\tGENERANDO EL IMPUESTO SOBRE DEPOSITOS EN EFECTIVO\r\n";
     //general el Archivo de IDE pagado
     //Impuesto sobre Depositos en Efectivo
     $sql = "SELECT\n\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t\t`operaciones_recibos`.`tipo_pago`,\n\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS 'monto'\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\tINNER JOIN `operaciones_recibos` `operaciones_recibos`\n\t\t\t\t\t\t\tON `operaciones_mvtos`.`recibo_afectado` = `operaciones_recibos`.\n\t\t\t\t\t\t\t`idoperaciones_recibos`\n\t\t\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` =\n\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\tWHERE\n\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` >='{$dia_inicial}')\n\t\t\t\t\tAND\n\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` <='{$dia_final}')\n\t\t\t\t\tAND\n\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 2600)\n\t\t\t\t\tAND\n\t\t\t\t\t(`operaciones_recibos`.`tipo_pago` = 'efectivo' )\n\t\t\t\t\t{$BySucursal}\n\t\t\t\t\tGROUP BY\n\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t`operaciones_recibos`.`tipo_pago`\n\t\t\t\tHAVING\n\t\t\t\t\tmonto > " . EXCENCION_IDE;
     $cRec = new cReciboDeOperacion(12, false, $recibo);
     $cRec->setNumeroDeRecibo($recibo, true);
     $rsIDE = mysql_query($sql, cnnGeneral());
     while ($rwIDE = mysql_fetch_array($rsIDE)) {
         $socio = $rwIDE["socio_afectado"];
         $monto = $rwIDE["monto"];
         if ($monto > EXCENCION_IDE) {
             //TODO: Analize this line
             $SqlMax = "\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.*,\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentastipos`.`descripcion_cuentastipos` AS `tipo`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`descripcion_subproductos` AS `subproducto`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`algoritmo_de_premio`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`algoritmo_de_tasa_incremental`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`metodo_de_abono_de_interes`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`destino_del_interes`\n\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_cuentastipos` `captacion_cuentastipos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_cuenta` = `captacion_cuentastipos`.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`idcaptacion_cuentastipos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_subproductos` `captacion_subproductos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_subproducto` = `captacion_subproductos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.`idcaptacion_subproductos`\n\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\tnumero_socio={$socio}\n\t\t\t\t\t\t\t\t\t\t\tAND `captacion_cuentas`.tipo_cuenta = 10\n\t\t\t\t\t\t\t\t\t\tORDER BY saldo_cuenta DESC\n\t\t\t\t\t\t\t\t\t\t\t\t\tLIMIT 0,1";
             $DCtaMax = obten_filas($SqlMax);
             $CuentaMax = $DCtaMax["numero_cuenta"];
             $saldo = $DCtaMax["saldo_cuenta"];
             if (isset($CuentaMax) and $saldo > TOLERANCIA_SALDOS) {
                 $cCta = new cCuentaALaVista($CuentaMax);
                 $cCta->initCuentaByCodigo($DCtaMax);
                 $ide = $cCta->getMontoIDE($fecha_de_corte);
                 if ($ide > 0) {
                     //Si el Saldo de la Cuenta es Mayor al IDE
                     if ($saldo >= $ide) {
                         $ReciboIDE = $cCta->setRetenerIDE($fecha_de_corte, $recibo, $ide);
                     } else {
                         //Si no el IDE es igual al Saldo
                         $ide_por_pagar = ($ide - $saldo) * -1;
                         $ide = $saldo;
                         $ReciboIDE = $cCta->setRetenerIDE($fecha_de_corte, $recibo, $ide);
                         //OK: agregar movimiento ide por pagar
                         if ($ide_por_pagar > 0) {
                             $cRec->setNuevoMvto($fecha_de_corte, $ide_por_pagar, 236, 1, "IDE no Retenido del {$dia_inicial} al {$dia_final}", 1, TM_CARGO, $socio, $CuentaMax);
                         }
                     }
                     $msg .= $cCta->getMessages("txt");
                 } else {
                     $msg .= "{$socio}\t{$CuentaMax}\tNO_PIDE\tNo retuvo IDE porque el Monto a Retener es {$ide}\r\n";
                 }
             } else {
                 //OK: agregar movimiento ide por pagar
                 $msg .= "{$socio}\t{$CuentaMax}\tNO_CTA\tNo retuvo IDE por que no existe una cuenta valida({$saldo}) para descontar, Base de {$monto}\r\n";
             }
         } else {
             $msg .= "{$socio}\t{$CuentaMax}\tNO_IDE\tNo retuvo IDE por que a Base de Calculo es {$monto}\r\n";
         }
     }
     return $msg;
 }
 function setRevertir()
 {
     $sucess = true;
     $arrValuesRev = array("-1" => "1", "1" => "-1", "0" => "0");
     if ($this->mInit == false) {
         $this->init();
     }
     $rw = $this->mArrayData;
     $codigo = $rw["idoperaciones_mvtos"];
     $docto = $rw["docto_afectado"];
     $socio = $rw["socio_afectado"];
     $preservar_mvto = $rw["preservar_movimiento"];
     $CodeRevertir = $rw["formula_de_cancelacion"];
     $monto = $rw["afectacion_real"];
     $afectacion = $rw["valor_afectacion"];
     $recibo = $rw["recibo_afectado"];
     $colocacion = array();
     $captacion = array();
     //selecciona un comportamiento segun el Origen del Recibo
     switch ($this->mAplicadoA) {
         case "colocacion":
             //cargar datos del credito
             $Credito = new cCredito($docto, $socio);
             $Credito->initCredito();
             $colocacion = $Credito->getDatosDeCredito();
             break;
         case "captacion":
             //cargar datos de la cuenta
             $Cuenta = new cCuentaALaVista($docto);
             $Cuenta->initCuentaByCodigo();
             $captacion = $Cuenta->getDatosInArray();
             break;
         case "mixto":
             //cargar datos de la cuenta y del credito
             $Credito = new cCredito($docto, $socio);
             $Credito->initCredito();
             $colocacion = $Credito->getDatosDeCredito();
             $Cuenta = new cCuentaALaVista($docto);
             $Cuenta->initCuentaByCodigo();
             $captacion = $Cuenta->getDatosInArray();
             $this->mMessages .= "WARN\tEL Recibo es Mixto, se carga tanto Captacion como Colocacion\r\n";
             break;
         default:
             $this->mMessages .= "ERROR\tEL Recibo es " . $this->mAplicadoA . ", NO SE CARGA CODIGO\r\n";
             break;
     }
     eval($CodeRevertir);
     if ($preservar_mvto == '1') {
         $SQL_DM = "UPDATE operaciones_mvtos\n\t\t\t\t\t\tSET afectacion_estadistica=afectacion_real,\n\t\t\t\t\t\tafectacion_real = 0, afectacion_contable=0,\n\t\t\t\t\t\tafectacion_cobranza=0, valor_afectacion=0,\n\t\t\t\t\t\testatus_mvto = 99,\n\t\t\t\t\t\tdocto_neutralizador = " . DEFAULT_RECIBO . ",\n\t\t\t\t\t\trecibo_afectado\t= " . DEFAULT_RECIBO . "\n\t\t\t\t\t\tWHERE idoperaciones_mvtos = {$codigo}\n\t\t\t\t\t\t";
         $this->mMessages .= "Actualizando el Movimiento {$codigo}\r\n";
     } else {
         $SQL_DM = "DELETE FROM operaciones_mvtos\n\t\t\t\t\t\tWHERE idoperaciones_mvtos = {$codigo}";
         $this->mMessages .= "Eliminado el Movimiento {$codigo}\r\n";
     }
     my_query($SQL_DM);
 }
         //imprimir socio + monto de los planeado + monto de la garantia
         $c = "";
         if ($rw["socio_afectado"] == $codigo_rep) {
             $c = " class='aviso' ";
         }
         $td .= "<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td {$c}>" . $rw["socio_afectado"] . "</td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td>" . $NSocio . "</td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td class='mny'>" . $rw["afectacion_real"] . "</td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td class='mny'>" . $monto_gtia_individual . "</td>\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>";
         if ($solo_simular == 0) {
             $cuenta = "50" . $rw["socio_afectado"] . "01";
             $xCN = new cCuentaALaVista($cuenta);
             //Contar las cuentas si existen
             $ctas = $xCN->setContarCuentaBySocio($rw["socio_afectado"], 50);
             if ($ctas == 0) {
                 //Crear una Cuenta Nueva
                 $xCN->setNuevaCuenta(3, 50, $rw["socio_afectado"], "ALTA_AUTOMATICA_POR_{$iduser}", $credito, "", "", $grupo);
             } else {
                 $xCN->initCuentaByCodigo();
             }
             //Agregar el Movimiento
             $xCN->setSocioTitular($rw["socio_afectado"]);
             $xCN->setDeposito($monto_gtia_individual, "NA", "ninguno", "NA", "ALTA_AUTOMATICA_POR_{$iduser}", $grupo);
             $messages .= $xCN->getMessages() . "<br />";
         }
     }
     //Imprimir TABLA
     echo "<table width='100%' align='center'>\n\t\t\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th>Numero de <br />Socio</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>Nombre del <br />Socio</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>Monto Prestado</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>% de garantia Liquida</th>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t{$td}\n\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t\t</table>\t";
     if ($sumPlan != $autorizado) {
         echo "<p class='warn'>El Monto del Credito ({$autorizado}) No coincide con la Division de Montos ({$sumPlan})<br />\n\t\t\t\t\t\t\t\t\t\tSegun recibo {$recibo}</p>";
     } else {
     }
     //end if suma plan
 }