Beispiel #1
0
        private void get_data()
        {
            int crowPerc = 0;

            DoOnUIThread(delegate()
            {
                frm = new Nwuram.Framework.UI.Forms.frmLoad();
                frm.StartPosition = FormStartPosition.CenterParent;
                frm.Owner         = this;
                frm.TopMost       = false;
                frm.TextWait      = $"Формирование планов";
                frm.Show();
            });

            PlanReport plan = new PlanReport();

            plan.createTable();
            DoOnUIThread(delegate()
            {
                frm.Dispose();
            });
        }
Beispiel #2
0
        private void getData()
        {
            new Task(() =>
            {
                isLoadData       = true;
                DateTime _dStart = new DateTime();
                DateTime _dEnd   = new DateTime();

                Config.DoOnUIThread(() =>
                {
                    fBlocker.SaveControlsEnabledState(this);
                    fBlocker.SetControlsEnabled(this, false);
                    fWait          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fWait.TextWait = "Загружаю!";
                    fWait.Show();

                    _dStart = dtpStart.Value.Date;
                    _dEnd   = dtpEnd.Value.Date;
                }, this);


                Task <DataTable> task = Config.hCntMain.getJournalCongress(_dStart.Date, _dEnd.Date);
                task.Wait();
                dtData = task.Result.Copy();
                task   = null;

                Config.DoOnUIThread(() =>
                {
                    fWait.Dispose();
                    fBlocker.RestoreControlEnabledState(this);
                    setFilter();
                    dgvData.DataSource = dtData;
                }, this);


                isChangeValue = false;
                isLoadData    = false;
            }).Start();
        }
Beispiel #3
0
        private async void btPrintRow_Click(object sender, EventArgs e)
        {
            if (dgvData.CurrentRow != null && dgvData.CurrentRow.Index != -1 && dtData != null && dtData.DefaultView.Count != 0)
            {
                DataRowView rowSelect = dtData.DefaultView[dgvData.CurrentRow.Index];

                int       id     = (int)rowSelect["id"];
                DataTable dtBody = Config.hCntMain.getRouteBody(id).Result;

                if (dtBody == null || dtBody.Rows.Count == 0)
                {
                    return;
                }

                await Task.Factory.StartNew(() =>
                {
                    Config.DoOnUIThread(() =>
                    {
                        blockers.SaveControlsEnabledState(this);
                        blockers.SetControlsEnabled(this, false);
                        //progressBar1.Visible = progressBar1.Enabled = true;
                        fLoad          = new Nwuram.Framework.UI.Forms.frmLoad();
                        fLoad.TopMost  = false;
                        fLoad.Owner    = this;
                        fLoad.TextWait = "Грузим отчётик!";
                        fLoad.Show();
                    }, this);

                    //if (report == null)
                    report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad();

                    int indexRow = 1;
                    int maxCol   = 5;

                    setWidthColumn(indexRow, 1, 14, report);
                    setWidthColumn(indexRow, 2, 15, report);
                    setWidthColumn(indexRow, 3, 40, report);
                    setWidthColumn(indexRow, 4, 13, report);
                    setWidthColumn(indexRow, 5, 13, report);

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"Маршрут №{rowSelect["RouteNumber"]}", indexRow, 1);
                    report.SetCellAlignmentToJustify(indexRow, 1, indexRow, 1);
                    report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                    report.SetFontSize(indexRow, 1, indexRow, 1, 18);
                    indexRow++;
                    indexRow++;


                    Config.DoOnUIThread(() =>
                    {
                        report.Merge(indexRow, 1, indexRow, maxCol);
                        report.AddSingleValue($"{label3.Text} {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxCol);
                        report.AddSingleValue($"{label5.Text}:{cmbDriver.Text}", indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxCol);
                        report.AddSingleValue($"{label6.Text}:{cmbShop.Text}", indexRow, 1);
                        indexRow++;

                        if (tbNumber.Text.Length > 0 || tbFioMan.Text.Length > 0)
                        {
                            report.Merge(indexRow, 1, indexRow, maxCol);
                            string str = "Фильтры: ";
                            if (tbNumber.Text.Length > 0)
                            {
                                str += $"Номер маршрута: {tbNumber.Text};";
                            }
                            if (tbFioMan.Text.Length > 0)
                            {
                                str += $"Водитель: {tbFioMan.Text};";
                            }
                            report.AddSingleValue($"{str}", indexRow, 1);


                            indexRow++;
                        }

                        report.Merge(indexRow, 1, indexRow, maxCol);
                        report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxCol);
                        report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                    }, this);
                    indexRow++;
                    indexRow++;

                    report.AddSingleValue("№ заказа в маршруте", indexRow, 1);
                    report.AddSingleValue("№ заказа", indexRow, 2);
                    report.AddSingleValue("Адрес доставки", indexRow, 3);
                    report.AddSingleValue("Вес заказа, кг", indexRow, 4);
                    report.AddSingleValue("Длина маршрута, км", indexRow, 5);

                    report.SetFontBold(indexRow, 1, indexRow, maxCol);
                    report.SetBorders(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                    report.SetWrapText(indexRow, 1, indexRow, maxCol);
                    indexRow++;
                    dtBody.DefaultView.Sort = "RouteNumber asc";
                    foreach (DataRowView row in dtBody.DefaultView)
                    {
                        setValueToCell(indexRow, 1, row["RouteNumber"]);
                        setValueToCell(indexRow, 2, row["OrderNumber"]);
                        setValueToCell(indexRow, 3, row["Address"]);
                        setValueToCell(indexRow, 4, row["weigth"]);
                        setValueToCell(indexRow, 5, row["RouteLength"]);

                        report.SetBorders(indexRow, 1, indexRow, maxCol);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                        report.SetCellAlignmentToRight(indexRow, 4, indexRow, 5);
                        indexRow++;
                    }

                    setValueToCell(indexRow, 3, "Итого");
                    decimal routeWeigth = dtBody.AsEnumerable().Sum(r => r.Field <decimal>("weigth"));
                    setValueToCell(indexRow, 4, routeWeigth);
                    decimal routeLength = dtBody.AsEnumerable().Sum(r => r.Field <decimal>("RouteLength"));
                    setValueToCell(indexRow, 5, routeLength);
                    report.SetBorders(indexRow, 1, indexRow, maxCol);
                    indexRow++;

                    report.SetPageSetup(1, 9999, true);
                    report.Show();

                    Config.DoOnUIThread(() =>
                    {
                        blockers.RestoreControlEnabledState(this);
                        fLoad.Dispose();
                    }, this);
                });
            }
        }
