Как из приложения ASP .NET Core сформировать счет

31.08.2020

Мало кто верил в успех нового фреймворка с открытым исходным кодом ASP.Net Core от компании Microsoft. Всему виной слабая популярность предыдущей платформы ASP.Net. Однако, очень быстро все оценили преимущества нового кроссплатформенного фреймворка. Сейчас ASP.Net Core занимает высокие позиции в рейтинге лучших фреймворков для веб разработки . С его помощью создают различные веб приложения, сайты и интернет-магазины. Интернет магазины, осуществляя продажу товара, должны предоставлять клиенту некоторую документацию. Например, счет на оплату.

Один из часто требуемых документов при безналичном расчете – счет на оплату. Поэтому, если вы реализовываете интернет-магазин или другую систему продаж, вам придется предоставлять клиентам счета.

Для отображения счета, нам предварительно нужно разработать дизайн документа, наполнить его данными и затем отправить на печать. Самым правильным решением будет использовать генератор отчетов для создания шаблона документа и наполнения его данными. Задача же пользовательского приложения сводится к отображению нужного отчета.

Нет четкого требования к оформлению счетов, есть лишь рекомендации, которые помогут избежать недопонимания клиента. Забегая вперед мы рассмотрим счет, который создадим в этой статье, для того, чтобы у вас было понимание об оформлении счета. Конечно, мы не утверждаем, что этот шаблон самый правильный.

 Invoice requirements

На этом рисунке отмечены важные области документа. Поясним, в чем суть каждой из них:

  1. Информация о продавце. Любой официальный документ должен содержать информацию о продавце: название, адрес, телефон, электронная почта, возможно что-то еще;
  2. Информация о контактном лице покупателя – необходимо указать реально ответственное за оплату лицо;
  3. Идентификаторы заказа и счета, дата формирования счета и срок оплаты. Эти идентификаторы помогут отыскать счет или заказ в базе данных, в случае возникновения вопросов у клиента;
  4. Информация о составе заказа. Клиент должен понимать за что платит. Нужно указывать наименование и количество товара, а также его стоимость за единицу;
  5. Итоговая сумма. Итоговые суммы необходимы не только для произведения оплаты, но и для понимания расчета;
  6. Реквизиты для платежа. Так как это счет на оплату, конечно тут должны быть реквизиты получателя платежа;
  7. Реквизиты для оплаты из-за рубежа. Даже если, в данном случае покупать не из-за границы, можно оставить эти данные для единообразного бланка;
  8. Разъяснительная информация. Важно указать контактные данные, в случае вопросов. А также нужно сразу предупредить о последствиях несвоевременной оплаты. Это будет мотивировать клиента не затягивать.

Итак, генератор отчетов FastReport.Net поставляется как набор библиотек. В этой статье мы рассматриваем возможность вывода счета в ASP.Net Core приложении. Поэтому будут использоваться библиотеки FastReport.Core. Вообще-то для формирования счета нам совсем не нужно приложение. Нужен лишь генератор отчетов и данные. Но возможность создать документ сам по себе мало кому интересна. Важно уметь встраивать отчетные системы в пользовательские программы, чтобы отчетность была частью единой системы обработки данных. Поэтому, сначала мы создадим шаблон отчета, а затем будем использовать его для вывода данных в веб приложении.

Создаем отчет в дизайнере. Вы наверняка много раз видели счета на оплату. В шаблоне такого отчета нет ничего сложного. Взгляните:

Invoice report template

В данном случае данные берутся из четырех таблиц: Orders, Order Details, Customers, Products.

Основной бэнд «Данные» подключен к таблице Orders. Это значит, что для каждой записи таблицы будет формироваться новый экземпляр этого бэнда. Помимо информации о самом заказе справа, мы отображаем информацию о клиенте слева. Таблица с клиентами имеет связь с заказом по идентификатору.

 Orders data source with relations

И, чтобы данные по клиенту соответствовали текущему заказу их нужно брать из связи. Такие же связи имеет таблица Order Details с таблицами Orders и Products.

Данные о товарах в заказе отображаются в детальном бэнде Данные. Он соединен с таблицей Order Details. В одной строке тут выводится: количество, наименование товара, цена за единицу, цена за указанное количество, процент налога, сумма налога. Детальный бэнд данные имеет заголовочный бэнд и подвальный. В заголовочном выводится шапка таблицы, а в подвальном – итоги, реквизиты оплаты и разъяснительная информация.

Промежуточные итоги, которые рассчитываются в рамках одной записи таблицы создаются путем перемножения или сложения полей таблицы в текстовом поле:

[[SubTotal]  * 5 / 100]

Либо, с помощью переменных отчета:

 SubTotal creation

Итоги, которые рассчитываются по колонке таблицы с помощью специального выражения – Итоги:

 Totals for the footer

Каждый итог имеет настройки – тип операции, поле таблицы или выражение, бэнд, где будет отображаться итог и др.

 Total settings

Если данные подразумевают вывод сразу нескольких счетов, то нужно организовать вывод каждого счета на отдельной странице. Для этого, в свойства DataBand нужно включить свойство StartNewPage = True:

 DataBand StartNewPage property specified

На этом самая сложная часть – создание отчета – закончена.

Теперь перейдем к ASP .Net Core приложению. Вам необходимо подключить библиотеки FastReport с помощью NuGet:

NuGet FastReport packages to install

В 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.

Теперь, запустив приложение, мы увидим отчет в браузере:

Invoce created by FastReport is displayed

Таким образом вы можете быстро создать счет на оплату из своего веб приложения. Обратите
внимание на верхнюю панель инструментов. Элементы управления на ней позволяют не только
просматривать страницы отчета, но и отправлять на печать или экспортировать в один их
популярных форматов документов: PDF, DOCX, XML, XPS, ODT, ODS, TXT, CSV, RTF.
Из меню веб отчета вы можете распечатать его, или экспортировать в желаемый формат данных.

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
9 ноября 2023

Как сделать отчет из C# проекта в МоиОтчеты Облако

В этой статье разберем пример, как с помощью SDK FastReport создавать отчеты и экспортировать их в любой удобный для вас формат.
4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.