Exemple #1
0
        public static byte[] GetClientAddressesMonitor(ClientAddressFilter filter)
        {
            var book = new HSSFWorkbook();

            var sheet = book.CreateSheet("Клиенты и адреса в регионе, по которым не принимаются накладные");

            var row         = 0;
            var headerStyle = NPOIExcelHelper.GetHeaderStype(book);
            var dataStyle   = NPOIExcelHelper.GetDataStyle(book);
            var sheetRow    = sheet.CreateRow(row++);

            NPOIExcelHelper.FillNewCell(sheetRow, 0, "Клиенты и адреса в регионе, по которым не принимаются накладные", headerStyle);
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Период: с {0} по {1}",
                                                                   filter.Period.Begin.ToString("dd.MM.yyyy"),
                                                                   filter.Period.End.ToString("dd.MM.yyyy")),
                                        book.CreateCellStyle());
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Дата подготовки отчета: {0}", DateTime.Now), book.CreateCellStyle());
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Регион: {0}", filter.Region == null ? "Все" : filter.Region.Name), book.CreateCellStyle());
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Клиент: {0}", filter.ClientText), book.CreateCellStyle());
            sheet.CreateRow(row++);
            var tableHeaderRow = 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);

            var items = filter.Find(true);

            foreach (var item in items)
            {
                sheetRow = sheet.CreateRow(row++);
                NPOIExcelHelper.FillNewCell(sheetRow, 0, item.ClientId.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 1, item.ClientName, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 2, item.RegionName, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 3, item.AddressId.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 4, item.AddressName, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 5, item.SupplierId.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 6, item.SupplierName, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 7, item.Count.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 8, item.RejectReasonName, dataStyle);
            }

            // добавляем автофильтр
            sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, 8));

            sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 8));

            // устанавливаем ширину столбцов
            for (int i = 0; i < 9; i++)
            {
                sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 2);
            }

            sheet.SetColumnWidth(4, sheet.GetColumnWidth(4) * 3);
            sheet.SetColumnWidth(8, sheet.GetColumnWidth(8) * 3);

            var buffer = new MemoryStream();

            book.Write(buffer);
            return(buffer.ToArray());
        }
Exemple #2
0
        public static byte[] GetFormPosition(FormPositionFilter filter)
        {
            var book = new HSSFWorkbook();

            var sheet = book.CreateSheet("Лист1");

            var row = 0;
            var col = 0;
            // выбираем данные
            var report = filter.Find();
            var type   = typeof(FormPositionItem);
            // получаем список всех свойств
            var infos = type.GetProperties();
            // создаем строку
            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.SupplierName));
            // регион работы прайса
            sheetRow = sheet.CreateRow(row++);
            dateCell = sheetRow.CreateCell(0);
            dateCell.SetCellValue(String.Format("Регион работы прайса: {0}", filter.Region != null ? filter.Region.Name : "Все"));
            sheetRow = sheet.CreateRow(row++);
            dateCell = sheetRow.CreateCell(0);
            dateCell.SetCellValue(String.Format("* В отчет не включены прайс-листы с фиксированной шириной колонки"));
            // добавляем пустую строку перед таблицей
            sheet.CreateRow(row++);
            var tableHeaderRow = row;

            sheetRow = sheet.CreateRow(row++);
            // заполняем наименования столбцов таблицы
            foreach (PropertyInfo prop in infos)
            {
                var cell = sheetRow.CreateCell(col++);
                cell.CellStyle = headerStyle;
                var value = ((DisplayAttribute)prop.GetCustomAttributes(typeof(DisplayAttribute), false).First()).Name;
                cell.SetCellValue(value);
            }
            // стиль для ячеек с данными
            var dataStyle = NPOIExcelHelper.GetDataStyle(book);

            // стиль для ячеек с данными, выравненный по центру
            var centerDataStyle = NPOIExcelHelper.GetCenterDataStyle(book);

            dateCell.CellStyle = dataStyle;
            // выводим данные
            foreach (var formPositionItem in report)
            {
                col      = 0;
                sheetRow = sheet.CreateRow(row++);
                foreach (PropertyInfo prop in infos)
                {
                    var value = prop.GetValue(formPositionItem, null);
                    var cell  = sheetRow.CreateCell(col++);
                    if (value != null && value.ToString() == "*")
                    {
                        cell.CellStyle = centerDataStyle;
                    }
                    else
                    {
                        cell.CellStyle = dataStyle;
                    }
                    if (value != null)
                    {
                        cell.SetCellValue(value.ToString());
                    }
                }
            }
            // устанавливаем ширину столбцов
            for (var i = col; i >= 0; i--)
            {
                sheet.SetColumnWidth(i, 2700);
            }
            sheet.SetColumnWidth(1, sheet.GetColumnWidth(1) * 2);
            sheet.SetColumnWidth(2, sheet.GetColumnWidth(2) * 2);
            sheet.SetColumnWidth(4, sheet.GetColumnWidth(4) * 2);

            // добавляем автофильтр
            sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, col - 1));

            sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, col - 1));

            var buffer = new MemoryStream();

            book.Write(buffer);
            return(buffer.ToArray());
        }
Exemple #3
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());
        }
Exemple #4
0
        public static byte[] DocumentsLog(ISession session, DocumentFilter filter)
        {
            var book        = new HSSFWorkbook();
            var sheet       = book.CreateSheet("Неразобранные накладные");
            var row         = 0;
            var headerStyle = NPOIExcelHelper.GetHeaderStype(book);
            var dataStyle   = NPOIExcelHelper.GetDataStyle(book);
            var sheetRow    = sheet.CreateRow(row++);

            NPOIExcelHelper.FillNewCell(sheetRow, 0, "Неразобранные накладные", headerStyle);
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Период: с {0} по {1}",
                                                                   filter.Period.Begin.ToString("dd.MM.yyyy"),
                                                                   filter.Period.End.ToString("dd.MM.yyyy")),
                                        book.CreateCellStyle());
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Дата подготовки отчета: {0}", DateTime.Now), book.CreateCellStyle());
            sheetRow = sheet.CreateRow(row++);
            NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Регион: {0}", filter.Region == null ? "Все" : filter.Region.Name), book.CreateCellStyle());
            sheet.CreateRow(row++);
            var tableHeaderRow = 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);

            var items = filter.Find(session, true);

            foreach (var item in items)
            {
                sheetRow = sheet.CreateRow(row++);
                NPOIExcelHelper.FillNewCell(sheetRow, 0, item.Id.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 1, item.LogTime.ToString(), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 2, BindingHelper.GetDescription(item.DocumentType), dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 3, item.Supplier, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 4, item.Client, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 5, item.Address, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 6, item.FileName, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 7,
                                            item.DocumentSize == null ? ""
                                                : ViewHelper.ConvertToUserFriendlySize(item.DocumentSize.Value),
                                            dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 8, item.Parser, dataStyle);
                NPOIExcelHelper.FillNewCell(sheetRow, 9, item.Addition, dataStyle);
            }

            // добавляем автофильтр
            sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, 9));

            sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 9));

            // устанавливаем ширину столбцов
            for (int i = 0; i < 10; i++)
            {
                sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 2);
            }

            sheet.SetColumnWidth(5, sheet.GetColumnWidth(5) * 2);

            var buffer = new MemoryStream();

            book.Write(buffer);
            return(buffer.ToArray());
        }