Print receipt from pos printer and add datagrid values c#

  • 341 Views
  • Last Post 22 January 2019
Stylus STYLUS posted this 21 January 2019

Datagrid rows number, name, tax and price.

Need to add values on receipt from datagrid to PrintReceiptPage

Some help?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace POS_TEST
{
    public partial class Form1 : Form
    {
        public static string barKod = "";
        public static string osobaIme = "";
        public static string datumUlaska = "";
        public static string osobaFirma = "";


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            BarCodePrint.PrintReceiptForTransaction(barKod, osobaComboBox.Text, vrijemePrijavePicker.Value.ToString("dd.MM.yyyy. HH:mm:00"), firmaComboBox.Text);

        }


        private static void PrintReceiptPage(object sender, PrintPageEventArgs e)
        {

        }

        class BarCodePrint
        {
            public static string barKod = "";
            public static string osobaIme = "";
            public static string datumUlaska = "";
            public static string osobaFirma = "";
            public static void PrintReceiptForTransaction(string bK, string osoba, string datum, string firma)
            {
                barKod = bK;
                osobaIme = osoba;
                datumUlaska = datum;
                osobaFirma = firma;
                PrintDocument recordDoc = new PrintDocument();

                recordDoc.DocumentName = "BarKod gosta";
                recordDoc.PrintPage += new PrintPageEventHandler(BarCodePrint.PrintReceiptPage); // function below
                recordDoc.PrintController = new StandardPrintController(); // hides status dialog popup
                                                                           // Comment if debugging 
                PrinterSettings ps = new PrinterSettings();
                ps.PrinterName = "POS-58";
                recordDoc.PrinterSettings = ps;
                recordDoc.Print();
                // --------------------------------------
                // Uncomment if debugging - shows dialog instead
                //PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();
                //printPrvDlg.Document = recordDoc;
                //printPrvDlg.Width = 1200;
                //printPrvDlg.Height = 800;
                //printPrvDlg.ShowDialog();
                // --------------------------------------
                recordDoc.Dispose();

            }





            private static void PrintReceiptPage(object sender, PrintPageEventArgs e)
            {
                float x = 10;
                float y = 5;
                float width = 170.0F; // max width I found through trial and error
                float height = 0F;

                Font drawFontArial12Bold = new Font("Arial", 10, FontStyle.Bold);
                Font drawFontArial11Regular = new Font("Arial", 8, FontStyle.Regular);
                Font drawFontArial7Regular = new Font("Arial", 8, FontStyle.Regular);
                Font drawFontArial7Italic = new Font("Arial", 8, FontStyle.Italic);
                SolidBrush drawBrush = new SolidBrush(Color.Black);

                // Set format of string.
                StringFormat drawFormatCenter = new StringFormat();
                drawFormatCenter.Alignment = StringAlignment.Center;
                StringFormat drawFormatLeft = new StringFormat();
                drawFormatLeft.Alignment = StringAlignment.Near;
                StringFormat drawFormatRight = new StringFormat();
                drawFormatRight.Alignment = StringAlignment.Far;

                // Draw string to screen.

                string text = "T.R. LAD S.P.";
                e.Graphics.DrawString(text, drawFontArial12Bold, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial12Bold).Height;

                text = "22. BRIGADE VRS, Kotor Varoš";
                e.Graphics.DrawString(text, drawFontArial7Italic, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial7Italic).Height;

                text = "- MALOPRODAJNI RAČUN -\n";
                e.Graphics.DrawString(text, drawFontArial11Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial11Regular).Height;



                text = " ";
                e.Graphics.DrawString(text, drawFontArial11Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial11Regular).Height;
                text = " ";
                e.Graphics.DrawString(text, drawFontArial11Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial11Regular).Height;


                text = " ";
                e.Graphics.DrawString(text, drawFontArial11Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial11Regular).Height;



                // ... and so on

                //BarcodeDraw bdraw = BarcodeDrawFactory.GetSymbology(BarcodeSymbology.Code128);
                //Image barCodeImeage = bdraw.Draw(barKod, 60);
                //Console.WriteLine(x + " " + y + " " + width + " " + height);
                //e.Graphics.DrawImage(barCodeImeage, new RectangleF(x, y, width, 60));
                //y += 65;
                //Console.WriteLine(barCodeImeage.Size);

                text = osobaIme;
                e.Graphics.DrawString(text, drawFontArial11Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial11Regular).Height;

                //text = osobaFirma;
                //e.Graphics.DrawString(text, drawFontArial7Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                //y += e.Graphics.MeasureString(text, drawFontArial7Regular).Height;


                text = "----------------------------------------";
                e.Graphics.DrawString(text, drawFontArial7Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial7Regular).Height;

                text = "Datum: " + DateTime.Now.ToString();
                e.Graphics.DrawString(text, drawFontArial7Italic, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial7Italic).Height;



                text = "----------------------------------------";
                e.Graphics.DrawString(text, drawFontArial7Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial7Regular).Height;


                text = "HVALA VAM NA POSJETI";
                e.Graphics.DrawString(text, drawFontArial7Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter);
                y += e.Graphics.MeasureString(text, drawFontArial7Regular).Height;
            }
        }

        private void roba_uslugeBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.roba_uslugeBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.lAD_2019DataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'lAD_2019DataSet.roba_usluge' table. You can move, or remove it, as needed.
            this.roba_uslugeTableAdapter.Fill(this.lAD_2019DataSet.roba_usluge);

        }
    }
}
Order By: Standard | Newest | Votes
admin posted this 22 January 2019

I think the best way to print an order using report

You can use local report, crystal report or devexpress report to design and print an invoice

You can see the following video to know how to design and print an order in c# code

Stylus STYLUS posted this 22 January 2019

Regard, this on picture is pos invoice. I need to add on middle invoice value from datagrid.

Datagrid rows are number, name, tax and price

Need to add

private static void PrintReceiptPage(object sender, PrintPageEventArgs e)

 

admin posted this 22 January 2019

You can easily use RDLC report to design a simple invoice as your picture

Print an invoice using GDI not a good solution

Stylus STYLUS posted this 22 January 2019

Ok. Some link?

Stylus STYLUS posted this 22 January 2019

That is ok solution, problem is I not need that. It is a pos solution. Not need to create report for printing. Another solution?

Close