private void cerrarLaMesa(long mesaId, int numeroMesa) { bool desea_imprimir = true; if (rdbCheque.Checked) { _tfPAgo = TipoFormaPago.Cheque; } if (rdbEfectivo.Checked) { _tfPAgo = TipoFormaPago.Efectivo; _tPago = TipoPago.Efectivo; } if (rdbTarjeta.Checked) { _tfPAgo = TipoFormaPago.Tarjeta; _tPago = TipoPago.Tarjeta; } if (rdbCtaCte.Checked) { _tfPAgo = TipoFormaPago.CuentaCorriente; _tPago = TipoPago.CtaCte; } var comprobanteMesaDto = _comprobanteSalonServicio.Obtener(mesaId); if (nudTotal.Value > 0) { if (_tfPAgo == TipoFormaPago.CuentaCorriente) { bool puede_continuar = _clienteServicio.DescontarDeCuenta(idCliente, comprobanteMesaDto.Total); if (!puede_continuar) { MessageBox.Show("La cuenta del cliente no tiene suficiente saldo"); return; } } else { if (_tfPAgo == TipoFormaPago.Cheque) { FormaPagoChequeDTO fp = new FormaPagoChequeDTO { TipoFormaPago = TipoFormaPago.Cheque, Monto = nudTotal.Value, ComprobanteId = idComprobante, BancoId = ((BancoDTO)cbBanco.SelectedItem).Id, Dias = (int)nudDiasCheque.Value, EnteEmisor = txtEnteCheque.Text, FechaEmision = dtFechaCheque.Value, Numero = txtNumeroCheque.Text, }; _formaPagoServicio.Generar(fp); } else { if (_tfPAgo == TipoFormaPago.Tarjeta) { FormaPagoTarjetaDTO fp = new FormaPagoTarjetaDTO { TipoFormaPago = TipoFormaPago.Tarjeta, Monto = nudTotal.Value, ComprobanteId = idComprobante, Numero = txtNumeroTarjeta.Text, Cupon = "", // PlanTarjetaId = ((PlanTarjetaDTO)cbPlan.SelectedItem).Id, NumeroTarjeta = txtClaveTarjeta.Text }; _formaPagoServicio.Generar(fp); } } } _comprobanteSalonServicio.FacturarComprobanteSalon(mesaId, comprobanteMesaDto); MovimientoDTO movimiento = new MovimientoDTO { CajaID = DatosSistema.CajaId, ComprobanteID = comprobanteMesaDto.ComprobanteId, Tipo = TipoMovimiento.Ingreso, UsuarioID = DatosSistema.UsuarioId, Monto = nudTotal.Value, Fecha = DateTime.Now, }; _movimientoServicio.GenerarMovimiento(movimiento); DetalleCajaDTO detalleCaja = new DetalleCajaDTO { CajaId = DatosSistema.CajaId, Monto = nudTotal.Value, TipoPago = _tPago }; _detalleCajaServicio.Generar(detalleCaja); } else { _comprobanteSalonServicio.Eliminar(comprobanteMesaDto.ComprobanteId); desea_imprimir = false; } var mesaParaCerrar = _mesaServicio.ObtenerPorId(mesaId); mesaParaCerrar.estadoMesa = EstadoMesa.Cerrada; _mesaServicio.Modificar(mesaParaCerrar); if (desea_imprimir) { const string message = "Desea imprimir/ver comprobante?"; const string caption = "Comprobante"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { var f = new FormularioComprobante(comprobanteMesaDto.ComprobanteId); f.ShowDialog(); } } this.Close(); }