Мало кто верил в успех нового фреймворка с открытым исходным кодом ASP.Net Core от компании Microsoft. Всему виной слабая популярность предыдущей платформы ASP.Net. Однако, очень быстро все оценили преимущества нового кроссплатформенного фреймворка. Сейчас ASP.Net Core занимает высокие позиции в рейтинге лучших фреймворков для веб разработки . С его помощью создают различные веб приложения, сайты и интернет-магазины. Интернет магазины, осуществляя продажу товара, должны предоставлять клиенту некоторую документацию. Например, счет на оплату.
Один из часто требуемых документов при безналичном расчете – счет на оплату. Поэтому, если вы реализовываете интернет-магазин или другую систему продаж, вам придется предоставлять клиентам счета.
Для отображения счета, нам предварительно нужно разработать дизайн документа, наполнить его данными и затем отправить на печать. Самым правильным решением будет использовать генератор отчетов для создания шаблона документа и наполнения его данными. Задача же пользовательского приложения сводится к отображению нужного отчета.
Нет четкого требования к оформлению счетов, есть лишь рекомендации, которые помогут избежать недопонимания клиента. Забегая вперед мы рассмотрим счет, который создадим в этой статье, для того, чтобы у вас было понимание об оформлении счета. Конечно, мы не утверждаем, что этот шаблон самый правильный.
На этом рисунке отмечены важные области документа. Поясним, в чем суть каждой из них:
Итак, генератор отчетов FastReport.Net поставляется как набор библиотек. В этой статье мы рассматриваем возможность вывода счета в ASP.Net Core приложении. Поэтому будут использоваться библиотеки FastReport.Core. Вообще-то для формирования счета нам совсем не нужно приложение. Нужен лишь генератор отчетов и данные. Но возможность создать документ сам по себе мало кому интересна. Важно уметь встраивать отчетные системы в пользовательские программы, чтобы отчетность была частью единой системы обработки данных. Поэтому, сначала мы создадим шаблон отчета, а затем будем использовать его для вывода данных в веб приложении.
Создаем отчет в дизайнере. Вы наверняка много раз видели счета на оплату. В шаблоне такого отчета нет ничего сложного. Взгляните:
В данном случае данные берутся из четырех таблиц: Orders, Order Details, Customers, Products.
Основной бэнд «Данные» подключен к таблице Orders. Это значит, что для каждой записи таблицы будет формироваться новый экземпляр этого бэнда. Помимо информации о самом заказе справа, мы отображаем информацию о клиенте слева. Таблица с клиентами имеет связь с заказом по идентификатору.
И, чтобы данные по клиенту соответствовали текущему заказу их нужно брать из связи. Такие же связи имеет таблица Order Details с таблицами Orders и Products.
Данные о товарах в заказе отображаются в детальном бэнде Данные. Он соединен с таблицей Order Details. В одной строке тут выводится: количество, наименование товара, цена за единицу, цена за указанное количество, процент налога, сумма налога. Детальный бэнд данные имеет заголовочный бэнд и подвальный. В заголовочном выводится шапка таблицы, а в подвальном – итоги, реквизиты оплаты и разъяснительная информация.
Промежуточные итоги, которые рассчитываются в рамках одной записи таблицы создаются путем перемножения или сложения полей таблицы в текстовом поле:
[[SubTotal] * 5 / 100]
Либо, с помощью переменных отчета:
Итоги, которые рассчитываются по колонке таблицы с помощью специального выражения – Итоги:
Каждый итог имеет настройки – тип операции, поле таблицы или выражение, бэнд, где будет отображаться итог и др.
Если данные подразумевают вывод сразу нескольких счетов, то нужно организовать вывод каждого счета на отдельной странице. Для этого, в свойства DataBand нужно включить свойство StartNewPage = True:
На этом самая сложная часть – создание отчета – закончена.
Теперь перейдем к ASP .Net Core приложению. Вам необходимо подключить библиотеки FastReport с помощью NuGet:
В Startup.cs подключим Fastreport:
1 2 3 4 5 6 |
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { … app.UseFastReport(); … } |
Теперь можно добавить в контроллер формирование отчета:
1 2 3 4 5 |
private IHostingEnvironment _env; public HomeController(IHostingEnvironment env) { _env = env; } |
Инжектируем в класс интерфейс окружения. В нужном методе создаем объект отчета, загружаем в него данные и шаблон отчета:
1 2 3 4 5 6 7 8 9 10 11 12 |
public IActionResult Index() { var rootpath = _env.WebRootPath; var report = new WebReport(); var data = new DataSet(); data.ReadXml(rootpath + "/App_Data/nwind.xml"); report.Report.Load(rootpath + "/App_Data/Invoice.frx"); report.Report.RegisterData(data); ViewBag.WebReport = report; return View(); } |
А в соответствующее представление добавим вывод отчета:
1 |
@await ViewBag.WebReport.Render()
|
Метод Render() экспортирует отчет в html.
Теперь, запустив приложение, мы увидим отчет в браузере:
Таким образом вы можете быстро создать счет на оплату из своего веб приложения. Обратите
внимание на верхнюю панель инструментов. Элементы управления на ней позволяют не только
просматривать страницы отчета, но и отправлять на печать или экспортировать в один их
популярных форматов документов: PDF, DOCX, XML, XPS, ODT, ODS, TXT, CSV, RTF.
Из меню веб отчета вы можете распечатать его, или экспортировать в желаемый формат данных.