/// <summary>
        /// Pone la ventana en su estado inicial, limpiando los campos, y volviendo a llenar la lista.
        /// </summary>
        private void ResetVentana()
        {
            LlenarComponentesConDB(false);
            objMovimientoSeleccionado = null;

            //  Datos Basicos
            _view.dtpEmicion.Value                 = DateTime.Now;
            _view.cmbbCargadoA.SelectedIndex       = 0;
            _view.txtbMonto.Text                   = "";
            _view.cmbbTipoMovimiento.SelectedIndex = 0;
            _view.txtbConcepto.Text                = "";

            //  Datos Fiscales
            if (_view.chbDatosFiscales.Checked)
            {
                _view.txtbRNC.Text = "";
                _view.txtbNCF.Text = "";
                _view.cmbbClasifFiscal.SelectedIndex = 0;
                _view.txtbValorSNITBIS.Text          = "";
                _view.txtbITBISFactur.Text           = "";
                _view.chbDatosFiscales.Checked       = false;
            }

            _view.btnMovimientoAImprimir.Enabled = false;
            _view.btnModificar.Enabled           = false;
            _view.btnGuardar.Enabled             = false;
            _view.btnLimpiarCampos.Enabled       = false;
        }
        public object ExecuteQuery(StringBuilder query, string db, string table)
        {
            try
            {
                SqlConnection conn = GetConnection(db);

                using (var cmmnd = new SqlCommand(query.ToString(), conn))
                {
                    cmmnd.Connection.Open();
                    switch (table)
                    {
                    case "empresa":
                        List <EmpresaModel> empresas = new List <EmpresaModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                empresas.Add(
                                    new EmpresaModel
                                {
                                    empresa_id     = Convert.ToInt32((reader["empresa_id"].ToString())),
                                    Nombre_empresa = (reader["Nombre_empresa"].ToString())
                                });
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(empresas);

                    case "movimientocaja":
                        var Select = query.ToString(query.ToString().IndexOf("SELECT ") + 7, query.ToString().IndexOf(" FROM") - 7).Replace(" ", "").Replace("TOP", "").Replace("50", "").Replace("DISTINCT", "").Split(',');
                        List <MovimientoCajaModel> movimientos = new List <MovimientoCajaModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                var obj = new MovimientoCajaModel();
                                foreach (var slct in Select)
                                {
                                    if (slct == "NumeroTransacion")
                                    {
                                        obj.NumeroTransacion = (short)reader["NumeroTransacion"];
                                    }
                                    else if (slct == "Beneficiario")
                                    {
                                        obj.Beneficiario = reader["Beneficiario"].ToString();
                                    }
                                    else if (slct == "Concepto")
                                    {
                                        obj.Concepto = reader["Concepto"].ToString();
                                    }
                                    else if (slct == "Rnc")
                                    {
                                        obj.Rnc = reader["Rnc"].ToString();
                                    }
                                    else if (slct == "Ncf")
                                    {
                                        obj.Ncf = reader["Ncf"].ToString();
                                    }
                                    else if (slct == "Monto")
                                    {
                                        obj.Monto = decimal.Parse(reader["Monto"].ToString());
                                    }
                                    else if (slct == "Fecha")
                                    {
                                        obj.Fecha = reader["Fecha"].ToString();
                                    }
                                    else if (slct == "NumeroCaja")
                                    {
                                        obj.NumeroCaja = (short)reader["NumeroCaja"];
                                    }
                                    else if (slct == "TipoMovimiento")
                                    {
                                        obj.TipoMovimiento = (short)reader["TipoMovimiento"];
                                    }
                                    else if (slct == "Clasificancf")
                                    {
                                        obj.Clasificancf = (short)reader["Clasificancf"];
                                    }
                                    else if (slct == "Itebis")
                                    {
                                        obj.Itebis = reader["Itebis"].ToString();
                                    }
                                    else if (slct == "Neto")
                                    {
                                        obj.Neto = (decimal)reader["Neto"];
                                    }
                                    else if (slct == "EntradaSalida")
                                    {
                                        obj.EntradaSalida = reader["EntradaSalida"].ToString();
                                    }
                                    else if (slct == "CodigoCajero")
                                    {
                                        obj.CodigoCajero = reader["CodigoCajero"].ToString();
                                    }
                                    else if (slct == "TipoMoneda")
                                    {
                                        obj.TipoMoneda = reader["TipoMoneda"].ToString();
                                    }
                                    else if (slct == "TasaCambio")
                                    {
                                        obj.TasaCambio = (decimal)reader["TasaCambio"];
                                    }
                                    else if (slct == "NumeroCierre")
                                    {
                                        obj.NumeroCierre = (short)reader["NumeroCierre"];
                                    }
                                    else if (slct == "Estatus")
                                    {
                                        obj.Estatus = (short)reader["Estatus"];
                                    }
                                }
                                movimientos.Add(obj);
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(movimientos);

                    case "clasificacionmovicaja":
                        List <ClasificacionmovicajaModel> clasificacionmovicajas = new List <ClasificacionmovicajaModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                clasificacionmovicajas.Add(
                                    new ClasificacionmovicajaModel
                                {
                                    NumeroTransacion = Convert.ToInt16(reader["NumeroTransacion"].ToString()),
                                    Descripcion      = reader["Descripcion"].ToString(),
                                    Tipo             = reader["Tipo"].ToString(),
                                    Visible          = Convert.ToInt16(reader["Visible"].ToString())
                                });
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(clasificacionmovicajas);

                    case "clasificacionfiscal":
                        List <ClasificacionFiscalModel> clasificacionfiscal = new List <ClasificacionFiscalModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                clasificacionfiscal.Add(
                                    new ClasificacionFiscalModel
                                {
                                    NumeroTransacion = Convert.ToInt16(reader["NumeroTransacion"].ToString()),
                                    Descripcion      = reader["Descripcion"].ToString(),
                                    Tipo             = reader["Tipo"].ToString()
                                });
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(clasificacionfiscal);

                    case "cierrecaja":
                        List <CierreCajaModel> CierreCaja = new List <CierreCajaModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                CierreCaja.Add(
                                    new CierreCajaModel
                                {
                                    NumeroCierre = (short)reader["NumeroCierre"],
                                    FechaProceso = reader["FechaProceso"].ToString(),
                                    SaldoFinal   = (int)reader["SaldoFinal"],
                                    Comentario   = reader["Comentario"].ToString()
                                });
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(CierreCaja);

                    case "usuarios":
                        List <UsuarioModel> usuarios = new List <UsuarioModel>();
                        using (var reader = cmmnd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                usuarios.Add(
                                    new UsuarioModel
                                {
                                    id_usuario      = Convert.ToInt16(reader["id_usuario"].ToString()),
                                    usuario         = reader["usuario"].ToString(),
                                    clave           = reader["clave"].ToString(),
                                    categoria       = reader["categoria"].ToString(),
                                    activo          = Convert.ToBoolean(reader["activo"]),
                                    nombre_completo = reader["nombre_completo"].ToString()
                                });
                            }
                        }
                        cmmnd.Connection.Dispose();
                        return(usuarios);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            return(null);
        }
        public void InsertUpdateValues(StringBuilder query, string db, string table, MovimientoCajaModel movimiento, string[] paramsUpdate = null)
        {
            try
            {
                SqlConnection conn = GetConnection(db);
                using (var cmmnd = new SqlCommand(query.ToString(), conn))
                {
                    cmmnd.Connection.Open();
                    switch (table)
                    {
                    case "movimientocaja":
                        string[] campos;
                        if (query.ToString().Contains("INSERT"))
                        {
                            campos = query.ToString(query.ToString().IndexOf("(") + 1, query.ToString().IndexOf(") VALUES(") - 20).Replace(" ", "").Split(',');
                        }
                        else
                        {
                            campos = paramsUpdate;
                        }

                        foreach (var slct in campos)
                        {
                            if (slct == "NumeroTransacion")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("NumeroTransacion", movimiento.NumeroTransacion));
                            }
                            else if (slct == "Beneficiario")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Beneficiario", movimiento.Beneficiario));
                            }
                            else if (slct == "Concepto")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Concepto", movimiento.Concepto));
                            }
                            else if (slct == "Rnc")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Rnc", movimiento.Rnc ?? ""));
                            }
                            else if (slct == "Ncf")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Ncf", movimiento.Ncf ?? ""));
                            }
                            else if (slct == "Monto")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Monto", movimiento.Monto));
                            }
                            else if (slct == "Fecha")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Fecha", movimiento.Fecha));
                            }
                            else if (slct == "NumeroCaja")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("NumeroCaja", movimiento.NumeroCaja));
                            }
                            else if (slct == "TipoMovimiento")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("TipoMovimiento", movimiento.TipoMovimiento));
                            }
                            else if (slct == "Clasificancf")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Clasificancf", movimiento.Clasificancf ?? 0));
                            }
                            else if (slct == "Itebis")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Itebis", movimiento.Itebis ?? ""));
                            }
                            else if (slct == "Neto")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Neto", movimiento.Neto ?? 0));
                            }
                            else if (slct == "EntradaSalida")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("EntradaSalida", movimiento.EntradaSalida));
                            }
                            else if (slct == "CodigoCajero")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("CodigoCajero", movimiento.CodigoCajero ?? ""));
                            }
                            else if (slct == "TipoMoneda")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("TipoMoneda", movimiento.TipoMoneda));
                            }
                            else if (slct == "TasaCambio")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("TasaCambio", movimiento.TasaCambio));
                            }
                            else if (slct == "NumeroCierre")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("NumeroCierre", movimiento.NumeroCierre));
                            }
                            else if (slct == "Estatus")
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Estatus", movimiento.Estatus));
                            }
                            else if (slct.Contains("Soporte"))
                            {
                                cmmnd.Parameters.Add(new SqlParameter("Soporte", movimiento.Soporte));
                            }
                        }
                        cmmnd.ExecuteNonQuery();
                        cmmnd.Connection.Dispose();
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
        /// <summary>
        /// Colocar a los componentes de el VIEW los eventos correspondientes.
        /// </summary>
        private void AplicarEventosAVista()
        {
            #region CheckBoxes
            _view.chbDatosFiscales.CheckedChanged += new EventHandler((object sender, EventArgs e) =>
            {
                SwitchEstadoCamposFiscales(_view.chbDatosFiscales.Checked);
            });
            #endregion

            #region Buttones
            _view.btnHacerCuadre.Click += new EventHandler((object sender, EventArgs e) =>
            {
                _view.Visible = false;
                new CuadreModulo(_view).Show();
            });

            _view.btnGuardar.Click += new EventHandler((object sender, EventArgs e) =>
            {
                var EntradaSalida = (short)Convert.ToInt32(_view.cmbbTipoMovimiento.SelectedValue.ToString());
                //  Datos Basicos
                var movimiento = new MovimientoCajaModel
                {
                    NumeroTransacion = (short)new Connection().ExecuteScalar(new StringBuilder("SELECT CONVERT(integer, MAX(NumeroTransacion) + 1) Siguiente FROM monicaextra.movimientocaja"), "monica10", "movimientocaja"),
                    Fecha            = _view.dtpEmicion.Value.ToString("yyy-MM-dd"),
                    Beneficiario     = _view.cmbbCargadoA.SelectedValue.ToString(),
                    Monto            = Convert.ToDecimal(_view.txtbMonto.Text),
                    TipoMovimiento   = _clasificacionMovimientoCaja.FirstOrDefault(f => f.NumeroTransacion == (short)Convert.ToInt32(_view.cmbbTipoMovimiento.SelectedValue.ToString()))?.NumeroTransacion,
                    Concepto         = _view.txtbConcepto.Text,
                    EntradaSalida    = _clasificacionMovimientoCaja.FirstOrDefault(f => f.NumeroTransacion == EntradaSalida)?.Tipo,
                    NumeroCierre     = (short)new Connection().ExecuteScalar(new StringBuilder("SELECT CONVERT(integer, MAX(NumeroCierre) + 1) Cierre FROM monicaextra.cierrecaja"), "monica10", "cierrecaja"),
                    TipoMoneda       = "P",
                    TasaCambio       = (decimal)0.0000,
                    Soporte          = "C",
                    NumeroCaja       = 1,
                    Estatus          = 1
                };

                //Datos Fiscales
                if (_view.chbDatosFiscales.Checked)
                {
                    movimiento.Rnc          = _view.txtbRNC.Text;
                    movimiento.Ncf          = _view.txtbNCF.Text;
                    movimiento.Clasificancf = _clasificacionFiscal.FirstOrDefault(s => s.NumeroTransacion == (short)Convert.ToInt32(_view.cmbbClasifFiscal.SelectedValue))?.NumeroTransacion;
                    movimiento.Neto         = Convert.ToDecimal(_view.txtbValorSNITBIS.Text);
                    movimiento.Itebis       = _view.txtbITBISFactur.Text;

                    _view.txtbRNC.Enabled          = false;
                    _view.txtbNCF.Enabled          = false;
                    _view.cmbbClasifFiscal.Enabled = false;
                    _view.txtbValorSNITBIS.Enabled = false;
                    _view.txtbITBISFactur.Enabled  = false;
                }

                new Connection().InsertUpdateValues(new StringBuilder("INSERT INTO monicaextra.movimientocaja(NumeroTransacion, Fecha, Beneficiario, Monto, TipoMovimiento, Concepto, EntradaSalida, NumeroCierre, TipoMoneda, TasaCambio, Estatus, Rnc, Ncf, Clasificancf, Neto, Itebis, NumeroCaja, Soporte) VALUES(@NumeroTransacion, @Fecha, @Beneficiario, @Monto, @TipoMovimiento, @Concepto, @EntradaSalida, @NumeroCierre, @TipoMoneda, @TasaCambio, @Estatus, @Rnc, @Ncf, @Clasificancf, @Neto, @Itebis, @NumeroCaja, @Soporte)"),
                                                    "monica10",
                                                    "movimientocaja",
                                                    movimiento);
                ResetVentana();
            });

            _view.btnLimpiarCampos.Click += new EventHandler((object sender, EventArgs e) =>
            {
                ResetVentana();
            });

            _view.btnModificar.Click += new EventHandler((object sender, EventArgs e) =>
            {
                var mod = ((List <MovimientoCajaModel>) new Connection().ExecuteQuery(new StringBuilder($"SELECT NumeroTransacion, Fecha, Beneficiario, Monto, TipoMovimiento, Concepto, EntradaSalida, NumeroCierre, TipoMoneda, TasaCambio, Estatus, Rnc, Ncf, Clasificancf, Neto, Itebis FROM monicaextra.movimientocaja WHERE NumeroTransacion = {objMovimientoSeleccionado.NumeroTransacion}"), "monica10", "movimientocaja"))[0];

                //  Datos Basicos
                mod.NumeroTransacion = objMovimientoSeleccionado.NumeroTransacion;
                mod.Fecha            = _view.dtpEmicion.Value.ToString("yyy-MM-dd hh:mm:ss");
                mod.Beneficiario     = _view.cmbbCargadoA.SelectedValue.ToString();
                mod.Monto            = Convert.ToDecimal(_view.txtbMonto.Text);
                mod.TipoMovimiento   = _clasificacionMovimientoCaja.FirstOrDefault(f => f.NumeroTransacion == (short)Convert.ToInt32(_view.cmbbTipoMovimiento.SelectedValue.ToString()))?.NumeroTransacion;
                mod.Concepto         = _view.txtbConcepto.Text;
                mod.EntradaSalida    = _view.cmbbTipoMovimiento.SelectedValue.ToString().Substring(_view.cmbbTipoMovimiento.SelectedValue.ToString().IndexOf("(") + 1, 1);

                //Datos Fiscales
                if (_view.chbDatosFiscales.Checked)
                {
                    mod.Rnc          = _view.txtbRNC.Text;
                    mod.Ncf          = _view.txtbNCF.Text;
                    mod.Clasificancf = _clasificacionFiscal.FirstOrDefault(s => s.Descripcion == _view.cmbbClasifFiscal.SelectedValue.ToString())?.NumeroTransacion;
                    mod.Neto         = Convert.ToDecimal(_view.txtbValorSNITBIS.Text);
                    mod.Itebis       = _view.txtbITBISFactur.Text;

                    _view.txtbRNC.Enabled          = false;
                    _view.txtbNCF.Enabled          = false;
                    _view.cmbbClasifFiscal.Enabled = false;
                    _view.txtbValorSNITBIS.Enabled = false;
                    _view.txtbITBISFactur.Enabled  = false;
                }
                else
                {
                    mod.Rnc          = null;
                    mod.Ncf          = null;
                    mod.Clasificancf = null;
                    mod.Neto         = null;
                    mod.Itebis       = null;
                }

                new Connection().InsertUpdateValues(new StringBuilder($"UPDATE monicaextra.movimientocaja SET Fecha = @Fecha, Beneficiario = @Beneficiario, Monto = @Monto, TipoMovimiento = @TipoMovimiento, Concepto = @Concepto, EntradaSalida = @EntradaSalida, Rnc = @Rnc, Ncf = @Ncf, Clasificancf = @Clasificancf, Neto = @Neto, Itebis = @Itebis WHERE NumeroTransacion = @NumeroTransacion"),
                                                    "monica10",
                                                    "movimientocaja",
                                                    mod,
                                                    new string[] { "NumeroTransacion", "Fecha", "Beneficiario", "Monto", "TipoMovimiento", "Concepto", "EntradaSalida", "Rnc", "Ncf", "Clasificancf", "Neto", "Itebis" });
                ResetVentana();
            });

            _view.btnBuscarMovimientos.Click += new EventHandler((object sender, EventArgs e) =>
            {
                var filtroSeleccionado            = _view.cmbbFiltroMovimientos.SelectedValue.ToString();
                var fechaDesde                    = _view.dtpFechaDesde.Value.ToString("yyy-MM-dd");
                var fechaHasta                    = _view.dtpFechaHasta.Value.ToString("yyy-MM-dd");
                string tipoMovimientoSeleccionado = "";
                StringBuilder _query              = new StringBuilder();
                _query.Append("SELECT NumeroTransacion, Beneficiario, Concepto, Monto, Fecha " +
                              "FROM [monicaextra].[movimientocaja] " +
                              $"WHERE Fecha >= '{fechaDesde}' AND Fecha <= '{fechaHasta}' ");

                switch (filtroSeleccionado)
                {
                case "2":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"TipoMovimiento = '{tipoMovimientoSeleccionado}'");
                    break;

                case "3":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"EntradaSalida = '{tipoMovimientoSeleccionado}' ");
                    break;

                case "4":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"Beneficiario = '{tipoMovimientoSeleccionado}' ");
                    break;

                case "5":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"Rnc = '{tipoMovimientoSeleccionado}' ");
                    break;

                case "6":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"Ncf = '{tipoMovimientoSeleccionado}' ");
                    break;

                case "7":
                    tipoMovimientoSeleccionado = _view.cmbbFiltroSeleccionado.SelectedValue.ToString();
                    _query.Append(" AND " +
                                  $"NumeroCaja = '{tipoMovimientoSeleccionado}' ");
                    break;
                }
                _query.Append("ORDER BY NumeroTransacion DESC ");

                _view.dataGridView1.DataSource = ((List <MovimientoCajaModel>) new Connection().ExecuteQuery(_query, "monica10", "movimientocaja")).Select(s => new { s.NumeroTransacion, s.Beneficiario, s.Concepto, s.Monto, s.Fecha }).ToList();
            });

            _view.btnAtras.Click += new EventHandler((object sender, EventArgs e) =>
            {
                _ventanaAnterior.Show();
                _view.Dispose();
            });

            _view.btnMovimientoAImprimir.Click += new EventHandler((object sender, EventArgs e) =>
            {
                var ObjMovimiento = new Model.Reportes.MovimientoSeleccionado
                {
                    NroTransaccion = objMovimientoSeleccionado.NumeroTransacion.ToString(),
                    Beneficiario   = objMovimientoSeleccionado.Beneficiario,
                    Concepto       = objMovimientoSeleccionado.Concepto,
                    Monto          = objMovimientoSeleccionado.Monto.ToString(),
                    Fecha          = objMovimientoSeleccionado.Fecha
                };

                List <Model.Reportes.MovimientoSeleccionado> movimiento = new List <Model.Reportes.MovimientoSeleccionado> {
                    ObjMovimiento
                };

                if (_view.chbDatosFiscales.Checked)
                {
                    ObjMovimiento.RNC            = objMovimientoSeleccionado.Rnc;
                    ObjMovimiento.NCF            = objMovimientoSeleccionado.Ncf;
                    ObjMovimiento.ClsfFiscal     = objMovimientoSeleccionado.Clasificancf.ToString();
                    ObjMovimiento.VSinItbis      = objMovimientoSeleccionado.Neto.ToString();
                    ObjMovimiento.ITBISFacturado = objMovimientoSeleccionado.Itebis;
                }
                ;

                Utils.GlobalVariables.SetEmpresaValues(ObjMovimiento);

                new MovimientoSeleccionado(movimiento).Show();
            });
            #endregion

            #region TextBoxes
            _view.txtbMonto.TextChanged += new EventHandler((object sender, EventArgs e) =>
            {
                HabilitarBtnGuardarMovimiento();
            });

            _view.txtbConcepto.TextChanged += new EventHandler((object sender, EventArgs e) =>
            {
                HabilitarBtnGuardarMovimiento();
            });

            _view.txtbMonto.KeyPress        += Utils.UtilsMethods.OnlyNumbers_AndBackSpace();
            _view.txtbValorSNITBIS.KeyPress += Utils.UtilsMethods.OnlyNumbers_AndBackSpace();
            _view.txtbITBISFactur.KeyPress  += Utils.UtilsMethods.OnlyNumbers_AndBackSpace();
            #endregion

            #region ComboBox
            _view.cmbbFiltroMovimientos.SelectedIndexChanged += new EventHandler((object sender, EventArgs e) =>
            {
                Dictionary <string, string> dictionaryCmbb = new Dictionary <string, string>();
                if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "1")
                {
                    _view.cmbbFiltroSeleccionado.Visible = false;
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "2")
                {
                    _clasificacionMovimientoCaja.Where(x => x.Visible == 1).ToList()
                    .ForEach(f =>
                    {
                        dictionaryCmbb.Add(f.NumeroTransacion.ToString(), f.Descripcion);
                    });
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "3")
                {
                    dictionaryCmbb.Add("E", "Entradas");
                    dictionaryCmbb.Add("S", "Salidas");
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "4")
                {
                    _usuarios.ForEach(f =>
                    {
                        dictionaryCmbb.Add(f.id_usuario.ToString(), f.nombre_completo);
                    });
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "5")
                {
                    _clasificacionRNC.ForEach(f =>
                    {
                        dictionaryCmbb.Add(f, f);
                    });
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "6")
                {
                    _clasificacionFiscal.ToList()
                    .ForEach(f =>
                    {
                        dictionaryCmbb.Add(f.NumeroTransacion.ToString(), f.Descripcion);
                    });
                }
                else if (_view.cmbbFiltroMovimientos.SelectedValue.ToString() == "7")
                {
                    _clasificacionNroCaja.ToList()
                    .ForEach(f =>
                    {
                        dictionaryCmbb.Add(f, f);
                    });
                }

                if (dictionaryCmbb.Count > 0)
                {
                    _view.cmbbFiltroSeleccionado.DataSource    = new BindingSource(dictionaryCmbb, null);
                    _view.cmbbFiltroSeleccionado.DisplayMember = "Value";
                    _view.cmbbFiltroSeleccionado.ValueMember   = "Key";
                    _view.cmbbFiltroSeleccionado.Visible       = true;
                }
            });
            #endregion

            #region DataGridViews
            _view.dataGridView1.CellClick += new DataGridViewCellEventHandler((object sender, DataGridViewCellEventArgs e) =>
            {
                if (e.RowIndex < 0)
                {
                    return;
                }
                var idObj = (short)Convert.ToInt32(_view.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
                objMovimientoSeleccionado = ((List <MovimientoCajaModel>) new Connection().ExecuteQuery(new StringBuilder($"SELECT NumeroTransacion, Fecha, Beneficiario, Monto, TipoMovimiento, Concepto, EntradaSalida, NumeroCierre, TipoMoneda, TasaCambio, Estatus, Rnc, Ncf, Clasificancf, Neto, Itebis, NumeroCaja, Soporte FROM monicaextra.movimientocaja WHERE NumeroTransacion = {idObj}"), "monica10", "movimientocaja"))[0];
                _view.dataGridView1.CurrentRow.Selected = true;

                //  Datos Basicos
                _view.dtpEmicion.Value                 = new DateTime(Convert.ToDateTime(objMovimientoSeleccionado.Fecha).Year, Convert.ToDateTime(objMovimientoSeleccionado.Fecha).Month, Convert.ToDateTime(objMovimientoSeleccionado.Fecha).Day);
                _view.cmbbCargadoA.SelectedValue       = Convert.ToInt16(objMovimientoSeleccionado.Beneficiario);
                _view.txtbMonto.Text                   = objMovimientoSeleccionado.Monto.ToString();
                _view.cmbbTipoMovimiento.SelectedValue = objMovimientoSeleccionado.TipoMovimiento.Value;
                _view.txtbConcepto.Text                = objMovimientoSeleccionado.Concepto.ToString();

                //  Datos Fiscales
                if (!string.IsNullOrEmpty(objMovimientoSeleccionado.Rnc))
                {
                    _view.txtbRNC.Text = objMovimientoSeleccionado.Rnc;
                    _view.txtbNCF.Text = objMovimientoSeleccionado.Ncf;
                    _view.cmbbClasifFiscal.SelectedIndex = objMovimientoSeleccionado.Clasificancf.Value;
                    _view.txtbValorSNITBIS.Text          = objMovimientoSeleccionado.Neto.ToString();
                    _view.txtbITBISFactur.Text           = objMovimientoSeleccionado.Itebis;
                    _view.chbDatosFiscales.Checked       = true;
                }
                else
                {
                    _view.txtbRNC.Text = "";
                    _view.txtbNCF.Text = "";
                    _view.cmbbClasifFiscal.SelectedIndex = 0;
                    _view.txtbValorSNITBIS.Text          = "";
                    _view.txtbITBISFactur.Text           = "";
                    _view.chbDatosFiscales.Checked       = false;
                }

                _view.btnMovimientoAImprimir.Enabled = true;
                _view.btnLimpiarCampos.Enabled       = true;
                _view.btnModificar.Enabled           = true;
                _view.btnGuardar.Enabled             = false;
            });
            #endregion

            _view.FormClosing += new FormClosingEventHandler((object sender, FormClosingEventArgs e) => { Dispose(); });
        }