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(); }); }
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(); }
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); }); }
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); }
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(); }
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); }); }
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 }); }
private async void btPrintFrame_Click(object sender, EventArgs e) { if (dgvData.CurrentRow != null && dgvData.CurrentRow.Index != -1 && dtBody != null && dtBody.DefaultView.Count != 0) { DataTable dtBodyReport = dtBody.Copy(); 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($"Маршрут №{tbRoterNumber.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++; 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++; dtBodyReport.DefaultView.Sort = "RouteNumber asc"; foreach (DataRowView row in dtBodyReport.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 = dtBodyReport.AsEnumerable().Sum(r => r.Field <decimal>("weigth")); setValueToCell(indexRow, 4, routeWeigth); decimal routeLength = dtBodyReport.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); }); } }
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); }