示例#1
0
        public static IEnumerable <DebtRow> Deserialize(string fileName)
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("Файл не найден", fileName);
            }

            var serializer = new XmlSerializer(typeof(XmlDebtRows));

            using (var reader = new StreamReader(fileName, Encoding.UTF8)) {
                var xmlRows = ((XmlDebtRows)serializer.Deserialize(reader)).Rows;
                var rows    = new List <DebtRow>();
                foreach (var xmlRow in xmlRows)
                {
                    var row = new DebtRow();
                    row.Amount     = xmlRow.Amount;
                    row.Amount2    = xmlRow.Amount2;
                    row.DebtType   = (DebtType)xmlRow.DebtType;
                    row.Month      = xmlRow.Month;
                    row.Year       = xmlRow.Year;
                    row.Subject    = DebtDAO.GetSubjectByCode(xmlRow.SubjectCode);
                    row.Classifier = DebtDAO.FindClassifier(xmlRow.ClassifierCode);
                    if (row.Classifier == null)
                    {
                        row.Classifier = new Classifier(xmlRow.ClassifierId)
                        {
                            Code      = xmlRow.ClassifierCode,
                            GrpName12 = string.Format("<Классификатор импортирован из {0}>", Path.GetFileName(fileName))
                        };
                    }
                    rows.Add(row);
                }
                return(rows);
            }
        }
示例#2
0
        private void SettingsForm_Load(object sender, EventArgs e)
        {
            comboBoxDefSubject.DataSource = DebtDAO.GetSubjects();
            settings = DebtDAO.GetSettings();
            if (settings.DefaultSubject != null)
            {
                comboBoxDefSubject.SelectedItem = settings.DefaultSubject;
            }

            checkBoxAuto.Checked = settings.IsAutoPasteClassifier;

            comboBoxBudgets.DataSource = DebtDAO.GetBudgets();
            if (!string.IsNullOrEmpty(settings.FilterBudget))
            {
                checkBoxFilterSubjects.Checked = true;
                if (comboBoxBudgets.Items.Contains(settings.FilterBudget))
                {
                    comboBoxBudgets.SelectedItem = settings.FilterBudget;
                }
            }
            else
            {
                checkBoxFilterSubjects.Checked = false;
            }
        }
示例#3
0
 private void initBooksWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     try {
         DebtDAO.Initialize();
     }
     catch { }
 }
示例#4
0
        /// <inheritdoc/>
        public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, System.ComponentModel.TypeConverter formattedValueTypeConverter, System.ComponentModel.TypeConverter valueTypeConverter)
        {
            try {
                var clsfCode = formattedValue as string;
                if (string.IsNullOrEmpty(clsfCode))
                {
                    return(null);
                }

                var clsf = DebtDAO.FindClassifier(clsfCode);
                if (clsf == null)
                {
                    ErrorText = string.Format("Классификатор с кодом {0} не обнаружен в справочнике.\r\nБудет создан новый классификатор", clsfCode);
                    return(new Classifier()
                    {
                        MaskedCode = clsfCode, GrpName12 = "<Новый классификатор>"
                    });
                }
                ErrorText = string.Empty;
                return(clsf);
            }
            catch (ClassifierFormatException e) {
                ErrorText = e.Message;
                return(Classifier.Empty);
            }
        }
示例#5
0
        private void ClassifiersForm_Shown(object sender, EventArgs e)
        {
            var classifiers = DebtDAO.GetClassifiers();

            classifierBindingSource.DataSource = classifiers;

            treeView.BeginUpdate();
            FillLevel(1, treeView.Nodes, classifiers);
            treeView.EndUpdate();

            if (radioButtonList.Checked)
            {
                if (classifierBindingSource.DataSource != null &&
                    selectedClassifier != null &&
                    0 <= classifierBindingSource.IndexOf(selectedClassifier))
                {
                    classifierBindingSource.Position = classifierBindingSource.IndexOf(selectedClassifier);
                }
            }
            else
            {
                if (selectedClassifier != null && cacheNodes.ContainsKey(selectedClassifier.Id))
                {
                    TreeNode node = (TreeNode)cacheNodes[selectedClassifier.Id];
                    treeView.BeginUpdate();
                    node.EnsureVisible();
                    treeView.SelectedNode = node;
                    treeView.EndUpdate();
                }
            }
        }
示例#6
0
 private void rowsDataGrid_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
 {
     if (0 <= e.Row.Index && e.Row.Index < rows.Count)
     {
         DebtDAO.RemoveDebtRow(rows[e.Row.Index]);
         rows.RemoveAt(e.Row.Index);
     }
 }
