private void CreateMoneySourceTab(EstimateMoneyOnSourceTable source) { // Создаём новую вкладку под источник с тем же форматированием, что и первой вкладки TabPage newTab = new TabPage(); newTab.Text = source.Source.Name; newTab.Padding = tabControl1.TabPages[0].Padding; DataGridView newDGV = CopyDataGridView(estimateTotalsTable); newTab.Controls.Add(newDGV); tabControl1.TabPages.Add(newTab); tableDataWasChangedByUser = false; for (int i = 0; i < kekvsList.Count; i++) { for (int k = 0; k < monthes.Length; k++) { if (newSystemRButton.Checked) { newDGV.Rows[i].Cells[k].Value = source.PrimarySumValues[i, k]; } else { newDGV.Rows[i].Cells[k].Value = source.SecondarySumValues[i, k]; } } } tableDataWasChangedByUser = true; estimateMoneyList.Add(source); sourcesList.Remove(source.Source); CheckPossibilityToAddMoneySources(); }
private void saveEstimateDataButton_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(estimateNameTextBox.Text)) { NotificationHelper.ShowError("Ви не вказали назву кошторису!"); return; } for (int i = 0; i < estimateMoneyList.Count; i++) { for (int j = 0; j < kekvsList.Count; j++) { for (int k = 0; k < monthes.Length; k++) { if ((estimateMoneyList[i].PrimarySumValues[j, k] < 0) || (estimateMoneyList[i].SecondarySumValues[j, k] < 0)) { NotificationHelper.ShowError("В кошторисі наявні суми менші за нуль!"); return; } } } } string wrongRemainsMsg = null; // Сверяем новые суммы сметы и запланированные траты в годовом плане по отдельным КЕКВ wrongRemainsMsg = EstimateMoneyOnSourceTable.CheckPlannedKekvSum(estimateMoneyList, plannedMoneyOnKekvs, kekvsList, monthes); if (wrongRemainsMsg != null) { NotificationHelper.ShowError(wrongRemainsMsg); return; } // Сверяем новые суммы сметы и фактические траты по отдельным КЕКВ wrongRemainsMsg = EstimateMoneyOnSourceTable.FindIncorrectSpending(estimateMoneyList, estimateSpendingList, kekvsList, monthes); if (wrongRemainsMsg != null) { NotificationHelper.ShowError(wrongRemainsMsg); return; } WaitingForm wf = new WaitingForm("Іде збеження даних до бази ...", SaveDataToDb); wf.ShowDialog(); if (!string.IsNullOrWhiteSpace(wf.Error)) { NotificationHelper.ShowError("Помилка! Деталі: " + wf.Error); return; } else { NotificationHelper.ShowInfo("Дані по кошторису успішно оновлені в базі даних!"); Close(); } }
public EstimateForm(Estimate est) { InitializeFormControls(); if (!UserSession.IsAuthorized) { this.Text = "Перегляд даних кошторису"; } else { this.Text = "Редагування даних кошторису"; } currentEstimate = est; estimateNameTextBox.Text = currentEstimate.Name; using (TenderContext tc = new TenderContext()) { tc.Estimates.Attach(currentEstimate); tc.Entry <Estimate>(currentEstimate).Collection(p => p.RelatedFiles).Load(); relatedFiles.Clear(); foreach (var elem in currentEstimate.RelatedFiles) { relatedFiles.Add(elem); } // Получаем все поступления по смете EstimateMoneyOnSourceTable.GetEstimateMoneyTable(currentEstimate, kekvsList, monthes, p => (p.PlannedSpending == null && p.Invoice == null), CreateMoneySourceTab); // Получаем список затрат сметы estimateSpendingList = EstimateMoneyOnSourceTable.GetEstimateMoneyTable(currentEstimate, kekvsList, monthes, p => (p.PlannedSpending != null || p.Invoice != null)); // Получаем список запланированных трат по годовому плану по КЕКВ plannedMoneyOnKekvs = (from plItem in tc.TenderPlanRecords.ToList() where plItem.EstimateId == currentEstimate.Id group plItem by plItem.PrimaryKekv into g1 select new KekvMoneyRecord { Kekv = g1.Key, Sum = g1.Sum(p => p.UsedByRecordSum) }).ToList(); } }