Beispiel #1
0
 public YearPlanReport(TenderYear year, Estimate est, bool isNewSystem, KekvCode kekv)
 {
     this.year        = year;
     this.estFilter   = est;
     this.isNewSystem = isNewSystem;
     this.kekvFilter  = kekv;
 }
Beispiel #2
0
 private void button1_Click(object sender, EventArgs e)
 {
     selectedEstimate     = comboBox1.SelectedItem as Estimate;
     selectedKekv         = comboBox2.SelectedItem as KekvCode;
     isNewSystemSelected  = radioButton1.Checked;
     filteDataWasSelected = true;
     this.Close();
 }
Beispiel #3
0
 public ContractsSpendingReport(TenderYear year, Estimate est, bool isNewSystem, KekvCode kekv, Contractor contractor)
 {
     this.estFilter        = est;
     this.year             = year;
     this.isNewSystem      = isNewSystem;
     this.kekvFilter       = kekv;
     this.contractorFilter = contractor;
     LoadMoneySourceList();
 }
Beispiel #4
0
        private void LoadMoneysTable()
        {
            if (!updateMoneysRemainsWorker.IsBusy && controlValueWasChangedByUser)
            {
                Estimate selectedEstimate = estimateCBList.SelectedItem as Estimate;
                KekvCode selectedMainKekv = mainKekvCBList.SelectedItem as KekvCode;

                if (selectedEstimate != null && selectedMainKekv != null)
                {
                    ToggleLoadingMoneysAnimation();
                    updateMoneysRemainsWorker.RunWorkerAsync(new UpdateMoneysWorkerArgument
                    {
                        Estimate     = selectedEstimate,
                        Kekv         = selectedMainKekv,
                        DocumentDate = dateTimePicker1.Value
                    });
                }
            }
        }
