logo
small logo
  • Producto
  • Comprar
  • Ayuda
  • Blogs
  • Consola de usarios Ayuda
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Página principal
  • /
  • Blogs
  • /
  • Cómo crear un recibo de venta desde una aplicación WPF
  • How to create a sales receipt from a WinForms application

    30 de mayo de 2020

    Most likely every .NET developer started from Windows Forms applications. Countless number of such applications

    read more
  • Los eventos PreviewControl.OnPrint y PreviewControl.OnExport

    1 de octubre de 2020

    En FastReport 2019.4 se agregó la posibilidad de suscribirse a los eventos PreviewControl.OnPrint y PreviewControl.OnExport,

    read more
  • Toilet paper printing

    30 de marzo de 2020

    Gentlemen, jokes aside! Today we are talking about toilet paper. This essential hygiene product was

    read more
  • Formato de MS Word vs. Open Document Text, ¿cuál es mejor?

    19 de octubre de 2020

    Hablando de editores de texto, presentamos inmediatamente corifeo como Microsoft Word, que durante muchos años

    read more
  • ¿Quiere generar tablas para un usuario: Excel u OpenOffice Calc?

    8 de octubre de 2020

    Tablas. Durante siglos, se han utilizado para presentar datos similares para llevar registros, contar cantidades

    read more

Cómo crear un recibo de venta desde una aplicación WPF

17 de agosto de 2020


Supongo que a todos los desarrolladores de WinForms se les ocurrió la idea de que los elementos de control de formulario estándar parecen demasiado unitarios y que sería bueno aportar un diseño más interesante a la aplicación. Entonces, especialmente para los casos en los que necesitamos un diseño especial, Microsoft creó una biblioteca especial: WPF (Windows Presentation Foundation).

Si está creando un software de contabilidad de ventas, debe de generar documentos contables primarios, como facturas y recibos. Estos documentos deben reflejar los datos de la base de datos. La mejor solución sería utilizar un generador de informes para crear una plantilla de documento y completarla con datos. Puede utilizar las bibliotecas del generador de informes para integrar informes en una aplicación WPF. Así, para cualquier evento, puede generar y visualizar un informe, así como exportarlo y enviarlo a imprimir.

Tiene que crear una plantilla en el diseñador de informes antes de generar el informe. En este artículo usaremos el generador de informes FastReport .NET.

En el recibo de venta se mostrará información sobre el vendedor, el comprador y los bienes vendidos. Algunos países normalmente indican por separado la tasa impositiva y calculan el impuesto adeudado, así como el monto final después de impuestos.

Por lo tanto, en nuestro ejemplo, consideraremos este tipo de recibo de venta.

Dado que los datos se tomarán de la base de datos, primero debemos crear una conexión con la fuente de datos. En este ejemplo, usaremos la base de datos demo nwind.xml de la distribución FastReport .NET. Necesitaremos estas tablas: Orders, Order Details, Customer, Employee. Nuestra tarea es crear la siguiente plantilla:

Sales receipt report template

Para mostrar datos de cada tabla para un pedido específico, todas deben estar conectados. Para hacerlo, FastReport .NET proporciona un mecanismo para vincular tablas por clave. La tabla Orders está vinculada a las tablas Customers y Employees, la tabla Order Details está vinculada a las de Orders y Products.

Esto significa que para un registro de pedido específico, los datos correspondientes se seleccionarán de estas tablas por indentificador. Por lo tanto, podemos obtener el nombre del comprador de la tabla Customers para un registro de pedidos específico:

 Data sources for sales receipt

La banda de datos tiene una banda detallada con sus bandas de cabeza y pie de página. Para la banda de datos detallada, se especifica la fuente Order Details. Esta tabla también tiene enlaces:

 Order Details data source

Como probablemente esperaba, está vinculado a la tabla Pedidos, así como a la tabla Producto, de la que puede obtener los nombres de los productos.

Ahora, cuando está claro que la información principal se toma de la tabla Orders y la información detallada del producto proviene de la tabla Order Details, podemos considerar los totales.

El primero es Line Total (multiplicación de la cantidad de mercancías por el precio) se calcula simplemente multiplicando los campos: [[Order Details.UnitPrice] * [Order Details.Quantity]]. Este total se calcula para cada artículo.

A continuación, debe resumir todos los totales en esta columna y mostrarlos en el campo Sub Еotal. Para hacer esto, cree un nuevo total en la ventana Datos:

 Create new report Total

Démosle el nombre SubTotal y establezcamos las propiedades en la ventana que aparece:

 Sales Receipt SubTotal settings