示例#7
0
 private void ShowDebtRows()
 {
     rows = new List <DebtRow>(
         DebtDAO.GetDebtRows(debtDocProperties.DebtType, debtDocProperties.Month, debtDocProperties.Year)
         );
     rowsDataGrid.Rows.Clear();
     rowsDataGrid.RowCount = this.rows.Count + 1;
 }
示例#8
0
        public Report1ParamForm(DebtType type, int month, int year)
        {
            InitializeComponent();
            DebtProperties.DebtType = type;
            DebtProperties.Month    = month;
            DebtProperties.Year     = year;

            comboBoxBudgetName.Items.Add("<Все бюджеты>");
            comboBoxBudgetName.Items.AddRange(DebtDAO.GetBudgets());
            comboBoxBudgetName.SelectedIndex = 0;
        }
示例#9
0
        public void ShowReport(DebtType type, int month, int year)
        {
            var reportParam = new Report1ParamForm(type, month, year);

            if (reportParam.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            type  = reportParam.DebtProperties.DebtType;
            month = reportParam.DebtProperties.Month;
            year  = reportParam.DebtProperties.Year;

            string reportCaption = string.Format("Отчет по {0} задолженности за {1} месяц {2} года", (type == DebtType.Кредиторская ? "кредиторской" : "дебиторской"), DebtUtil.GetMonthName(month).ToLower(), year);
            string reportName    = (reportParam.GroupBySubjects ? reportName = "CI.Debt.Reports.Report1.rdlc" : "CI.Debt.Reports.Report2.rdlc");

            var reportForm = new ReportForm();

            reportForm.Text = reportCaption;
            reportForm.reportViewer.LocalReport.ReportEmbeddedResource = reportName;
            reportForm.reportViewer.LocalReport.DisplayName            = reportCaption;
            reportForm.reportViewer.LocalReport.SetParameters(new[] { new ReportParameter("pCaption", reportCaption) });

            reportForm.Show();


            IList <DebtRow> rows = null;

            if (reportParam.GroupBySubjects && 0 < reportParam.comboBoxBudgetName.SelectedIndex)
            {
                rows = DebtDAO.GetDebtRows(type, month, year, (string)reportParam.comboBoxBudgetName.SelectedItem);
            }
            else
            {
                rows = DebtDAO.GetDebtRows(type, month, year);
            }
            var reportRows = new List <Report1Row>();

            foreach (var row in rows)
            {
                reportRows.Add(new Report1Row(row));
            }

            reportForm.reportViewer.LocalReport.DataSources.Add(new ReportDataSource("Report1Row", reportRows));
            reportForm.reportViewer.RefreshReport();

            reportForm.reportViewer.SetDisplayMode(DisplayMode.PrintLayout);
            reportForm.reportViewer.ZoomMode    = ZoomMode.Percent;
            reportForm.reportViewer.ZoomPercent = 100;
        }
示例#10
0
 private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (DialogResult == DialogResult.OK)
     {
         settings.DefaultSubject        = comboBoxDefSubject.SelectedItem as Subject;
         settings.IsAutoPasteClassifier = checkBoxAuto.Checked;
         if (checkBoxFilterSubjects.Checked)
         {
             settings.FilterBudget = comboBoxBudgets.SelectedItem as string;
         }
         else
         {
             settings.FilterBudget = null;
         }
         DebtDAO.SaveSettings(settings);
     }
 }
        private void buttonSelect_Click(object sender, EventArgs e)
        {
            var clsf = EditingControlDataGridView.CurrentCell.Value as Classifier;

            if (clsf == null || Classifier.Empty.Equals(clsf))
            {
                clsf = DebtDAO.FindNearestClassifier(EditingControlFormattedValue as string);
            }
            clsfForm.SelectedClassifier = clsf ?? Classifier.Empty;
            if (clsfForm.ShowDialog() == DialogResult.OK)
            {
                clsf = clsfForm.SelectedClassifier;
                if (clsf != null)
                {
                    EditingControlDataGridView.CurrentCell.Value = clsf;
                    EditingControlFormattedValue = clsf.MaskedCode;
                }
            }
        }