Beispiel #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(spendingDescription.Text))
            {
                NotificationHelper.ShowError("Ви не вказали стислий опис витрати");
                return;
            }

            if (estimateCBList.SelectedIndex < 0)
            {
                NotificationHelper.ShowError("Ви не обрали кошторис");
                return;
            }

            if (mainKekvCBList.SelectedIndex < 0)
            {
                NotificationHelper.ShowError("Ви не обрали основний КЕКВ");
                return;
            }
            if (altKekvCBList.SelectedIndex < 0)
            {
                NotificationHelper.ShowError("Ви не обрали старий КЕКВ");
                return;
            }
            if (spendingFullSum.Value <= 0)
            {
                NotificationHelper.ShowError("Сумма витрати повинна бути быльна за нуль");
                return;
            }

            if (!newStatusRButton.Checked && spendingFullSum.Value != GetTableTotalSum())
            {
                NotificationHelper.ShowError("Загальна сума витрати не дорівнює загальній сумі яку потрібно зняти з джерел фінансування");
                return;
            }

            using (TenderContext tc = new TenderContext())
            {
                Estimate selectedEstimate = estimateCBList.SelectedItem as Estimate;
                KekvCode selectedMainKekv = mainKekvCBList.SelectedItem as KekvCode;
                KekvCode selectedAltKekv  = altKekvCBList.SelectedItem as KekvCode;

                if (spendingRecord.Id > 0)
                {
                    tc.PlannedSpending.Attach(spendingRecord);
                    tc.Entry <PlannedSpending>(spendingRecord).State = EntityState.Modified;
                }

                spendingRecord.Description     = spendingDescription.Text.Trim();
                spendingRecord.CreationDate    = dateTimePicker1.Value;
                spendingRecord.EstimateId      = selectedEstimate.Id;
                spendingRecord.PrimaryKekvId   = selectedMainKekv.Id;
                spendingRecord.SecondaryKekvId = selectedAltKekv.Id;
                spendingRecord.Sum             = spendingFullSum.Value;

                // Удаляем старые записи об изменениях в балансе
                foreach (var item in spendingRecord.Changes.ToList())
                {
                    tc.BalanceChanges.Attach(item);
                    tc.Entry <BalanceChanges>(item).State = EntityState.Deleted;
                }
                tc.SaveChanges();

                if (onPayStatusRButton.Checked || paidStatusRButton.Checked)
                {
                    for (int i = 0; i < sourcesList.Count; i++)
                    {
                        decimal balanceChangeOnSource = Convert.ToDecimal(balanceChangesTable.Rows[i].Cells[0].Value);

                        if (balanceChangeOnSource == 0)
                        {
                            continue;
                        }

                        spendingRecord.Changes.Add(new BalanceChanges
                        {
                            DateOfReceiving  = spendingRecord.CreationDate,
                            MoneySourceId    = sourcesList[i].Id,
                            PrimaryKekvId    = spendingRecord.PrimaryKekvId,
                            SecondaryKekvId  = spendingRecord.SecondaryKekvId,
                            EstimateId       = spendingRecord.EstimateId,
                            PrimaryKekvSum   = -balanceChangeOnSource,
                            SecondaryKekvSum = -balanceChangeOnSource,
                        });
                    }

                    spendingRecord.IsPaid = paidStatusRButton.Checked;
                    tc.SaveChanges();
                }

                if (spendingRecord.Id == 0)
                {
                    tc.PlannedSpending.Add(spendingRecord);
                }
                tc.SaveChanges();

                FileManager.UpdateRelatedFilesOfEntity(tc, spendingRecord.RelatedFiles, relatedFiles, deletingFiles);

                NotificationHelper.ShowInfo("Дані успішно збережені!");
                dbWasChanged = true;
                this.Close();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (estimatesCBList.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали кошторис");
                return;
            }

            if (mainKekv.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали основний КЕКВ");
                return;
            }

            if (altKekv.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали старий КЕКВ");
                return;
            }

            if (dkCodeSum.Value == 0 && planRecord == null)
            {
                NotificationHelper.ShowError("Сума повинна бути більша за 0");
                return;
            }

            if (string.IsNullOrWhiteSpace(conctretePlanItemName.Text.Trim()))
            {
                NotificationHelper.ShowError("Ви не вказали конкретну назву предмету");
                return;
            }

            if (dkCodesCBList.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали код за ДК");
                return;
            }

            if (isCodeRepeatCheckBox.Checked && string.IsNullOrWhiteSpace(codeRepeatReasonTextBox.Text))
            {
                NotificationHelper.ShowError("Ви не вказали причину створення ще одного запису з існуючим кодом");
                return;
            }

            string msg = string.Empty;
            string actionDescriptionPrefix = string.Empty;

            if (planRecord != null)
            {
                msg = "Вкажіть причину вказаної зміни коду";
                actionDescriptionPrefix = "[ЗМІНА КОДУ]";
            }
            else
            {
                msg = "Прокоментуйте створення коду (необов'язково)";
                actionDescriptionPrefix = "[СТВОРЕННЯ КОДУ]";
            }

            ActionCommentForm af = new ActionCommentForm(msg);

            af.ShowDialog();

            string actionDescription = af.ReasonDescription;

            // Для изменение кода указание причины необходимо
            if (planRecord != null && actionDescription == null)
            {
                NotificationHelper.ShowError("Зміна коду без зазначення причини неможлива");
                return;
            }

            if (planRecord == null)
            {
                planRecord = new TenderPlanRecord();
            }

            using (TenderContext tc = new TenderContext())
            {
                if (planRecord.Id != 0)
                {
                    tc.TenderPlanRecords.Attach(planRecord);
                    tc.Entry <TenderPlanRecord>(planRecord).State = System.Data.Entity.EntityState.Modified;
                }
                else
                {
                    tc.TenderPlanRecords.Add(planRecord);
                }

                Estimate selectedEstimate    = estimatesCBList.SelectedItem as Estimate;
                KekvCode selectedPrimaryKekv = (mainKekv.SelectedItem as KekvRemain).Kekv;
                KekvCode selectedAltKekv     = (altKekv.SelectedItem as KekvRemain).Kekv;

                planRecord.EstimateId      = selectedEstimate.Id;
                planRecord.DkCodeId        = Convert.ToInt32(dkCodesCBList.SelectedValue);
                planRecord.PrimaryKekvId   = selectedPrimaryKekv.Id;
                planRecord.SecondaryKekvId = selectedAltKekv.Id;
                planRecord.DateOfCreating  = planRecord.DateOfLastChange = DateTime.Now;
                planRecord.ProcedureType   = (ProcedureType)procedureTypeCBList.SelectedValue;

                planRecord.CodeRepeatReason = isCodeRepeatCheckBox.Checked ? codeRepeatReasonTextBox.Text.Trim() : null;

                decimal changeOfSum = dkCodeSum.Value;
                planRecord.IsTenderComplete = isProcedureComplete.Checked;
                planRecord.TenderBeginDate  = tenderBeginDate.Value;
                planRecord.PlannedSum       = dkCodeSum.Value;
                planRecord.ConcreteName     = conctretePlanItemName.Text;
                planRecord.DateOfLastChange = DateTime.Now;
                planRecord.ProtocolNum      = protocolNum.Text.Trim();
                planRecord.ProtocolDate     = protocolDate.Value;
                planRecord.BasedOnNeed      = basedOnNeed.Checked;

                TenderPlanRecordChange tpChange = new TenderPlanRecordChange();
                if (!string.IsNullOrWhiteSpace(actionDescription))
                {
                    tpChange.Description = actionDescriptionPrefix + '\n' + actionDescription;
                }
                else
                {
                    tpChange.Description = actionDescriptionPrefix;
                }
                tpChange.DateOfChange        = DateTime.Now;
                tpChange.TenderPlanRecordId  = planRecord.Id;
                tpChange.ChangeOfSum         = changeOfSum;
                tpChange.ChangedConcreteName = planRecord.ConcreteName;

                tc.SaveChanges();

                FileManager.UpdateRelatedFilesOfEntity(tc, planRecord.RelatedFiles, relatedFiles, deletingFiles);

                planRecord.Changes.Add(tpChange);
                tc.TenderPlanRecordChanges.Add(tpChange);
                tc.SaveChanges();

                NotificationHelper.ShowInfo("Зміни до річного плану успішно внесено");
                dbWasChanged = true;
                Close();
            }
        }
        private void WriteTotals(TotalsType type,
                                 KekvCode kekv = null,
                                 string totalSpendingFormula   = null,
                                 string prevMonthRemainFormula = null,
                                 string plannedSpendingFormula = null,
                                 decimal[] plannedSpendingRow  = null)
        {
            // Итоги по затратам
            xlWorksheet.get_Range(numColumnLetter + currentRowNumber.ToString(),
                                  lastMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
            if (type == TotalsType.KekvTotal)
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = kekv.Code;
            }
            else
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = "ВСІ";
            }
            xlWorksheet.get_Range(documentColumnLetter + currentRowNumber.ToString()).Value = "ВСЬОГО ВИТРАЧЕНО";
            currentSourceColumnLetter = moneySourceSpendingBeginColumn;
            for (int j = 0; j < sourcesNum; j++)
            {
                if (totalSpendingFormula != null)
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Formula =
                        string.Format(totalSpendingFormula, currentSourceColumnLetter);
                }
                else
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Value = 0;
                }

                if (j != (sourcesNum - 1))
                {
                    currentSourceColumnLetter = GetNextColumnLetter(currentSourceColumnLetter);
                }
            }
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Formula
                = string.Format("=SUM({1}{0}:{2}{0})", currentRowNumber, moneySourceSpendingBeginColumn, lastMoneySourceColumnLetter);
            if (type == TotalsType.KekvTotal)
            {
                estimateKekvSpendingTotals[kekv].Add("{0}" + currentRowNumber);
                monthSpendingCells.Add("{0}" + currentRowNumber);
            }
            currentRowNumber++;

            // Сколько было заложено сметой
            xlWorksheet.get_Range(numColumnLetter + currentRowNumber.ToString(),
                                  lastMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;

            if (type == TotalsType.KekvTotal)
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = kekv.Code;
            }
            else
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = "ВСІ";
            }
            xlWorksheet.get_Range(documentColumnLetter + currentRowNumber.ToString()).Value = "ВИДІЛЕНО ЗА КОШТОРИСОМ";
            currentSourceColumnLetter = moneySourceSpendingBeginColumn;
            for (int j = 0; j < sourcesNum; j++)
            {
                if (plannedSpendingFormula != null)
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Formula =
                        string.Format(plannedSpendingFormula, currentSourceColumnLetter);
                }
                else
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Value
                        = plannedSpendingRow[j];
                }
                if (j != (sourcesNum - 1))
                {
                    currentSourceColumnLetter = GetNextColumnLetter(currentSourceColumnLetter);
                }
            }
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Formula
                = string.Format("=SUM({1}{0}:{2}{0})", currentRowNumber, moneySourceSpendingBeginColumn, lastMoneySourceColumnLetter);

            if (type == TotalsType.KekvTotal)
            {
                estimateKekvPlannedMoneyTotals[kekv].Add("{0}" + currentRowNumber);
                monthPlannedMoneyCells.Add("{0}" + currentRowNumber);
            }
            currentRowNumber++;

            // Сколько осталось с предыдущего месяца
            if (prevMonthRemainFormula != null)
            {
                xlWorksheet.get_Range(numColumnLetter + currentRowNumber.ToString(),
                                      lastMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;

                if (type == TotalsType.KekvTotal)
                {
                    xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = kekv.Code;
                }
                else
                {
                    xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = "ВСІ";
                }
                xlWorksheet.get_Range(documentColumnLetter + currentRowNumber.ToString()).Value = "ЗАЛИШОК З ПОПЕРЕДНЬОГО МІСЯЦЯ";
                currentSourceColumnLetter = moneySourceSpendingBeginColumn;
                for (int j = 0; j < sourcesNum; j++)
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Formula =
                        string.Format(prevMonthRemainFormula, currentSourceColumnLetter);
                    if (j != (sourcesNum - 1))
                    {
                        currentSourceColumnLetter = GetNextColumnLetter(currentSourceColumnLetter);
                    }
                }
                xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
                xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Formula
                    = string.Format("=SUM({1}{0}:{2}{0})", currentRowNumber, moneySourceSpendingBeginColumn, lastMoneySourceColumnLetter);
                lastMonthRemainCells.Add("{0}" + currentRowNumber);
                currentRowNumber++;
            }

            // Сколько осталось по истечению месяца (либо года)
            xlWorksheet.get_Range(numColumnLetter + currentRowNumber.ToString(),
                                  lastMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
            if (type == TotalsType.KekvTotal)
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = kekv.Code;
            }
            else
            {
                xlWorksheet.get_Range(kekvColumnLetter + currentRowNumber.ToString()).Value = "ВСІ";
            }
            xlWorksheet.get_Range(documentColumnLetter + currentRowNumber.ToString()).Value = "ЗАЛИШОК НА КІНЕЦЬ ПОТОЧНОГО МІСЯЦЯ";
            currentSourceColumnLetter = moneySourceSpendingBeginColumn;
            for (int j = 0; j < sourcesNum; j++)
            {
                if (prevMonthRemainFormula != null)
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Formula
                        = string.Format("={0}{1} + {0}{2} - {0}{3}",
                                        currentSourceColumnLetter,
                                        (currentRowNumber - 2),
                                        (currentRowNumber - 1),
                                        (currentRowNumber - 3));
                }
                else
                {
                    xlWorksheet.get_Range(currentSourceColumnLetter + currentRowNumber.ToString()).Formula
                        = string.Format("={0}{1} - {0}{2}",
                                        currentSourceColumnLetter,
                                        (currentRowNumber - 1),
                                        (currentRowNumber - 2));
                }
                if (j != (sourcesNum - 1))
                {
                    currentSourceColumnLetter = GetNextColumnLetter(currentSourceColumnLetter);
                }
            }
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Font.Bold = true;
            xlWorksheet.get_Range(totalMoneySourceColumnLetter + currentRowNumber.ToString()).Formula
                = string.Format("=SUM({1}{0}:{2}{0})", currentRowNumber, moneySourceSpendingBeginColumn, lastMoneySourceColumnLetter);
            if (type == TotalsType.KekvTotal)
            {
                estimateKekvMoneyRemainTotals[kekv].Add("{0}" + currentRowNumber);
            }
            currentRowNumber++;
        }
