void Pagos_Click(object sender, EventArgs e)
 {
     this.mesasAbiertasPlatoBindingSource.EndEdit();
     try
     {
         Validar();
         CargarFactura();
         FrmPagar pago = new FrmPagar();
         pago.factura   = factura;
         pago.descuento = mesa.Descuento.GetValueOrDefault();
         pago.ShowDialog();
         if (pago.DialogResult != System.Windows.Forms.DialogResult.OK)
         {
             return;
         }
         factura.calcularSaldo();
         if (decimal.Round((decimal)factura.Saldo.GetValueOrDefault(0), 0) == 0)
         {
             if (factura.ConsumoInterno.GetValueOrDefault(0) == 0)
             {
                 factura.Tipo     = "FACTURA";
                 factura.Mesonero = mesaAbierta.Mesa;
                 ImprimirFactura();
                 if (!FactoryLibroVentas.Existe(factura))
                 {
                     FactoryLibroVentas.EscribirItemFactura(factura);
                     factura.LibroVentas = true;
                 }
             }
             else
             {
                 factura.Tipo = "CONSUMO";
             }
             factura.Hora = DateTime.Now;
             if (factura.Fecha == null)
             {
                 factura.Fecha  = DateTime.Today;
                 factura.Numero = FactoryContadores.GetMax(factura.Tipo);
             }
             GuardarFactura();
             EliminarMesaAbierta(mesaAbierta);
         }
         else
         {
             return;
         }
     }
     catch (Exception x)
     {
         MessageBox.Show(x.Message);
         return;
     }
     this.DialogResult = System.Windows.Forms.DialogResult.OK;
     this.Close();
 }
 private void GuadarFactura()
 {
     mesasAbiertaBindingSource.EndEdit();
     ValidarFactura();
     factura.Cajero   = FactoryUsuarios.UsuarioActivo.Nombre;
     factura.IdCajero = FactoryUsuarios.UsuarioActivo.IdUsuario;
     if (esNuevo && factura.IdFactura == null)
     {
         factura.IdFactura = FactoryContadores.GetMax("IdFactura");
     }
     factura.Anulado = false;
     factura.Saldo   = (double)decimal.Round((decimal)factura.Saldo.GetValueOrDefault(0), 0);
     foreach (HK.FacturasPlato p in factura.FacturasPlatos)
     {
         if (p.IdFacturaPlato == null)
         {
             p.IdFacturaPlato = FactoryContadores.GetMax("IdFacturaPlato");
         }
     }
     cliente = FactoryClientes.Item(db, factura.CedulaRif);
     if (cliente == null)
     {
         cliente             = new Cliente();
         cliente.CedulaRif   = factura.CedulaRif;
         cliente.RazonSocial = factura.RazonSocial;
         cliente.Direccion   = factura.Direccion;
         cliente.IdCliente   = FactoryContadores.GetMax("IdCliente");
         db.Clientes.AddObject(cliente);
     }
     else
     {
         cliente.CedulaRif   = factura.CedulaRif;
         cliente.RazonSocial = factura.RazonSocial;
         cliente.Direccion   = factura.Direccion;
     }
     if (esNuevo)
     {
         db.Facturas.AddObject(factura);
     }
     factura.Fecha = DateTime.Today;
     factura.Hora  = DateTime.Now;
     factura.Totalizar(mesa.CobraServicio.GetValueOrDefault(false), mesa.Descuento.GetValueOrDefault(0));
     if (!Basicas.ImpresoraActiva)
     {
         factura.Tipo = "POR IMPRIMIR";
     }
     if (!FactoryLibroVentas.Existe(factura))
     {
         FactoryLibroVentas.EscribirItemFactura(factura);
         factura.LibroVentas = true;
     }
     db.SaveChanges();
     factura = new Factura();
 }