private void AgregarArticulo()
        {
            if (string.IsNullOrEmpty(txtCodigoBarras.Text))
            {
                MessageBox.Show("Por favor ingrese un codigo", "Error");
                return;
            }

            if (detalles.Values.Count == 0 && !DatosSistema.EstaCajaAbierta)
            {
                MessageBox.Show("Advertencia: No se podrá facturar sin la caja abierta.", "Advertencia");
            }

            if (detalles.TryGetValue(txtCodigoBarras.Text, out DetalleComprobanteDTO det))
            {
                if (!ChequearDisponibilidadArticulo(txtCodigoBarras.Text, nudCantidadArticulo.Value + det.CantidadProducto))
                {
                    return;
                }

                det.CantidadProducto += nudCantidadArticulo.Value;
            }
            else
            {
                ProductoMesaDTO producto = _productoServicio.ObtenerPorCodigoListaPrecio(listaPrecio, txtCodigoBarras.Text);

                if (producto != null)
                {
                    if (!ChequearDisponibilidadArticulo(txtCodigoBarras.Text, nudCantidadArticulo.Value))
                    {
                        return;
                    }
                    detalles[txtCodigoBarras.Text] =
                        new DetalleComprobanteDTO
                    {
                        ProductoId          = producto.Id,
                        CodigoProducto      = producto.Codigo,
                        DescripcionProducto = producto.Descripcion,
                        PrecioUnitario      = producto.Precio,
                        CantidadProducto    = nudCantidadArticulo.Value,
                    };
                }
                else
                {
                    MessageBox.Show(string.Format("Articulo no existe o no esta en lista precio {0}", listaPrecio), "Error");
                }
            }

            ActualizarNudsGrid();
        }
Exemple #2
0
        public void AgregarItems(long mesaId, decimal cantidad, ProductoMesaDTO dto)
        {
            using (var basedatos = new ModeloXCommerceContainer())
            {
                var comprobante = basedatos.Comprobantes
                                  .OfType <ComprobanteSalon>()
                                  .FirstOrDefault(x => x.MesaId == mesaId && x.EstadoComprobanteSalon == EstadoComprobanteSalon.EnProceso);


                if (comprobante == null)
                {
                    throw new Exception("ocurrio un Error al obtener el comprobante");
                }
                var item = comprobante.DetalleComprobantes
                           .FirstOrDefault(x => x.Codigo == dto.Codigo);

                if (item == null)
                {
                    comprobante.DetalleComprobantes.Add(new DetalleComprobante
                    {
                        ComprobanteId  = comprobante.Id,
                        ArticuloId     = dto.Id,
                        Cantidad       = cantidad,
                        Codigo         = dto.Codigo,
                        Descripcion    = dto.Descripcion,
                        PrecioUnitario = dto.Precio,
                        SubTotal       = dto.Precio * cantidad
                    });
                }
                else
                {
                    item.Cantidad += cantidad;
                    item.SubTotal  = item.Cantidad * item.PrecioUnitario;
                    if (dto.DescuentaStock)
                    {
                        var articulo = basedatos.Articulos.FirstOrDefault(x => x.Id == dto.Id);
                        if (articulo == null)
                        {
                            throw new Exception("Ocurrió un error");
                        }
                        articulo.Stock -= cantidad;
                    }
                }


                basedatos.SaveChanges();
            }
        }