Como puede ver, usamos la función Sum para totalizar. Para la expresión de datos usamos una combinación de multiplicar los mismos campos que en Line Total. Así obtenemos la suma de todos los totales de todos los productos.

El campo Tax Rate indica el porcentaje de la base imponible que debe pagarse en impuestos. En nuestro caso, esta cifra es del 5 %.

Para el campo Tax Due, debe calcular el monto adeudado por impuestos. La fórmula es simple: total*tasa de interés:

[[SubTotal] * 0.05]

Y, finalmente, Total Due. Consiste en la suma de Sub Total e impuesto:

[[SubTotal] + [SubTotal] * 0.05]

Esto completa la creación del recibo de venta. Necesita guardar la plantilla de informe en su aplicación. Por ejemplo, cree la carpeta App_Data y guarde la plantilla de informe y la base de datos nwind.xml en ella.

Ahora pasemos a la aplicación.

En la aplicacion

Para mostrar el informe en la aplicación, debemos agregar el componente ScrollViewer al formulario para poder desplazar el informe. Agregue otro componente, ListBox, dentro. Se utilizará para mostrar el informe en formato XML. Agregue tres botones al formulario de solicitud: mostrar informe, exportar informe a PDF, imprimir informe.

Agregue un evento de clic para cada uno de los botones. Entonces, el informe muestra:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void Button_Click(object sender, RoutedEventArgs e)
 {
 var report = new Report();
 report.Load("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/invoice.frx");
 var data = new DataSet();
 data.ReadXml("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/nwind.xml");
 
 report.RegisterData(data);
 report.Prepare();
 var export = new XAMLExport();
 export.HasMultipleFiles = true;
 
 using (var ms = new MemoryStream())
 {
 export.Export(report, ms);
 lb.Items.Add(new Frame()
 {
 Content = XamlReader.Load(ms)
 });
 }
 }

Aquí creamos un objeto de informe, cargamos la plantilla de informe que creamos anteriormente en él. A continuación, cree una fuente de datos y regístrela en el informe. Los formularios de las aplicaciones WPF se crean utilizando el lenguaje XMAL. Por lo tanto, el informe debe mostrarse en este formato. Para ello, realizamos la exportación a XMAL.

El código del botón para exportar el informe a PDF:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void PDFExport_Click(object sender, RoutedEventArgs e)
 {
 var report = new Report();
 report.Load("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/invoice.frx");
 var data = new DataSet();
 data.ReadXml("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/nwind.xml");
 
 report.RegisterData(data);
 report.Prepare();
 var export = new PDFExport();
 export.HasMultipleFiles = true;
 using (var fs = new FileStream("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/report.pdf", FileMode.Create))
 {
 export.Export(report, fs);
 }
 }

La idea aquí es la misma que con la visualización del informe, pero guardamos el resultado obtenido de la exportación en una carpeta y no lo agregamos al formulario.

El código del botón para imprimir el informe:

1
2
3
4
5
6
7
8
 private void Print_Click(object sender, RoutedEventArgs e)
 {
 PrintDialog printDialog = new PrintDialog();
 if (printDialog.ShowDialog() == true)
 {
 printDialog.PrintVisual(lb, "Print the report");
 }
 }

Antes de imprimir el informe, primero debe mostrarlo con el botón. Al hacer clic en él, llamará al cuadro de diálogo de impresión e imprimirá el contenido del componente ListBox.

Ahora ejecute la aplicación y haga clic en el botón Show:

Sales receipt in the WPF application


¡Ahora no solo puede ver el recibo creado, sino también guardarlo en formato PDF e imprimirlo! Puede exportarlo a otros formatos de archivo disponibles en FastReport: HTML, BMP, PNG, JPEG, GIF, TIFF, EMF, PDF, XLSX, DOCX, PPTX, ODS, ODT, RTF, Text, XPS, XML, XAML, PS, PPML, LaTeX, Json, Dbf, Csv, XLS (Biff8), SVG, ZPL.

 

about product descargar comprar
avatar
Dmitriy Fedyashov
Technical Writer
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport WPF Sales receipt

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Comprar
  • Descargar
  • Documentación
  • Opiniones de usuarios
  • Cómo desinstalar nuestros productos
  • Enviar mensaje
  • FAQ
  • Toturial en vídeo
  • Foro
  • Documentación técnica
  • Nuestras noticias
  • Quiénes somos
  • Socios
  • Extended licensing
  • Contactos

© 1998-2022 by Fast Reports Inc.

  • Privacidad