public void ExcelClientConditionsMonitoring() { var filter = new ClientConditionsMonitoringFilter(); filter.Session = DbSession; BindObjectInstance(filter, IsPost ? ParamStore.Form : ParamStore.QueryString, "filter", AutoLoadBehavior.NullIfInvalidKey); this.RenderFile("Мониторинг_выставления_условий_клиенту.xls", ExportModel.GetClientConditionsMonitoring(filter)); }
public void Base_filter_work_test() { var region = session.Query <Region>().FirstOrDefault(r => r.Name == "Воронеж"); var filter = new ClientConditionsMonitoringFilter { Session = session, Region = region, ClientId = 2136 }; filter.Find(); }
public void ExportClientConditionsMonitoringTest() { var filter = new ClientConditionsMonitoringFilter(); filter.Session = session; var buf = ExportModel.GetClientConditionsMonitoring(filter); var stream = new MemoryStream(buf); var wb = Workbook.Load(stream); var ws = wb.Worksheets.First(); Assert.That(ws.Name, Is.StringContaining("Мониторинг выставления условий")); }
public void SetUp() { session.CreateSQLQuery(@" update ordersendrules.smart_order_rules set AssortimentPriceCode = null; delete from usersettings.pricesdata;") .ExecuteUpdate(); supplier = DataMother.CreateSupplier(); session.Save(supplier); client = DataMother.CreateTestClientWithAddressAndUser(); session.Save(client); var intersectionOne = session.Query <Intersection>().Where(i => i.Price == supplier.Prices.First() && i.Client == client).ToList(); foreach (var intersection in intersectionOne) { intersection.AvailableForClient = false; session.Save(intersection); } Flush(); var twoClient = DataMother.CreateTestClientWithAddressAndUser(); session.Save(twoClient); session.Flush(); var intersections = session.Query <Intersection>().Where(i => i.Client == twoClient).ToList(); foreach (var intersection in intersections) { intersection.SupplierClientId = "123"; intersection.SupplierPaymentId = "123"; intersection.AvailableForClient = true; intersection.PriceMarkup = 0.5; foreach (var addressIntersection in intersection.Addresses) { addressIntersection.SupplierDeliveryId = "123"; session.Save(addressIntersection); } session.Save(intersection); } Flush(); filter = new ClientConditionsMonitoringFilter { Session = session, ClientId = client.Id }; }
public static byte[] GetClientConditionsMonitoring(ClientConditionsMonitoringFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Мониторинг выставления условий клиенту"); var row = 0; var col = 0; // выбираем данные var report = filter.Find(); // создаем строку var sheetRow = sheet.CreateRow(row++); var headerStyle = NPOIExcelHelper.GetHeaderStype(book); // выводим наименование отчета var headerCell = sheetRow.CreateCell(0); headerCell.CellStyle = headerStyle; headerCell.SetCellValue("Мониторинг выставления условий клиенту"); // дата построения отчета sheetRow = sheet.CreateRow(row++); var dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("Дата подготовки отчета: {0}", DateTime.Now)); // наименование аптеки sheetRow = sheet.CreateRow(row++); dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("Наименование аптеки: {0}", filter.ClientName)); // добавляем пустую строку перед таблицей sheet.CreateRow(row++); sheetRow = sheet.CreateRow(row++); // заполняем наименования столбцов таблицы NPOIExcelHelper.FillNewCell(sheetRow, 0, "Код поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, "Наименование поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, "Регион", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, "Прайс лист", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, "Тип", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, "Ценовая колонка", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, "В работе", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, "Подключен к прайсам", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, "Наценка", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, "Код клиента", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 10, "Код доставки", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 11, "Код оплаты", headerStyle); // стиль для ячеек с данными var dataStyle = NPOIExcelHelper.GetDataStyle(book); // стиль для ячеек с данными, выравненный по центру var centerDataStyle = NPOIExcelHelper.GetCenterDataStyle(book); ICellStyle LightORANGE_STYLE; ICellStyle LightYELLOW_STYLE; ICellStyle LightBlue_STYLE; ICellStyle PINK_STYLE; ICellStyle LightGreen_STYLE; ICellStyle LAVENDER_STYLE; dateCell.CellStyle = dataStyle; // выводим данные foreach (var monitoringItem in report) { sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, monitoringItem.SupplierCode.ToString(), centerDataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, monitoringItem.SupplierName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, monitoringItem.RegionName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, monitoringItem.PriceName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, monitoringItem.PriceType, dataStyle); if (monitoringItem.CostCollumn) { LightORANGE_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightOrange.Index); NPOIExcelHelper.FillNewCell(sheetRow, 5, monitoringItem.CostName, LightORANGE_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 5, monitoringItem.CostName, centerDataStyle); } NPOIExcelHelper.FillNewCell(sheetRow, 6, !monitoringItem.AvailableForClient ? "Нет" : string.Empty, centerDataStyle); if (monitoringItem.NoPriceConnected) { LightYELLOW_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightYellow.Index); NPOIExcelHelper.FillNewCell(sheetRow, 7, monitoringItem.CountAvailableForClient, LightYELLOW_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 7, monitoringItem.CountAvailableForClient, centerDataStyle); } if (monitoringItem.PriceMarkupStyle) { LightBlue_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightBlue.Index); NPOIExcelHelper.FillNewCell(sheetRow, 8, monitoringItem.PriceMarkup > 0 ? monitoringItem.PriceMarkup.ToString() : string.Empty, LightBlue_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 8, monitoringItem.PriceMarkup > 0 ? monitoringItem.PriceMarkup.ToString() : string.Empty, centerDataStyle); } if (monitoringItem.ClientCodeStyle) { PINK_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Pink.Index); NPOIExcelHelper.FillNewCell(sheetRow, 9, monitoringItem.SupplierClientId, PINK_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 9, monitoringItem.SupplierClientId, centerDataStyle); } if (monitoringItem.DeliveryStyle) { LightGreen_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightGreen.Index); NPOIExcelHelper.FillNewCell(sheetRow, 10, monitoringItem.DeliveryStyle ? monitoringItem.SupplierDeliveryAdresses.Replace("</br>", Environment.NewLine) : string.Empty, LightGreen_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 10, monitoringItem.DeliveryStyle ? monitoringItem.SupplierDeliveryAdresses.Replace("</br>", Environment.NewLine) : string.Empty, centerDataStyle); } if (!string.IsNullOrEmpty(monitoringItem.SupplierDeliveryAdresses)) { var rows = monitoringItem.SupplierDeliveryAdresses.Split(new[] { "</br>" }, StringSplitOptions.RemoveEmptyEntries); sheetRow.Height = (short)(sheetRow.Height * rows.Count()); } if (monitoringItem.PaymentCodeStyle) { LAVENDER_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Lavender.Index); NPOIExcelHelper.FillNewCell(sheetRow, 11, monitoringItem.SupplierPaymentId, LAVENDER_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 11, monitoringItem.SupplierPaymentId, centerDataStyle); } } // устанавливаем ширину столбцов for (var i = col; i >= 0; i--) { sheet.SetColumnWidth(i, 3500); } sheet.SetColumnWidth(0, sheet.GetColumnWidth(1) * 4); sheet.SetColumnWidth(1, sheet.GetColumnWidth(2) * 4); sheet.SetColumnWidth(3, sheet.GetColumnWidth(3) * 2); sheet.SetColumnWidth(5, sheet.GetColumnWidth(5) * 4); sheet.SetColumnWidth(9, sheet.GetColumnWidth(9) * 2); sheet.SetColumnWidth(10, sheet.GetColumnWidth(10) * 6); sheet.SetColumnWidth(11, sheet.GetColumnWidth(11) * 4); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); var dataRowCount = row; for (int i = 1; i < 7; i++) { sheet.AddMergedRegion(new CellRangeAddress(dataRowCount + i, dataRowCount + i, 1, 11)); } dataStyle = book.CreateCellStyle(); dataStyle.GetFont(book).Boldweight = (short)FontBoldWeight.None; sheet.CreateRow(row++); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightOrange.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Если у поставщика менее 30% клиентов подключены к базовой ценовой колонке и данной аптеке назначена базовая", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightYellow.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Не подключен ни к одному из прайсов", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightBlue.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют наценку, отличную от Нуля, а для рассматриваемой аптеки наценка 0", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Pink.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют код клиента, а для рассматриваемой аптеки этот код не прописан", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightGreen.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют коды адресов доставки, а для рассматриваемой аптеки этот код не прописан, либо для рассматриваемой аптеки прописаны не все коды адресов доставки", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Lavender.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют код оплаты, а для рассматриваемой аптеки этот код не прописан", dataStyle); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }