public void CerrarMesa
            (ComprobanteMesaDto Comprobante, TipoComprobante tipoComprobante)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                if (Comprobante.Total == 0)
                {
                    var mesaCero = context.Mesas.FirstOrDefault(x => x.Id == Comprobante.MesaId);
                    if (mesaCero == null)
                    {
                        throw new Exception("no se encontro la entidad");
                    }
                    mesaCero.EstadoMesa = EstadoMesa.Cerrada;
                    var comprobanteCero = context.Comprobantes.OfType <ComprobanteSalon>().FirstOrDefault(x =>
                                                                                                          x.MesaId == Comprobante.MesaId && x.EstadoComprobante == EstadoComprobanteSalon.Proceso);
                    comprobanteCero.EstadoComprobante = EstadoComprobanteSalon.Finalizado;
                    context.SaveChanges();
                    return;
                }

                //CAMBIAR ESTADO MESA
                var mesa = context.Mesas.FirstOrDefault(x => x.Id == Comprobante.MesaId);
                if (mesa == null)
                {
                    throw new Exception("no se encontro la entidad");
                }
                mesa.EstadoMesa = EstadoMesa.Cerrada;
                //CAMBIAR ESTADO COMPROBANTE
                var comprobante = context.Comprobantes.OfType <ComprobanteSalon>().FirstOrDefault(x =>
                                                                                                  x.MesaId == Comprobante.MesaId && x.EstadoComprobante == EstadoComprobanteSalon.Proceso);
                comprobante.Numero            = NumeroDeComprobante.UltimoNumeroComprobante();
                comprobante.TipoComprobante   = tipoComprobante;
                comprobante.SubTotal          = Comprobante.SubTotal;
                comprobante.Descuento         = Comprobante.Descuento;
                comprobante.Total             = Comprobante.Total;
                comprobante.EstadoComprobante = EstadoComprobanteSalon.Finalizado;
                comprobante.TipoComprobante   = Comprobante.TipoComprobante;
                MovimientoServicio m  = new MovimientoServicio();
                FormaPagoServicio  fp = new FormaPagoServicio();

                if (Comprobante.MontoEfectivo > 0)
                {
                    //GENERAR MOVIMIENTO
                    m.GenerarMovimiento(new MovimientoDto
                    {
                        CajaId        = Entidad.Entidad.CajaId,
                        ComprobanteId = comprobante.Id,
                        Fecha         = DateTime.Now,
                        Monto         = Comprobante.MontoEfectivo,
                        TipoMovimento = TipoMovimiento.Ingreso,
                        Descripcion   = $"FC_{comprobante.TipoComprobante}_{comprobante.Numero.ToString("0000")}_{comprobante.Fecha.ToString("ddmmyyyy")}",
                        UsuarioId     = Entidad.Entidad.UsuarioId
                    });
                }

                if (Comprobante.MontoCtaCte > 0)
                {
                    //GENERAR MOVIMIENTO
                    m.GenerarMovimiento(new MovimientoDto
                    {
                        CajaId        = Entidad.Entidad.CajaId,
                        ComprobanteId = comprobante.Id,
                        Fecha         = DateTime.Now,
                        Monto         = Comprobante.MontoCtaCte,
                        TipoMovimento = TipoMovimiento.Ingreso,
                        Descripcion   = $"CC_{comprobante.TipoComprobante}_{comprobante.Numero.ToString("0000")}_{comprobante.Fecha.ToString("ddmmyyyy")}",
                        UsuarioId     = Entidad.Entidad.UsuarioId
                    });
                }

                if (Comprobante.MontoTarjeta > 0)
                {
                    m.GenerarMovimiento(new MovimientoDto
                    {
                        CajaId        = Entidad.Entidad.CajaId,
                        ComprobanteId = comprobante.Id,
                        Fecha         = DateTime.Now,
                        Monto         = Comprobante.MontoTarjeta,
                        TipoMovimento = TipoMovimiento.Ingreso,
                        Descripcion   = $"TC_{comprobante.TipoComprobante}_{comprobante.Numero.ToString("0000")}_{comprobante.Fecha.ToString("ddmmyyyy")}",
                        UsuarioId     = Entidad.Entidad.UsuarioId
                    });
                }

                if (Comprobante.MontoCheque > 0)
                {
                    m.GenerarMovimiento(new MovimientoDto
                    {
                        CajaId        = Entidad.Entidad.CajaId,
                        ComprobanteId = comprobante.Id,
                        Fecha         = DateTime.Now,
                        Monto         = Comprobante.MontoCheque,
                        TipoMovimento = TipoMovimiento.Ingreso,
                        Descripcion   = $"CH_{comprobante.TipoComprobante}_{comprobante.Numero.ToString("0000")}_{comprobante.Fecha.ToString("ddmmyyyy")}",
                        UsuarioId     = Entidad.Entidad.UsuarioId
                    });
                }
                context.SaveChanges();
            }
        }
예제 #2
0
 public FormaPagoMesa(long mesaId) : this(new CuentaCorrienteServicio(), new FormaPagoServicio(), new DetalleCajaServicio(), new ComprobanteMesaServicio(), new OperacionServicio())
 {
     _comprobante = _comprobanteMesaServicio.ObtenerComprobanteMesa(mesaId);
     SetTotal(_comprobante.Total);
 }