コード例 #1
0
        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);
            }
        }