Beispiel #4
0
        private async void BtPrint_Click(object sender, EventArgs e)
        {
            await Task.Factory.StartNew(() =>
            {
                Config.DoOnUIThread(() =>
                {
                    blockers.SaveControlsEnabledState(this);
                    blockers.SetControlsEnabled(this, false);
                    //progressBar1.Visible = progressBar1.Enabled = true;
                    fLoad          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fLoad.TopMost  = false;
                    fLoad.Owner    = this;
                    fLoad.TextWait = "Грузим отчётик!";
                    fLoad.Show();
                }, this);

                //if (report == null)
                report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad();

                int indexRow = 1;
                int maxCol   = 0;

                foreach (DataGridViewColumn col in dgvData.Columns)
                {
                    if (col.Visible)
                    {
                        maxCol++;
                    }
                }


                setWidthColumn(indexRow, 1, 13, report);
                setWidthColumn(indexRow, 2, 16, report);
                setWidthColumn(indexRow, 3, 25, report);
                setWidthColumn(indexRow, 4, 25, report);
                setWidthColumn(indexRow, 5, 17, report);
                setWidthColumn(indexRow, 6, 17, report);
                setWidthColumn(indexRow, 7, 20, report);

                report.Merge(indexRow, 1, indexRow, maxCol);
                report.AddSingleValue($"{this.Text}", indexRow, 1);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, 1);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                report.SetFontSize(indexRow, 1, indexRow, 1, 18);
                indexRow++;
                indexRow++;


                Config.DoOnUIThread(() =>
                {
                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"{label3.Text} {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"{label5.Text}:{cmbDriver.Text}", indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"{label6.Text}:{cmbShop.Text}", indexRow, 1);
                    indexRow++;

                    if (tbNumber.Text.Length > 0 || tbFioMan.Text.Length > 0)
                    {
                        report.Merge(indexRow, 1, indexRow, maxCol);
                        string str = "Фильтры: ";
                        if (tbNumber.Text.Length > 0)
                        {
                            str += $"Номер маршрута: {tbNumber.Text};";
                        }
                        if (tbFioMan.Text.Length > 0)
                        {
                            str += $"Водитель: {tbFioMan.Text};";
                        }
                        report.AddSingleValue($"{str}", indexRow, 1);


                        indexRow++;
                    }

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                }, this);
                indexRow++;
                indexRow++;

                maxCol = 0;
                foreach (DataGridViewColumn col in dgvData.Columns)
                {
                    if (col.Visible)
                    {
                        maxCol++;
                        report.AddSingleValue(col.HeaderText, indexRow, maxCol);
                    }
                }

                report.SetFontBold(indexRow, 1, indexRow, maxCol);
                report.SetBorders(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                report.SetWrapText(indexRow, 1, indexRow, maxCol);
                indexRow++;

                foreach (DataRowView row in dtData.DefaultView)
                {
                    maxCol = 0;
                    foreach (DataGridViewColumn col in dgvData.Columns)
                    {
                        if (col.Visible)
                        {
                            maxCol++;
                            setValueToCell(indexRow, maxCol, row[col.DataPropertyName]);
                        }
                    }

                    report.SetBorders(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToRight(indexRow, 5, indexRow, 7);
                    indexRow++;
                }

                report.SetPageSetup(1, 9999, true);
                report.Show();

                Config.DoOnUIThread(() =>
                {
                    blockers.RestoreControlEnabledState(this);
                    fLoad.Dispose();
                }, this);
            });
        }
Beispiel #5
0
        private async Task initDateType1()
        {
            //DateTime _startDate = new DateTime(dtpStart.Value.Year, dtpStart.Value.Month, 1);
            //int id_objectLeaser = (int)cmbObject.SelectedValue;

            DateTime _startDate      = new DateTime();
            int      id_objectLeaser = 0;

            Config.DoOnUIThread(() =>
            {
                _startDate      = new DateTime(dtpStart.Value.Year, dtpStart.Value.Month, 1);
                id_objectLeaser = (int)cmbObject.SelectedValue;

                fBlocker.SaveControlsEnabledState(this);
                fBlocker.SetControlsEnabled(this, false);
                fWait          = new Nwuram.Framework.UI.Forms.frmLoad();
                fWait.TextWait = "Загружаю данные из базы!";
                fWait.TopMost  = false;
                fWait.Owner    = this;
                fWait.Show();
            }, this);


            Task <DataTable> task = Config.hCntMain.getPlanReport(_startDate.Date, id_objectLeaser);

            task.Wait();

            if (task.Result == null || task.Result.Rows.Count == 0)
            {
                Config.DoOnUIThread(() =>
                {
                    dgvData.DataSource = null;
                    fWait.Dispose();
                    fBlocker.RestoreControlEnabledState(this);
                }, this); return;
            }

            dtData = task.Result;

            foreach (DataRow row in dtData.Rows)
            {
                int id_Agreements = (int)row["id"];

                task = Config.hCntMain.getTDiscount(id_Agreements);
                task.Wait();

                DataTable dtTmp = task.Result;

                DateTime dStart    = (DateTime)row["Start_Date"];
                DateTime dStop     = (DateTime)row["Stop_Date"];
                decimal  Total_Sum = (decimal)row["Total_Sum"];

                decimal Phone = 0;
                if (dtData.Columns.Contains("Phone"))
                {
                    Phone = (decimal)row["Phone"];
                }

                DateTime _dateStop = _startDate.AddMonths(1).AddDays(-1);

                if (dStart.Date < _startDate.Date)
                {
                    dStart = _startDate.Date;
                }
                if (dStop.Date < _dateStop.Date)
                {
                    _dateStop = dStop.Date;
                }

                Dictionary <DateTime, decimal> dicDate = new Dictionary <DateTime, decimal>();

                for (DateTime dI = dStart.Date; dI.Date <= _dateStop.Date; dI = dI.AddDays(1))
                {
                    if (dI.Date > dStop.Date)
                    {
                        break;
                    }

                    int days = DateTime.DaysInMonth(dI.Year, dI.Month);

                    EnumerableRowCollection <DataRow> rowCollect = dtTmp.AsEnumerable()
                                                                   .Where(r => r.Field <int>("id_StatusDiscount") == 2 &&
                                                                          ((r.Field <DateTime>("DateStart").Date <= dI.Date && r.Field <object>("DateEnd") == null) ||
                                                                           (r.Field <DateTime>("DateStart").Date <= dI.Date && dI.Date <= r.Field <DateTime>("DateEnd").Date))
                                                                          ).OrderByDescending(r => r.Field <DateTime>("DateStart"));

                    if (rowCollect.Count() > 0)
                    {
                        decimal _tmpDec          = Total_Sum;
                        int     _id_TypeDiscount = (int)rowCollect.First()["id_TypeDiscount"];

                        EnumerableRowCollection <DataRow> rows = rowCollect.Where(r => r.Field <object>("DateEnd") != null && r.Field <int>("id_TypeDiscount") == 2);
                        if (rows.Count() > 0)
                        {
                            _tmpDec = (decimal)rows.First()["Discount"];
                            _tmpDec = _tmpDec * (decimal)row["Total_Area"] + Phone;
                        }
                        else
                        {
                            rows = rowCollect.Where(r => r.Field <object>("DateEnd") == null && r.Field <int>("id_TypeDiscount") == 2);
                            if (rows.Count() > 0)
                            {
                                _tmpDec = (decimal)rows.First()["Discount"];
                                _tmpDec = _tmpDec * (decimal)row["Total_Area"] + Phone;
                            }
                        }

                        if (_id_TypeDiscount != 2)
                        {
                            rows = rowCollect.Where(r => r.Field <object>("DateEnd") != null && r.Field <int>("id_TypeDiscount") == 1);
                            if (rows.Count() > 0)
                            {
                                _tmpDec = _tmpDec - (_tmpDec * (decimal)rows.First()["Discount"]) / 100;
                            }
                            else
                            {
                                rows = rowCollect.Where(r => r.Field <object>("DateEnd") == null && r.Field <int>("id_TypeDiscount") == 1);
                                if (rows.Count() > 0)
                                {
                                    _tmpDec = _tmpDec - (_tmpDec * (decimal)rows.First()["Discount"]) / 100;
                                }
                            }
                        }

                        dicDate.Add(dI.Date, _tmpDec / days);
                    }
                    else
                    {
                        dicDate.Add(dI.Date, Total_Sum / days);
                    }
                }

                IEnumerable <DateTime> rowDates = dicDate.Keys.AsEnumerable().Where(r => r.Month == _startDate.Month && r.Year == _startDate.Year);
                decimal sumMonth = 0;
                foreach (DateTime tt in rowDates)
                {
                    sumMonth += dicDate[tt.Date];
                }

                sumMonth = Math.Round(sumMonth, 0);

                //if ((int)row["id"] == 3155) {

                //}

                row["EndPlan"] = sumMonth;
                decimal tmpResult     = (decimal)row["EndPlan"] + (decimal)row["preCredit"] - (decimal)row["preOverPayment"] + (decimal)row["Penalty"] + (decimal)row["OtherPayments"];
                decimal tmpResult_tmp = tmpResult;
                row["ultraResult"] = tmpResult < 0 ? 0.00M : tmpResult;
                tmpResult          = (decimal)row["ultraResult"] - (decimal)row["Included"];
                row["Credit"]      = tmpResult > 0 ? tmpResult : (decimal)0;
                //row["OverPayment"] = tmpResult < 0 ? Math.Abs(tmpResult) : (decimal)0;
                //row["OverPayment"] = tmpResult_tmp < 0 ? Math.Abs(tmpResult_tmp) : ((decimal)row["ultraResult"] < 0 ? Math.Abs(tmpResult) : (decimal)0);
                row["OverPayment"] = tmpResult_tmp < 0 ? Math.Abs(tmpResult_tmp) + (decimal)row["Included"] : (tmpResult < 0 ? Math.Abs(tmpResult) : (decimal)0);
                row["Discount"]    = (decimal)row["Total_Sum"] - (decimal)row["EndPlan"];
                row["timeLimit"]   = $"{((DateTime)row["Start_Date"]).ToShortDateString()} - {((DateTime)row["Stop_Date"]).ToShortDateString()}";
            }
            //setFilter();
            //dgvData.DataSource = dtData;
            //isChangeValue = true;
            //statusElements(false);

            Config.DoOnUIThread(() =>
            {
                fWait.Dispose();
                fBlocker.RestoreControlEnabledState(this);

                setFilter();
                dgvData.DataSource = dtData;
                isChangeValue      = true;
                statusElements(false);
            }, this);
        }
Beispiel #6
0
        private void getData()
        {
            int id_object = (int)cmbObject.SelectedValue;

            new Task(() =>
            {
                Config.DoOnUIThread(() =>
                {
                    fBlocker.SaveControlsEnabledState(this);
                    fBlocker.SetControlsEnabled(this, false);
                    fWait          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fWait.TopMost  = false;
                    fWait.Owner    = this;
                    fWait.TextWait = "Загружаю данные из базы!";
                    fWait.Show();
                    dgvData.DataSource = null;
                }, this);



                Task <DataTable> task = Config.hCntMain.GetListOwe(id_object);
                task.Wait();
                dtData = task.Result;

                if (dtData == null || dtData.Rows.Count == 0)
                {
                    Config.DoOnUIThread(() =>
                    {
                        dgvData.DataSource = null;
                        fWait.Dispose();
                        fBlocker.RestoreControlEnabledState(this);
                    }, this); return;
                }

                dtData.Columns.Add("SummaPaymentFine_1", typeof(decimal));
                dtData.Columns.Add("SummaFine_1", typeof(decimal));
                dtData.Columns.Add("SummaPenny_1", typeof(decimal));
                dtData.Columns.Add("PrcPenny_1", typeof(decimal));
                dtData.Columns.Add("SummaPaymentFine_1_filter", typeof(decimal));

                dtData.Columns.Add("SummaPaymentFine_2", typeof(decimal));
                dtData.Columns.Add("SummaFine_2", typeof(decimal));
                dtData.Columns.Add("SummaPenny_2", typeof(decimal));
                dtData.Columns.Add("PrcPenny_2", typeof(decimal));

                task = Config.hCntMain.GetListOweAdditionalData(1, id_object);
                task.Wait();

                if (task.Result != null && task.Result.Rows.Count > 0)
                {
                    initDateType1(task.Result);
                }
                DateTableType1 = dtData.Copy();
                dtData.Clear();


                task = Config.hCntMain.GetListOweAdditionalData(2, id_object);
                task.Wait();
                if (task.Result != null && task.Result.Rows.Count > 0)
                {
                    EnumerableRowCollection <DataRow> rowsCOl = task.Result.AsEnumerable().Where(r => r.Field <decimal>("PrcPenny_2") > 0);
                    if (rowsCOl.Count() > 0)
                    {
                        DateTableType2 = rowsCOl.CopyToDataTable();
                    }

                    //DateTableType2  = task.Result.AsEnumerable().Where(r => r.Field<decimal>("PrcPenny_2") > 0).CopyToDataTable();


                    //foreach (DataRow row in task.Result.Rows)
                    //{
                    //    EnumerableRowCollection<DataRow> rowCollect = dtData.AsEnumerable().Where(r => r.Field<int>("id") == (int)row["id"]);
                    //    if (rowCollect.Count() > 0)
                    //    {
                    //        rowCollect.First()["SummaPaymentFine_2"] = row["SummaPaymentFine"];
                    //        rowCollect.First()["SummaFine_2"] = row["SummaFine"];
                    //        rowCollect.First()["SummaPenny_2"] = row["SummaPenny"];
                    //        rowCollect.First()["PrcPenny_2"] = Math.Round((decimal)row["PrcPenny"], 0);
                    //    }
                    //}
                }
                Config.DoOnUIThread(() =>
                {
                    ChangeTableForType();
                    fWait.Dispose();
                    fBlocker.RestoreControlEnabledState(this);

                    setFilter();
                    dgvData.DataSource = dtData;
                }, this);
            }).Start();
        }
Beispiel #7
0
        private async void BtPrint_Click(object sender, EventArgs e)
        {
            int      id_driver = (int)cmbDriver.SelectedValue;
            DateTime dateStart = dtpStart.Value.Date;
            DateTime dateEnd   = dtpEnd.Value.Date;

            DataTable dtReport = Config.hCntMain.getReportDriver(dateStart, dateEnd, id_driver).Result;

            if (dtReport == null || dtReport.Rows.Count == 0)
            {
                MessageBox.Show("Нет данных для отчёта", "Выгрузка отчёта");
                return;
            }

            var groupDriver = dtReport.AsEnumerable()
                              .GroupBy(g => new { nameShop = g.Field <string>("nameShop"), id_Driver = g.Field <int>("id_Driver"), nameDriver = g.Field <string>("nameDriver"), DateRoute = g.Field <DateTime>("DateRoute"), CarNumber = g.Field <string>("CarNumber"), RouteNumber = g.Field <int>("RouteNumber"), id = g.Field <int>("id") })
                              .Select(s => new {
                s.Key.nameShop,
                s.Key.nameDriver,
                s.Key.DateRoute,
                s.Key.id_Driver,
                s.Key.CarNumber,
                s.Key.RouteNumber,
                s.Key.id,
                allCost       = s.Max(r => r.Field <decimal>("Cost100km")),
                allCostFull   = (s.Sum(r => r.Field <decimal>("RouteLength")) * s.Max(r => r.Field <decimal>("Cost100km"))) / 100.0m,
                sumWeightGood = s.Sum(r => r.Field <decimal>("weightGood"))
            }).OrderBy(o => o.nameShop).ThenBy(o => o.nameDriver).ThenBy(o => o.DateRoute).ThenBy(o => o.RouteNumber);



            await Task.Factory.StartNew(() =>
            {
                Config.DoOnUIThread(() =>
                {
                    blockers.SaveControlsEnabledState(this);
                    blockers.SetControlsEnabled(this, false);
                    //progressBar1.Visible = progressBar1.Enabled = true;
                    fLoad          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fLoad.TopMost  = false;
                    fLoad.Owner    = this;
                    fLoad.TextWait = "Грузим отчётик!";
                    fLoad.Show();
                }, this);

                //if (report == null)
                report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad();

                int indexRow = 1;
                int maxCol   = 10;

                setWidthColumn(indexRow, 1, 14, report);
                setWidthColumn(indexRow, 2, 15, report);
                setWidthColumn(indexRow, 3, 20, report);
                setWidthColumn(indexRow, 4, 30, report);
                setWidthColumn(indexRow, 5, 30, report);

                setWidthColumn(indexRow, 6, 14, report);
                setWidthColumn(indexRow, 7, 13, report);
                setWidthColumn(indexRow, 8, 13, report);
                setWidthColumn(indexRow, 9, 14, report);
                setWidthColumn(indexRow, 10, 50, report);

                report.Merge(indexRow, 1, indexRow, maxCol);
                report.AddSingleValue("Отчет по водителям", indexRow, 1);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, 1);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                report.SetFontSize(indexRow, 1, indexRow, 1, 18);
                indexRow++;
                indexRow++;


                Config.DoOnUIThread(() =>
                {
                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"{label3.Text} {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue($"{label5.Text}:{cmbDriver.Text}", indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                }, this);
                indexRow++;
                indexRow++;

                report.AddSingleValue("Магазин", indexRow, 1);
                report.AddSingleValue("Дата маршрута", indexRow, 2);
                report.AddSingleValue("№ маршрута", indexRow, 3);
                report.AddSingleValue("Водитель", indexRow, 4);
                report.AddSingleValue("Машина", indexRow, 5);
                report.AddSingleValue("Расход на 100 км. в городе, литр", indexRow, 6);
                report.AddSingleValue("Сумма веса заказов", indexRow, 7);
                report.AddSingleValue("Длина маршрута, км.", indexRow, 8);
                report.AddSingleValue("№ заказа", indexRow, 9);
                report.AddSingleValue("Адрес доставки", indexRow, 10);

                report.SetFontBold(indexRow, 1, indexRow, maxCol);
                report.SetBorders(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                report.SetWrapText(indexRow, 1, indexRow, maxCol);
                indexRow++;

                foreach (var gd in groupDriver)
                {
                    setValueToCell(indexRow, 1, gd.nameShop);
                    setValueToCell(indexRow, 2, gd.DateRoute);
                    setValueToCell(indexRow, 3, gd.RouteNumber);
                    setValueToCell(indexRow, 4, gd.nameDriver);
                    setValueToCell(indexRow, 5, gd.CarNumber);
                    setValueToCell(indexRow, 6, gd.allCost);
                    setValueToCell(indexRow, 7, gd.sumWeightGood);


                    EnumerableRowCollection <DataRow> rowCollect = dtReport.AsEnumerable().Where(r => r.Field <int>("id") == gd.id);

                    if (rowCollect.Count() > 0)
                    {
                        int indexStart = indexRow;
                        //DataRow row = rowCollect.First();

                        foreach (DataRow row in rowCollect)
                        {
                            setValueToCell(indexRow, 8, row["RouteLength"]);
                            setValueToCell(indexRow, 9, row["OrderNumber"]);
                            setValueToCell(indexRow, 10, row["Address"]);
                            report.SetBorders(indexRow, 1, indexRow, maxCol);
                            report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                            report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                            //report.SetCellAlignmentToRight(indexRow, 4, indexRow, 5);
                            indexRow++;
                        }

                        report.Merge(indexStart, 1, indexStart + rowCollect.Count() - 1, 1);
                        report.Merge(indexStart, 2, indexStart + rowCollect.Count() - 1, 2);
                        report.Merge(indexStart, 3, indexStart + rowCollect.Count() - 1, 3);
                        report.Merge(indexStart, 4, indexStart + rowCollect.Count() - 1, 4);
                        report.Merge(indexStart, 5, indexStart + rowCollect.Count() - 1, 5);
                        report.Merge(indexStart, 6, indexStart + rowCollect.Count() - 1, 6);
                        report.Merge(indexStart, 7, indexStart + rowCollect.Count() - 1, 7);
                    }
                }



                report.Merge(indexRow, 1, indexRow, 2);
                setValueToCell(indexRow, 1, "Итого кол-во маршрутов");
                setValueToCell(indexRow, 3, groupDriver.Count());

                setValueToCell(indexRow, 5, "Итого");

                setValueToCell(indexRow, 6, groupDriver.Sum(r => r.allCostFull));
                decimal routeLength = dtReport.AsEnumerable().Sum(r => r.Field <decimal>("weightGood"));
                setValueToCell(indexRow, 7, routeLength);
                routeLength = dtReport.AsEnumerable().Sum(r => r.Field <decimal>("RouteLength"));
                setValueToCell(indexRow, 8, routeLength);
                report.SetBorders(indexRow, 1, indexRow, 3);
                report.SetBorders(indexRow, 5, indexRow, 8);
                indexRow++;


                report.SetPageSetup(1, 9999, true);
                report.Show();

                Config.DoOnUIThread(() =>
                {
                    blockers.RestoreControlEnabledState(this);
                    fLoad.Dispose();
                }, this);
            });
        }
Beispiel #8
0
        private async void BtPrint_Click(object sender, EventArgs e)
        {
            await Task.Factory.StartNew(() =>
            {
                Config.DoOnUIThread(() =>
                {
                    blockers.SaveControlsEnabledState(this);
                    blockers.SetControlsEnabled(this, false);
                    //progressBar1.Visible = progressBar1.Enabled = true;
                    fLoad          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fLoad.TopMost  = false;
                    fLoad.Owner    = this;
                    fLoad.TextWait = "Грузим отчётик!";
                    fLoad.Show();
                }, this);

                //if (report == null)
                report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad();

                int indexRow = 1;
                int maxCol   = 0;

                foreach (DataGridViewColumn col in dgvData.Columns)
                {
                    if (col.Visible)
                    {
                        maxCol++;
                    }
                }


                setWidthColumn(indexRow, 1, 29, report);
                setWidthColumn(indexRow, 2, 22, report);
                setWidthColumn(indexRow, 3, 25, report);
                setWidthColumn(indexRow, 4, 25, report);

                report.Merge(indexRow, 1, indexRow, maxCol);
                report.AddSingleValue($"{this.Text}", indexRow, 1);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, 1);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                report.SetFontSize(indexRow, 1, indexRow, 1, 18);
                indexRow++;
                indexRow++;

                Config.DoOnUIThread(() =>
                {
                    /*
                     * report.Merge(indexRow, 1, indexRow, maxCol);
                     * report.AddSingleValue($"{label5.Text}{cmbDeps.Text}", indexRow, 1);
                     * indexRow++;
                     *
                     * report.Merge(indexRow, 1, indexRow, maxCol);
                     * report.AddSingleValue($"{label3.Text}{cmbPost.Text}", indexRow, 1);
                     * indexRow++;
                     */
                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                    indexRow++;

                    report.Merge(indexRow, 1, indexRow, maxCol);
                    report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                }, this);
                indexRow++;
                indexRow++;

                maxCol = 0;
                foreach (DataGridViewColumn col in dgvData.Columns)
                {
                    if (col.Visible)
                    {
                        maxCol++;
                        report.AddSingleValue(col.HeaderText, indexRow, maxCol);
                    }
                }

                report.SetFontBold(indexRow, 1, indexRow, maxCol);
                report.SetBorders(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                report.SetWrapText(indexRow, 1, indexRow, maxCol);
                indexRow++;

                foreach (DataRowView row in dtData.DefaultView)
                {
                    maxCol = 0;
                    foreach (DataGridViewColumn col in dgvData.Columns)
                    {
                        if (col.Visible)
                        {
                            maxCol++;
                            setValueToCell(indexRow, maxCol, row[col.DataPropertyName]);
                        }
                    }

                    report.SetBorders(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxCol);
                    report.SetCellAlignmentToRight(indexRow, 3, indexRow, 4);
                    indexRow++;
                }

                report.SetPageSetup(1, 9999, true);
                report.Show();

                Config.DoOnUIThread(() =>
                {
                    blockers.RestoreControlEnabledState(this);
                    fLoad.Dispose();
                }, this);
            });
        }
        private async void btnPrint_Click(object sender, EventArgs e)
        {
            if (!chbCancel.Checked && !chbComplete.Checked && !chbЕmployesОrder.Checked)
            {
                return;
            }
            int id_Shop = (int)cmbShop.SelectedValue;
            var outer   = Task.Factory.StartNew(() =>    // внешняя задача
            {
                Config.DoOnUIThread(() =>
                {
                    blockers.SaveControlsEnabledState(this);
                    blockers.SetControlsEnabled(this, false);
                    //progressBar1.Visible = progressBar1.Enabled = true;
                    fLoad          = new Nwuram.Framework.UI.Forms.frmLoad();
                    fLoad.TopMost  = false;
                    fLoad.Owner    = this;
                    fLoad.TextWait = "Грузим отчётик!";
                    fLoad.Show();
                }, this);

                Nwuram.Framework.ToExcelNew.ExcelUnLoad report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad();
                bool isShow = false;


                if (chbComplete.Checked)
                {
                    DataTable dtDataStatus3     = Config.connect.getReportData(dtpStart.Value, dtpEnd.Value, 3, id_Shop);
                    DataTable dtDataStatus3Body = (id_Shop == 1 ? Config.connect : Config.hCntSecond).getSumNotesOrderWithRCena(dtpStart.Value, dtpEnd.Value, 3, id_Shop);

                    if (dtDataStatus3 != null && dtDataStatus3.Rows.Count > 0)
                    {
                        isShow = true;
                        report.changeNameTab("Выполненные");

                        decimal sumOrder = 0, sumNote = 0, SummaDelivery = 0, sumPackage = 0, DeliveryCost = 0, valueOst = 0, valueDelta = 0;


                        int indexRow   = 1;
                        int maxColumns = 12;

                        setWidthColumn(indexRow, 1, 6, report);
                        setWidthColumn(indexRow, 2, 10, report);
                        setWidthColumn(indexRow, 3, 17, report);
                        setWidthColumn(indexRow, 4, 11, report);
                        setWidthColumn(indexRow, 5, 16, report);
                        setWidthColumn(indexRow, 6, 22, report);
                        setWidthColumn(indexRow, 7, 16, report);
                        setWidthColumn(indexRow, 8, 12, report);
                        setWidthColumn(indexRow, 9, 14, report);
                        setWidthColumn(indexRow, 10, 16, report);
                        setWidthColumn(indexRow, 11, 16, report);
                        setWidthColumn(indexRow, 12, 13, report);

                        #region "Head"
                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue($"Отчёт об выполненных заказах с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                        report.SetFontBold(indexRow, 1, indexRow, 1);
                        report.SetFontSize(indexRow, 1, indexRow, 1, 16);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                        indexRow++;
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                        indexRow++;
                        indexRow++;
                        #endregion

                        report.AddSingleValue("№ п/п", indexRow, 1);
                        report.AddSingleValue("Номер заказа", indexRow, 2);
                        report.AddSingleValue("Сумма заказа", indexRow, 3);
                        report.AddSingleValue("Дата доставки", indexRow, 4);
                        report.AddSingleValue("Сумма чека", indexRow, 5);
                        report.AddSingleValue("№ чека", indexRow, 6);
                        report.AddSingleValue("Стоимость доставки", indexRow, 7);
                        report.AddSingleValue("Кол-во пакетов", indexRow, 8);
                        report.AddSingleValue("Стоимость пакетов", indexRow, 9);
                        report.AddSingleValue("Затраты на доставку", indexRow, 10);
                        report.AddSingleValue("Остаток по доставке", indexRow, 11);
                        report.AddSingleValue("∆ по чеку", indexRow, 12);


                        report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                        report.SetBorders(indexRow, 1, indexRow, maxColumns);
                        report.SetWrapText(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                        indexRow++;

                        int npp = 1;

                        var groupOrder = dtDataStatus3.AsEnumerable()
                                         .GroupBy(r => new { id_tOrders = r.Field <int>("id_tOrders") })
                                         .Select(g => new
                        {
                            g.Key.id_tOrders,
                            sumNote = g.Sum(r => r.Field <decimal>("sumNote"))
                        });

                        foreach (var g in groupOrder)
                        {
                            EnumerableRowCollection <DataRow> rowCollect = dtDataStatus3.AsEnumerable().Where(r => r.Field <int>("id_tOrders") == g.id_tOrders);
                            DataRow row  = rowCollect.First();
                            int startRow = indexRow;
                            report.SetWrapText(indexRow, 1, indexRow + rowCollect.Count() - 1, maxColumns);
                            report.Merge(indexRow, 1, indexRow + rowCollect.Count() - 1, 1);
                            report.Merge(indexRow, 2, indexRow + rowCollect.Count() - 1, 2);
                            report.Merge(indexRow, 3, indexRow + rowCollect.Count() - 1, 3);
                            report.Merge(indexRow, 4, indexRow + rowCollect.Count() - 1, 4);
                            report.Merge(indexRow, 5, indexRow + rowCollect.Count() - 1, 5);

                            report.Merge(indexRow, 7, indexRow + rowCollect.Count() - 1, 7);
                            report.Merge(indexRow, 8, indexRow + rowCollect.Count() - 1, 8);
                            report.Merge(indexRow, 9, indexRow + rowCollect.Count() - 1, 9);
                            report.Merge(indexRow, 10, indexRow + rowCollect.Count() - 1, 10);
                            report.Merge(indexRow, 11, indexRow + rowCollect.Count() - 1, 11);
                            report.Merge(indexRow, 12, indexRow + rowCollect.Count() - 1, 12);



                            report.AddSingleValue(npp.ToString(), indexRow, 1);
                            report.AddSingleValue(row["OrderNumber"].ToString(), indexRow, 2);
                            report.AddSingleValueObject(row["sumOrder"], indexRow, 3);
                            report.SetFormat(indexRow, 3, indexRow, 3, "0.00");
                            report.AddSingleValue(((DateTime)row["DeliveryDate"]).ToShortDateString(), indexRow, 4);

                            report.AddSingleValueObject(g.sumNote, indexRow, 5);
                            report.SetFormat(indexRow, 5, indexRow, 5, "0.00");

                            report.AddSingleValueObject(row["SummaDelivery"], indexRow, 7);
                            report.SetFormat(indexRow, 7, indexRow, 7, "0.00");

                            report.AddSingleValueObject(row["CountPackage"], indexRow, 8);
                            report.SetFormat(indexRow, 8, indexRow, 8, "0.00");

                            report.AddSingleValueObject(row["sumPackage"], indexRow, 9);
                            report.SetFormat(indexRow, 9, indexRow, 9, "0.00");

                            report.AddSingleValueObject(row["DeliveryCost"], indexRow, 10);
                            report.SetFormat(indexRow, 10, indexRow, 10, "0.00");


                            sumOrder      += (decimal)row["sumOrder"];
                            sumNote       += g.sumNote;
                            SummaDelivery += (decimal)row["SummaDelivery"];
                            sumPackage    += (decimal)row["sumPackage"];
                            DeliveryCost  += (decimal)row["DeliveryCost"];

                            decimal value = (decimal)row["SummaDelivery"] - (decimal)row["sumPackage"] - (decimal)row["DeliveryCost"];
                            valueOst     += value;
                            report.AddSingleValueObject(value, indexRow, 11);
                            report.SetFormat(indexRow, 11, indexRow, 11, "0.00");

                            if (dtDataStatus3Body != null)
                            {
                                decimal sum = dtDataStatus3Body.AsEnumerable().Where(r => r.Field <int>("id_tOrders") == (int)row["id_tOrders"]).Sum(r => r.Field <decimal>("resultSum"));
                                report.AddSingleValueObject(g.sumNote - sum, indexRow, 12);
                                valueDelta += g.sumNote - sum;
                            }
                            else
                            {
                                report.AddSingleValueObject(0, indexRow, 12);
                            }
                            report.SetFormat(indexRow, 12, indexRow, 12, "0.00");

                            foreach (DataRow rowSelect in rowCollect)
                            {
                                //report.AddSingleValueObject(rowSelect["sumNote"], indexRow, 5);
                                //report.SetFormat(indexRow, 5, indexRow, 5, "0.00");
                                report.AddSingleValue($"Касса:{rowSelect["KassNumber"]} Чек:{rowSelect["CheckNumber"]}", indexRow, 6);
                                indexRow++;
                            }



                            report.SetBorders(startRow, 1, indexRow - 1, maxColumns);
                            report.SetCellAlignmentToCenter(startRow, 1, indexRow - 1, maxColumns);
                            report.SetCellAlignmentToJustify(startRow, 1, indexRow - 1, maxColumns);
                            //indexRow++;
                            npp++;
                        }


                        report.SetFormat(indexRow, 2, indexRow, maxColumns, "0.00");

                        report.AddSingleValue($"Итого:", indexRow, 1);
                        report.AddSingleValueObject(sumOrder, indexRow, 3);
                        report.AddSingleValueObject(sumNote, indexRow, 5);
                        report.AddSingleValueObject(SummaDelivery, indexRow, 7);
                        report.AddSingleValueObject(sumPackage, indexRow, 9);
                        report.AddSingleValueObject(DeliveryCost, indexRow, 10);
                        report.AddSingleValueObject(valueOst, indexRow, 11);
                        report.AddSingleValueObject(valueDelta, indexRow, 12);

                        report.SetBorders(indexRow, 1, indexRow, maxColumns);
                        report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                    }
                }

                if (chbCancel.Checked)
                {
                    DataTable dtData = Config.connect.getReportData(dtpStart.Value, dtpEnd.Value, 4, id_Shop);
                    if (dtData != null && dtData.Rows.Count > 0)
                    {
                        if (!isShow)
                        {
                            isShow = true;
                            report.changeNameTab("Отменённые");
                        }
                        else
                        {
                            report.GoToNextSheet("Отменённые");
                        }

                        int indexRow     = 1;
                        int maxColumns   = 9;
                        decimal sumOrder = 0;

                        setWidthColumn(indexRow, 1, 9, report);
                        setWidthColumn(indexRow, 2, 20, report);
                        setWidthColumn(indexRow, 3, 20, report);
                        setWidthColumn(indexRow, 4, 16, report);
                        setWidthColumn(indexRow, 5, 20, report);
                        setWidthColumn(indexRow, 6, 18, report);
                        setWidthColumn(indexRow, 7, 16, report);
                        setWidthColumn(indexRow, 8, 16, report);
                        setWidthColumn(indexRow, 9, 40, report);

                        #region "Head"
                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue($"Отчёт об отменённых заказах с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                        report.SetFontBold(indexRow, 1, indexRow, 1);
                        report.SetFontSize(indexRow, 1, indexRow, 1, 16);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                        indexRow++;
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                        indexRow++;
                        indexRow++;
                        #endregion

                        report.AddSingleValue("№ п/п", indexRow, 1);
                        report.AddSingleValue("ФИО", indexRow, 2);
                        report.AddSingleValue("Адрес", indexRow, 3);
                        report.AddSingleValue("Телефон", indexRow, 4);
                        report.AddSingleValue("e-mail", indexRow, 5);
                        report.AddSingleValue("Номер заказа", indexRow, 6);
                        report.AddSingleValue("Дата заказа", indexRow, 7);
                        report.AddSingleValue("Сумма заказа", indexRow, 8);
                        report.AddSingleValue("Комментарий об отмене заказа", indexRow, 9);

                        report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                        report.SetBorders(indexRow, 1, indexRow, maxColumns);
                        report.SetWrapText(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                        indexRow++;

                        int npp = 1;

                        foreach (DataRowView row in dtData.DefaultView)
                        {
                            report.SetWrapText(indexRow, 1, indexRow, maxColumns);

                            report.AddSingleValue(npp.ToString(), indexRow, 1);
                            report.AddSingleValue(row["FIO"].ToString(), indexRow, 2);
                            report.AddSingleValue(row["Address"].ToString(), indexRow, 3);
                            report.AddSingleValue(row["Phone"].ToString(), indexRow, 4);
                            report.AddSingleValue(row["Email"].ToString(), indexRow, 5);
                            report.AddSingleValue(row["OrderNumber"].ToString(), indexRow, 6);
                            report.AddSingleValue(((DateTime)row["DateOrder"]).ToShortDateString(), indexRow, 7);
                            report.AddSingleValueObject(row["sumOrder"], indexRow, 8);
                            report.SetFormat(indexRow, 4, indexRow, 4, "0.00");
                            report.AddSingleValue(row["Comment"].ToString(), indexRow, 9);

                            sumOrder += (decimal)row["sumOrder"];

                            report.SetBorders(indexRow, 1, indexRow, maxColumns);
                            report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                            report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                            indexRow++;
                            npp++;
                        }

                        report.SetFormat(indexRow, 2, indexRow, maxColumns, "0.00");

                        report.AddSingleValue($"Итого:", indexRow, 1);
                        report.AddSingleValueObject(sumOrder, indexRow, 8);

                        report.SetBorders(indexRow, 1, indexRow, maxColumns);
                        report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                    }
                }

                if (chbЕmployesОrder.Checked)
                {
                    DataTable dtData = Config.connect.reportЕmployesОrder(dtpStart.Value, dtpEnd.Value, id_Shop);
                    if (dtData != null && dtData.Rows.Count > 0)
                    {
                        if (!isShow)
                        {
                            isShow = true;
                            report.changeNameTab("Отчет по сотрудникам");
                        }
                        else
                        {
                            report.GoToNextSheet("Отчет по сотрудникам");
                        }


                        int indexRow     = 1;
                        int maxColumns   = 8;
                        decimal sumOrder = 0;

                        setWidthColumn(indexRow, 1, 9, report);
                        setWidthColumn(indexRow, 2, 25, report);
                        setWidthColumn(indexRow, 3, 16, report);
                        setWidthColumn(indexRow, 4, 16, report);
                        setWidthColumn(indexRow, 5, 16, report);
                        setWidthColumn(indexRow, 6, 12, report);
                        setWidthColumn(indexRow, 7, 12, report);
                        setWidthColumn(indexRow, 8, 12, report);

                        #region "Head"
                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue($"Отчет по сотрудникам с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}", indexRow, 1);
                        report.SetFontBold(indexRow, 1, indexRow, 1);
                        report.SetFontSize(indexRow, 1, indexRow, 1, 16);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1);
                        indexRow++;
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1);
                        indexRow++;

                        report.Merge(indexRow, 1, indexRow, maxColumns);
                        report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1);
                        indexRow++;
                        indexRow++;
                        #endregion

                        report.AddSingleValue("№ п/п", indexRow, 1);
                        report.AddSingleValue("ФИО сотрудника", indexRow, 2);
                        report.AddSingleValue("Дата заказа", indexRow, 3);
                        report.AddSingleValue("Номер заказа", indexRow, 4);
                        report.AddSingleValue("Позиций в заказе", indexRow, 5);
                        report.AddSingleValue("Сборщик", indexRow, 6);
                        report.AddSingleValue("Пробитие", indexRow, 7);
                        report.AddSingleValue("Доставщик", indexRow, 8);

                        report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                        report.SetBorders(indexRow, 1, indexRow, maxColumns);
                        report.SetWrapText(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                        report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                        indexRow++;


                        var groupCountCollector = dtData.AsEnumerable()
                                                  .Where(r => r.Field <bool>("Collector"))
                                                  .GroupBy(g => new { OrderNumber = g.Field <int>("OrderNumber") })
                                                  .Select(s => new { s.Key.OrderNumber, countCollector = s.Count() });

                        var groupKadr = dtData.AsEnumerable().GroupBy(r => new { id_Kadr = r.Field <int>("id_Kadr"), FIO = r.Field <string>("FIO") }).Select(s => new { s.Key.id_Kadr, s.Key.FIO });


                        int npp          = 1;
                        Color cCompleted = Color.FromArgb(244, 255, 96);
                        foreach (var gKadr in groupKadr)
                        {
                            EnumerableRowCollection <DataRow> rowCollect = dtData.AsEnumerable().Where(r => r.Field <int>("id_Kadr") == gKadr.id_Kadr).OrderBy(r => r.Field <int>("OrderNumber"));
                            report.Merge(indexRow, 2, indexRow + rowCollect.Count() - 1, 2);
                            setValueToCell(indexRow, 2, gKadr.FIO, report);
                            var groupDate = rowCollect.AsEnumerable().GroupBy(g => new { DeliveryDate = g.Field <DateTime>("DeliveryDate") }).Select(s => new { s.Key.DeliveryDate });

                            decimal countCollector = 0;
                            int countKassCheck     = 0;
                            int countDelivery      = 0;

                            foreach (var gDate in groupDate)
                            {
                                EnumerableRowCollection <DataRow> rowCollectDate = rowCollect.Where(r => r.Field <DateTime>("DeliveryDate") == gDate.DeliveryDate);

                                report.Merge(indexRow, 3, indexRow + rowCollectDate.Count() - 1, 3);
                                setValueToCell(indexRow, 3, gDate.DeliveryDate, report);

                                foreach (DataRow row in rowCollectDate)
                                {
                                    report.SetWrapText(indexRow, 1, indexRow, maxColumns);

                                    setValueToCell(indexRow, 1, npp, report);
                                    setValueToCell(indexRow, 4, row["OrderNumber"], report);
                                    setValueToCell(indexRow, 5, row["countRow"], report);
                                    if ((bool)row["Collector"])
                                    {
                                        decimal valResult = Convert.ToDecimal((int)row["countRow"]) / Convert.ToDecimal(groupCountCollector.Where(r => r.OrderNumber == (int)row["OrderNumber"]).First().countCollector);
                                        countCollector   += valResult;
                                        setValueToCell(indexRow, 6, valResult, report);
                                    }
                                    if ((bool)row["KassCheck"])
                                    {
                                        setValueToCell(indexRow, 7, row["KassCheck"], report);
                                        countKassCheck++;
                                    }
                                    if ((bool)row["Delivery"])
                                    {
                                        setValueToCell(indexRow, 8, row["Delivery"], report);
                                        countDelivery++;
                                    }
                                    if (!(bool)row["isCompleted"])
                                    {
                                        report.SetCellColor(indexRow, 4, indexRow, maxColumns, cCompleted);
                                    }
                                    report.SetBorders(indexRow, 1, indexRow, maxColumns);
                                    report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                                    report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                                    indexRow++;
                                    npp++;
                                }
                            }


                            report.Merge(indexRow, 1, indexRow, 5);
                            setValueToCell(indexRow, 1, $"Итого:", report);
                            setValueToCell(indexRow, 6, countCollector, report);
                            setValueToCell(indexRow, 7, countKassCheck, report);
                            setValueToCell(indexRow, 8, countDelivery, report);

                            report.SetBorders(indexRow, 1, indexRow, maxColumns);
                            report.SetFontBold(indexRow, 1, indexRow, maxColumns);
                            report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns);
                            report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns);
                            report.SetCellAlignmentToRight(indexRow, 1, indexRow, 1);
                            //report.SetCellAlignmentToRight(indexRow, 6, indexRow, maxColumns);

                            indexRow++;
                        }
                        report.SetCellColor(indexRow + 1, 1, indexRow + 1, 1, cCompleted);
                        setValueToCell(indexRow + 1, 2, "-заказ не выполнен", report);
                    }
                }

                Config.DoOnUIThread(() =>
                {
                    blockers.RestoreControlEnabledState(this);
                    fLoad.Dispose();
                }, this);

                if (isShow)
                {
                    report.SetPageSetup(1, 9999, true);
                    report.Show();
                }
                else
                {
                    MessageBox.Show("Нет данных для отчёта", "Выгрузка отчёта", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                #region логирование
                Logging.StartFirstLevel(79);
                Logging.Comment("Произведена выгрузка в Excel отчета по работе онлайн-магазина");
                Logging.Comment($"Период с: {dtpStart.Value.ToShortDateString()} по: {dtpEnd.Value.ToShortDateString()}");
                Logging.Comment($"Отчет о выполненых заказах: {(chbComplete.Checked ? "Да" : "Нет")}");
                Logging.Comment($"Отчет об отмененных заказах: {(chbCancel.Checked ? "Да" : "Нет")}");
                Logging.Comment("Завершение выгрузки отчета по работе онлайн магазина");
                Logging.StopFirstLevel();
                #endregion
            });
        }
Beispiel #10
0
        private async Task initDateType1()
        {
            DateTime _startDate      = new DateTime();
            int      id_objectLeaser = 0;

            Config.DoOnUIThread(() =>
            {
                _startDate      = new DateTime(dtpStart.Value.Year, dtpStart.Value.Month, 1);
                id_objectLeaser = (int)cmbObject.SelectedValue;

                fBlocker.SaveControlsEnabledState(this);
                fBlocker.SetControlsEnabled(this, false);
                fWait          = new Nwuram.Framework.UI.Forms.frmLoad();
                fWait.TextWait = "Загружаю данные из базы!";
                fWait.TopMost  = false;
                fWait.Owner    = this;
                fWait.Show();
            }, this);

            //Thread.Sleep(5000);

            Task <DataTable> task = Config.hCntMain.getMonthReport(_startDate.Date, id_objectLeaser);

            task.Wait();

            if (task.Result == null || task.Result.Rows.Count == 0)
            {
                Config.DoOnUIThread(() =>
                {
                    dgvData.DataSource = null;
                    fWait.Dispose();
                    fBlocker.RestoreControlEnabledState(this);
                }, this); return;
            }

            dtData = task.Result;

            if (!dtData.Columns.Contains("discount"))
            {
                dtData.Columns.Add("discount", typeof(decimal));
            }

            if (!dtData.Columns.Contains("plane"))
            {
                dtData.Columns.Add("plane", typeof(decimal));
            }

            DataTable dtResultPay = new DataTable();

            dtResultPay.Columns.Add("id_Agreements", typeof(int));
            dtResultPay.Columns.Add("date", typeof(DateTime));
            dtResultPay.Columns.Add("sumOwe", typeof(decimal));
            dtResultPay.Columns.Add("sumPay", typeof(decimal));
            dtResultPay.Columns.Add("sumResult", typeof(decimal));
            dtResultPay.AcceptChanges();

            int maxCount = dtData.Rows.Count;
            int cnt      = 1;

            foreach (DataRow row in dtData.Rows)
            {
                int prc = (cnt * 100) / maxCount;

                Config.DoOnUIThread(() =>
                {
                    fWait.TextWait = $"Идёт формирование данных: {prc} из 100%";
                }, this);

                int  id_Agreements = (int)row["id"];
                bool isDiscount    = false;

                task = Config.hCntMain.getTDiscount(id_Agreements);
                task.Wait();
                //if (task.Result == null || task.Result.Rows.Count == 0)
                //{ continue; }

                DataTable dtTmp = task.Result;

                DateTime dStart    = (DateTime)row["Start_Date"];
                DateTime dStop     = (DateTime)row["Stop_Date"];
                decimal  Total_Sum = (decimal)row["Total_Sum"];

                decimal Phone = 0;
                if (dtData.Columns.Contains("Phone"))
                {
                    Phone = (decimal)row["Phone"];
                }


                DateTime _dateStop = _startDate.AddMonths(1).AddDays(-1);

                if (dStart.Date < _startDate.Date)
                {
                    dStart = _startDate.Date;
                }
                if (dStop.Date < _dateStop.Date)
                {
                    _dateStop = dStop.Date;
                }

                Dictionary <DateTime, decimal> dicDate = new Dictionary <DateTime, decimal>();

                for (DateTime dI = dStart.Date; dI.Date <= _dateStop.Date; dI = dI.AddDays(1))
                {
                    if (dI.Date > dStop.Date)
                    {
                        break;
                    }

                    int days = DateTime.DaysInMonth(dI.Year, dI.Month);

                    EnumerableRowCollection <DataRow> rowCollect = dtTmp.AsEnumerable()
                                                                   .Where(r => r.Field <int>("id_StatusDiscount") == 2 &&
                                                                          ((r.Field <DateTime>("DateStart").Date <= dI.Date && r.Field <object>("DateEnd") == null) ||
                                                                           (r.Field <DateTime>("DateStart").Date <= dI.Date && dI.Date <= r.Field <DateTime>("DateEnd").Date))
                                                                          ).OrderByDescending(r => r.Field <DateTime>("DateStart"));

                    if (rowCollect.Count() > 0)
                    {
                        decimal _tmpDec = Total_Sum;
                        isDiscount = true;
                        int _id_TypeDiscount = (int)rowCollect.First()["id_TypeDiscount"];


                        EnumerableRowCollection <DataRow> rows = rowCollect.Where(r => r.Field <object>("DateEnd") != null && r.Field <int>("id_TypeDiscount") == 2);
                        if (rows.Count() > 0)
                        {
                            _tmpDec = (decimal)rows.First()["Discount"];
                            _tmpDec = _tmpDec * (decimal)row["Total_Area"] + Phone;
                        }
                        else
                        {
                            rows = rowCollect.Where(r => r.Field <object>("DateEnd") == null && r.Field <int>("id_TypeDiscount") == 2);
                            if (rows.Count() > 0)
                            {
                                _tmpDec = (decimal)rows.First()["Discount"];
                                _tmpDec = _tmpDec * (decimal)row["Total_Area"] + Phone;
                            }
                        }

                        if (_id_TypeDiscount != 2)
                        {
                            rows = rowCollect.Where(r => r.Field <object>("DateEnd") != null && r.Field <int>("id_TypeDiscount") == 1);
                            if (rows.Count() > 0)
                            {
                                _tmpDec = _tmpDec - (_tmpDec * (decimal)rows.First()["Discount"]) / 100;
                            }
                            else
                            {
                                rows = rowCollect.Where(r => r.Field <object>("DateEnd") == null && r.Field <int>("id_TypeDiscount") == 1);
                                if (rows.Count() > 0)
                                {
                                    _tmpDec = _tmpDec - (_tmpDec * (decimal)rows.First()["Discount"]) / 100;
                                }
                            }
                        }
                        dicDate.Add(dI.Date, _tmpDec / days);
                    }
                    else
                    {
                        dicDate.Add(dI.Date, Total_Sum / days);
                    }
                }

                IEnumerable <DateTime> rowDates = dicDate.Keys.AsEnumerable().Where(r => r.Month == _startDate.Month && r.Year == _startDate.Year);
                decimal sumMonth = 0;
                foreach (DateTime tt in rowDates)
                {
                    sumMonth += dicDate[tt.Date];
                }

                sumMonth = Math.Round(sumMonth, 0);

                row["plane"]     = sumMonth;
                row["discount"]  = isDiscount ? Math.Round(Total_Sum - sumMonth, 0) : 0;
                row["timeLimit"] = $"{((DateTime)row["Start_Date"]).ToShortDateString()} - {((DateTime)row["Stop_Date"]).ToShortDateString()}";
                row["discount"]  = (decimal)row["Total_Sum"] - (decimal)row["plane"];
            }


            Config.DoOnUIThread(() =>
            {
                fWait.Dispose();
                fBlocker.RestoreControlEnabledState(this);

                setFilter();
                dgvData.DataSource = dtData;
                isChangeValue      = true;
                statusElements(false);
            }, this);
        }