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(); }
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(); } }