299 lines
11 KiB
VB.net
299 lines
11 KiB
VB.net
Imports System.Drawing.Printing
|
|
Imports Microsoft.Win32
|
|
|
|
Public Class POS
|
|
|
|
Public Sub New(ByVal _rptKundenBeleg, betrag)
|
|
rptKundenBeleg = _rptKundenBeleg
|
|
betrag = CInt(betrag)
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
' Erstellt durch Jan Groetzner, Groetzner Unternehmensberatung, Seevetal
|
|
' Version: 02.03.2020
|
|
' Kontakt: easyzvt@groetzner.de
|
|
|
|
' Dieser Quellcode dient als Beispielimplementierung zur Einbindung von EasyZVT in die eigene Kassenanwendung.
|
|
' Der Code und auch Teile davon dürfen frei kopiert und in der Kassenanwendung verwendet werden
|
|
|
|
Private EasyZVT_Worker As System.ComponentModel.BackgroundWorker = New System.ComponentModel.BackgroundWorker()
|
|
Private Funktion As Integer
|
|
Private rptKundenBeleg As rptKundenBeleg
|
|
Private Betrag As Integer
|
|
|
|
Private WithEvents PDoc As Printing.PrintDocument
|
|
|
|
Private Sub POS_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
|
' Anwendungsstart
|
|
' Worker-Thread wird initialisiert
|
|
' Vorherige Werte werden aus der Registry gelesen und in die Oberfläche eingetragen
|
|
' Die Werte in der Oberfläche sollten in der echten Anwendung in der Stammdatentabelle der Kasse gespeichert werden und nicht in der Registry. Geht aber natürlich auch hier.
|
|
|
|
Try
|
|
AddHandler EasyZVT_Worker.DoWork, New System.ComponentModel.DoWorkEventHandler(AddressOf EasyZVT_Async)
|
|
AddHandler EasyZVT_Worker.RunWorkerCompleted, New System.ComponentModel.RunWorkerCompletedEventHandler(AddressOf EasyZVT_OnCompleted)
|
|
|
|
Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True)
|
|
TextBox_KasseNr.Text = ZVTKey.GetValue("KasseNr", "1")
|
|
ComboBox_COM.Text = ZVTKey.GetValue("COM", "LAN")
|
|
TextBox_IP.Text = ZVTKey.GetValue("IP", "192.168.86.122")
|
|
TextBox_Port.Text = ZVTKey.GetValue("Port", "20007")
|
|
ComboBox_ComSpeed.Text = ZVTKey.GetValue("ComSpeed", "9600")
|
|
ComboBox_ComStop.Text = ZVTKey.GetValue("ComStop", "1")
|
|
TextBox_Lizenz.Text = ZVTKey.GetValue("Lizenz", "")
|
|
If ZVTKey.GetValue("Kassedruck", 0) = 1 Then
|
|
CheckBox_Kassedruck.Checked = True
|
|
Else
|
|
CheckBox_Kassedruck.Checked = False
|
|
End If
|
|
ComboBox_Typ.SelectedIndex = ComboBox_Typ.FindString(ZVTKey.GetValue("Typ", 0).ToString)
|
|
PopulateInstalledPrintersCombo()
|
|
comboInstalledPrinters.SelectedIndex = comboInstalledPrinters.FindString(ZVTKey.GetValue("DemoDruckername", ""))
|
|
If ZVTKey.GetValue("DemoAutodruck", 0) = 0 Then
|
|
CheckBoxAutodruck.Checked = False
|
|
Else
|
|
CheckBoxAutodruck.Checked = True
|
|
End If
|
|
If ZVTKey.GetValue("DemoDummydruck", 1) = 0 Then
|
|
CheckBoxDummy.Checked = False
|
|
Else
|
|
CheckBoxDummy.Checked = True
|
|
End If
|
|
ZVTKey.Close()
|
|
|
|
Catch ex As Exception
|
|
MessageBox.Show("Fehler beim Einlesen der Standardwerte: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub SetRegistryParameter()
|
|
'Funktion holt Werte direkt aus der Oberfläche (TextBox_...) und schreibt diese in die Registry als Eingabeparameter für EasyZVT.
|
|
'Im wahren Leben stehen diese Werte in Datenbankeinträgen der Stammdatenverwaltung in der Hauptanwendung
|
|
|
|
Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True)
|
|
Dim TypSelected As String
|
|
Dim Typ As Long
|
|
|
|
Try
|
|
ZVTKey.SetValue("Funktion", Funktion, RegistryValueKind.DWord)
|
|
TypSelected = Strings.Left(ComboBox_Typ.Text, 2).Replace(":", "")
|
|
Typ = TypSelected
|
|
ZVTKey.SetValue("Typ", Typ, RegistryValueKind.DWord)
|
|
ZVTKey.SetValue("KasseNr", TextBox_KasseNr.Text, RegistryValueKind.String)
|
|
ZVTKey.SetValue("COM", ComboBox_COM.Text, RegistryValueKind.String)
|
|
ZVTKey.SetValue("IP", TextBox_IP.Text, RegistryValueKind.String)
|
|
ZVTKey.SetValue("Port", CInt(TextBox_Port.Text), RegistryValueKind.DWord)
|
|
ZVTKey.SetValue("ComSpeed", CInt(ComboBox_ComSpeed.Text), RegistryValueKind.DWord)
|
|
ZVTKey.SetValue("ComStop", CInt(ComboBox_ComStop.Text), RegistryValueKind.DWord)
|
|
ZVTKey.SetValue("Lizenz", TextBox_Lizenz.Text, RegistryValueKind.String)
|
|
If Funktion = 0 Or Funktion = 4 Then
|
|
Betrag = CInt("0" & TextBox_Betrag.Text)
|
|
ZVTKey.SetValue("Betrag", Betrag, RegistryValueKind.DWord)
|
|
End If
|
|
If Funktion = 3 Then
|
|
ZVTKey.SetValue("StornoBetrag", CInt("0" & TextBox_Betrag.Text), RegistryValueKind.DWord)
|
|
ZVTKey.SetValue("StornoBelegNr", CInt("0" & StornoBelegNr.Text), RegistryValueKind.DWord)
|
|
End If
|
|
If CheckBox_Kassedruck.Checked Then
|
|
ZVTKey.SetValue("Kassedruck", 1, RegistryValueKind.DWord)
|
|
Else
|
|
ZVTKey.SetValue("Kassedruck", 0, RegistryValueKind.DWord)
|
|
End If
|
|
ZVTKey.SetValue("Ergebnis", 1000, RegistryValueKind.DWord) ' Zur Sicherheit, falls EasyZVT gar nicht installiert ist oder nicht gestartet werden kann
|
|
ZVTKey.SetValue("ErgebnisText", "EasyZVT konnte nicht gestartet werden", RegistryValueKind.String)
|
|
ZVTKey.SetValue("DemoDruckername", comboInstalledPrinters.Text, RegistryValueKind.String)
|
|
If CheckBoxAutodruck.Checked Then
|
|
ZVTKey.SetValue("DemoAutodruck", 1, RegistryValueKind.DWord)
|
|
Else
|
|
ZVTKey.SetValue("DemoAutodruck", 0, RegistryValueKind.DWord)
|
|
End If
|
|
If CheckBoxDummy.Checked Then
|
|
ZVTKey.SetValue("DemoDummydruck", 1, RegistryValueKind.DWord)
|
|
Else
|
|
ZVTKey.SetValue("DemoDummydruck", 0, RegistryValueKind.DWord)
|
|
End If
|
|
Button_Autorisierung.Enabled = False
|
|
Button_Diagnose.Enabled = False
|
|
Button_Tagesabschluss.Enabled = False
|
|
Button_Storno.Enabled = False
|
|
Button_Gutschrift.Enabled = False
|
|
Button_Exit.Enabled = False
|
|
|
|
TextBox_ErgebnisText.Text = "EasyZVT-Zahlung aktiv"
|
|
TextBox_Aktiv.Text = "warte auf Aktiv=0"
|
|
|
|
|
|
Catch ex As Exception
|
|
MessageBox.Show("Das Schreiben der Parameter ist fehlgeschlagen: " & ex.Message)
|
|
Exit Sub
|
|
End Try
|
|
ZVTKey.Close()
|
|
|
|
End Sub
|
|
Private Sub Autorisierung()
|
|
|
|
Funktion = 0
|
|
SetRegistryParameter()
|
|
EasyZVT_Worker.RunWorkerAsync()
|
|
|
|
End Sub
|
|
Private Sub Button_Autorisierung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Autorisierung.Click
|
|
'Zahlung per Klick auslösen
|
|
Autorisierung()
|
|
End Sub
|
|
Private Sub TextBox_Betrag_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox_Betrag.KeyPress
|
|
|
|
End Sub
|
|
|
|
Private Sub EasyZVT_Async(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
|
' Programmstart von ZVTStart.exe und warten auf Programmende
|
|
|
|
Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True)
|
|
Try
|
|
Dim ZVTStart As String = ZVTKey.GetValue("Start")
|
|
Dim Proc As System.Diagnostics.Process
|
|
|
|
If (Len(ZVTStart) > 1) Then
|
|
ZVTKey.SetValue("Ergebnis", 1000, RegistryValueKind.DWord) ' Wenn das Ergebnis 1000 bleibt konnte EasyZVT nicht gestartet werden
|
|
Proc = System.Diagnostics.Process.Start(ZVTStart)
|
|
System.Threading.Thread.Sleep(3000) ' Warte drei Sekunden bis Prozess ZVTStart geladen ist, dann erst anfangen Flag Aktiv abzufragen
|
|
While ZVTKey.GetValue("Aktiv") = 1
|
|
System.Threading.Thread.Sleep(500) ' Warten...
|
|
If TextBox_Aktiv.BackColor = Color.Gray Then ' kleine Spielerei :-)
|
|
TextBox_Aktiv.BackColor = Color.Red
|
|
Else
|
|
TextBox_Aktiv.BackColor = Color.Gray
|
|
End If
|
|
End While
|
|
TextBox_Aktiv.BackColor = Color.Gray
|
|
Else
|
|
MsgBox("EasyZVT ist nicht installiert. Bitte im Internet Explorer über www.easyzvt.de/publish installieren")
|
|
End If
|
|
Catch ex As Exception
|
|
MessageBox.Show("Der Programmstart ist fehlgeschlagen: " & ex.Message)
|
|
Exit Sub
|
|
End Try
|
|
ZVTKey.Close()
|
|
End Sub
|
|
Private Sub EasyZVT_OnCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
|
|
' Diese Funktion wird automatisch aufgerufen wenn der Worker-Thread seine Arbeit beendet
|
|
' und EasyZVT seine Ausgabewerte in die Registry zurückgeschrieben hat
|
|
|
|
|
|
Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True)
|
|
TextBox_Aktiv.Text = ""
|
|
TextBox_Ergebnis.Text = ZVTKey.GetValue("Ergebnis")
|
|
TextBox_ErgebnisText.Text = ZVTKey.GetValue("ErgebnisText")
|
|
TextBox_Drucktext.Text = Replace(ZVTKey.GetValue("Drucktext"), vbLf, vbCrLf)
|
|
TextBox_Drucktext2.Text = Replace(ZVTKey.GetValue("Drucktext2"), vbLf, vbCrLf)
|
|
|
|
TextBox_BelegNr.Text = ZVTKey.GetValue("BelegNr").ToString
|
|
TextBox_Betrag.Text = ""
|
|
|
|
If CheckBoxAutodruck.Checked Then
|
|
If Len(TextBox_Drucktext.Text) > 1 Then
|
|
Button_Kundenbeleg_drucken.PerformClick()
|
|
End If
|
|
If Len(TextBox_Drucktext2.Text) > 1 Then
|
|
Button_Haendlerbeleg_drucken.PerformClick()
|
|
End If
|
|
|
|
End If
|
|
|
|
TextBox_Betrag.Focus()
|
|
Button_Autorisierung.Enabled = True
|
|
Button_Diagnose.Enabled = True
|
|
Button_Tagesabschluss.Enabled = True
|
|
Button_Storno.Enabled = True
|
|
Button_Gutschrift.Enabled = True
|
|
Button_Exit.Enabled = True
|
|
ZVTKey.Close()
|
|
End Sub
|
|
|
|
|
|
Private Sub Button_Diagnose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Diagnose.Click
|
|
Funktion = 1
|
|
SetRegistryParameter()
|
|
EasyZVT_Worker.RunWorkerAsync()
|
|
|
|
End Sub
|
|
|
|
Private Sub Button_Exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Exit.Click
|
|
Application.Exit()
|
|
End Sub
|
|
|
|
Private Sub Button_Tagesabschluss_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Tagesabschluss.Click
|
|
Funktion = 2
|
|
SetRegistryParameter()
|
|
EasyZVT_Worker.RunWorkerAsync()
|
|
|
|
End Sub
|
|
|
|
Private Sub Button_Storno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Storno.Click
|
|
Funktion = 3
|
|
SetRegistryParameter()
|
|
EasyZVT_Worker.RunWorkerAsync()
|
|
|
|
End Sub
|
|
|
|
Private Sub Button_Gutschrift_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Gutschrift.Click
|
|
Funktion = 4
|
|
SetRegistryParameter()
|
|
EasyZVT_Worker.RunWorkerAsync()
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub PDoc_SeiteDrucken(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PDoc.PrintPage
|
|
|
|
Dim Textfont As Font = TextBox_Kassenbon.Font
|
|
Dim Hoehe, Breite As Integer
|
|
Dim Links, Oben As Integer
|
|
With PDoc.DefaultPageSettings
|
|
'Hoehe = .PaperSize.Height - .Margins.Top - .Margins.Bottom
|
|
'Breite = .PaperSize.Width - .Margins.Left - .Margins.Right
|
|
Hoehe = 500 ' 5,00 Zoll
|
|
Breite = 270 ' = 2,70 zoll
|
|
'Links = PDoc.DefaultPageSettings.Margins.Left
|
|
'Oben = PDoc.DefaultPageSettings.Margins.Top
|
|
Links = 10
|
|
Oben = 10
|
|
End With
|
|
' Einen Rahmen zeichnen
|
|
Dim Rahmen As New Rectangle(Links, Oben, Breite, Hoehe)
|
|
e.Graphics.DrawRectangle(Pens.Blue, Rahmen)
|
|
' In den Rahmen den Kassenbontext zeichnen
|
|
Dim StrFormat As StringFormat
|
|
StrFormat = New StringFormat(StringFormatFlags.LineLimit)
|
|
e.Graphics.DrawString(TextBox_Kassenbon.Text, Textfont, Brushes.Black, Rahmen, StrFormat)
|
|
e.HasMorePages = False
|
|
|
|
End Sub
|
|
Private Sub Button_Kundenbeleg_drucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Kundenbeleg_drucken.Click
|
|
|
|
End Sub
|
|
|
|
Private Sub Button_Haendlerbeleg_drucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Haendlerbeleg_drucken.Click
|
|
|
|
End Sub
|
|
Private Sub PopulateInstalledPrintersCombo()
|
|
' Add list of installed printers found to the combo box.
|
|
' The pkInstalledPrinters string will be used to provide the display string.
|
|
Dim i As Integer
|
|
Dim pkInstalledPrinters As String
|
|
|
|
For i = 0 To PrinterSettings.InstalledPrinters.Count - 1
|
|
pkInstalledPrinters = PrinterSettings.InstalledPrinters.Item(i)
|
|
comboInstalledPrinters.Items.Add(pkInstalledPrinters)
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub comboInstalledPrinters_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboInstalledPrinters.SelectedIndexChanged
|
|
|
|
End Sub
|
|
|
|
|
|
End Class |