Beispiel #8
0
        protected override void Seed(ZcrlTenderContext context)
        {
            UserSession.CreateUser("Адміністратор", "1234567", "Обліковий запис адміністратора системи");

            KekvCode k1 = new KekvCode {
                Code = "2110", Name = "Оплата праці"
            };
            KekvCode k2 = new KekvCode {
                Code = "2210", Name = "Предмети, матеріали, обладнання та інвентар"
            };
            KekvCode k3 = new KekvCode {
                Code = "2220", Name = "Медикаменти та перев'язувальні матеріали"
            };
            KekvCode k4 = new KekvCode {
                Code = "2230", Name = "Продукти харчування"
            };
            KekvCode k5 = new KekvCode {
                Code = "2240", Name = "Оплата послуг (крім комунальних)"
            };
            KekvCode k6 = new KekvCode {
                Code = "2271", Name = "Оплата теплопостачання"
            };
            KekvCode k7 = new KekvCode {
                Code = "2272", Name = "Оплата водопостачання та водовідведення"
            };
            KekvCode k8 = new KekvCode {
                Code = "2273", Name = "Оплата електроенергії"
            };
            KekvCode k9 = new KekvCode {
                Code = "2274", Name = "Оплата природного газу"
            };
            KekvCode k10 = new KekvCode {
                Code = "2275", Name = "Оплата інших енергоносіїв"
            };
            KekvCode k11 = new KekvCode {
                Code = "2281", Name = "Дослідження і розробки, окремі заходи розвитку по реалізації державних (регіональних) програм"
            };
            KekvCode k12 = new KekvCode {
                Code = "2282", Name = "Окремі заходи по реалізації державних (регіональних) програм, не віднесені до заходів розвитку"
            };
            KekvCode k13 = new KekvCode {
                Code = "2710", Name = "Виплата пенсій і допомоги"
            };
            KekvCode k14 = new KekvCode {
                Code = "2730", Name = "Інші виплати населенню"
            };
            KekvCode k15 = new KekvCode {
                Code = "2800", Name = "Інші поточні видатки"
            };
            KekvCode k16 = new KekvCode {
                Code = "3110", Name = "Придбання обладнання і предметів довгострокового користування"
            };

            context.KekvCodes.Add(k1);
            context.KekvCodes.Add(k2);
            context.KekvCodes.Add(k3);
            context.KekvCodes.Add(k4);
            context.KekvCodes.Add(k5);
            context.KekvCodes.Add(k6);
            context.KekvCodes.Add(k7);
            context.KekvCodes.Add(k8);
            context.KekvCodes.Add(k9);
            context.KekvCodes.Add(k10);
            context.KekvCodes.Add(k11);
            context.KekvCodes.Add(k12);
            context.KekvCodes.Add(k13);
            context.KekvCodes.Add(k14);
            context.KekvCodes.Add(k15);
            context.KekvCodes.Add(k16);
            context.SaveChanges();

            int         priority = 1;
            MoneySource ms1      = new MoneySource {
                Name = "Місцевий бюджет", ViewPriority = priority++
            };
            MoneySource ms2 = new MoneySource {
                Name = "Додаткова дотація", ViewPriority = priority++
            };
            MoneySource ms3 = new MoneySource {
                Name = "Медична субвенція", ViewPriority = priority++
            };
            MoneySource ms4 = new MoneySource {
                Name = "Долинська субвенція", ViewPriority = priority++
            };
            MoneySource ms5 = new MoneySource {
                Name = "Біленьківська субвенція", ViewPriority = priority++
            };
            MoneySource ms6 = new MoneySource {
                Name = "Широківська субвенція", ViewPriority = priority++
            };
            MoneySource ms7 = new MoneySource {
                Name = "Суми за дорученням", ViewPriority = priority++
            };
            MoneySource ms8 = new MoneySource {
                Name = "Спецрахунок", ViewPriority = priority++
            };

            context.MoneySources.Add(ms1);
            context.MoneySources.Add(ms2);
            context.MoneySources.Add(ms3);
            context.MoneySources.Add(ms4);
            context.MoneySources.Add(ms5);
            context.MoneySources.Add(ms6);
            context.MoneySources.Add(ms7);
            context.MoneySources.Add(ms8);
            context.SaveChanges();

            base.Seed(context);
        }