Imports System.Drawing.Printing Imports System.Globalization Imports System.Web.UI.WebControls.Expressions Imports com.sun.org.apache.xalan.internal.xsltc.compiler.util Imports Microsoft.Win32 Imports SDL.RKSVServer Public Class frmBelegNeu Implements System.ComponentModel.INotifyPropertyChanged Dim dgvInitWait As Boolean = False ' Private bindingSDL As New BindingSource ' Private dataAdapterLKW As New SqlDataAdapter Dim PROG As New cProgramFunctions Dim kundenSQL As New kundenSQL Dim SQL As New SQL 'Public firma As String = "VERAG" Dim PERSONAL As cPersonal Dim PERSONAL_LG As cPersonal Dim KASSE As New cRKSV_Kasse Dim EA As String = "E" Public BELEG As EABeleg = Nothing ' Dim ART As String = "E" Public AvisoID = Nothing Public SendungID = Nothing ' Private gebucht As Boolean = False Public Event LOADED() Public warnClose As Boolean = True Dim allowPrint = False Public printErfolgreich = False Public defaultPrinter = "" Dim TESTBUCHUNG = True Private EasyZVT_Worker As System.ComponentModel.BackgroundWorker = New System.ComponentModel.BackgroundWorker() Private Funktion As Integer Private Betrag As Double = 0 Private posTerminal As cRKSV_POS Private dt As DataTable Private setBreak As Boolean = True Private Zahlungsmittel As String Private POSFIBU As Integer = -1 Dim sourceCnTxt As Control = Nothing Public aktFiliale As Integer = 0 Public aktAbfertigungsNr As Integer = 0 Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.PERSONAL = PERSONAL Me.PERSONAL_LG = PERSONAL_LG Me.EA = EA ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, Mandant As String, Niederlassung As String, Benutzer As Integer, BelegNr As Integer, BelegDat As Date) InitializeComponent() Me.PERSONAL = PERSONAL Me.PERSONAL_LG = PERSONAL_LG BELEG = New EABeleg("LOAD", Mandant, Niederlassung, Benutzer, BelegNr, BelegDat) End Sub Public Sub AddDusche(print As Boolean) ' Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) Dim p As EABelegPositionen cboSteuerschlüssel.changeItem(2512) p = New EABelegPositionen p.Mandant = PERSONAL.Mandant p.Niederlassung = PERSONAL.Niederlassung p.Benutzer = PERSONAL.ID 'p.Benutzer = BenutzerNr p.BelegDat = Now p.BelegNr = BELEG.BelegNr p.PreislistenNr = 4 p.PreislistenPos = 19 p.LeistungsNr = 800 p.LeistungsBez = "Dusche" p.Leistungsbeschreibung = "Dusche" p.Preis = 1.67 p.Abfertigungsart = 0 p.Anzahl = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) p.Betrag = p.Anzahl * p.Preis BELEG.POS.Add(p) ' cntr.BackColor = Color.Yellow initDGVBelegPos() If print Then allowPrint = True : btnPrint.PerformClick() End Sub Public Sub AddPositions(dgv As DataGridView, print As Boolean) ' Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) Dim p As EABelegPositionen cboSteuerschlüssel.changeItem(2512) For Each r As DataGridViewRow In dgv.Rows If r.Cells("Betrag").Value <> 0 Then p = New EABelegPositionen p.Mandant = PERSONAL.Mandant p.Niederlassung = PERSONAL.Niederlassung p.Benutzer = PERSONAL.ID 'p.Benutzer = BenutzerNr p.BelegDat = Now p.BelegNr = BELEG.BelegNr p.PreislistenNr = 4 p.PreislistenPos = 19 p.LeistungsNr = 800 p.LeistungsBez = "QK-Gebühren " & r.Cells("Art").Value p.Leistungsbeschreibung = "QK-Gebühren " & r.Cells("Art").Value p.Preis = r.Cells("Betrag").Value p.Abfertigungsart = 0 p.Anzahl = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) p.Betrag = p.Anzahl * p.Preis BELEG.POS.Add(p) End If Next initDGVBelegPos() If print Then allowPrint = True : btnPrint.PerformClick() End Sub Public Function AddLeihgeld(print As Boolean, BELEG_TMP As EABeleg, POS_ADD As List(Of EABelegPositionen)) As Boolean BELEG = BELEG_TMP For Each p In POS_ADD BELEG.POS.Add(p) Next BELEG.LKW_Beleg = True cboSteuerschlüssel.changeItem(BELEG.Steuerschlüssel) init() initDGVBelegPos() If print Then allowPrint = True : btnPrint.PerformClick() Return printErfolgreich End Function Public Property Gebucht_prop As Boolean Get Return BELEG.gebucht End Get Set(value As Boolean) BELEG.gebucht = value : RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("Gebucht_prop")) End Set End Property ' Dim BelegNr As Integer = -1 ' = 664 ' Dim Benutzer As Integer = 226 ' Public WithEvents bindingBELEG As New cBinding("FMZOLL") 'fürs Binding Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) _ Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged Private Sub frmBeleg_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing If warnClose Then If Not BELEG.gebucht Then Select Case MsgBox("Beleg noch nicht verbucht! Fenster schließen?", vbYesNoCancel) Case vbYes : e.Cancel = False ' Case vbYes : SQL.doSQL("DELETE FROM [tblEABelegnummer] WHERE BelegNr=" & BELEG.BelegNr & " AND Benutzer='" & BELEG.Benutzer & "'", "FMZOLL") : e.Cancel = False Case vbNo, vbCancel : e.Cancel = True End Select End If End If End Sub Private Sub frmBeleg_Load(sender As Object, e As EventArgs) Handles Me.Load If PERSONAL Is Nothing Then MsgBox("Fehler beim Laden der Personaldaten!") Me.Close() End If kdkunde.initKdBox(Me, lblkundeKdNr) kdFrachtf.initKdBox(Me, lblAtrKdNr) cboSteuerschlüssel.fillWithSQL("SELECT tblSteuersätze.Nr, tblSteuersätze.Beschreibung FROM tblSteuersätze ORDER BY tblSteuersätze.Nr; ", False, "FMZOLL") cboFiliale.fillWithSQL("SELECT Filialen.FilialenNr, Filialen.Grenzstelle FROM Filialen WHERE (((Filialen.FilialenNr)>=4800) AND ((Filialen.Fil_Status)='A')) ORDER BY Filialen.FilialenNr;", True, "FMZOLL") cboSteuerschlüssel.changeItem(3520) cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' OR rksv_id IN('" & PERSONAL.cRKSV_KasseID & "')) ", False, "FMZOLL") If cboKassen.Items.Count > 0 Then cboKassen.SelectedIndex = 0 'default If PERSONAL.cRKSV_KasseID > 0 Then cboKassen.changeItem(CStr(PERSONAL.cRKSV_KasseID)) Else Select Case PERSONAL.Niederlassung Case "SUB" cboKassen.changeItem(1) Case "WAI", "SBG" cboKassen.changeItem(8) Case "NKD" cboKassen.changeItem(4) Case "SUA" cboKassen.changeItem(5) Case Else MsgBox("Fehler: Dem Benutzer ist noch keine RKSV-Kasse bzw. keine Niederlassung zugeordnet!") End Select End If KASSE.LOAD(cboKassen._value) If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> KASSE.rksv_firma Then kdkunde._UseFIRMA = KASSE.rksv_firma End If cboFrachtf_Sgut.Items.Clear() cboFrachtf_Sgut.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("S - Sammelgut", "S")) cboFrachtf_Sgut.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("K - Komplett", "K")) cboFrachtf_Sgut.SelectedIndex = 0 ' Select Case PERSONAL.Niederlassung ' Case "SUB" : cboFiliale.changeItem(4803) ' Case "SBG" : cboFiliale.changeItem(5003) ' Case "SUW" : cboFiliale.changeItem(4801) ' Case "SUA" : cboFiliale.changeItem(4801) ' ' Case "NKD" : cboFiliale.changeItem(000) ' Case "WAI" : cboFiliale.changeItem(5103) ' End Select AddHandler kdkunde.PropertyChanged, Sub() If kdkunde.KdNr > 0 Then lblKunde_Strasse.Text = kdkunde.KdData_ADRESSEN.Straße lblKunde_Land.Text = kdkunde.KdData_ADRESSEN.LandKz lblKunde_Plz.Text = kdkunde.KdData_ADRESSEN.PLZ lblKunde_Ort.Text = kdkunde.KdData_ADRESSEN.Ort lblKunde_UstId_Land.Text = kdkunde.KdData_ADRESSEN.UstIdKz lblKunde_UstId_Nr.Text = kdkunde.KdData_ADRESSEN.UstIdNr btnOfferte.Visible = True Else btnOfferte.Visible = False End If If lblKunde_Strasse.Text.Length > lblKunde_Strasse.MaxLength Then lblKunde_Strasse.Text = lblKunde_Strasse.Text.Substring(0, lblKunde_Strasse.MaxLength) If lblKunde_Land.Text.Length > lblKunde_Land.MaxLength Then lblKunde_Land.Text = lblKunde_Land.Text.Substring(0, lblKunde_Land.MaxLength) If lblKunde_Plz.Text.Length > lblKunde_Plz.MaxLength Then lblKunde_Plz.Text = lblKunde_Plz.Text.Substring(0, lblKunde_Plz.MaxLength) If lblKunde_Ort.Text.Length > lblKunde_Ort.MaxLength Then lblKunde_Ort.Text = lblKunde_Ort.Text.Substring(0, lblKunde_Ort.MaxLength) If lblKunde_UstId_Land.Text.Length > lblKunde_UstId_Land.MaxLength Then lblKunde_UstId_Land.Text = lblKunde_UstId_Land.Text.Substring(0, lblKunde_UstId_Land.MaxLength) If lblKunde_UstId_Nr.Text.Length > lblKunde_UstId_Nr.MaxLength Then lblKunde_UstId_Nr.Text = lblKunde_UstId_Nr.Text.Substring(0, lblKunde_UstId_Nr.MaxLength) End Sub If BELEG Is Nothing Then BELEG = New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID) BELEG.Beleg_TYP = "K" If EA = "E" Then BELEG.Belegart = "1" Label19.Text = "Kunden-Beleg" Label19.ForeColor = Color.FromArgb(0, 54, 128) Else BELEG.Belegart = "2" Label19.Text = "Kunden-Auszahlung" Label19.ForeColor = Color.Red btnPOS.Enabled = False End If Else If BELEG.gebucht Then btnPOS.Enabled = False pnlData.Enabled = False pnlOptionen.Enabled = False FlowLayoutPanel.Enabled = False ' FlowLayoutPanel1.Enabled = False Label17.Visible = True btnPrint.Text = "Beleg Kopie" & vbNewLine & "drucken" End If If BELEG.Belegart = "1" Then EA = "E" Label19.Text = "Kunden-Beleg" Label19.ForeColor = Color.FromArgb(0, 54, 128) Else EA = "A" Label19.Text = "Kunden-Auszahlung" Label19.ForeColor = Color.Red btnPOS.Enabled = False End If If BELEG.gebuchtStorno Then lblStorno.Visible = True btnPOS.Enabled = False End If If AvisoID Is Nothing Then AvisoID = BELEG.LKW_Id init() End If initArt() 'Einnahme/AusgabeBeleg lblMandant_niederlassung.Text = PERSONAL.Niederlassung lblMandant.Text = PERSONAL.Mandant lblSachbearbeiter.Text = PERSONAL.Name lblKassenbuchNr.Text = PERSONAL.KassenbuchNr cboBuchungsoforterzeugen.Checked = PERSONAL.automFIBUBuchung If defaultPrinter <> "" Then cProgramFunctions.initDrucker(cboPrinter, defaultPrinter) Else If EA = "E" Then cProgramFunctions.initBONDrucker(cboPrinter, "EPSON") ' Eingangsbeleg --> BON Else cProgramFunctions.initDrucker(cboPrinter) ' Ausgangsbeleg --> A4 End If End If initTabCntlPreislisten() initDGVBelegPos() txtAnzahl.Text = "1" txtAnzahl.Focus() txtAnzahl.SelectAll() If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then ' btnNeueAbfNr.Visible = True If PERSONAL.isLeihgeldkasse Then cboFiliale.changeItem(4813) Else cboFiliale.changeItem(4801) End If ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then ' btnNeueAbfNr.Visible = True cboFiliale.changeItem(5501) cboFiliale.Enabled = False End If AddHandler EasyZVT_Worker.DoWork, New ComponentModel.DoWorkEventHandler(AddressOf EasyZVT_Async) AddHandler EasyZVT_Worker.RunWorkerCompleted, New System.ComponentModel.RunWorkerCompletedEventHandler(AddressOf EasyZVT_OnCompleted) If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("Kassenbuch_POS_Terminalzahlungen", Me) Then btnPOS.Enabled = False End If End Sub Sub init() 'lblRgNr.Text = "12345 / TR" lblBelegDatum.Text = BELEG.BelegDat.ToShortDateString lblZahlungsmittel.Text = cRKSV.getZahlungsmittel(BELEG, PERSONAL, KASSE.rksv_firma) lblkundeKdNr.Text = IIf(BELEG.KundenNr > 0, BELEG.KundenNr, "") kdkunde.Text = BELEG.Ordnungsbegriff If BELEG.KundenNr > 0 Then kdkunde.KdNr = BELEG.KundenNr lblKunde_Ort.Text = (kdkunde.Text).Trim lblKunde_Strasse.Text = lblKunde_Strasse.Text lblKunde_Land.Text = BELEG.LandKz lblKunde_Ort.Text = BELEG.Ort lblKunde_Plz.Text = BELEG.PLZ lblKunde_UstId_Land.Text = BELEG.UstIdKz lblKunde_UstId_Nr.Text = BELEG.UstIdNr kdFrachtf.Text = BELEG.Frachtführer If BELEG.FrachtführerKundenNr > 0 Then kdFrachtf.KdNr = BELEG.FrachtführerKundenNr lblFrachtf_Fahrer.Text = BELEG.Fahrer lblFrachtf_LKWNr.Text = BELEG.LKW_Kennzeichen Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Case "ATILLA" : cbxSplittung.Checked = True : cbxSplittung.Enabled = True 'false Case Else : cbxSplittung.Checked = Not If(BELEG.LKW_Beleg, True) End Select aktFiliale = BELEG.FilialenNr aktAbfertigungsNr = BELEG.AbfertigungsNr cboSteuerschlüssel._value = BELEG.Steuerschlüssel If BELEG.rksv_BelegId > 0 Then lblBelegNr.Text = BELEG.rksv_BelegId End If cboFiliale.changeItem(BELEG.FilialenNr) txtAbfertigungsNr.Text = IIf(BELEG.AbfertigungsNr <= 0, "", BELEG.AbfertigungsNr) End Sub Sub initTabCntlPreislisten() FlowLayoutPanel1.Controls.Clear() FlowLayoutPanel.Controls.Clear() ' Dim EA = IIf(BELEG.Belegart = "1", "E", "A") Dim where = "1 = 1" If PERSONAL.Niederlassung = "SUB" Then where = "Preislisten_visibleSUB = 1" If PERSONAL.Niederlassung = "SUA" Then where = "Preislisten_visibleATILLA = 1" If PERSONAL.cRKSV_KasseID = 1 Then where = "Preislisten_visibleSUB = 1" 'MDM End If If PERSONAL.Niederlassung = "SBG" Then where = "Preislisten_visibleSBG = 1" If PERSONAL.Niederlassung = "WAI" Then where = "Preislisten_visibleWAI = 1" If PERSONAL.Niederlassung = "NKD" Then where = "Preislisten_visibleNKD = 1" If PERSONAL.Niederlassung = "IME" Then where = "Preislisten_visibleIMEX = 1" ' If PERSONAL.cRKSV_KasseID = 1 Then where = "Preislisten_visibleSUB = 1"'MDM End If If PERSONAL.Mandant = "FO" Then where = "Preislisten_visibleFRONTOFFICE = 1" If PERSONAL.isLeihgeldkasse Then where &= " AND allowLGKasse=1 " End If For Each r As DataRow In kundenSQL.loadDgvBySql("SELECT * FROM [tblPreislisten] WHERE 1=1 AND " & where & " AND Art='" & EA & "' order by PreislistenBez", "FMZOLL").Rows Dim btn As New Button btn.Text = r.Item("PreislistenBez") btn.Tag = r.Item("PreislistenNr") btn.FlatStyle = FlatStyle.Flat btn.FlatAppearance.BorderSize = 1 btn.Left = 0 btn.Width = 100 btn.Height = 50 btn.Margin = New Padding(1, 3, 1, 0) FlowLayoutPanel1.Controls.Add(btn) AddHandler btn.Click, AddressOf changePL 'p.Controls.Add(Flp) Next End Sub Sub changePLToAktPreisliste() End Sub Sub changePL(snd As Object, ev As EventArgs) Dim PreislistenNr = snd.tag If BELEG.POS.Count > 0 Then PreislistenNr = BELEG.POS(0).PreislistenNr If FlowLayoutPanel.Controls.Count > 0 Then If DirectCast(FlowLayoutPanel.Controls(0), usrcntlBelegLeistungEintrag).PreisListenNr = PreislistenNr Then Exit Sub ' Bereits die richtige PreislistenNR End If End If For Each b As Button In FlowLayoutPanel1.Controls If b.Tag = PreislistenNr Then b.BackColor = Color.SteelBlue b.ForeColor = Color.White Else b.BackColor = Color.White b.ForeColor = Color.Black End If Next FlowLayoutPanel.SuspendLayout() FlowLayoutPanel.Controls.Clear() ' For Each r2 As DataRow In kundenSQL.loadDgvBySql("Select * FROM [tblPreislistenpositionen] where PreislistenNr = '" & snd.tag & "' ORDER BY LeistungsBez", "FMZOLL").Rows For Each r2 As DataRow In kundenSQL.loadDgvBySql("Select [LeistungsNr],(SELECT LeistungsBez FROM [Leistungen] WHERE [tblPreislistenpositionen].LeistungsNr=Leistungen.LeistungsNr ) as LeistungsBez FROM [tblPreislistenpositionen] where PreislistenNr='" & PreislistenNr & "' group by LeistungsNr ORDER BY COUNT(*) DESC, LeistungsBez ASC", "FMZOLL").Rows Dim usrCntl As New usrcntlBelegLeistungEintrag usrCntl.lblTitle.Text = IIf(r2.Item("LeistungsBez") Is DBNull.Value, "", r2.Item("LeistungsBez")) usrCntl.PreisListenNr = PreislistenNr ' usrCntl.FlatStyle = FlatStyle.Flat usrCntl.Left = 0 usrCntl.Width = 110 usrCntl.Height = 40 usrCntl.FlowLayoutPanel.Controls.Clear() For Each r As DataRow In kundenSQL.loadDgvBySql("Select * FROM [tblPreislistenpositionen] where PreislistenNr = '" & PreislistenNr & "' AND LeistungsNr='" & r2.Item("LeistungsNr") & "' ORDER BY PreislistenPos ", "FMZOLL").Rows Dim usrCntlpos As New usrcntlBelegLeistungEintragPosition usrCntlpos.PreislistenNr = r.Item("PreislistenNr") usrCntlpos.PreislistenPos = r.Item("PreislistenPos") usrCntlpos.LeistungsNr = r.Item("LeistungsNr") usrCntlpos.Art = r.Item("Art").ToString.Trim ' MsgBox(r.Item("Art") & " _ " & VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) usrCntlpos.Anzahlmultiplikator = r.Item("Anzahlmultiplikator") usrCntlpos.LeistungsBez = IIf(r.Item("LeistungsBez") Is DBNull.Value, "", r.Item("LeistungsBez")) 'Ausnahme Frei-TEXT If (usrCntlpos.PreislistenPos = 15 Or usrCntlpos.PreislistenPos = 21 Or usrCntlpos.PreislistenPos = 24 Or usrCntlpos.PreislistenPos = 40) And usrCntlpos.LeistungsNr = 498 Then usrCntlpos.Leistungsbeschreibung = r.Item("LeistungsBez") Else usrCntlpos.Leistungsbeschreibung = r.Item("Leistungsbeschreibung") End If usrCntlpos.Abfertigungsart = cSqlDb.checkNullInteger(r.Item("Abfertigungsart")) usrCntlpos.txtAnzahl.Text = "0" If r.Item("Preis") IsNot DBNull.Value AndAlso IsNumeric(r.Item("Preis")) Then usrCntlpos.Preis = CDbl(r.Item("Preis")) usrCntlpos.FixPreis = True Else usrCntlpos.Preis = 0 End If 'usrCntlpos() usrCntlpos.MaximumSize = New Size(250, 100) usrCntlpos.AutoSize = True 'usrCntlpos.Preis = IIf(r.Item("Preis") IsNot DBNull.Value AndAlso IsNumeric(r.Item("Preis")), CDbl(r.Item("Preis")), -1) ' If r.Item("Preis") Is DBNull.Value Or r.Item("Preis") Is Nothing Then 'usrCntlpos.txtPreis.Text = "-" ' Else ' usrCntlpos.txtPreis.Text = CDbl(r.Item("Preis")).ToString("F", CultureInfo.InvariantCulture) ' End If usrCntl.FlowLayoutPanel.Controls.Add(usrCntlpos) AddHandler usrCntlpos.INCREASE, Sub(cntr As usrcntlBelegLeistungEintragPosition) Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) Dim p As EABelegPositionen If Not increase(anz, cntr.PreislistenNr, cntr.PreislistenPos, cntr.LeistungsNr, cntr.Anzahlmultiplikator, aktFiliale, aktAbfertigungsNr) Then Dim preis As Double = 0 Dim text As String = "" If cntr.Preis = 0 Then ' frmGrayOut() Dim frmGrayOut = cProgramFunctions.grayoutForm(Me) If ((cntr.PreislistenPos = 15 Or cntr.PreislistenPos = 21 Or cntr.PreislistenPos = 24 Or cntr.PreislistenPos = 40) And (cntr.LeistungsNr = 498 Or cntr.LeistungsNr = 497)) Or (cntr.LeistungsNr = 152 And cntr.PreislistenPos = 2) Then ' (cntr.LeistungsNr = 111 And cntr.PreislistenPos = 1) Or 'Sonstges Freitext Dim l As New frmPreisText(If(cntr.LeistungsNr = 497, cntr.LeistungsBez, "")) l.Location = cntr.loc If l.ShowDialog(frmGrayOut) = DialogResult.OK Then If IsNumeric(l.txt.Text) And l.txtLeistung.Text <> "" Then preis = CDbl(l.txt.Text) If (cntr.LeistungsNr = 152 And cntr.PreislistenPos = 2) Then 'Bei Rechnungsbegelichung --> Referenztext text = cntr.LeistungsBez & ": " & l.txtLeistung.Text Else text = l.txtLeistung.Text End If Else frmGrayOut.Close() : Exit Sub End If Else frmGrayOut.Close() : Exit Sub End If frmGrayOut.Close() Else Dim l As New frmPreis() l.Location = cntr.loc If l.ShowDialog(frmGrayOut) = DialogResult.OK Then If IsNumeric(l.txt.Text) Then preis = CDbl(l.txt.Text) Else frmGrayOut.Close() : Exit Sub End If Else frmGrayOut.Close() : Exit Sub End If frmGrayOut.Close() End If End If p = New EABelegPositionen p.Mandant = PERSONAL.Mandant p.Niederlassung = PERSONAL.Niederlassung p.Benutzer = PERSONAL.ID 'p.Benutzer = BenutzerNr p.BelegDat = Now p.BelegNr = BELEG.BelegNr p.PreislistenNr = cntr.PreislistenNr p.PreislistenPos = cntr.PreislistenPos p.LeistungsNr = cntr.LeistungsNr If cntr.Anzahlmultiplikator = 0 Or cntr.Anzahlmultiplikator = 1 Then p.Anzahlmultiplikator = CInt(cntr.Anzahlmultiplikator) End If p.LeistungsBez = IIf(text <> "", text, cntr.LeistungsBez) ' cntr.LeistungsBez p.Leistungsbeschreibung = IIf(text <> "", text, cntr.Leistungsbeschreibung) 'cntr.Leistungsbeschreibung p.Preis = IIf(cntr.Preis = 0, preis, cntr.Preis) If cntr.Art = "A" And EA = "E" Then If p.Preis > 0 Then p.Preis = p.Preis * -1 End If p.Abfertigungsart = If(cntr.Abfertigungsart > 0, cntr.Abfertigungsart, Nothing) p.Anzahl = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) p.Betrag = p.Anzahl * p.Preis p.FilialenNr = aktFiliale p.AbfertigungsNr = aktAbfertigungsNr If p.LeistungsNr = 111 AndAlso p.LeistungsBez.Contains("Rückzahlung Leihgeld") Then cboBuchungsoforterzeugen.Visible = True End If BELEG.POS.Add(p) ' cntr.BackColor = Color.Yellow initDGVBelegPos() End If End Sub AddHandler usrCntlpos.REDUCE, Sub(cntr As usrcntlBelegLeistungEintragPosition) Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) ' Dim p As EABelegPositionen reduce(anz, cntr.PreislistenNr, cntr.PreislistenPos, cntr.LeistungsNr, aktFiliale, aktAbfertigungsNr) End Sub Next Dim ThreadInitBGPos = New System.Threading.Thread(AddressOf Me.initBGPos) ThreadInitBGPos.IsBackground = True ThreadInitBGPos.Start() FlowLayoutPanel.Controls.Add(usrCntl) Next FlowLayoutPanel.ResumeLayout() End Sub Function increase(anz, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator, tmpFiliale, tmpAbfertigungsNr) As Boolean For Each p In BELEG.POS If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then If cbxSplittung.Checked Then If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then p.Anzahl += anz p.Betrag = p.Anzahl * p.Preis p.Anzahlmultiplikator = CInt(Anzahlmultiplikator) ' cntr.BackColor = Color.Yellow initDGVBelegPos() Return True End If Else p.Anzahl += anz p.Betrag = p.Anzahl * p.Preis p.Anzahlmultiplikator = CInt(Anzahlmultiplikator) ' cntr.BackColor = Color.Yellow initDGVBelegPos() Return True End If End If Next Return False End Function Function setAnz(anz, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator, tmpFiliale, tmpAbfertigungsNr) As Boolean If anz > 0 Then For Each p In BELEG.POS If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then If cbxSplittung.Checked Then If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then p.Anzahl = anz p.Anzahlmultiplikator = Anzahlmultiplikator p.Betrag = p.Anzahl * p.Preis initDGVBelegPos() Return True End If Else p.Anzahl = anz p.Anzahlmultiplikator = Anzahlmultiplikator p.Betrag = p.Anzahl * p.Preis initDGVBelegPos() Return True End If End If Next End If Return False End Function Sub reduce(anz, PreislistenNr, PreislistenPos, LeistungsNr, tmpFiliale, tmpAbfertigungsNr) For Each p In BELEG.POS If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then If cbxSplittung.Checked Then If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then If p.Anzahl > anz Then p.Anzahl -= anz p.Betrag = p.Anzahl * p.Preis Else BELEG.POS.Remove(p) End If initDGVBelegPos() Exit Sub 'gefunden! End If Else If p.Anzahl > anz Then p.Anzahl -= anz p.Betrag = p.Anzahl * p.Preis Else BELEG.POS.Remove(p) End If initDGVBelegPos() Exit Sub 'gefunden! End If End If Next End Sub Sub delete(PreislistenNr, PreislistenPos, LeistungsNr, tmpFiliale, tmpAbfertigungsNr) For Each p In BELEG.POS If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then If cbxSplittung.Checked Then If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then BELEG.POS.Remove(p) initDGVBelegPos() Exit Sub End If Else BELEG.POS.Remove(p) initDGVBelegPos() Exit Sub End If End If Next End Sub Sub initBGPos() For Each c As usrcntlBelegLeistungEintrag In FlowLayoutPanel.Controls For Each cPos As usrcntlBelegLeistungEintragPosition In c.FlowLayoutPanel.Controls setData(cPos, Color.White, 0, 0) For Each p In BELEG.POS If cPos.PreislistenNr = p.PreislistenNr And cPos.PreislistenPos = p.PreislistenPos And cPos.LeistungsNr = p.LeistungsNr Then 'Dim where = "" If cbxSplittung.Checked Then If p.FilialenNr = aktFiliale And p.AbfertigungsNr = aktAbfertigungsNr Then setData(cPos, Color.Khaki, p.Preis, p.Anzahl) End If Else setData(cPos, Color.Khaki, p.Preis, p.Anzahl) End If End If Next Next Next End Sub 'threadsicherer Aufruf Delegate Sub setDataCallback(l As usrcntlBelegLeistungEintragPosition, BackColor As Color, preis As Double, anzahl As Integer) Private Sub setData(l As usrcntlBelegLeistungEintragPosition, BackColor As Color, preis As Double, anzahl As Integer) Try If Me.InvokeRequired Then Dim d As New setDataCallback(AddressOf setData) Me.Invoke(d, New Object() {l, BackColor, preis, anzahl}) Else With l .BackColor = BackColor If preis <> 0 Then .txtPreis.Text = CDbl(preis).ToString("F", CultureInfo.InvariantCulture) If anzahl > 0 Then .txtAnzahl.Text = anzahl & " x" .txtAnzahl.Visible = True Else .txtAnzahl.Visible = False If Not .FixPreis Then .txtPreis.Text = "-" 'nur wenn FixPreis End If End With End If Catch ex As Exception '?? MsgBox("Es ist ein Fehler beim Kunden-Such-Feld aufgetreten: " & vbNewLine & vbNewLine & ex.Message) End Try End Sub Dim WithEvents mPrintDocument As New PrintDocument Dim mPrintBitMap As Bitmap Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles mPrintDocument.PrintPage ' Draw the image centered. Dim lWidth As Integer = e.MarginBounds.X + (e.MarginBounds.Width - mPrintBitMap.Width) \ 2 Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 2 e.Graphics.DrawImage(mPrintBitMap, lWidth, lHeight) ' There's only one page. e.HasMorePages = False End Sub ' Dim RKSV_Service_Location = "\\192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/" Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click Zahlungsmittel = "Bar" If Not printRoutine() Then Exit Sub End If setRKSV() End Sub Function validValues() As Boolean lblErr_frachfuehrer.Visible = False lblErr_kunde.Visible = False lblErr_filiale.Visible = False lblErr_steuer.Visible = False lblErrPos.Visible = False lblErr_Fahrer.Visible = False lblErr_Pass.Visible = False lblErr_LKW.Visible = False If BELEG.POS.Count = 0 Then lblErrPos.Visible = True : Return False If BELEG.Ordnungsbegriff = "" Then lblErr_kunde.Visible = True : Return False ' If BELEG.Frachtführer = "" Then lblErr_frachfuehrer.Visible = True : Return False If Not (IsNumeric(BELEG.Steuerschlüssel) AndAlso BELEG.Steuerschlüssel >= 0) Then lblErr_steuer.Visible = True : Return False If cbxSplittung.Checked Then If BELEG.LKW_Id Is Nothing Then MsgBox("LKW-Beleg konnte nicht erstellt werden, da keine LKW-Id hinterlegt. Bitte Filiale und Abfertigungsnummer angeben!") : Return False End If 'For Each b In BELEG.POS ' If If(b.FilialenNr, 0) <= 0 Then MsgBox("Filiale-/AbfertigungsNr. fehlt!") : Return False ' If If(b.AbfertigungsNr, 0) <= 0 Then MsgBox("Filiale-/AbfertigungsNr. fehlt!") : Return False 'Next Else ' If BELEG.LKW_Id Is Nothing Then 'MsgBox("LKW-Beleg konnte nicht erstellt werden, da keine LKW-Id hinterlegt. Bitte Filiale und Abfertigungsnummer angeben!") : Return False ' End If ' If BELEG.FilialenNr <= 0 Then lblErr_filiale.Visible = True : Return False ' If BELEG.AbfertigungsNr <= 0 Then lblErr_filiale.Visible = True : Return False End If If BELEG.Belegart = 2 Then If BELEG.Fahrer = "" Then lblErr_Fahrer.Visible = True : Return False If BELEG.Passnummer = "" Then lblErr_Pass.Visible = True : Return False If BELEG.LKW_Kennzeichen = "" Then lblErr_LKW.Visible = True : Return False End If Return True End Function ' Dim QR_Image As Image = Nothing Sub datatoBeleg() 'BELEG.= "12345 / TR" ' BELEG.lblRgDatum.Text = Now.ToShortDateString BELEG.BelegDat = Now BELEG.KundenNr = IIf(kdkunde.KdNr > 0, kdkunde.KdNr, Nothing) BELEG.Ordnungsbegriff = If(kdkunde.Text.Trim.Length > 50, kdkunde.Text.Trim.Substring(0, 50), kdkunde.Text.Trim) ' If BELEG.Ordnungsbegriff.Length > 50 Then 'BELEG.Ordnungsbegriff = BELEG.Ordnungsbegriff.Substring(0, 50) ' End If BELEG.Name1 = BELEG.Ordnungsbegriff.Trim BELEG.Name2 = "" If kdkunde.KdData_ADRESSEN IsNot Nothing Then ' Überschreiben wenn vorhanden+ BELEG.Name1 = IIf(kdkunde.KdData_ADRESSEN.Name_1 IsNot Nothing, kdkunde.KdData_ADRESSEN.Name_1, BELEG.Ordnungsbegriff).ToString.Trim BELEG.Name2 = IIf(kdkunde.KdData_ADRESSEN.Name_2 IsNot Nothing, kdkunde.KdData_ADRESSEN.Name_2, "").ToString.Trim End If If BELEG.Name1.Length > 40 Then BELEG.Name1 = BELEG.Name1.Substring(0, 40) If BELEG.Name2.Length > 40 Then BELEG.Name2 = BELEG.Name2.Substring(0, 40) If BELEG.Ordnungsbegriff.Length > 50 Then BELEG.Ordnungsbegriff = BELEG.Ordnungsbegriff.Substring(0, 50) BELEG.Straße = lblKunde_Strasse.Text BELEG.LandKz = lblKunde_Land.Text BELEG.Ort = lblKunde_Ort.Text BELEG.PLZ = lblKunde_Plz.Text BELEG.UstIdKz = lblKunde_UstId_Land.Text.Trim BELEG.UstIdNr = lblKunde_UstId_Nr.Text.Trim BELEG.LKW_Kennzeichen = lblFrachtf_LKWNr.Text.Trim.ToUpper BELEG.Fahrer = lblFrachtf_Fahrer.Text BELEG.Passnummer = lblFrachtf_Pass.Text BELEG.Frachtführer = BELEG.Name1 'kdFrachtf.Text BELEG.FrachtführerKundenNr = BELEG.KundenNr 'IIf(kdFrachtf.KdNr > 0, kdFrachtf.KdNr, Nothing) BELEG.LKW_Kennzeichen = lblFrachtf_LKWNr.Text BELEG.Steuerschlüssel = If(IsNumeric(cboSteuerschlüssel._value), cboSteuerschlüssel._value, 0) BELEG.SgutKompl = cboFrachtf_Sgut._value Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Case "ATILLA" BELEG.FilialenNr = IIf(IsNumeric(cboFiliale._value), cboFiliale._value, -1) BELEG.AbfertigungsNr = IIf(IsNumeric(txtAbfertigungsNr.Text), txtAbfertigungsNr.Text, -1) Case Else If Not PERSONAL.isLeihgeldkasse Then 'Wird berits anders geregelt BELEG.LKW_Beleg = (Not cbxSplittung.Checked And AvisoID IsNot Nothing) If Not BELEG.LKW_Beleg Then BELEG.FilialenNr = -1 BELEG.AbfertigungsNr = -1 Else BELEG.FilialenNr = IIf(IsNumeric(cboFiliale._value), cboFiliale._value, -1) BELEG.AbfertigungsNr = IIf(IsNumeric(txtAbfertigungsNr.Text), txtAbfertigungsNr.Text, -1) End If End If End Select If PERSONAL.isLeihgeldkasse AndAlso PERSONAL_LG IsNot Nothing Then BELEG.Benutzer_LG = PERSONAL_LG.ID End If End Sub Sub STORNO2(JournalNr, Optional grund = "") If Not BELEG.gebuchtStorno Then Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM tblKassenbuch WHERE [Mandant]='" & BELEG.Mandant & "' AND Niederlassung='" & BELEG.Niederlassung & "' AND Benutzer'" & BELEG.Benutzer & "' AND Geschäftsjahr='" & cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma) & "' AND JournalNr='" & JournalNr & "'", "FMZOLL") Dim GJ = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma)) If dt IsNot Nothing Then For Each r In dt.Rows Dim KBEntry As New cKassenbuch("LOAD", BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma), r("JournalNr")) KBEntry.JournalNr = GJ.INCREASE_JOURNAL() 'Vergabe der Journalnummer KBEntry.Buchungsdatum = Now.ToShortDateString KBEntry.Soll = KBEntry.Soll * -1 KBEntry.Haben = KBEntry.Haben * -1 Next End If BELEG.gebuchtStorno = True BELEG.storniert = True BELEG.Stornogrund = grund BELEG.SAVE() End If End Sub Sub dgvInit() With dgvBelegPos If .RowCount = 0 Then Exit Sub For Each c In .Columns c.Visible = False Next .Columns("LeistungsNr").Visible = True .Columns("LeistungsBez").Visible = True .Columns("TW1").Visible = True .Columns("TW2").Visible = True .Columns("Preis").Visible = True .Columns("Anzahl").Visible = True .Columns("Betrag").Visible = True .Columns("Leistungsbeschreibung").Visible = True End With End Sub Sub initDGVBelegPos() lblErrPos.Visible = False With dgvBelegPos .Rows.Clear() .Columns("clmnPreis").DefaultCellStyle.Format = "C" .Columns("clmnPreis").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight .Columns("clmnBetrag").DefaultCellStyle.Format = "C" .Columns("clmnBetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight For Each p In BELEG.POS Dim FixpreisStr = SQL.getValueTxtBySql("SELECT case WHEN Preis is null then '0' else '1' end FROM [tblPreislistenpositionen] where [PreislistenNr]=" & p.PreislistenNr & " and [PreislistenPos]=" & p.PreislistenPos & "", "FMZOLL") Dim fixpreis As Boolean = If(FixpreisStr.ToString = "", False, CBool(FixpreisStr)) .Rows.Add(p.Anzahl, p.Leistungsbeschreibung, "", "", p.Preis, p.Betrag, p.PreislistenNr, p.PreislistenPos, p.LeistungsNr, CInt(p.Anzahlmultiplikator), fixpreis, p.AbfertigungsNr, p.FilialenNr) Next .ClearSelection() End With Dim ThreadInitBGPos = New System.Threading.Thread(AddressOf Me.initBGPos) ThreadInitBGPos.IsBackground = True ThreadInitBGPos.Start() initBetragBerechnen() txtAnzahl.Text = "1" txtAnzahl.Focus() txtAnzahl.SelectAll() End Sub Sub initBetragBerechnen() Dim sum As Double = 0 If BELEG IsNot Nothing AndAlso BELEG.POS IsNot Nothing Then For Each p In BELEG.POS sum += p.Betrag Next End If ' If EA = "E" Then lblBetrag_Netto.Text = sum.ToString("C2") lblBetrag_Steuern.Text = (sum * txtSteuersatz._value).ToString("C2") Betrag = (sum + sum * txtSteuersatz._value) lblBetrag_Brutto.Text = (Betrag).ToString("C2") ' Else ' lblBetrag_Netto.Text = (-1 * sum).ToString("C") ' lblBetrag_Steuern.Text = (-1 * (sum * txtSteuersatz._value)).ToString("C") ' lblBetrag_Brutto.Text = (-1 * (sum + sum * txtSteuersatz._value)).ToString("C") ' End If End Sub Private Sub cboSteuerschlüssel_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboSteuerschlüssel.SelectedIndexChanged If IsNumeric(cboSteuerschlüssel._value) Then txtSteuersatz.fillWithSQL("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & cboSteuerschlüssel._value & "' ", "FMZOLL") End If initBetragBerechnen() End Sub Private Sub frmBeleg_Shown(sender As Object, e As EventArgs) Handles Me.Shown ' initTB_DGV() Me.Height = My.Computer.Screen.WorkingArea.Height Me.Top = 0 iniChangePNL() RaiseEvent LOADED() 'MsgBox(cboSteuerschlüssel._value) If cboSteuerschlüssel._value = "" Or cboSteuerschlüssel._value = 0 Then cboSteuerschlüssel.changeItem(3520) End Sub Sub iniChangePNL() If FlowLayoutPanel1.Controls.Count = 1 Then changePL(FlowLayoutPanel1.Controls(0), New EventArgs) Else Dim srchPreisliste = -1 If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standardPreisliste > 0 Then srchPreisliste = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standardPreisliste Else If PERSONAL.Niederlassung <> "" Then If PERSONAL.Niederlassung = "SUA" Then srchPreisliste = 3 ElseIf PERSONAL.Niederlassung = "IME" Then srchPreisliste = 13 Else srchPreisliste = 4 End If End If End If If srchPreisliste > 0 Then For Each b As Button In FlowLayoutPanel1.Controls If b.Tag = srchPreisliste Then changePL(b, New EventArgs) Exit For End If Next End If End If End Sub Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnEinnahmeBeleg.Click If BELEG.POS.Count > 0 Then If vbYes <> MsgBox("Es wurden bereits Positionen angelegt, sollen diese gelöscht werden?", MsgBoxStyle.YesNoCancel) Then Exit Sub End If End If BELEG.POS.Clear() initDGVBelegPos() BELEG.Belegart = "1" initTabCntlPreislisten() initArt() End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAusgabebeleg.Click If BELEG.POS.Count > 0 Then If vbYes <> MsgBox("Es wurden bereits Positionen angelegt, sollen diese gelöscht werden?", MsgBoxStyle.YesNoCancel) Then Exit Sub End If End If BELEG.POS.Clear() initDGVBelegPos() BELEG.Belegart = "2" initTabCntlPreislisten() initArt() End Sub Sub initArt() If BELEG.Belegart = "1" Then btnEinnahmeBeleg.BackColor = Color.SteelBlue btnEinnahmeBeleg.ForeColor = Color.White btnAusgabebeleg.BackColor = Color.Transparent btnAusgabebeleg.ForeColor = Color.DimGray ElseIf BELEG.Belegart = "2" Then btnAusgabebeleg.BackColor = Color.SteelBlue btnAusgabebeleg.ForeColor = Color.White btnEinnahmeBeleg.BackColor = Color.Transparent btnEinnahmeBeleg.ForeColor = Color.DimGray End If End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click If dgvBelegPos.SelectedRows.Count = 1 Then Dim i = dgvBelegPos.SelectedRows(0).Index Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) increase(1, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value) Try : dgvBelegPos.Rows(i).Selected = True : Catch : End Try End If End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click If dgvBelegPos.SelectedRows.Count = 1 Then Dim i = dgvBelegPos.SelectedRows(0).Index Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) reduce(1, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value) Try : dgvBelegPos.Rows(i).Selected = True : Catch : End Try End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click If dgvBelegPos.SelectedRows.Count = 1 Then Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1) delete(dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value) End If End Sub Private Sub dgvBelegPos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvBelegPos.CellContentClick If e.RowIndex = -1 Then sender.clearselection() End If End Sub Private Sub dgvBelegPos_SelectionChanged(sender As Object, e As EventArgs) Handles dgvBelegPos.SelectionChanged txtEinzelpreis.Text = "" txtEinzelpreis.Enabled = False If dgvBelegPos.SelectedRows.Count = 1 Then txtAnzahl.Text = dgvBelegPos.SelectedRows(0).Cells("clmnAnzahl").Value txtEinzelpreis.Text = dgvBelegPos.SelectedRows(0).Cells("clmnPreis").Value If Not dgvBelegPos.SelectedRows(0).Cells("clmnFixpreis").Value Then txtEinzelpreis.Enabled = True End If End If End Sub Private Sub txtAnzahl_KeyDown(sender As Object, e As KeyEventArgs) Handles txtAnzahl.KeyDown If e.KeyCode = Keys.Return Then If dgvBelegPos.SelectedRows.Count = 1 Then setAnz(txtAnzahl.Text, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value) initDGVBelegPos() End If End If End Sub Private Sub txtEinzelpreis_KeyDown(sender As Object, e As KeyEventArgs) Handles txtEinzelpreis.KeyDown If e.KeyCode = Keys.Return Then If dgvBelegPos.SelectedRows.Count = 1 Then setEP(txtEinzelpreis.Text, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value) initDGVBelegPos() End If End If End Sub Function setEP(ep, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator) As Boolean If IsNumeric(ep) AndAlso ep > 0 Then For Each p In BELEG.POS If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then p.Preis = ep p.Anzahlmultiplikator = Anzahlmultiplikator p.Betrag = p.Anzahl * p.Preis initDGVBelegPos() Return True End If Next End If Return False End Function Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click 'BELEG.SAVE() warnClose = False Me.Close() End Sub Private Sub btnOfferte_Click(sender As Object, e As EventArgs) Handles btnOfferte.Click If kdkunde.KdNr_value > 0 Then Dim f As New frmKundenUebersichtZOLL(kdkunde.KdNr) f.selectedTAB = "Offerte" f.ShowDialog(Me) End If End Sub Private Sub btnNeueAbfNr_Click(sender As Object, e As EventArgs) Handles btnNeueAbfNr.Click If Not IsNumeric(cboFiliale._value) OrElse CInt(cboFiliale._value) <= 0 Then MsgBox("Bitte Filiale auswählen!") : Exit Sub End If txtAbfertigungsNr.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cboFiliale._value, Now.Year) ' If txtUnterNr.Text = "" Then txtUnterNr.Text = 0 cboFiliale.Enabled = False sender.visible = False End Sub Private Sub txtAbfertigungsNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertigungsNr.Leave If txtAbfertigungsNr.Text.Length > 8 Then Exit Sub If txtAbfertigungsNr.Text.Length <= 6 Then If IsNumeric(txtAbfertigungsNr.Text) Then txtAbfertigungsNr.Text = Now.ToString("yy") & CInt(txtAbfertigungsNr.Text).ToString("000000") End If End If checkDoppelAbfNr() End Sub Sub checkDoppelAbfNr() lblInfoAbfertNrExists.Visible = False If IsNumeric(cboFiliale._value) And IsNumeric(txtAbfertigungsNr.Text) Then If cRKSV.SpedBuchExists(cboFiliale._value, txtAbfertigungsNr.Text) Then lblInfoAbfertNrExists.Visible = True End If End If End Sub Private Sub cboFiliale_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFiliale.Leave checkDoppelAbfNr() End Sub Private Sub cbxLKWBeleg_CheckedChanged(sender As Object, e As EventArgs) Handles cbxSplittung.CheckedChanged 'txtAbfertigungsNr.Visible = Not cbxAbfertigungsBeleg.Checked 'btnNeueAbfNr.Visible = Not cbxAbfertigungsBeleg.Checked 'Label8.Visible = Not cbxAbfertigungsBeleg.Checked Label22.Visible = cbxSplittung.Checked txtzuKassieren.Visible = cbxSplittung.Checked If cbxSplittung.Checked Then lblInfoAbfertNrExists.Visible = False : lblErr_filiale.Visible = False ': lblErrPos.Visible = False If cbxSplittung.Checked Then FlowLayoutPanel2.Visible = True initSendungen() If FlowLayoutPanel2.Controls.Count > 0 Then Dim found = False For Each b As Button In FlowLayoutPanel2.Controls If b.Tag.ToString.Contains(aktFiliale & "/" & aktAbfertigungsNr) Then ' b.PerformClick() found = True changeABF(b, New EventArgs) End If Next If Not found Then changeABF(FlowLayoutPanel2.Controls(0), New EventArgs) Else MsgBox("Keine Sendungen mit Abfertigungsnummer gefunden!") cbxSplittung.Checked = False End If Else FlowLayoutPanel2.Visible = False End If 'If cbxLKWBeleg.Checked Then ' Label8.Text = "LKW-Id:" ' btnNeueAbfNr.Visible = False 'Else ' Label8.Text = "Abfertigungs-Nr:" ' btnNeueAbfNr.Visible = True 'End If End Sub Sub initSendungen() FlowLayoutPanel2.Controls.Clear() If If(AvisoID, 0) > 0 Then ' Dim EA = IIf(BELEG.Belegart = "1", "E", "A") Dim btnA As New Button btnA.Text = "Allgemein" btnA.Tag = "0/0/0/0" 'r.Item("tblSnd_SendungID") btnA.FlatStyle = FlatStyle.Flat btnA.FlatAppearance.BorderSize = 1 btnA.Left = 0 btnA.Width = 100 btnA.Height = 60 btnA.BackColor = Color.FloralWhite btnA.Margin = New Padding(1, 3, 1, 0) FlowLayoutPanel2.Controls.Add(btnA) AddHandler btnA.Click, AddressOf changeABF For Each r As DataRow In kundenSQL.loadDgvBySql("SELECT *,isnull(tblSnd_Empfaenger,'') as empf, isnull(tblSnd_BARzuKassieren,0) as BARzuKassieren FROM [tblSendungen] WHERE 1=1 AND [tblSnd_AvisoID]='" & AvisoID & "' AND FilialenNr>0 AND AbfertigungsNr>0 order by tblSnd_PosUnterNr", "AVISO").Rows Dim Abf = kundenSQL.getValueTxtBySql("SELECT TOP (1) cast([Abfertigungsart] as varchar (2)) + ' - ' + [Abfertigungsbezeichnung] FROM [Abfertigungsarten] WHERE [Abfertigungsart]='" & r.Item("tblSnd_Abfertigungsart_ID") & "'", "FMZOLL") If Abf.Length > 10 Then Abf = Abf.Substring(0, 10) Dim btn As New Button btn.Text = Abf & vbNewLine & If(r.Item("empf").ToString.Length > 10, r.Item("empf").ToString.Substring(0, 10), r.Item("empf")) & vbNewLine & r.Item("FilialenNr") & "/" & r.Item("AbfertigungsNr") btn.Tag = r.Item("tblSnd_SendungID") & "/" & r.Item("FilialenNr") & "/" & r.Item("AbfertigungsNr") & "/" & r.Item("BARzuKassieren") 'r.Item("tblSnd_SendungID") btn.FlatStyle = FlatStyle.Flat btn.FlatAppearance.BorderSize = 1 btn.Left = 0 btn.Width = 100 btn.Height = 60 btn.BackColor = Color.FloralWhite btn.Margin = New Padding(1, 3, 1, 0) FlowLayoutPanel2.Controls.Add(btn) AddHandler btn.Click, AddressOf changeABF 'p.Controls.Add(Flp) Next Else FlowLayoutPanel2.Visible = False End If End Sub Function cntPosFilAbf(FilialenNr, AbfertigungsNr) As Integer For Each b In BELEG.POS ' MsgBox(CInt(If(b.FilialenNr, 0)) & " = " & CInt(If(FilialenNr, 0)) & " -- " & CInt(If(b.AbfertigungsNr, 0)) & " = " & CInt(If(AbfertigungsNr, 0)) & " -- " & (CInt(If(b.FilialenNr, 0)) = CInt(If(FilialenNr, 0)) And CInt(If(b.AbfertigungsNr, 0)) = CInt(If(AbfertigungsNr, 0)))) If b.FilialenNr = CInt(If(FilialenNr, 0)) And b.AbfertigungsNr = CInt(If(AbfertigungsNr, 0)) Then Return 1 End If Next Return 0 End Function Sub changeABF(snd As Object, ev As EventArgs) txtzuKassieren.Text = "" Dim tag = snd.tag For Each b As Button In FlowLayoutPanel2.Controls If b.Tag = tag Then b.BackColor = Color.OrangeRed b.ForeColor = Color.White Dim s = b.Tag.ToString.Split("/") aktFiliale = If(IsNumeric(s(1)), s(1), 0) aktAbfertigungsNr = If(IsNumeric(s(2)), s(2), 0) txtzuKassieren.Text = s(3) Else Dim s = b.Tag.ToString.Split("/") If cntPosFilAbf(s(1), s(2)) Then b.BackColor = Color.Khaki Else b.BackColor = Color.FloralWhite End If b.ForeColor = Color.Black End If Next 'neu Laden FlowLayoutPanel.Controls.Clear() iniChangePNL() 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(posTerminal.pos_wartezeit) ' Warte xx Sekunden bis Prozess ZVTStart geladen ist, dann erst anfangen Flag Aktiv abzufragen While ZVTKey.GetValue("Aktiv") = 1 System.Threading.Thread.Sleep(500) ' Warten... End While Else MsgBox("EasyZVT ist nicht installiert." & vbNewLine & "In der Master-Kasse unter POS-Terminal als Systemadministrator 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) Dim returnCode = CInt(ZVTKey.GetValue("Ergebnis")) Dim response As String = ZVTKey.GetValue("ErgebnisText") Dim ZahlungsmittelCode As Integer = ZVTKey.GetValue("Kartentyp") ZVTKey.Close() MsgBox(response) If returnCode = 0 Then 'Zahlung wurde erfolgreich durchgeführt setRKSV() ElseIf returnCode = 1000 Then 'Workaround, wenn nicht in Registry geschrieben wurden konnte. If vbYes = MsgBox("In der Registry wurde der Returncode 1000 abgegeben! " & vbNewLine & "Wurde die Zahlung dennoch vom Zahlungsterminal erfolgreich durchgeführt, dann mit Ja bestätigen", MsgBoxStyle.YesNoCancel) Then setRKSV() Else Me.Cursor = Cursors.Default End If Else Me.Cursor = Cursors.Default End If End Sub Private Sub POSpayment(sender As Object, e As EventArgs) Handles btnPOS.Click Zahlungsmittel = "EC" If cboKassen.SelectedItem.Text = "" Then MsgBox("Keine Kasse ausgewählt!") Exit Sub End If If Betrag <= 0 Then MsgBox("Es können nur positive Beträge über das POS-Terminal bezahlt werden!") Exit Sub End If dt = SQL.loadDgvBySql("SELECT * FROM tblRKSV_POS WHERE [pos_aktiv] = 1 And [pos_kasse]='" & cboKassen.SelectedItem.Value & "'", "FMZOLL") Select Case dt.Rows.Count Case 0 MsgBox("Für diese Kasse ist kein aktives POS-Terminal hinterlegt!") Case 1 If Not printRoutine() Then Exit Sub End If SetRegEntries() Case Else ContextMenuStrip1.Items.Clear() For i As Integer = 0 To dt.Rows.Count - 1 Dim posMenu = New ToolStripMenuItem() With {.Text = dt.Rows(i).Item("pos_bezeichnung"), .Name = dt.Rows(i).Item("pos_id"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size, FontStyle.Bold)} AddHandler posMenu.Click, AddressOf mnuItem_Clicked ContextMenuStrip1.Items.Add(posMenu) Next ContextMenuStrip1.Show(Cursor.Position) End Select End Sub Private Sub SetRegEntries(Optional posid As Integer = -1) If posid = -1 Then posTerminal = New cRKSV_POS(dt.Rows(0).Item("pos_id"), dt.Rows(0).Item("pos_kasse")) Else posTerminal = New cRKSV_POS(posid, dt.Rows(0).Item("pos_kasse")) End If POSFIBU = posTerminal.pos_FIBU Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True) Dim Typ As Long If ZVTKey Is Nothing Then MsgBox("EasyZVT ist nicht installiert." & vbNewLine & "In der Master-Kasse unter POS-Terminal als Systemadministrator installieren!" & vbNewLine & "INFO: EasyZVT wird als RegKey unter CurrentUser gesetzt.") Me.Cursor = Cursors.Default Exit Sub End If Try ZVTKey.SetValue("Funktion", Funktion, RegistryValueKind.DWord) Typ = posTerminal.pos_typ ZVTKey.SetValue("Typ", Typ, RegistryValueKind.DWord) ZVTKey.SetValue("KasseNr", posTerminal.pos_kassennr, RegistryValueKind.String) ZVTKey.SetValue("COM", posTerminal.pos_com, RegistryValueKind.String) ZVTKey.SetValue("IP", posTerminal.pos_ip, RegistryValueKind.String) ZVTKey.SetValue("Port", CInt(posTerminal.pos_port), RegistryValueKind.DWord) ZVTKey.SetValue("ComSpeed", CInt(posTerminal.pos_comspeed), RegistryValueKind.DWord) ZVTKey.SetValue("ComStop", CInt(posTerminal.pos_comstop), RegistryValueKind.DWord) ZVTKey.SetValue("Lizenz", posTerminal.pos_lizenz, RegistryValueKind.String) If posTerminal.pos_Protokollpfad <> "" Then ZVTKey.SetValue("Protokollpfad", posTerminal.pos_Protokollpfad, RegistryValueKind.String) End If If posTerminal.pos_XML And posTerminal.pos_Protokollpfad <> "" Then ZVTKey.SetValue("Ausgabepfad", posTerminal.pos_Protokollpfad, RegistryValueKind.String) End If If Funktion = 0 Or Funktion = 4 Then ZVTKey.SetValue("Betrag", Betrag * 100, RegistryValueKind.DWord) 'CENTbeträge 1€ --> 100 CENT 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 posTerminal.pos_kassendruck 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) EasyZVT_Worker.RunWorkerAsync() Catch ex As Exception MessageBox.Show("Das Schreiben der Parameter ist fehlgeschlagen: " & ex.Message) Me.Cursor = Cursors.Default Exit Sub End Try ZVTKey.Close() End Sub Private Sub mnuItem_Clicked(sender As Object, e As EventArgs) ContextMenuStrip1.Hide() 'Sometimes the menu items can remain open. May not be necessary for you. Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If Not printRoutine() Then Exit Sub End If If item IsNot Nothing Then SetRegEntries(item.Name) End If End Sub Private Function printRoutine() Try printErfolgreich = False If BELEG.gebucht Or BELEG.gebuchtStorno Then ' KASSE.LOAD(cboKassen._value) If BELEG.rksv_id > 0 Then KASSE.LOAD(BELEG.rksv_id) Select Case BELEG.Belegart Case "1" : If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then Me.Close() Case "2" : If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then Me.Close() 'Beleg drucken End Select Else TESTBUCHUNG = False ' VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM() If cRKSV.isforbiddenDate Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.", "", System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End If Me.Cursor = Cursors.WaitCursor If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then KASSE.LOAD(6) 'Laden der Kasse anhand der Auswahlbox Else KASSE.LOAD(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox End If BELEG.rksv_id = KASSE.rksv_id ' bei Fehler wird sonst die ID nicht richtig übernommen If kdkunde.Text.Trim.Length > 50 Then kdkunde.Text = kdkunde.Text.Trim.Substring(0, 50) End If datatoBeleg() 'Daten werden in "BELEG" geldaen If Not validValues() Then Me.Cursor = Cursors.Default : Return False If Not allowPrint Then If Not vbYes = MsgBox("Bei Zahlung/Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Return False End If End If Me.Cursor = Cursors.Default Return True Catch ex As Exception Me.DialogResult = Windows.Forms.DialogResult.None Me.Cursor = Cursors.Default printErfolgreich = False VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) warnClose = False Me.Close() End Try Return False End Function Private Sub setRKSV() Try Dim BelegNrFIBU As String = "" If Not BELEG.gebucht And Not BELEG.gebuchtStorno Then Me.Cursor = Cursors.WaitCursor Dim isLeihgeldeinzahlung As Boolean = False Dim summeNETTO As Double = 0 For Each p In BELEG.POS summeNETTO += p.Betrag If p.LeistungsNr = 111 AndAlso p.LeistungsBez.Contains("Rückzahlung Leihgeld") AndAlso BELEG.POS.Count = 1 Then isLeihgeldeinzahlung = True 'nur bei 1 POS und Leihgeld-Einzahlung! Next If isLeihgeldeinzahlung Then If BELEG.KundenNr > 0 Then Dim KundenKontoArchiv As String = (New VERAG_PROG_ALLGEMEIN.SQL).getValueTxtBySqlVarList("SELECT c_archiv FROM [FIBU2].dbo.fibu_konto WHERE i_konto = " & BELEG.KundenNr & " AND i_firm_refid = " & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "9", "7"), "FIBU") 'ATILLA MANDANT!' If KundenKontoArchiv <> "" Then MsgBox("ACHTUNG, die Kundennummer ist in der Syska-FIBU inaktiv, bitte andere KundenNr verwenden!") Exit Sub End If End If End If Dim summeBRUTTO = summeNETTO Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & BELEG.Steuerschlüssel & "' ", "FMZOLL") If IsNumeric(steuersatz) Then summeBRUTTO += (summeNETTO * steuersatz) ' If EA = "A" Then ' summeNETTO *= -1 ' steuersatz *= -1 ' summeBRUTTO *= -1 ' End If Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler 'Flls Fehler bei Signatur Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, If(EA = "E", summeBRUTTO, summeBRUTTO * -1))) 'Bei Ausgabebeleg wird der Umsatz vermindert If RKSV_Beleg_Id < 0 Then Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub End If ' MsgBox(BELEG.POS.Count) Dim JournalNr = 0 If Not cRKSV.insertKB(PERSONAL, BELEG, KASSE.rksv_id, RKSV_Beleg_Id, KASSE.rksv_aktiv, JournalNr, KASSE.rksv_firma, POSFIBU, BelegNrFIBU, Zahlungsmittel, (isLeihgeldeinzahlung AndAlso cboBuchungsoforterzeugen.Checked)) Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Programmfehler bei Eintrag ins Kassenbuch.", "", System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub End If ' QR_Image = Nothing Dim QR_CodeString As String = "" Dim LastJWS As String = "" If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV ÖSTERREICH gilt Dim answer = "" If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) cRKSV.DELETE(BELEG, KASSE.rksv_firma) End If Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer MsgBox(Errmsg, MsgBoxStyle.Critical) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub End If KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) End If 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service ' If Not TESTBUCHUNG Then ' KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1) ' cRKSV.DELETE(BELEG) ' End If ' MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) ' ' Me.Cursor = Cursors.Default ' 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler") ' ' MsgBox("Programmfehler bei der digitalen Signatur.") ' Return False 'End If 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI") If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt Dim answer = "" If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) cRKSV.DELETE(BELEG, KASSE.rksv_firma) End If Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer MsgBox(Errmsg, MsgBoxStyle.Critical) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub End If KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX If KASSE.rksv_KassaGuid = "KASSE_01" Then 'Testkasse BELEG.rksv_jws = Nothing BELEG.rksv_qr = Nothing End If 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX End If 'RKSV-Daten beim Beleg ergänzen: BELEG.rksv_jws = LastJWS BELEG.rksv_qr = QR_CodeString BELEG.rksv_BelegId = RKSV_Beleg_Id BELEG.rksv_id = KASSE.rksv_id BELEG.rksv_umsatz = summeBRUTTO BELEG.rksv_aktiv = KASSE.rksv_aktiv BELEG.gebucht = True BELEG.SAVE() Me.DialogResult = Windows.Forms.DialogResult.OK 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken Select Case BELEG.Belegart Case "1" If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then 'WARTEN printErfolgreich = True End If Case "2" If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then 'WARTEN printErfolgreich = True End If End Select If warnClose Then 'Dann automatisch erstellt, zb Leihgeld --> Spedbuch bereits dort erfasst If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'Or VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then If vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then Dim abbruch As Boolean = False If cRKSV.SpedBuchExists(BELEG) Then If vbYes <> MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then abbruch = True End If End If If Not abbruch Then cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, SendungID) If Not cRKSV.SpedBuchExists(BELEG) Then MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") Else If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then Dim frmNacherfassung As New frmNacherfassungNEU() frmNacherfassung.srchFiliale = BELEG.FilialenNr frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr frmNacherfassung.srchUnterNr = 0 frmNacherfassung.ShowDialog(Me) End If End If End If End If End If End If Me.Close() 'If Zahlungsmittel = "EC" Then ' generatePOSUmbuchung() 'End If Me.Cursor = Cursors.Default End If Catch ex As Exception Me.DialogResult = Windows.Forms.DialogResult.None Me.Cursor = Cursors.Default printErfolgreich = False VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) warnClose = False Me.Close() End Try End Sub Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Process.Start("https://wiki.verag.ag/de/software/aviso/howtos/Bankomat") End Sub 'Private Sub generatePOSUmbuchung() ' Dim isUmbuchung = True ' Dim frmFremdbeleg As New frmFremdbeleg(isUmbuchung) ' frmFremdbeleg.PERSONAL = PERSONAL ' frmFremdbeleg.Art = 2 ' frmFremdbeleg.Show() ' frmFremdbeleg.cboKonto.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Umbuchung Kassa/Bankomat", "3281")) ' frmFremdbeleg.cboKonto.changeItem("3281") ' frmFremdbeleg.txtReferenz.Text = BELEG.BelegNr ' frmFremdbeleg.txtBetrag._value = Betrag ' frmFremdbeleg.cbxBelegDrucken.Checked = False ' frmFremdbeleg.btn.PerformClick() 'End Sub End Class Class TestRKSVW Shared Sub Main() Dim client As RKSVWcfClient = New RKSVWcfClient() ' Use the 'client' variable to call operations on the service. ' Always close the client. client.Close() End Sub End Class