private void cmdCreate_Click(object sender, EventArgs e) { try { decimal _totalDisbursement = 0; decimal _totalProfitShare = 0; Investment _newInvestment = new Investment(); if (EditingExistingInvestment && InvestmenToEdit != null) { _newInvestment = InvestmenToEdit; } else { _newInvestment.contract = fContractPreffix + txtContract.Text; _newInvestment.date = DateTime.Now.Date; _newInvestment.fund_id = manager.Selected; _newInvestment.number = DateTime.Now.Ticks.ToString(); manager.My_db.Investments.Add(_newInvestment); } foreach (Disbursement disbToDelete in toDelete) { if (disbToDelete.Id > 0) { manager.My_db.Disbursements.Remove(disbToDelete); } } int plus = 1; foreach (Disbursement _disbursement in disbursements) { _disbursement.Investment = _newInvestment; _disbursement.contract = _newInvestment.contract; _totalDisbursement += _disbursement.Euro_collection; _totalProfitShare += _disbursement.profit_share; if (_disbursement.Id == 0) { int?groupId = manager.My_db.Disbursements.Max(x => x.group_id); if (!groupId.HasValue) { groupId = 1; } groupId += plus; plus++; _disbursement.group_id = groupId; manager.My_db.Disbursements.Add(_disbursement); } else { List <DisbursementItem> items = manager.My_db.DisbursementItems.Where(x => x.DisbursementId == _disbursement.Id).ToList(); foreach (DisbursementItem item in items) { manager.My_db.DisbursementItems.Remove(item); } } } _newInvestment.total_disbursement = Math.Round(_totalDisbursement, 2); _newInvestment.profit_share = Math.Round(_totalProfitShare, 2); manager.My_db.SaveChanges(); foreach (Disbursement _disbursement in disbursements) { foreach (int _itemId in _disbursement.ItemsIds) { Item _item = manager.My_db.Items.FirstOrDefault(x => x.Id == _itemId); if (_item != null) { DisbursementItem _disbursementItem = new DisbursementItem(); _disbursementItem.ItemId = _item.Id; _disbursementItem.DisbursementId = _disbursement.Id; manager.My_db.DisbursementItems.Add(_disbursementItem); } } } manager.My_db.SaveChanges(); fItemIds.Clear(); txtAmount.Text = "0"; txtNumber.Text = ""; txtContract.Text = "xxx/" + DateTime.Now.Year.ToString().Substring(2, 2); txtProfitShare.Text = String.Format("{0:0.00}", 0); txtExchangeRate.Text = String.Format("{0:0.0000000}", 1); txtTotalToBeCollected.Text = String.Format("{0:0.00}", 0); lbISelectedItems.Items.Clear(); lvDisbursements.Items.Clear(); fMaxDisbursementDate = DateTime.MinValue; disbursements.Clear(); cmdCancel_Click(null, null); if (!EditingExistingInvestment) { FundsManager.ReportForms.DibursementCreatedForm createdDisbursementsForm = new ReportForms.DibursementCreatedForm(); createdDisbursementsForm.investmentId = _newInvestment.Id; createdDisbursementsForm.Show(); } else { this.Close(); } } catch (Exception _ex) { ErrorMessage.showErrorMessage(_ex); } }