Example #1
0
 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));
 }
Example #2
0
        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
            };
        }
Example #5
0
        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());
        }