// Denna funktion kräver att användaren först har valt ett kvitto från receipt-listview, och // sedan även valt en produkt från det valda kvittot. // När användaren sedan klickar Refund bekräftas återköpet och produkten tas bort från kvittot och // produktens lagerstatus(stock) uppdateras (OM produkten inte tagits bort från lagret). private void BTNRefund_Click(object sender, EventArgs e) { ListViewItem selectedProductItem = null; try { selectedProductItem = ListViewReceiptProducts.SelectedItems[0]; } catch (Exception exc) { System.Diagnostics.Debug.WriteLine("Error when getting selected product item."); System.Diagnostics.Debug.WriteLine(exc.Message); } if (selectedReceipt != null && selectedProductItem != null) { int.TryParse(selectedProductItem.Tag.ToString(), out int id); double price = 0.0; foreach (Product p in selectedReceipt.products) { if (p.id == id) { price = p.price; selectedReceipt.products.Remove(p); break; } } receiptController.Update(selectedReceipt); Product product = productController.GetById(id); if (product != null) { product.stock++; productController.Update(product); } if (selectedReceipt.products.Count > 0) { ListReceiptProducts(); } else { receiptController.Remove(selectedReceipt); selectedReceipt = null; ListViewReceiptProducts.Clear(); ListReceipts(); } MessageBox.Show(selectedProductItem.SubItems[0].Text + " was refunded for " + price.ToString() + " SEK."); } else { MessageBox.Show("Select a product from receipt to refund it."); } }