示例#12
0
        private void buttonExport_Click(object sender, EventArgs e)
        {
            if (exportFolderBrowser.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            try {
                string fileName = Path.Combine(
                    exportFolderBrowser.SelectedPath,
                    string.Format("{0}_{1}_{2}.xml", debtDocProperties.DebtType.ToString(), DebtUtil.GetMonthName(debtDocProperties.Month), debtDocProperties.Year)
                    );
                XmlDebtRowsSerializer.Serialize(DebtDAO.GetDebtRows(debtDocProperties.DebtType, debtDocProperties.Month, debtDocProperties.Year), fileName);
                MessageBox.Show(string.Format("Экспорт успешно завершен.\r\nФайл экспорта: {0}", fileName), Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex) {
                MessageBox.Show("При экспорте возникло програмное исключение. Экспорт не выполнен.\r\nТекст ошибки: " + ex.ToString(), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#13
0
        private DebtRow CreateDebtRow()
        {
            if (!initialized)
            {
                return(null);
            }

            var defaultSubject = DebtDAO.GetSettings().DefaultSubject;

            if (defaultSubject == null)
            {
                for (int i = rows.Count - 1; 0 <= i; i--)
                {
                    if (rows[i].Subject != null)
                    {
                        defaultSubject = rows[i].Subject;
                        break;
                    }
                }
            }

            var defaultClassifier = Classifier.Empty;

            for (int i = rows.Count - 1; 0 <= i; i--)
            {
                if (rows[i].Classifier != null)
                {
                    defaultClassifier = rows[i].Classifier;
                    break;
                }
            }

            return(new DebtRow()
            {
                DebtType = debtDocProperties.DebtType,
                Month = debtDocProperties.Month,
                Year = debtDocProperties.Year,
                Subject = defaultSubject,
                Classifier = defaultClassifier,
            });
        }
示例#14
0
        static void Main(string[] args)
        {
            ICreditDAO creditDao = new CreditDAO();
            IDebtDAO debtDao = new DebtDAO();
            IBankBookDAO bookDao = new BankBookDAO();

            var cronPenya = new PenyaCron(10000);//каждые 10 секунд
            cronPenya.OnStart();

            var cronCredit = new CreditCron(30000);//каждые 5 минут
            cronCredit.OnStart();

            var cron = new Cron(8000);
            //cron.OnStart();
            while (true)
            {
                var input = Console.ReadKey();

                if (input.Key != ConsoleKey.Escape) continue;

                Console.WriteLine("завершение работы");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine(" ^_^");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine(@"\^_^/");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine(@"/-_-\");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine("goodbay! Т_Т");
                Thread.Sleep(500);
                break;
            }

            cron.OnStop();
            cronCredit.OnStop();
            cronPenya.OnStop();
        }
示例#15
0
        private void toolStripMenuItemCopy_Click(object sender, EventArgs e)
        {
            var copyForm = new DebtCopyForm(debtDocProperties.DebtType, debtDocProperties.Month, debtDocProperties.Year);

            if (copyForm.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            DebtDAO.CopyDebtRows(
                copyForm.DebtPropertiesFrom.DebtType,
                copyForm.DebtPropertiesFrom.Month,
                copyForm.DebtPropertiesFrom.Year,
                copyForm.DebtPropertiesTo.DebtType,
                copyForm.DebtPropertiesTo.Month,
                copyForm.DebtPropertiesTo.Year);

            MessageBox.Show("Копирование строк задолженности успешно завершено.", Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

            debtDocProperties.SetDebtProperties(copyForm.DebtPropertiesTo.DebtType, copyForm.DebtPropertiesTo.Month, copyForm.DebtPropertiesTo.Year);
        }
示例#16
0
        private void initBooksWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            waitForm.CanClose = true;
            waitForm.Close();
            waitForm.Dispose();
            waitForm = null;

            subjects = DebtDAO.GetSubjects();
            var budget = DebtDAO.GetSettings().FilterBudget;

            if (!string.IsNullOrEmpty(budget))
            {
                subjects         = subjects.FindAll(s => { return(string.Compare(budget, s.BudgetName, true) == 0); });
                subjectsFiltered = true;
            }
            SubjectColumn.DataSource    = subjects;
            SubjectColumn.DisplayMember = "FullName";
            SubjectColumn.ValueMember   = "Self";

            initialized = true;
            ShowDebtRows();
        }
示例#17
0
        private bool ValidateToDebt()
        {
            if (DebtPropertiesFrom.DebtType == DebtPropertiesTo.DebtType &&
                DebtPropertiesFrom.Month == DebtPropertiesTo.Month &&
                DebtPropertiesFrom.Year == DebtPropertiesTo.Year)
            {
                var result = MessageBox.Show("Задолженности совпадают. В задолженности будут созданы копии существующих строк.\r\n" +
                                             "Вы действительно хотите копировать строки в одну и ту же задолженность?", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                return(result == DialogResult.OK);
            }

            var toDebtRowsCount = DebtDAO.GetDebtRows(DebtPropertiesTo.DebtType, DebtPropertiesTo.Month, DebtPropertiesTo.Year).Count;

            if (toDebtRowsCount != 0)
            {
                var result = MessageBox.Show("В задолженность, в которую вы хотите скопировать строки, уже имеются строки.\r\n" +
                                             "Вы действительно хотите копировать строки в непустую задолженность?", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                return(result == DialogResult.OK);
            }

            return(true);
        }
        private void maskedTextBox_TextChanged(object sender, EventArgs e)
        {
            if (EditingControlDataGridView != null)
            {
                EditingControlDataGridView.NotifyCurrentCellDirty(true);
            }
            EditingControlValueChanged = true;

            if (!DebtDAO.GetSettings().IsAutoPasteClassifier)
            {
                return;
            }
            //автоподстановка классификатора
            int    position = (int)caretField.GetValue(maskedTextBox) + 1;
            string code     = Classifier.RemoveMaskSymbols(Text.Substring(0, position));

            if (string.IsNullOrEmpty(code) || code.Length == Classifier.CodeLenght)
            {
                return;
            }

            var    clsf    = DebtDAO.FindNearestClassifier(code);
            string newCode = null;

            if (clsf != null)
            {
                newCode = clsf.MaskedCode;
            }
            else
            {
                newCode = code + new string('0', Classifier.CodeLenght).Substring(0, Classifier.CodeLenght);
            }
            position -= 1;
            Text      = newCode;
            if (0 <= position && position < maskedTextBox.MaskedTextProvider.Length)
            {
                caretField.SetValue(maskedTextBox, position);
            }
        }
示例#19
0
        private void rowsDataGrid_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
        {
            if (e.RowIndex < 0 || e.ColumnIndex < 0)
            {
                return;
            }

            DebtRow row = null;

            if (e.RowIndex < rows.Count)
            {
                row = rows[e.RowIndex];
            }
            else
            {
                row = newRow;
                rows.Add(row);
            }
            if (e.ColumnIndex == 0)
            {
                row.Classifier = e.Value as Classifier;
            }
            if (e.ColumnIndex == 1)
            {
                row.Amount = ParseStringToAmount(e.Value as string);
            }
            if (e.ColumnIndex == 2)
            {
                row.Amount2 = ParseStringToAmount(e.Value as string);
            }
            if (e.ColumnIndex == 3)
            {
                row.Subject = e.Value as Subject;
            }
            DebtDAO.SaveOrUpdateDebtRow(row);
        }
示例#20
0
        private void toolStripMenuItemImport_Click(object sender, EventArgs e)
        {
            if (openFileDialogImport.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            try {
                var rows = new List <DebtRow>(XmlDebtRowsSerializer.Deserialize(openFileDialogImport.FileName));
                if (rows.Count == 0)
                {
                    return;
                }

                var existsRows = new List <DebtRow>(DebtDAO.GetDebtRows(rows[0].DebtType, rows[0].Month, rows[0].Year));
                if (0 < existsRows.Count)
                {
                    var answer = MessageBox.Show("Уже существуют строки задолженности такого же типа, месяца и года, как и в файле импорта.\r\nПродолжить импорт?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (answer == DialogResult.Cancel)
                    {
                        return;
                    }
                }
                foreach (var row in rows)
                {
                    if (existsRows.Exists(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); }))
                    {
                        var answer = MessageBox.Show("Уже существуют строки задолженности с такими же классификатором и субъектом, как и в файле импорта.\r\nПродолжить импорт и перезаписать существующие строки?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (answer == DialogResult.Cancel)
                        {
                            return;
                        }
                        break;
                    }
                }

                var rowsToSave = new List <DebtRow>();
                foreach (var row in rows)
                {
                    var existsRow = existsRows.Find(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); });
                    if (existsRow != null)
                    {
                        existsRow.Amount  = row.Amount;
                        existsRow.Amount2 = row.Amount2;
                        rowsToSave.Add(existsRow);
                    }
                    else
                    {
                        rowsToSave.Add(row);
                    }
                }
                DebtDAO.SaveOrUpdateDebtRows(rowsToSave);

                debtDocProperties.SetDebtProperties(rows[0].DebtType, rows[0].Month, rows[0].Year);

                MessageBox.Show(string.Format("Импорт успешно завершен.\r\nФайл импорта: {0}", openFileDialogImport.FileName), Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex) {
                MessageBox.Show(string.Format("Ошибка при импорте задолженности, импорт не выполнен.\r\nТекст ошибки: {0}", ex), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#21
0
 private void SubjectsForm_Shown(object sender, EventArgs e)
 {
     subjectsView.DataSource = new SubjectsBindingList(DebtDAO.GetSubjects());
 }