private void dgvFacturas_KeyDown(object sender, KeyEventArgs e)
        {
            if (dgvFacturas.SelectedRows.Count > 0)
            {
                var facturaId = Convert.ToInt32(dgvFacturas.SelectedRows[0].Cells[0].Value);
                switch (e.KeyCode)
                {
                case Keys.D:
                    new frmDetalleEliminarFactura(facturaId, "Detalle").ShowDialog();
                    break;

                case Keys.M:
                    if (new frmEditarFactura(facturaId).ShowDialog() == DialogResult.OK)
                    {
                        FacturaRepository = new EFRepository <Factura>();
                        ActualizarGrillaFacturas();
                    }
                    break;

                case Keys.Delete:
                    if (new frmDetalleEliminarFactura(facturaId, "Eliminar").ShowDialog() == DialogResult.OK)
                    {
                        //borro la factura
                        FacturaRepository.Eliminar(facturaId);
                        FacturaRepository.Commit();

                        ActualizarGrillaFacturas();
                    }
                    break;
                }
            }
        }
        private void dgvFacturas_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((e.ColumnIndex == 18 || e.ColumnIndex == 19 || e.ColumnIndex == 20) && e.RowIndex >= 0)
            {
                var facturaId = Convert.ToInt32(dgvFacturas.Rows[e.RowIndex].Cells[0].Value);
                switch (e.ColumnIndex)
                {
                case 18:
                    new frmDetalleEliminarFactura(facturaId, "Detalle").ShowDialog();
                    break;

                case 19:
                    if (new frmEditarFactura(facturaId).ShowDialog() == DialogResult.OK)
                    {
                        FacturaRepository = new EFRepository <Factura>();
                        ActualizarGrillaFacturas();
                    }
                    break;

                case 20:
                    if (new frmDetalleEliminarFactura(facturaId, "Eliminar").ShowDialog() == DialogResult.OK)
                    {
                        //borro la factura
                        FacturaRepository.Eliminar(facturaId);
                        FacturaRepository.Commit();

                        ActualizarGrillaFacturas();
                    }
                    break;
                }
            }
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            errorProvider1.Dispose();

            var valido = Validacion.Validar(errorProvider1, new List <object>
            {
                txtFacturaNro,
                txtImporteTotal,
                ddlProveedor
            });

            if (valido)
            {
                if (Factura != null)
                {
                    //verifico que ya no haya una factura con el mismo numero y proveedor
                    var existente = FacturaRepository.Obtener(f => f.FacturaNro == FacturaNro &&
                                                              f.ProveedorId == ProveedorId &&
                                                              f.FacturaId != Factura.FacturaId);
                    if (existente != null)
                    {
                        MessageBox.Show("Ya existe una factura para el proveedor seleccionado con el mismo número");
                        this.DialogResult = DialogResult.None;
                    }
                    else
                    {
                        Factura.FacturaNro   = FacturaNro;
                        Factura.ImporteTotal = ImporteTotal;
                        Factura.ProveedorId  = ProveedorId;
                        //Factura.UsuarioId = UsuarioActual.UsuarioId;
                        FacturaRepository.Modificar(Factura);
                        FacturaRepository.Commit();
                        ExportarKiosco();
                    }
                }
                else
                {
                    var existente = FacturaRepository.Obtener(f => f.FacturaNro == FacturaNro &&
                                                              f.ProveedorId == ProveedorId);
                    if (existente != null)
                    {
                        MessageBox.Show("Ya existe una factura para el proveedor seleccionado con el mismo número");
                        this.DialogResult = DialogResult.None;
                    }
                    else
                    {
                        Factura = new Factura()
                        {
                            CierreCajaId  = UsuarioActual.CierreCajaIdActual,
                            Identifier    = Guid.NewGuid(),
                            FacturaNro    = FacturaNro,
                            ImporteTotal  = ImporteTotal,
                            ProveedorId   = ProveedorId,
                            MaxiKioscoId  = AppSettings.MaxiKioscoId,
                            Fecha         = Fecha,
                            AutoNumero    = GenerarAutonumerico(),
                            UsuarioId     = UsuarioActual.UsuarioId,
                            FechaCreacion = DateTime.Now
                        };
                        FacturaRepository.Agregar(Factura);
                        FacturaRepository.Commit();

                        ExportarKiosco();
                    }
                }
            }
            else
            {
                this.DialogResult = DialogResult.None;
            }
        }