/// <summary> /// Acción al dar a vender en una venta. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SaleButton(object sender, RoutedEventArgs e) { ContentPresenter conAux = (ActivityList.SelectedItem as ContentPresenter); // Obtener elemento de menú // Se actualiza el producto y el descuento seleccionado. selProd = relationProd[conAux]; selDisc = relationDisc[conAux]; if (selProd == null) { Error error = new Error("Se debe introducir un producto por venta."); error.Show(); return; } // Se crea la conexión Sale SalesConn sc = new SalesConn(); // Se crea el Sale Sale sale = new Sale(); DateTime dateTime = DateTime.Now; DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long unixDateTime = (long)(dateTime.ToUniversalTime() - epoch).TotalSeconds; sale.StampRef = unixDateTime; sale.ProdId = selProd.Id; if (selDisc != null) { sale.DiscId = selDisc.Id; } sale.UserId = LoginConn.User.Id; (ActivityList.SelectedItem as ContentPresenter).Content = "Venta realizada a las " + DateTime.Now.ToString("HH:mm");; // Establecer id de venta temporal. try { sc.Add(sale); } catch (Exception ex) { Error error = new Error("Venta no admitida. " + ex.Message); error.Show(); return; } Update(); ActivityList.SelectedItem = ActivityList.Items[ActivityList.Items.Count - 1]; /* * conAux.ContentTemplate = (DataTemplate)Resources["SaleMenuItem"]; // Cambiar tipo visual * * ContentPresenter conForm = history[conAux]; // Obtener formulario de elemento de menú. * conForm.IsEnabled = false; // Cambiar estado del formulario. */ }
private void Update() { ActivityList.Items.Clear(); FormGrid.Children.Clear(); SalesConn sc = new SalesConn(); RefundsConn rc = new RefundsConn(); ProductsConn pc = new ProductsConn(); DiscountsConn dc = new DiscountsConn(); List <Sale> sales = sc.List; List <Refund> refunds = rc.List; history.Clear(); relationProd.Clear(); relationDisc.Clear(); selProd = null; selDisc = null; // Crear elementos. Sale selSale; Product selProduct; Discount selDiscount; // Recuperar todas las ventas. for (int j = 0; j < sales.Count; j++) { ContentPresenter conItem = new ContentPresenter(); conItem.Content = sales[j].Id.ToString(); conItem.ContentTemplate = (DataTemplate)Resources["SaleMenuItem"]; int max = refunds.Count; // Si coincide con alguna devolución convertir elemento de menu en Return. for (int k = 0; k < max; k++) { if (sales[j].Id == refunds[k].SaleId) { conItem.ContentTemplate = (DataTemplate)Resources["ReturnMenuItem"]; } } // Añadimos el elemento. ActivityList.Items.Add(conItem); // Obtener Sale, Product y Discount. selSale = sales[j]; try { selProduct = pc.Get(selSale.ProdId.Value); } catch { selProduct = null; } try { selDiscount = dc.Get(selSale.DiscId.Value); } catch { selDiscount = null; } // Se crea su formulario ContentPresenter conForm = new ContentPresenter(); conForm.IsEnabled = false; conForm.ContentTemplate = (DataTemplate)Resources["SaleForm"]; conForm.ApplyTemplate(); // Obtener contenedor. DataTemplate auxDT = conForm.ContentTemplate; // Obtener elementos de la GUI StackPanel products = (StackPanel)auxDT.FindName("Products", conForm); StackPanel discounts = (StackPanel)auxDT.FindName("Discounts", conForm); float paying = 0; // Agregar producto if (selSale.ProdId != null && selSale.ProdId != 0) { ContentPresenter productItem = new ContentPresenter(); productItem.Content = selSale.ProdId; productItem.ContentTemplate = (DataTemplate)Resources["ProductItem"]; products.Children.Clear(); products.Children.Add(productItem); Product tmpProduct = pc.Get(int.Parse(productItem.Content.ToString())); paying = tmpProduct.ProdPrice; } float discounting = 0; // Agregar descuento if (selSale.DiscId != null && selSale.DiscId != 0) { ContentPresenter discountItem = new ContentPresenter(); discountItem.Content = selSale.DiscId; discountItem.ContentTemplate = (DataTemplate)Resources["DiscountItem"]; discounts.Children.Clear(); discounts.Children.Add(discountItem); Discount tmpDiscount = dc.Get(int.Parse(discountItem.Content.ToString())); discounting = tmpDiscount.PricePerc; (auxDT.FindName("Discounted", conForm) as TextBox).Text = discounting.ToString(); } // INSERTAR TODOS LOS DATOS NUMERICOS float result = paying - (paying * discounting / 100); (auxDT.FindName("TotalCost", conForm) as TextBlock).Text = "Total: " + result + "€"; // Dar de alta en History y Relations history.Add(conItem, conForm); relationProd.Add(conItem, selProduct); relationDisc.Add(conItem, selDiscount); } }