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;
 }
 $Fecha = $Fecha == false ? fechasys() : $xF->getFechaISO($Fecha);
 $idsocio = parametro("idsocio", false, MQL_INT);
 //$xT->cInt($_POST["idsocio"]);
 $detalles = parametro("idobservaciones", "");
 $monto = parametro("idmonto", 0, MQL_FLOAT);
 $cheque = parametro("cheque", DEFAULT_CHEQUE);
 $comopago = parametro("ctipo_pago", DEFAULT_TIPO_PAGO, MQL_RAW);
 $folio_fiscal = parametro("foliofiscal", DEFAULT_RECIBO_FISCAL);
 $fecha_de_operacion = $Fecha;
 //$xSoc			= new cSocio($idsocio);
 if (setNoMenorQueCero($monto) <= 0) {
     $msg .= "ERROR\tEL MONTO DEBE SER MAYOR A CERO\r\n";
 } else {
     $xCta = new cCuentaALaVista($iddocto, $idsocio);
     if ($xCta->init() == true) {
         $ide = $xCta->getMontoIDE($fecha_de_operacion, $monto, $comopago);
         $recibo = $xCta->setDeposito($monto, $cheque, $comopago, $folio_fiscal, $detalles, DEFAULT_GRUPO, $fecha_de_operacion);
         if ($ide > 0) {
             $saldo = $xCta->getNuevoSaldo();
             $ide_observacion = "Retencion Generada por un Deposito de {$monto}, Recibo {$recibo}, saldo de {$saldo}";
             //Si el Saldo de la Cuenta es Mayor al IDE
             if ($saldo > $ide) {
                 $ReciboIDE = $xCta->setRetenerIDE($fecha_de_operacion, false, $ide, $ide_observacion);
             } else {
                 //Si no el IDE es igual al Saldo
                 $ide = $saldo;
                 $ReciboIDE = $xCta->setRetenerIDE($fecha_de_operacion, false, $ide, $ide_observacion);
             }
         }
         //Imprime la Ficha del socio
         $xRec = new cReciboDeOperacion();