private void btnCancel_Click(object sender, EventArgs e) { if (txtId.Text.Trim().Equals(String.Empty)) { MessageBox.Show("A caixa de Id não deve estar vazia, selecione um registro de compra de lote para cancelar."); return; } else { var canceledSale = new Sale(dtSale.Value, dtExpiration.Value) { SaleId = Convert.ToInt64(txtId.Text) }; canceledSale.Canceled = true; List <SaleProduct> saleProducts = saleProductService.ShowAll().Where(sp => sp.SaleId == canceledSale.SaleId).ToList(); foreach (SaleProduct saleProduct in saleProducts) { Storage storage = storageService.ShowAll().Where(s => s.ProductId == saleProduct.ProductId && s.Lot == saleProduct.Lot).FirstOrDefault(); storage.Quantity += saleProduct.Quantity; storageService.Alter(storage); } saleService.Alter(canceledSale); List <Cashflow> canceledCashflows = new List <Cashflow>(); List <Earning> canceledEarnings = earningService.ShowAll().Where(earning => earning.SaleId == canceledSale.SaleId).ToList(); foreach (var canceledEarning in canceledEarnings) { canceledEarning.Paid = false; canceledEarning.Canceled = true; earningService.Alter(canceledEarning); var canceledCashflow = cashflowService.ShowAll().Where(c => c.EarningId == canceledEarning.EarningId).FirstOrDefault(); canceledCashflows.Add(canceledCashflow); } foreach (var canceledCashflow in canceledCashflows) { canceledCashflow.Paid = false; canceledCashflow.Canceled = true; cashflowService.Alter(canceledCashflow); } refreshDataGridView(); resetForm(); } }