From 9a5f4a3e57c587255333b1344d17fa5d50ca0484 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 18 Aug 2026 13:50:12 +0200 Subject: [PATCH 01/54] Sendungsdetails, formualre, --- SDL/Formulare/KDFormulare/frmFormulare.vb | 373 +++++++++----------- SDL/USTV/frmMDM_USTVAntrag.vb | 5 +- VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb | 2 +- 3 files changed, 170 insertions(+), 210 deletions(-) diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb index 573396c6..2e055acc 100644 --- a/SDL/Formulare/KDFormulare/frmFormulare.vb +++ b/SDL/Formulare/KDFormulare/frmFormulare.vb @@ -1135,6 +1135,8 @@ Public Class frmFormulare Dim listMail As New List(Of FormMangagerEmail) + Dim listofFormulare As New List(Of String) + Dim attachmentName As String = "" Try @@ -1143,7 +1145,7 @@ Public Class frmFormulare Dim hassValidErr = False For Each c In MyFlowLayoutPanel1.Controls Dim err = "" - If Not FormularManagerNEU.validFormulare(c, err) Then + If Not FormularManagerNEU.validFormulare(c, err, listofFormulare) Then txtErr.Text &= err hassValidErr = True End If @@ -1154,6 +1156,11 @@ Public Class frmFormulare Exit Sub End If + attachmentName = createAttachmentName(listofFormulare, KdNr) + + If attachmentName = "" Then + attachmentName = "_Formular" + End If If isSingleForm And sender Is btnPrint Then 'Sofortdruck --> wir bei ActiveRepots benötigt --> schneller, als zuerst pdf.... If Not MyFlowLayoutPanel1.Controls.Count = 1 Then Me.Cursor = Cursors.Default : Exit Sub 'funkt. nur bei genau 1 Control @@ -1162,229 +1169,138 @@ Public Class frmFormulare Dim list As New List(Of String) ' Sammlung PDFs + For Each c In MyFlowLayoutPanel1.Controls - Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) - For Each pfad In pfadList - If pfad <> "" Then list.Add(pfad) + Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) + For Each pfad In pfadList + If pfad <> "" Then list.Add(pfad) + Next Next - Next - Dim dest_path = "" - If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub + Dim dest_path = "" + If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub - If list.Count = 1 Then - dest_path = list(0) - Else - dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf", ".pdf", False, False) - If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then - dest_path = "" : MsgBox("Fehler PDF") + If list.Count = 1 Then + dest_path = list(0) + Else + dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False) + If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then + dest_path = "" : MsgBox("Fehler PDF") + End If End If - End If - If dest_path <> "" Then - If sender Is Button2 Then - Process.Start(dest_path) - ElseIf sender Is btn Then - 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) - Try - - - - - 'Dim Mail As New MailMessage - - 'Try - ' Dim SMTP As New SmtpClient("smtp.gmail.com") - ' SMTP.EnableSsl = True - ' SMTP.Credentials = New System.Net.NetworkCredential("[your gmail address@gmail.com]", "[the associated password]") - ' SMTP.Port = 587 - - ' Mail.From = New MailAddress("""[Friendly Name]"" <[your gmail address@gmail.com>") - - - ' Mail.Subject = "" - ' Mail.Body = "" - ' If dest_path <> "" Then Mail.Attachments.Add(New Mail.Attachment(dest_path)) - ' Mail.IsBodyHtml = True - - ' ' SMTP.Send(Mail) - - ' 'Clear Mail Object - ' Mail.Dispose() - - ' 'Function Return - ' Return True - - 'Catch ex As Exception - - ' 'Function Return - ' Return False - - 'End Try - - - - If False Then - Dim mapi As New VERAG_PROG_ALLGEMEIN.SendFileTo.MAPI - - mapi.AddAttachment(dest_path) - mapi.SendMailPopup("testing", "body text") - Exit Sub - End If - - If False Then - - - - - Call ShellExecute(Me.Handle, "open", "mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&Attach=""" & dest_path & """", vbNullString, vbNullString, SW_SHOW) - ' Call ShellExecute(Me.Handle, "open", "mailto:" & "" & "?subject=" & "?" & "&body=" & "?", "", "", SW_SHOW) - - - Exit Sub - - - Dim MailMessage As New System.Net.Mail.MailMessage() - ' MailMessage.From = New MailAddress("someone@yourdomain.com") - MailMessage.Subject = "" ' "Your subject here" - MailMessage.IsBodyHtml = True - ' MailMessage.Body = MailHTMLText '"My HTML formatted body" - - MailMessage.Attachments.Add(New Attachment(dest_path)) - - Dim filename = "C://Temp/mymessage.eml" - - 'save the MailMessage to the filesystem - ' MailMessage.save(filename) - Save(MailMessage, filename) - 'Open the file with the default associated application registered on the local machine - - - - - Process.Start(filename) - - 'Dim mapi As New VERAG_PROG_ALLGEMEIN.SendFileTo.cSendMailAttach - - 'mapi.AddAttachment(dest_path) - ''mapi.AddRecipientTo("person1@somewhere.com") - ''mapi.AddRecipientTo("person2@somewhere.com") - 'mapi.SendMailPopup("", "") - Exit Sub - End If - - 'Dim Mail As Outlook.MailItem = CType(Application.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem) - - ' If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then - ' Else - ' Dim outl = CreateObject("Outlook.Application") - ' Dim Mail = CreateObject("Microsoft.Office.Interop.Outlook.MailItem") + If dest_path <> "" Then + If sender Is Button2 Then + Process.Start(dest_path) + ElseIf sender Is btn Then + 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) + Try If listMail IsNot Nothing AndAlso listMail.Count > 0 Then - For Each l In listMail + For Each l In listMail + Dim outl As New Outlook.Application + + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + + 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) + 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc + + If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText + If l.Mail_To <> "" Then Mail.To = l.Mail_To + If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC + If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC + If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject + + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + Try + Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) + Catch ex2 As Exception + MsgBox(ex2.Message) + End Try + End If + + Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") + Mail.Display() + + Next + Else Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) + 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc + 'Mail.SendUsingAccount = outl.Session.DefaultAccount - If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText - If l.Mail_To <> "" Then Mail.To = l.Mail_To - If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC - If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC - If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then Try Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) Catch ex2 As Exception MsgBox(ex2.Message) End Try + + + End If + If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text + If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then + Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) + + Dim TextHTML = "" + TextHTML &= tX.txt_text + TextHTML &= "
" + TextHTML &= "
" + TextHTML &= "Mit freundlichen Grüßen
" + TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" + TextHTML &= "
" + TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) + + + Mail.HTMLBody = "
" & TextHTML & "
" + + + Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") + If AVISO IsNot Nothing Then + Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) + End If + Mail.Subject = Mail.Subject.Replace("%LKW%", "") + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") End If - Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf") - Mail.Display() - - Next - Else - Dim outl As New Outlook.Application - - Dim Mail As Microsoft.Office.Interop.Outlook.MailItem - Mail = outl.CreateItem(0) - - 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) - 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'Mail.SendUsingAccount = outl.Session.DefaultAccount - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then - Try - Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) - Catch ex2 As Exception - MsgBox(ex2.Message) - End Try - - - End If - If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text - If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then - Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) - - Dim TextHTML = "" - TextHTML &= tX.txt_text - TextHTML &= "
" - TextHTML &= "
" - TextHTML &= "Mit freundlichen Grüßen
" - TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" - TextHTML &= "
" - TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) - - - Mail.HTMLBody = "
" & TextHTML & "
" - - - Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") - If AVISO IsNot Nothing Then - Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) - End If - Mail.Subject = Mail.Subject.Replace("%LKW%", "") - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") - End If - - - - Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf") + Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") Mail.Display() + End If + + + 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" + ' Mail.SaveAs(matilPath) + ' Process.Start(matilPath) + + Catch ex As Exception + MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) + End Try + ElseIf sender Is btnPrint Then + 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") + If dest_path.ToUpper.EndsWith("PDF") Then + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) + Else + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If - - 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" - ' Mail.SaveAs(matilPath) - ' Process.Start(matilPath) - - Catch ex As Exception - MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) - End Try - ElseIf sender Is btnPrint Then - 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") - If dest_path.ToUpper.EndsWith("PDF") Then - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) - Else - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If - End If End If - End If - printed = True + printed = True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) @@ -1393,6 +1309,40 @@ Public Class frmFormulare ' If list.Count > 0 Then End Sub + Private Function createAttachmentName(listOfFormular As List(Of String), KundenNr As Integer) As String + + Dim Bez As String = "" + If KundenNr > 0 Then + Dim ADR As New cAdressen(KundenNr) + + If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then + Bez = "_" & ADR.Name_1 + End If + + + End If + + If listOfFormular.Count = 1 Then + + Bez &= "_" & listOfFormular(0).ToString.Replace("SDL.usrcntl", "") + + Return Bez + + ElseIf listOfFormular.Count > 1 Then + + For Each r In listOfFormular + Bez &= "_" & r.ToString.Replace("SDL.usrcntl", "") + + Next + + Return Bez + + Else + Return "" + End If + + End Function + Const SW_SHOW = 5 Declare Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" ( @@ -1684,52 +1634,61 @@ Public Class FormularManagerNEU Return striList End Function - Shared Function validFormulare(c As Control, ByRef err As String) As Boolean + Shared Function validFormulare(c As Control, ByRef err As String, listOfFormulare As List(Of String)) As Boolean validFormulare = True Dim striList As New List(Of String) Select Case c.GetType.ToString Case GetType(usrcntlVollmacht_DE).ToString - ' retStr = FormularManagerNEU.VM_De(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_DE).ToString()) + Case GetType(usrcntlVollmacht_GB_IE).ToString + listOfFormulare.Add(GetType(usrcntlVollmacht_GB_IE).ToString()) + Case GetType(usrcntlVollmacht_GB_indirekt).ToString + listOfFormulare.Add(GetType(usrcntlVollmacht_GB_indirekt).ToString()) Case GetType(usrcntlVollmacht_DE_indirekt).ToString - ' retStr = FormularManagerNEU.VM_De(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_DE_indirekt).ToString) Case GetType(usrcntlVollmacht_AT).ToString - ' retStr = FormularManagerNEU.VM_AT(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_AT).ToString) Case GetType(usrcntlFormOhneFelder).ToString - ' retStr = FormularManagerNEU.SimplePDF(c) Case GetType(usrcntlVollmacht_DE_Fiskal).ToString - ' retStr = FormularManagerNEU.VM_DE_Fiskal(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_DE_Fiskal).ToString) Case GetType(usrcntlVollmacht_AT_EV).ToString - ' retStr = FormularManagerNEU.VM_AT_EV(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString) Case GetType(usrcntlVollmacht_AT_Fiskal).ToString - ' retStr = FormularManagerNEU.VM_AT_Fiskal(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString) Case GetType(usrcntlVollmacht_ATILLA_EXPORT).ToString - ' retStr = FormularManagerNEU.VM_ATILLA_EXPORT(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString) Case GetType(usrcntlVollmacht_VERAG_EXPORT).ToString - ' retStr = FormularManagerNEU.VM_VERAG_EXPORT(c) + listOfFormulare.Add(GetType(usrcntlVollmacht_VERAG_EXPORT).ToString) Case GetType(usrcntlVorauskasse).ToString + listOfFormulare.Add(GetType(usrcntlVorauskasse).ToString) If Not DirectCast(c, usrcntlVorauskasse).ValidValues(err) Then validFormulare = False Case GetType(usrcntlGestellungsgarantie).ToString - ' retStr = FormularManagerNEU.Gestellungsgarantie(c) + listOfFormulare.Add(GetType(usrcntlGestellungsgarantie).ToString) + Case GetType(usrcntlVerzollungspreise).ToString - ' retStr = FormularManagerNEU.Verzollungspreise(c) + listOfFormulare.Add(GetType(usrcntlVerzollungspreise).ToString) Case GetType(usrcntlCreditreformBoniAuskunft).ToString - 'retStr = FormularManagerNEU.Bonitaetsauskunft(c) + listOfFormulare.Add(GetType(usrcntlCreditreformBoniAuskunft).ToString) Case GetType(usrcntlSonstigesPDF).ToString - ' retStr = FormularManagerNEU.SonstPDF(c) + listOfFormulare.Add(GetType(usrcntlSonstigesPDF).ToString) Case GetType(usrCntlDispoliste).ToString - 'retStr = FormularManagerNEU.DispoListe(c) + listOfFormulare.Add(GetType(usrCntlDispoliste).ToString) Case GetType(usrCntlVerpflichtungserklärungFahrer).ToString - ' striList = FormularManagerNEU.VerpflichtungserklärungFahrer(c) + listOfFormulare.Add(GetType(usrCntlVerpflichtungserklärungFahrer).ToString) Case GetType(usrcntlFiskalInfoschreiben).ToString - ' retStr = FormularManagerNEU.FiskalInfoschreiben(c) + listOfFormulare.Add(GetType(usrcntlFiskalInfoschreiben).ToString) Case GetType(usrcntlVerzollungsunterlagen).ToString + listOfFormulare.Add(GetType(usrcntlVerzollungsunterlagen).ToString) If Not DirectCast(c, usrcntlVerzollungsunterlagen).ValidValues(err) Then validFormulare = False Case GetType(usrcntlVUB).ToString - ' retStr = FormularManagerNEU.VUB(c) + listOfFormulare.Add(GetType(usrcntlVUB).ToString) + + Case GetType(usrcntlImportaviso).ToString + listOfFormulare.Add(GetType(usrcntlImportaviso).ToString) End Select diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 9019b349..bcf474fc 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -4632,7 +4632,8 @@ Public Class frmMDM_USTVAntrag BANK_OWNER = FIRMA.Firma_Bez BANK_IBAN = FIRMA.Firma_IBAN1 BANK_BIC = FIRMA.Firma_BIC1 - BankOwnerType = "applicant" + + BankOwnerType = "representative" If BANK_BIC.ToString.Contains("BIC:") Then BANK_BIC = BANK_BIC.ToString.Replace("BIC:", "") BANK_BIC = BANK_BIC.Trim() @@ -4656,7 +4657,7 @@ Public Class frmMDM_USTVAntrag BANK_BIC = dtBank.Rows(0).Item("bnk_bic") End If 'wenn nicht hinterlegt, dann leer lassen! - BankOwnerType = "representative" + BankOwnerType = "applicant" End Select Dim app As New GlobalVATRefundApplication_HR() With { diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb b/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb index 5365e6fc..4983add4 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb @@ -201,7 +201,7 @@ Public Class cTrdInvoice Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() - Using cmd As New SqlCommand(" SELECT tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer, tblTrdinInvoice.SteuerbetragLokal,(SteuerpflichtigerBetragLokal+SteuerfreierBetragLokal) as Nettobetrag , tblTrdinInvoice.UStVAn_ID, tblTrdinInvoice.FilialenNr + Using cmd As New SqlCommand(" SELECT tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer, tblTrdinInvoice.SteuerbetragLokal,(SteuerpflichtigerBetragLokal) as Nettobetrag , tblTrdinInvoice.UStVAn_ID, tblTrdinInvoice.FilialenNr FROM tblTrdinInvoice WHERE tblTrdinInvoice.Rechnungsdatum Between @von And @bis AND tblTrdinInvoice.SteuerbetragLokal<>0 AND tblTrdinInvoice.RechnungsKundenNr=@AdressenNr AND tblTrdinInvoice.WährungLokal='EUR'" & IIf(Archiv, " ", " AND isnull(tblTrdinInvoice.UStVAn_ID,0) = 0 ") & " ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer", conn) From f0240af4231cfad98c573abfbb33e94b728681bc Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 18 Aug 2026 13:52:32 +0200 Subject: [PATCH 02/54] fix --- SDL/My Project/AssemblyInfo.vb | 4 +-- .../usrCntlFakturierung.Designer.vb | 28 +++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 873308bc..c20b27cd 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/seriendruck/usrCntlFakturierung.Designer.vb b/SDL/seriendruck/usrCntlFakturierung.Designer.vb index 565cfdc7..265ed183 100644 --- a/SDL/seriendruck/usrCntlFakturierung.Designer.vb +++ b/SDL/seriendruck/usrCntlFakturierung.Designer.vb @@ -25,9 +25,9 @@ Partial Class usrcntlFakturierung Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrcntlFakturierung)) Me.gb_fakturierung = New System.Windows.Forms.GroupBox() - Me.btnLieferantenrechnungen = New System.Windows.Forms.Button() Me.btnMDMSammelrechnung = New System.Windows.Forms.Button() Me.btnFakturierung = New System.Windows.Forms.Button() + Me.btnLieferantenrechnungen = New System.Windows.Forms.Button() Me.btnRechnugnsdaten = New System.Windows.Forms.Button() Me.Label3 = New System.Windows.Forms.Label() Me.Label61 = New System.Windows.Forms.Label() @@ -136,18 +136,6 @@ Partial Class usrcntlFakturierung Me.gb_fakturierung.TabIndex = 0 Me.gb_fakturierung.TabStop = False ' - 'btnLieferantenrechnungen - ' - Me.btnLieferantenrechnungen.Enabled = False - Me.btnLieferantenrechnungen.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnLieferantenrechnungen.ForeColor = System.Drawing.Color.Black - Me.btnLieferantenrechnungen.Location = New System.Drawing.Point(230, 16) - Me.btnLieferantenrechnungen.Name = "btnLieferantenrechnungen" - Me.btnLieferantenrechnungen.Size = New System.Drawing.Size(175, 44) - Me.btnLieferantenrechnungen.TabIndex = 52 - Me.btnLieferantenrechnungen.Text = "MDM Lieferantenrechnungen" - Me.btnLieferantenrechnungen.UseVisualStyleBackColor = True - ' 'btnMDMSammelrechnung ' Me.btnMDMSammelrechnung.Enabled = False @@ -172,6 +160,18 @@ Partial Class usrcntlFakturierung Me.btnFakturierung.Text = "Fakturierung" Me.btnFakturierung.UseVisualStyleBackColor = True ' + 'btnLieferantenrechnungen + ' + Me.btnLieferantenrechnungen.Enabled = False + Me.btnLieferantenrechnungen.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnLieferantenrechnungen.ForeColor = System.Drawing.Color.Black + Me.btnLieferantenrechnungen.Location = New System.Drawing.Point(230, 16) + Me.btnLieferantenrechnungen.Name = "btnLieferantenrechnungen" + Me.btnLieferantenrechnungen.Size = New System.Drawing.Size(175, 44) + Me.btnLieferantenrechnungen.TabIndex = 52 + Me.btnLieferantenrechnungen.Text = "MDM Lieferantenrechnungen" + Me.btnLieferantenrechnungen.UseVisualStyleBackColor = True + ' 'btnRechnugnsdaten ' Me.btnRechnugnsdaten.Enabled = False @@ -762,8 +762,6 @@ Partial Class usrcntlFakturierung 'cbxVorschau ' Me.cbxVorschau.AutoSize = True - Me.cbxVorschau.Checked = True - Me.cbxVorschau.CheckState = System.Windows.Forms.CheckState.Checked Me.cbxVorschau.Location = New System.Drawing.Point(491, 310) Me.cbxVorschau.Name = "cbxVorschau" Me.cbxVorschau.Size = New System.Drawing.Size(109, 17) From 30924e84a2897fd392afc6eb97a71454063c08da Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 18 Aug 2026 15:08:10 +0200 Subject: [PATCH 03/54] Preislite Hinweis --- .../rptPreislisten.Designer.vb | 60 ++++++++++++------- .../FormulareBaukasten/rptPreislisten.resx | 3 - SDL/USTV/frmMDM_USTVAntrag.vb | 2 +- 3 files changed, 40 insertions(+), 25 deletions(-) diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb index 985cd7b3..4b69ef0f 100644 --- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb +++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb @@ -33,6 +33,7 @@ Partial Public Class rptPreislisten Me.lblAGB = New GrapeCity.ActiveReports.SectionReportModel.Label() Me.lblDetails = New GrapeCity.ActiveReports.SectionReportModel.Label() Me.Line2 = New GrapeCity.ActiveReports.SectionReportModel.Line() + Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label() Me.ReportHeader1 = New GrapeCity.ActiveReports.SectionReportModel.ReportHeader() Me.txtFirmaInfo_IMEX = New GrapeCity.ActiveReports.SectionReportModel.TextBox() Me.txtFirmaInfo_ATILLA = New GrapeCity.ActiveReports.SectionReportModel.TextBox() @@ -60,13 +61,14 @@ Partial Public Class rptPreislisten Me.txtFirmenkennung = New GrapeCity.ActiveReports.SectionReportModel.TextBox() Me.SubReport = New GrapeCity.ActiveReports.SectionReportModel.SubReport() Me.SubReport2 = New GrapeCity.ActiveReports.SectionReportModel.SubReport() - Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.txtHinweis = New GrapeCity.ActiveReports.SectionReportModel.TextBox() CType(Me.txtLeistung, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TextBox3, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtNr, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtPreis, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.lblAGB, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.lblDetails, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtFirmaInfo_IMEX, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtFirmaInfo_ATILLA, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtFirmaInfo_VERAG, System.ComponentModel.ISupportInitialize).BeginInit() @@ -86,7 +88,7 @@ Partial Public Class rptPreislisten CType(Me.txtClearing, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtEnding, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtFirmenkennung, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtHinweis, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me, System.ComponentModel.ISupportInitialize).BeginInit() ' 'PageHeader @@ -266,6 +268,17 @@ Partial Public Class rptPreislisten Me.Line2.Y1 = 0.02519685! Me.Line2.Y2 = 0.02527889! ' + 'Label1 + ' + Me.Label1.Height = 0.2! + Me.Label1.HyperLink = Nothing + Me.Label1.Left = 0.005488008! + Me.Label1.Name = "Label1" + Me.Label1.Style = "font-size: 8pt" + Me.Label1.Text = "" + Me.Label1.Top = 0.01250004! + Me.Label1.Width = 3.120079! + ' 'ReportHeader1 ' Me.ReportHeader1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtFirmaInfo_IMEX, Me.txtFirmaInfo_ATILLA, Me.txtFirmaInfo_VERAG, Me.picVERAG, Me.Shape8, Me.txtHeader1, Me.txtHeader2, Me.txtLeistungUeberschrift, Me.txtPosUeberschrift, Me.txtPreisUeberschrift, Me.Line9, Me.TextBox6, Me.TextBox7}) @@ -426,8 +439,8 @@ Partial Public Class rptPreislisten 'ReportFooter1 ' Me.ReportFooter1.CanShrink = True - Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtOrtDatum, Me.Line, Me.txtUnterschrift, Me.Line1, Me.txtVorlageKredit, Me.txtZahlungsziel, Me.txtZahlungsziel2, Me.txtClearing, Me.txtEnding, Me.txtFirmenkennung, Me.SubReport, Me.SubReport2}) - Me.ReportFooter1.Height = 4.128265! + Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtOrtDatum, Me.Line, Me.txtUnterschrift, Me.Line1, Me.txtVorlageKredit, Me.txtZahlungsziel, Me.txtZahlungsziel2, Me.txtClearing, Me.txtEnding, Me.txtFirmenkennung, Me.SubReport, Me.SubReport2, Me.txtHinweis}) + Me.ReportFooter1.Height = 4.128347! Me.ReportFooter1.KeepTogether = True Me.ReportFooter1.Name = "ReportFooter1" ' @@ -494,20 +507,19 @@ Partial Public Class rptPreislisten Me.txtZahlungsziel.Height = 0.2720473! Me.txtZahlungsziel.Left = 0.01102362! Me.txtZahlungsziel.Name = "txtZahlungsziel" - Me.txtZahlungsziel.Style = "font-size: 14pt; font-weight: bold; text-align: left; ddo-char-set: 1" - Me.txtZahlungsziel.Text = "Wir haben %ZAHLUNGSZIEL% Tage Zahlungsziel" + Me.txtZahlungsziel.Style = "font-size: 12pt; font-weight: bold; text-align: left; ddo-char-set: 1" + Me.txtZahlungsziel.Text = "Wir haben %ZAHLUNGSZIEL% Tage Zahlungsziel*" Me.txtZahlungsziel.Top = 0.6728347! - Me.txtZahlungsziel.Width = 4.88189! + Me.txtZahlungsziel.Width = 6.68189! ' 'txtZahlungsziel2 ' - Me.txtZahlungsziel2.Height = 0.8244092! + Me.txtZahlungsziel2.Height = 0.3972438! Me.txtZahlungsziel2.Left = 0.01102362! Me.txtZahlungsziel2.Name = "txtZahlungsziel2" Me.txtZahlungsziel2.Style = "font-size: 10pt; font-weight: normal; text-align: left; ddo-char-set: 1" Me.txtZahlungsziel2.Text = "Bei Zahlung innerhalb %ZAHLUNGSZIEL% Tagen kann die Kreditaufwendung (%POSKREDIT%" & - ") in Abzug gebracht werden (ausgenommen bei Vorkassenberechnungen)." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behal" & - "ten uns Preisanpassungen vor." + ") in Abzug gebracht werden.* " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) Me.txtZahlungsziel2.Top = 1.011024! Me.txtZahlungsziel2.Width = 6.68189! ' @@ -566,16 +578,20 @@ Partial Public Class rptPreislisten Me.SubReport2.Top = 0.5192913! Me.SubReport2.Width = 6.722048! ' - 'Label1 + 'txtHinweis ' - Me.Label1.Height = 0.2! - Me.Label1.HyperLink = Nothing - Me.Label1.Left = 0.005488008! - Me.Label1.Name = "Label1" - Me.Label1.Style = "font-size: 8pt" - Me.Label1.Text = "" - Me.Label1.Top = 0.01250004! - Me.Label1.Width = 3.120079! + Me.txtHinweis.DataField = "" + Me.txtHinweis.DistinctField = "" + Me.txtHinweis.Height = 0.7035433! + Me.txtHinweis.Left = 0.02362205! + Me.txtHinweis.Name = "txtHinweis" + Me.txtHinweis.Style = "color: Black; font-size: 10pt; font-weight: normal; text-align: left; ddo-char-se" & + "t: 1" + Me.txtHinweis.SummaryGroup = "" + Me.txtHinweis.Text = "*ausgenommen bei Vorkassenberechnungen." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behalten uns Preisanpassungen vor." & + " " + Me.txtHinweis.Top = 1.314567! + Me.txtHinweis.Width = 6.68189! ' 'rptPreislisten ' @@ -588,7 +604,7 @@ Partial Public Class rptPreislisten Me.PageSettings.PaperHeight = 11.69291! Me.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4 Me.PageSettings.PaperWidth = 8.267716! - Me.PrintWidth = 6.733071! + Me.PrintWidth = 6.775591! Me.Sections.Add(Me.ReportHeader1) Me.Sections.Add(Me.PageHeader) Me.Sections.Add(Me.Detail) @@ -606,6 +622,7 @@ Partial Public Class rptPreislisten CType(Me.txtPreis, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.lblAGB, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.lblDetails, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtFirmaInfo_IMEX, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtFirmaInfo_ATILLA, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtFirmaInfo_VERAG, System.ComponentModel.ISupportInitialize).EndInit() @@ -625,7 +642,7 @@ Partial Public Class rptPreislisten CType(Me.txtClearing, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtEnding, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtFirmenkennung, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtHinweis, System.ComponentModel.ISupportInitialize).EndInit() CType(Me, System.ComponentModel.ISupportInitialize).EndInit() End Sub @@ -671,4 +688,5 @@ Partial Public Class rptPreislisten Public WithEvents TextBox6 As GrapeCity.ActiveReports.SectionReportModel.TextBox Public WithEvents TextBox7 As GrapeCity.ActiveReports.SectionReportModel.TextBox Private WithEvents Label1 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents txtHinweis As GrapeCity.ActiveReports.SectionReportModel.TextBox End Class diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx index 2821a777..ce843a33 100644 --- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx +++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx @@ -124,9 +124,6 @@ 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 - 0, 0 diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index bcf474fc..b1fa09ee 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -4874,7 +4874,7 @@ Public Class frmMDM_USTVAntrag ElseIf SchnittstellenNr = 9 Then LeistungsBez = "maut" 'MSE immer MAUT Else - If LeistungsBez.Contains("maut") Or LeistungsBez.Contains("toll") Then + If LeistungsBez.Contains("maut") Or LeistungsBez.Contains("toll") Or LeistungsBez.Contains("abgasplakette") Then list.Add("maut") End If If LeistungsBez.Contains("diesel") Or LeistungsBez.Contains("fuel") Then From fb0554d09d3d90b11f4534efe2fdade4a54888de Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 18 Aug 2026 15:17:06 +0200 Subject: [PATCH 04/54] preislite --- .../FormulareBaukasten/rptPreislisten.Designer.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb index 4b69ef0f..6044f8c6 100644 --- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb +++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb @@ -538,12 +538,12 @@ Partial Public Class rptPreislisten 'txtEnding ' Me.txtEnding.Height = 0.9830709! - Me.txtEnding.Left = 0! + Me.txtEnding.Left = 0.01102362! Me.txtEnding.Name = "txtEnding" Me.txtEnding.Style = "font-size: 10pt; font-weight: normal; text-align: left; ddo-char-set: 1" Me.txtEnding.Text = "Wir bedanken uns für Ihren Auftrag und freuen uns auf eine gute Zusammenarbeit." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Mit freundlichen Grüßen" - Me.txtEnding.Top = 1.835433! + Me.txtEnding.Top = 1.814567! Me.txtEnding.Width = 6.692914! ' 'txtFirmenkennung @@ -583,7 +583,7 @@ Partial Public Class rptPreislisten Me.txtHinweis.DataField = "" Me.txtHinweis.DistinctField = "" Me.txtHinweis.Height = 0.7035433! - Me.txtHinweis.Left = 0.02362205! + Me.txtHinweis.Left = 0.01102362! Me.txtHinweis.Name = "txtHinweis" Me.txtHinweis.Style = "color: Black; font-size: 10pt; font-weight: normal; text-align: left; ddo-char-se" & "t: 1" From e0e8abad98da2f1e9c40a5e39fa3f1e0d9fe8dc9 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 19 Aug 2026 10:13:08 +0200 Subject: [PATCH 05/54] SMS, Preilisten, etc. --- .../rptPreislisten.Designer.vb | 4 +- SDL/SMS/frmSendSMS.vb | 86 +++++++++---------- .../DATENSERVER/cDATENSERVER.vb | 10 ++- 3 files changed, 54 insertions(+), 46 deletions(-) diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb index 6044f8c6..a8092587 100644 --- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb +++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb @@ -588,8 +588,8 @@ Partial Public Class rptPreislisten Me.txtHinweis.Style = "color: Black; font-size: 10pt; font-weight: normal; text-align: left; ddo-char-se" & "t: 1" Me.txtHinweis.SummaryGroup = "" - Me.txtHinweis.Text = "*ausgenommen bei Vorkassenberechnungen." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behalten uns Preisanpassungen vor." & - " " + Me.txtHinweis.Text = "*ausgenommen bei Vorkassenberechnungen " & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behalten uns Preisanpassungen vor. " & + "" Me.txtHinweis.Top = 1.314567! Me.txtHinweis.Width = 6.68189! ' diff --git a/SDL/SMS/frmSendSMS.vb b/SDL/SMS/frmSendSMS.vb index 73aadd78..58bf50b4 100644 --- a/SDL/SMS/frmSendSMS.vb +++ b/SDL/SMS/frmSendSMS.vb @@ -374,55 +374,55 @@ Public Class frmSendSMS End Sub Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click - fillTXT("Va rog sa va prezentati la sediul firmei VERAG!", "TRUCK: ", template_RO, "") + fillTXT("Va rog sa va prezentati la sediul firmei VERAG!", "RO", "TRUCK: ", template_RO, "") End Sub Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click - fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Buletin/ Pasaport!", "TRUCK: ", template_RO, " cu Buletin/ Pasaport") + fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Buletin/ Pasaport!", "RO", "TRUCK: ", template_RO, " cu Buletin/ Pasaport") End Sub Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click - fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Stampila firmei!", "TRUCK: ", template_RO, " cu Stampila firmei") + fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Stampila firmei!", "RO", "TRUCK: ", template_RO, " cu Stampila firmei") End Sub Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click - fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu suma in Cash: € ", "TRUCK: ", template_RO, " cu suma in Cash: € ") + fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu suma in Cash: € ", "RO", "TRUCK: ", template_RO, " cu suma in Cash: € ") End Sub Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click - fillTXT("Моля, елате във VERAG!", "TRUCK: ", template_BG) + fillTXT("Моля, елате във VERAG!", "BG", "TRUCK: ", template_BG) End Sub Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click - fillTXT("Моля, елате във VERAG и вземете паспорта си!", "TRUCK: ", template_BG, " и вземете паспорта си") + fillTXT("Моля, елате във VERAG и вземете паспорта си!", "BG", "TRUCK: ", template_BG, " и вземете паспорта си") End Sub Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click - fillTXT("Моля, елате във VERAG и вземете печата си!", "TRUCK: ", template_BG, " и вземете печата си") + fillTXT("Моля, елате във VERAG и вземете печата си!", "BG", "TRUCK: ", template_BG, " и вземете печата си") End Sub Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click - fillTXT("Моля, елате във VERAG и вземете пари в борй в размер на: € ", "TRUCK: ", template_BG, " и вземете пари в борй в размер на: € ") + fillTXT("Моля, елате във VERAG и вземете пари в борй в размер на: € ", "BG", "TRUCK: ", template_BG, " и вземете пари в борй в размер на: € ") End Sub Private Sub Button25_Click(sender As Object, e As EventArgs) Handles Button25.Click - fillTXT("Bitte Kuvert beim Zoll holen und zu VERAG kommen!", "LKW: ", template_DE, "Bitte Kuvert beim Zoll holen!") + fillTXT("Bitte Kuvert beim Zoll holen und zu VERAG kommen!", "DE", "LKW: ", template_DE, "Bitte Kuvert beim Zoll holen!") End Sub Private Sub Button24_Click(sender As Object, e As EventArgs) Handles Button24.Click - fillTXT("Gümrükten zarfini al VERAG'a gel lütfen", "TIR: ", template_TR, "Gümrükten zarfini al gel lütfen") + fillTXT("Gümrükten zarfini al VERAG'a gel lütfen", "TR", "TIR: ", template_TR, "Gümrükten zarfini al gel lütfen") End Sub Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click - fillTXT("Idi na carinu, uzmi kovertu, i dodji u verag", "TRUCK: ", template_YU, "Idi na carinu, uzmi kovertu") + fillTXT("Idi na carinu, uzmi kovertu, i dodji u verag", "YU", "TRUCK: ", template_YU, "Idi na carinu, uzmi kovertu") End Sub Private Sub Button22_Click(sender As Object, e As EventArgs) Handles Button22.Click - fillTXT("Vă rugăm să ridicați plicul de la vamă și să veniți la VERAG", "TRUCK: ", template_RO, "Vă rugăm să ridicați plicul de la vamă și să veniți la ") + fillTXT("Vă rugăm să ridicați plicul de la vamă și să veniți la VERAG", "RO", "TRUCK: ", template_RO, "Vă rugăm să ridicați plicul de la vamă și să veniți la ") End Sub Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click - fillTXT("Molya, vzemete plika ot mitnitsata i elate vŭv VERAG", "TRUCK: ", template_BG, "Molya, vzemete plika ot mitnitsata i elate vŭv") + fillTXT("Molya, vzemete plika ot mitnitsata i elate vŭv VERAG", "BG", "TRUCK: ", template_BG, "Molya, vzemete plika ot mitnitsata i elate vŭv") End Sub Private Sub btnSndWhatsApp_Click(sender As Object, e As EventArgs) Handles btnSndWhatsApp.Click @@ -458,72 +458,72 @@ Public Class frmSendSMS End Sub Private Sub Button31_Click(sender As Object, e As EventArgs) Handles Button31.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Bitte zu VERAG kommen " & MyRichTextBox1.Text, "", template_DE, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Bitte zu VERAG kommen " & MyRichTextBox1.Text, "DE", "", template_DE, MyRichTextBox1.Text) End Sub Private Sub Button30_Click(sender As Object, e As EventArgs) Handles Button30.Click - If MyRichTextBox1.Text <> "" Then fillTXT("VERAG ofise geliniz " & MyRichTextBox1.Text, "", template_TR, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("VERAG ofise geliniz " & MyRichTextBox1.Text, "TR", "", template_TR, MyRichTextBox1.Text) End Sub Private Sub Button29_Click(sender As Object, e As EventArgs) Handles Button29.Click - If MyRichTextBox1.Text <> "" Then fillTXT("BMolim Vas dođite u VERAG " & MyRichTextBox1.Text, "", template_YU, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("BMolim Vas dođite u VERAG " & MyRichTextBox1.Text, "YU", "", template_YU, MyRichTextBox1.Text) End Sub Private Sub Button28_Click(sender As Object, e As EventArgs) Handles Button28.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Va rog sa va prezentati la sediul firmei VERAG " & MyRichTextBox1.Text, "", template_RO, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Va rog sa va prezentati la sediul firmei VERAG " & MyRichTextBox1.Text, "RO", "", template_RO, MyRichTextBox1.Text) End Sub Private Sub Button27_Click(sender As Object, e As EventArgs) Handles Button27.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Моля, елате във VERAG " & MyRichTextBox1.Text, "", template_BG, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Моля, елате във VERAG " & MyRichTextBox1.Text, "BG", "", template_BG, MyRichTextBox1.Text) End Sub Private Sub Button35_Click(sender As Object, e As EventArgs) Handles Button35.Click - fillTXT("Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!", "TIR: ", template_TR, "Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!") + fillTXT("Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!", "TR", "TIR: ", template_TR, "Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!") End Sub Private Sub Button36_Click(sender As Object, e As EventArgs) Handles Button36.Click - fillTXT("Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!", "LKW: ", template_DE, "Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!") + fillTXT("Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!", "DE", "LKW: ", template_DE, "Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!") End Sub Private Sub Button34_Click(sender As Object, e As EventArgs) Handles Button34.Click - fillTXT("Molimo uklonite pečat i odnesite ga u VERAG!", "TIR: ", template_YU, "Molimo uklonite pečat i odnesite ga u VERAG!") + fillTXT("Molimo uklonite pečat i odnesite ga u VERAG!", "YU", "TIR: ", template_YU, "Molimo uklonite pečat i odnesite ga u VERAG!") End Sub Private Sub Button33_Click(sender As Object, e As EventArgs) Handles Button33.Click - fillTXT("Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!", "TIR: ", template_RO, "Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!") + fillTXT("Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!", "RO", "TIR: ", template_RO, "Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!") End Sub Private Sub Button32_Click(sender As Object, e As EventArgs) Handles Button32.Click - fillTXT("Моля, махнете печата и го занесете в VERAG!", "TIR: ", template_BG, "Моля, махнете печата и го занесете в VERAG!") + fillTXT("Моля, махнете печата и го занесете в VERAG!", "BG", "TIR: ", template_BG, "Моля, махнете печата и го занесете в VERAG!") End Sub Private Sub Button37_Click(sender As Object, e As EventArgs) Handles Button37.Click - fillTXT("Ве молиме дојдете во VERAG!", "LKW: ", template_MK) + fillTXT("Ве молиме дојдете во VERAG!", "MK", "LKW: ", template_MK) End Sub Private Sub Button38_Click(sender As Object, e As EventArgs) Handles Button38.Click - fillTXT("Ве молиме дојдете во VERAG и понесете го вашиот пасош!", "LKW: ", template_MK) + fillTXT("Ве молиме дојдете во VERAG и понесете го вашиот пасош!", "MK", "LKW: ", template_MK) End Sub Private Sub Button39_Click(sender As Object, e As EventArgs) Handles Button39.Click - fillTXT("Ве молиме дојдете во VERAG и подигнете го печатот!", "LKW: ", template_MK, " и земи го печатот со себе!") + fillTXT("Ве молиме дојдете во VERAG и подигнете го печатот!", "MK", "LKW: ", template_MK, " и земи го печатот со себе!") End Sub Private Sub Button40_Click(sender As Object, e As EventArgs) Handles Button40.Click - fillTXT("ВВе молиме дојдете во VERAG и понесете готовина со себе: € ", "LKW: ", template_MK, " и понесете готовина со себе: € ") + fillTXT("ВВе молиме дојдете во VERAG и понесете готовина со себе: € ", "MK", "LKW: ", template_MK, " и понесете готовина со себе: € ") End Sub Private Sub Button41_Click(sender As Object, e As EventArgs) Handles Button41.Click - fillTXT("Ве молиме подигнете го пликот од царината и дојдете во VERAG!", "LKW: ", template_MK, "Ве молиме подигнете го пликот од царината!") + fillTXT("Ве молиме подигнете го пликот од царината и дојдете во VERAG!", "MK", "LKW: ", template_MK, "Ве молиме подигнете го пликот од царината!") End Sub Private Sub Button42_Click(sender As Object, e As EventArgs) Handles Button42.Click - fillTXT("Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG!", "LKW: ", template_MK, "Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG.") + fillTXT("Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG!", "MK", "LKW: ", template_MK, "Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG.") End Sub Private Sub Button43_Click(sender As Object, e As EventArgs) Handles Button43.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Ве молиме дојдете во VERAG " & MyRichTextBox1.Text, "", template_DE, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Ве молиме дојдете во VERAG " & MyRichTextBox1.Text, "MK", "", template_MK, MyRichTextBox1.Text) End Sub Private Sub Button44_Click(sender As Object, e As EventArgs) Handles Button44.Click @@ -531,55 +531,55 @@ Public Class frmSendSMS End Sub Private Sub Button47_Click(sender As Object, e As EventArgs) Handles Button47.Click - fillTXT("Please come to VERAG and bring your passport!", "LKW: ", template_EN, " and bring your passport!") + fillTXT("Please come to VERAG and bring your passport!", "EN", "LKW: ", template_EN, " and bring your passport!") End Sub Private Sub Button49_Click(sender As Object, e As EventArgs) Handles Button49.Click - fillTXT("Please come to VERAG and collect the STAMP!", "LKW: ", template_EN, " and collect the STAMP!") + fillTXT("Please come to VERAG and collect the STAMP!", "EN", "LKW: ", template_EN, " and collect the STAMP!") End Sub Private Sub Button51_Click(sender As Object, e As EventArgs) Handles Button51.Click - fillTXT("Please come to VERAG and bring cash with you: € ", "LKW: ", template_EN, " and bring cash with you: € ") + fillTXT("Please come to VERAG and bring cash with you: € ", "EN", "LKW: ", template_EN, " and bring cash with you: € ") End Sub Private Sub Button53_Click(sender As Object, e As EventArgs) Handles Button53.Click - fillTXT("Please collect the envelope from customs and come to VERAG!", "LKW: ", template_EN, "Please collect the envelope from customs!") + fillTXT("Please collect the envelope from customs and come to VERAG!", "EN", "LKW: ", template_EN, "Please collect the envelope from customs!") End Sub Private Sub Button55_Click(sender As Object, e As EventArgs) Handles Button55.Click - fillTXT("Please remove the seal(s) and take them to the VERAG office!", "LKW: ", template_EN, "Please remove the seal(s) and take them to the VERAG office!") + fillTXT("Please remove the seal(s) and take them to the VERAG office!", "EN", "LKW: ", template_EN, "Please remove the seal(s) and take them to the VERAG office!") End Sub Private Sub Button56_Click(sender As Object, e As EventArgs) Handles Button56.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Please come to VERAG " & MyRichTextBox1.Text, "", template_EN, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Please come to VERAG " & MyRichTextBox1.Text, "EN", "", template_EN, MyRichTextBox1.Text) End Sub Private Sub Button57_Click(sender As Object, e As EventArgs) Handles Button57.Click - If MyRichTextBox1.Text <> "" Then fillTXT("Si prega di recarsi presso VERAG " & MyRichTextBox1.Text, "", template_EN, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Si prega di recarsi presso VERAG " & MyRichTextBox1.Text, "IT", "", template_IT, MyRichTextBox1.Text) End Sub Private Sub Button45_Click(sender As Object, e As EventArgs) Handles Button45.Click - fillTXT("Si prega di recarsi presso VERAG!", "LKW: ", template_IT) + fillTXT("Si prega di recarsi presso VERAG!", "IT", "LKW: ", template_IT) End Sub Private Sub Button46_Click(sender As Object, e As EventArgs) Handles Button46.Click - fillTXT("Ti preghiamo di recarti presso VERAG e di portare con te il passaporto!", "LKW: ", template_IT, " e porta con te il passaporto!") + fillTXT("Ti preghiamo di recarti presso VERAG e di portare con te il passaporto!", "IT", "LKW: ", template_IT, " e porta con te il passaporto!") End Sub Private Sub Button48_Click(sender As Object, e As EventArgs) Handles Button48.Click - fillTXT("Ti preghiamo di recarti presso VERAG e ritirare il TIMBRO!", "LKW: ", template_IT, " e ritira il TIMBRO!") + fillTXT("Ti preghiamo di recarti presso VERAG e ritirare il TIMBRO!", "IT", "LKW: ", template_IT, " e ritira il TIMBRO!") End Sub Private Sub Button50_Click(sender As Object, e As EventArgs) Handles Button50.Click - fillTXT("Ti preghiamo di venire da VERAG e di portare con te dei contanti: € ", "LKW: ", template_IT, " e portate con voi dei contanti: € ") + fillTXT("Ti preghiamo di venire da VERAG e di portare con te dei contanti: € ", "IT", "LKW: ", template_IT, " e portate con voi dei contanti: € ") End Sub Private Sub Button52_Click(sender As Object, e As EventArgs) Handles Button52.Click - fillTXT("Ti preghiamo di ritirare la busta presso la dogana e di recarti presso VERAG!", "LKW: ", template_IT, "Si prega di ritirare la busta presso la dogana!") + fillTXT("Ti preghiamo di ritirare la busta presso la dogana e di recarti presso VERAG!", "IT", "LKW: ", template_IT, "Si prega di ritirare la busta presso la dogana!") End Sub Private Sub Button54_Click(sender As Object, e As EventArgs) Handles Button54.Click - fillTXT("Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!", "LKW: ", template_IT, "Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!") + fillTXT("Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!", "IT", "LKW: ", template_IT, "Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!") End Sub End Class diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 3fd10af7..2dc61798 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -337,8 +337,9 @@ Public Class cDATENSERVER Public Function insertDataToDATENSERVER(srcPath, Optional bezeichnung = "", Optional endung = "", Optional allowMsg = True, Optional coll_archiv = False) As Boolean 'Datei musss schon am Datenserver liegen, wird nciht mehr kopiert!!!!! + Try - If endung = "" Then Dim fi As New System.IO.DirectoryInfo(srcPath) : endung = fi.Extension + If endung = "" Then Dim fi As New System.IO.DirectoryInfo(srcPath) : endung = fi.Extension ' If bezeichnung = "" Then bezeichnung = System.IO.Path.GetFileName(srcPath) : endung = "" If bezeichnung = "" Then bezeichnung = da_name replaceInvalidCahr(bezeichnung) @@ -351,6 +352,13 @@ Public Class cDATENSERVER If DATA_LIST.ADD_WOcopy(srcPath, bezeichnung, "", coll_archiv) Then Return True End If + + Catch ex As Exception + + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Pfad: " & srcPath & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) + Return False + End Try + Return False End Function From ea0dc853a943b9e6b602688027965d5b7b07dba4 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 19 Aug 2026 11:13:01 +0200 Subject: [PATCH 06/54] sendSMS- fix --- SDL/SMS/frmSendSMS.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SDL/SMS/frmSendSMS.vb b/SDL/SMS/frmSendSMS.vb index 58bf50b4..24fe5528 100644 --- a/SDL/SMS/frmSendSMS.vb +++ b/SDL/SMS/frmSendSMS.vb @@ -226,7 +226,7 @@ Public Class frmSendSMS End Try End Sub - Sub fillTXT(s, Sprache, Optional lkwTxt = "LKW/TIR: ", Optional templateID = "", Optional template_ParamMFGAdditional = "", Optional useNewTemplate = False) + Sub fillTXT(s, Sprache, Optional lkwTxt = "LKW/TIR: ", Optional templateID = "", Optional template_ParamMFGAdditional = "") Dim FirmaTmp = cboFirma._value If FirmaTmp <> "VERAG" Then txtNachricht.Text = s.ToString.Replace("VERAG", FirmaTmp.Replace("FRONTOFFICE", "FRONT-OFFICE SUBEN")) @@ -245,7 +245,7 @@ Public Class frmSendSMS 'WENN WHATSAPP Me.templateID = getTemplateID(templateID, Sprache) - If useNewTemplate Then + If useNewTemplates Then template_ParamMFGAdditional = "" End If Me.template_ParamMFGAdditional = template_ParamMFGAdditional @@ -466,7 +466,7 @@ Public Class frmSendSMS End Sub Private Sub Button29_Click(sender As Object, e As EventArgs) Handles Button29.Click - If MyRichTextBox1.Text <> "" Then fillTXT("BMolim Vas dođite u VERAG " & MyRichTextBox1.Text, "YU", "", template_YU, MyRichTextBox1.Text) + If MyRichTextBox1.Text <> "" Then fillTXT("Molim Vas dođite u VERAG " & MyRichTextBox1.Text, "YU", "", template_YU, MyRichTextBox1.Text) End Sub Private Sub Button28_Click(sender As Object, e As EventArgs) Handles Button28.Click @@ -511,7 +511,7 @@ Public Class frmSendSMS End Sub Private Sub Button40_Click(sender As Object, e As EventArgs) Handles Button40.Click - fillTXT("ВВе молиме дојдете во VERAG и понесете готовина со себе: € ", "MK", "LKW: ", template_MK, " и понесете готовина со себе: € ") + fillTXT("Ве молиме дојдете во VERAG и понесете готовина со себе: € ", "MK", "LKW: ", template_MK, " и понесете готовина со себе: € ") End Sub Private Sub Button41_Click(sender As Object, e As EventArgs) Handles Button41.Click @@ -527,7 +527,7 @@ Public Class frmSendSMS End Sub Private Sub Button44_Click(sender As Object, e As EventArgs) Handles Button44.Click - fillTXT("Please come to VERAG!", "LKW: ", template_EN) + fillTXT("Please come to VERAG!", "EN", "LKW: ", template_EN) End Sub Private Sub Button47_Click(sender As Object, e As EventArgs) Handles Button47.Click From 335b441060a1007b36c03922d5a8dbed63d7371a Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 19 Aug 2026 14:03:07 +0200 Subject: [PATCH 07/54] =?UTF-8?q?whatsapp=20umbr=C3=BCcke=20werden=20entfe?= =?UTF-8?q?rnt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb index 6dd11e98..14884092 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb @@ -481,6 +481,10 @@ Public Class cSMS If Originator = "" Then Originator = absenderFirma If Originator.Length > 11 Then Originator = Originator.Substring(0, 11) + If Message.Contains(vbLf) Then + Message = Message.Replace(vbLf, " ") + End If + Dim json As New Chilkat.JsonObject '--------------------------------------------- From 05a84e20d416bc34dd183f40d91c7b64ab024791 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 19 Aug 2026 15:45:56 +0200 Subject: [PATCH 08/54] fiskaluebersicht, etc. --- SDL/kunden/usrcntlFiskaluebersicht.vb | 30 +++++++++++- VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb | 2 +- .../DATENSERVER/cDATENSERVER.vb | 47 ++++++++++++++++++- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/SDL/kunden/usrcntlFiskaluebersicht.vb b/SDL/kunden/usrcntlFiskaluebersicht.vb index e46eaa9f..98bfa2b6 100644 --- a/SDL/kunden/usrcntlFiskaluebersicht.vb +++ b/SDL/kunden/usrcntlFiskaluebersicht.vb @@ -2,6 +2,7 @@ Imports System.Text.RegularExpressions Imports VERAG_PROG_ALLGEMEIN + Public Class usrcntlFiskaluebersicht Public kdNr As Integer = -1 @@ -362,8 +363,33 @@ Public Class usrcntlFiskaluebersicht If BA IsNot Nothing Then If BA.ba_datenarchivId > 0 Then files.Add(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(BA.ba_datenarchivId)) End If + + For Each r As DataGridViewRow In dgvUnterlagen.Rows - files.Add(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(r.Cells("fka_docId").Value)) + + Dim Path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(r.Cells("fka_docId").Value) + + Dim extension As String = System.IO.Path.GetExtension(Path).ToLowerInvariant() + + Select Case extension + + Case ".pdf" + + files.Add(Path) + + Case ".png", ".jpg", ".jpeg", ".bmp", ".gif", ".tif", ".tiff" + + Dim PathTemp As String = VERAG_PROG_ALLGEMEIN.cFormularManager.convertPictureToPDF(Path) + + If Not String.IsNullOrEmpty(PathTemp) Then + files.Add(PathTemp) + End If + + End Select + + + + Next VERAG_PROG_ALLGEMEIN.cFormularManager.mergePDFs(files, outputFile) @@ -1065,7 +1091,7 @@ Public Class usrcntlFiskaluebersicht Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "FISKALKUNDENANHAENGE", fk.FK_Datum, "", "", ArtId, kdNr) - If DS.uploadDataToDATENSERVERFileDialog(, ".pdf", , "PDF") Then + If DS.uploadDataToDATENSERVERFileDialog() <> "" Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cFiskalkundenAnhaenge() ANH.fka_Art = ArtId diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb index 14884092..81f9d0c9 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb @@ -482,7 +482,7 @@ Public Class cSMS If Originator.Length > 11 Then Originator = Originator.Substring(0, 11) If Message.Contains(vbLf) Then - Message = Message.Replace(vbLf, " ") + Message = Message.Replace(vbLf, ", ") End If Dim json As New Chilkat.JsonObject diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 2dc61798..0a8d9ecd 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -1274,6 +1274,48 @@ Public Class cFormularManager End If End Sub + Public Shared Function convertPictureToPDF(path As String) As String + + If Not File.Exists(path) Then + Throw New FileNotFoundException("Picture not found.", path) + End If + + Dim outputPath As String = getTMPPath_PDF() + + Dim pdfImage As Spire.Pdf.Graphics.PdfImage = pdfImage.FromFile(path) + + Dim doc As New Spire.Pdf.PdfDocument() + + Try + Dim page As PdfPageBase = doc.Pages.Add() + + Dim pageWidth As Single = page.ActualSize.Width + Dim pageHeight As Single = page.ActualSize.Height + + 'Seitenverhältnis beibehalten + Dim scaleX As Single = pageWidth / pdfImage.Width + Dim scaleY As Single = pageHeight / pdfImage.Height + Dim scale As Single = Math.Min(scaleX, scaleY) + + Dim imageWidth As Single = pdfImage.Width * scale + Dim imageHeight As Single = pdfImage.Height * scale + + 'Bild zentrieren + Dim x As Single = (pageWidth - imageWidth) / 2 + Dim y As Single = (pageHeight - imageHeight) / 2 + + page.Canvas.DrawImage(pdfImage, 0, 0) + + doc.SaveToFile(outputPath) + + Finally + doc.Close() + End Try + + + Return outputPath + End Function + @@ -1535,6 +1577,7 @@ Public Class cFormularManager + Public Shared Function getPDFViaSpirePDF_FromURL(URL As String, Optional targetPath As String = "") As String Try If targetPath = "" Then targetPath = getTMPPath_PDF() @@ -2614,7 +2657,7 @@ Public Class DATENVERVER_OPTIONS xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "namespaceURI", fxNs) xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "prefix", "fx") - ' 🔥 property MUSS rdf:Seq sein! + ' property MUSS rdf:Seq sein! xmp.SetStructField( pdfaExt, "schemas[1]", @@ -2632,7 +2675,7 @@ Public Class DATENVERVER_OPTIONS Dim arrayPath = "schemas[1]/pdfaSchema:property" - ' 🔥 Item in rdf:Seq hinzufügen + ' Item in rdf:Seq hinzufügen xmp.AppendArrayItem( pdfaExt, arrayPath, From 6dc4001cacb2bd0f501073c7646d554b11aa7fa8 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 24 Aug 2026 08:20:51 +0200 Subject: [PATCH 09/54] =?UTF-8?q?WhatsApp,=20Anh=C3=A4nge=20SR,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/USTV/frmMDM_USTVAntrag.vb | 2 +- SDL/seriendruck/usrCntlFakturierung.vb | 7 ++++++- VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb | 4 +--- VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index b1fa09ee..7a5aff67 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -3884,7 +3884,7 @@ Public Class frmMDM_USTVAntrag If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktiveren?", vbYesNoCancel) Then + If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktivieren?", vbYesNoCancel) Then For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index ed34996f..f36dafcc 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -1135,7 +1135,12 @@ Public Class usrcntlFakturierung ANH.dsId = CInt(DS.da_id) ANH.Bezeichnung = DS.da_name RECHNUNG.ANHAENGE.Add(ANH) - Return RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID, False, False) + + If Not ANH.INSERT(RECHNUNG.RK_ID, False) Then + Return False + End If + + Return True Else MsgBox("Rechnung nicht initialisiert.") Return False diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb index 81f9d0c9..08106028 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb @@ -481,9 +481,7 @@ Public Class cSMS If Originator = "" Then Originator = absenderFirma If Originator.Length > 11 Then Originator = Originator.Substring(0, 11) - If Message.Contains(vbLf) Then - Message = Message.Replace(vbLf, ", ") - End If + Message = System.Text.RegularExpressions.Regex.Replace(Message, "\r\n|\r|\n", ", ") Dim json As New Chilkat.JsonObject diff --git a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb index 2404239b..30090b47 100644 --- a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb +++ b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb @@ -235,7 +235,7 @@ Partial Class frmDatumsabfrage Friend WithEvents btn As Button Friend WithEvents lbl As Label Friend WithEvents Label1 As Label - Friend WithEvents dtp_date As DateTimePicker + Public WithEvents dtp_date As DateTimePicker Friend WithEvents pnlKunde As Panel Public WithEvents cboKundenkreis As VERAG_PROG_ALLGEMEIN.MyComboBox Public WithEvents cbxKunden As CheckBox From cad6d52db64193acb60c92a285f5572a90631460 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 24 Aug 2026 10:07:03 +0200 Subject: [PATCH 10/54] ustva --- SDL/USTV/frmMDM_USTVAntrag.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 7a5aff67..ef608d24 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -1835,7 +1835,7 @@ Public Class frmMDM_USTVAntrag dgvUSTVPositionen.GetOrder() getValue(USTV_ANTRAG) - USTV_ANTRAG.UStVAn_letzteAenderung = Now() + 'USTV_ANTRAG.UStVAn_letzteAenderung = Now() If USTV_ANTRAG.SAVE Then init() @@ -1956,7 +1956,7 @@ Public Class frmMDM_USTVAntrag 'Ende neue Version - 'alte Version wieder aktiviert. + 'Start alte Version -------------------------------------- 'Dim dt_existingUSTVA As DataTable = SQL.loadDgvBySql("Select UStVAn_ID,UStVAn_ReDatvon, UStVAn_ReDatBis, UStVAn_AntragEingereichtAm from tblUStVAntrag where UStvAN_KuNr = " & KundenNr & " and (isnull(UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' or UStVAn_AntragArt = '') and UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & " @@ -3870,7 +3870,7 @@ Public Class frmMDM_USTVAntrag Next - If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If @@ -3906,7 +3906,7 @@ Public Class frmMDM_USTVAntrag Dim count_nichtAbgerVZ As Integer = -1 count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL")) If count_nichtAbgerVZ = 0 Then - SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If init() @@ -4000,7 +4000,7 @@ Public Class frmMDM_USTVAntrag Next - SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If From 28149cdbff1bef2e2c551c47c24b3bf7ddd0a3b8 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 25 Aug 2026 09:24:14 +0200 Subject: [PATCH 11/54] Handlingsabsrechnung, Spednich, etc. --- .../frmAbrechnungHandling.Designer.vb | 15 + .../usrCntlSpeditionsBuchSuche.Designer.vb | 263 +++--- .../usrCntlSpeditionsBuchSuche.resx | 3 - .../usrCntlSpeditionsBuchSuche.vb | 44 +- SDL/USTV/frmMDM_USTVAntrag.Designer.vb | 82 +- SDL/USTV/frmMDM_USTVAntrag.vb | 100 ++- SDL/USTV/usrCntlUSTV.vb | 125 +-- .../ustCntlUSTV_AntragPosition.Designer.vb | 2 + SDL/USTV/ustCntlUSTV_AntragPosition.vb | 786 +++++++++++++----- .../Classes/USTV/cUSTVAntrag.vb | 2 + 10 files changed, 942 insertions(+), 480 deletions(-) diff --git a/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb b/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb index 5edfdcf5..6b1a8a01 100644 --- a/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb +++ b/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb @@ -27,6 +27,7 @@ Me.Button2 = New System.Windows.Forms.Button() Me.dgvHandling = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.btnPreisliste = New System.Windows.Forms.Button() + Me.cbxDivers = New System.Windows.Forms.CheckBox() CType(Me.dgvHandling, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -82,11 +83,23 @@ Me.btnPreisliste.Text = "Preisliste" Me.btnPreisliste.UseVisualStyleBackColor = True ' + 'cbxDivers + ' + Me.cbxDivers.AutoSize = True + Me.cbxDivers.Location = New System.Drawing.Point(134, 421) + Me.cbxDivers.Name = "cbxDivers" + Me.cbxDivers.Size = New System.Drawing.Size(81, 17) + Me.cbxDivers.TabIndex = 5 + Me.cbxDivers.Text = "CheckBox1" + Me.cbxDivers.UseVisualStyleBackColor = True + Me.cbxDivers.Visible = False + ' 'frmAbrechnungHandling ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Controls.Add(Me.cbxDivers) Me.Controls.Add(Me.btnPreisliste) Me.Controls.Add(Me.dgvHandling) Me.Controls.Add(Me.Button2) @@ -97,6 +110,7 @@ Me.Text = "Handling" CType(Me.dgvHandling, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) + Me.PerformLayout() End Sub @@ -104,4 +118,5 @@ Friend WithEvents Button2 As Button Friend WithEvents dgvHandling As VERAG_PROG_ALLGEMEIN.MyDatagridview Friend WithEvents btnPreisliste As Button + Friend WithEvents cbxDivers As CheckBox End Class diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb index 62637f16..1a20f447 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb @@ -23,12 +23,12 @@ Partial Class usrCntlSpeditionsBuchSuche Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() + Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle5 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle6 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle7 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle8 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle9 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrCntlSpeditionsBuchSuche)) Me.TabPage1 = New System.Windows.Forms.TabPage() Me.cntxtCntxtSpeditionsbuch = New System.Windows.Forms.ContextMenuStrip(Me.components) @@ -48,6 +48,10 @@ Partial Class usrCntlSpeditionsBuchSuche Me.lblAbfertigungsarten = New System.Windows.Forms.Label() Me.Label17 = New System.Windows.Forms.Label() Me.pnlAnzeige = New System.Windows.Forms.Panel() + Me.btnHandling = New System.Windows.Forms.Button() + Me.cboHandlingssatz = New VERAG_PROG_ALLGEMEIN.MyComboBox() + Me.cboHandlingssatz_AMBAR = New VERAG_PROG_ALLGEMEIN.MyComboBox() + Me.btnHandling_AMBAR = New System.Windows.Forms.Button() Me.txtFiskalEndempfaenger = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.DataGridView = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.dgvLKW = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) @@ -76,11 +80,6 @@ Partial Class usrCntlSpeditionsBuchSuche Me.btnSpedBuchEinnahmen = New System.Windows.Forms.Button() Me.pnlBerichte = New System.Windows.Forms.Panel() Me.CheckBox5 = New System.Windows.Forms.CheckBox() - Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.btnHandling = New System.Windows.Forms.Button() - Me.cboHandlingssatz = New VERAG_PROG_ALLGEMEIN.MyComboBox() - Me.btnHandling_AMBAR = New System.Windows.Forms.Button() - Me.cboHandlingssatz_AMBAR = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.cbxHandlingAbrechnen = New System.Windows.Forms.CheckBox() Me.cbxDetailbericht = New System.Windows.Forms.CheckBox() Me.Button24 = New System.Windows.Forms.Button() @@ -218,6 +217,8 @@ Partial Class usrCntlSpeditionsBuchSuche Me.Label45 = New System.Windows.Forms.Label() Me.cboFilialeHandling = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.SplitContainer = New System.Windows.Forms.SplitContainer() + Me.pnlHandling = New System.Windows.Forms.Panel() + Me.pnlHandlingAmbar = New System.Windows.Forms.Panel() Me.cntxtCntxtSpeditionsbuch.SuspendLayout() Me.pnlRechts.SuspendLayout() Me.pnlAnzeige.SuspendLayout() @@ -227,7 +228,6 @@ Partial Class usrCntlSpeditionsBuchSuche Me.Panel3.SuspendLayout() Me.Panel1.SuspendLayout() Me.pnlBerichte.SuspendLayout() - Me.FlowLayoutPanel1.SuspendLayout() Me.MenuStrip1.SuspendLayout() Me.pnl.SuspendLayout() Me.MenuStrip2.SuspendLayout() @@ -243,6 +243,8 @@ Partial Class usrCntlSpeditionsBuchSuche Me.SplitContainer.Panel1.SuspendLayout() Me.SplitContainer.Panel2.SuspendLayout() Me.SplitContainer.SuspendLayout() + Me.pnlHandling.SuspendLayout() + Me.pnlHandlingAmbar.SuspendLayout() Me.SuspendLayout() ' 'TabPage1 @@ -428,6 +430,59 @@ Partial Class usrCntlSpeditionsBuchSuche Me.pnlAnzeige.Size = New System.Drawing.Size(1239, 452) Me.pnlAnzeige.TabIndex = 0 ' + 'btnHandling + ' + Me.btnHandling.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnHandling.Image = Global.SDL.My.Resources.Resources.statistik_small + Me.btnHandling.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnHandling.Location = New System.Drawing.Point(1, 2) + Me.btnHandling.Margin = New System.Windows.Forms.Padding(0) + Me.btnHandling.Name = "btnHandling" + Me.btnHandling.Size = New System.Drawing.Size(159, 28) + Me.btnHandling.TabIndex = 59 + Me.btnHandling.Text = "Handling an Außenstellen" + Me.btnHandling.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnHandling.UseVisualStyleBackColor = True + ' + 'cboHandlingssatz + ' + Me.cboHandlingssatz._allowedValuesFreiText = Nothing + Me.cboHandlingssatz._allowFreiText = False + Me.cboHandlingssatz._value = "" + Me.cboHandlingssatz.DropDownWidth = 300 + Me.cboHandlingssatz.FormattingEnabled = True + Me.cboHandlingssatz.Location = New System.Drawing.Point(1, 32) + Me.cboHandlingssatz.Name = "cboHandlingssatz" + Me.cboHandlingssatz.Size = New System.Drawing.Size(159, 21) + Me.cboHandlingssatz.TabIndex = 60 + ' + 'cboHandlingssatz_AMBAR + ' + Me.cboHandlingssatz_AMBAR._allowedValuesFreiText = Nothing + Me.cboHandlingssatz_AMBAR._allowFreiText = False + Me.cboHandlingssatz_AMBAR._value = "" + Me.cboHandlingssatz_AMBAR.DropDownWidth = 250 + Me.cboHandlingssatz_AMBAR.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.cboHandlingssatz_AMBAR.FormattingEnabled = True + Me.cboHandlingssatz_AMBAR.Location = New System.Drawing.Point(10, 38) + Me.cboHandlingssatz_AMBAR.Name = "cboHandlingssatz_AMBAR" + Me.cboHandlingssatz_AMBAR.Size = New System.Drawing.Size(128, 22) + Me.cboHandlingssatz_AMBAR.TabIndex = 53 + ' + 'btnHandling_AMBAR + ' + Me.btnHandling_AMBAR.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnHandling_AMBAR.Image = Global.SDL.My.Resources.Resources.statistik_small + Me.btnHandling_AMBAR.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnHandling_AMBAR.Location = New System.Drawing.Point(10, 9) + Me.btnHandling_AMBAR.Margin = New System.Windows.Forms.Padding(0) + Me.btnHandling_AMBAR.Name = "btnHandling_AMBAR" + Me.btnHandling_AMBAR.Size = New System.Drawing.Size(128, 28) + Me.btnHandling_AMBAR.TabIndex = 94 + Me.btnHandling_AMBAR.Text = "Handling (AMBAR)" + Me.btnHandling_AMBAR.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnHandling_AMBAR.UseVisualStyleBackColor = True + ' 'txtFiskalEndempfaenger ' Me.txtFiskalEndempfaenger._DateTimeOnly = False @@ -462,35 +517,35 @@ Partial Class usrCntlSpeditionsBuchSuche Me.DataGridView.AllowUserToDeleteRows = False Me.DataGridView.AllowUserToOrderColumns = True Me.DataGridView.AllowUserToResizeRows = False - DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.DataGridView.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle7 + DataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.DataGridView.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle4 Me.DataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.DataGridView.ContextMenuStrip = Me.cntxtCntxtSpeditionsbuch - DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.DataGridView.DefaultCellStyle = DataGridViewCellStyle8 + DataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.DataGridView.DefaultCellStyle = DataGridViewCellStyle5 Me.DataGridView.Dock = System.Windows.Forms.DockStyle.Fill Me.DataGridView.Location = New System.Drawing.Point(450, 0) Me.DataGridView.Name = "DataGridView" - DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.DataGridView.RowHeadersDefaultCellStyle = DataGridViewCellStyle9 + DataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.DataGridView.RowHeadersDefaultCellStyle = DataGridViewCellStyle6 Me.DataGridView.Size = New System.Drawing.Size(789, 262) Me.DataGridView.TabIndex = 0 ' @@ -502,35 +557,35 @@ Partial Class usrCntlSpeditionsBuchSuche Me.dgvLKW.AllowUserToOrderColumns = True Me.dgvLKW.AllowUserToResizeRows = False Me.dgvLKW.BackgroundColor = System.Drawing.Color.WhiteSmoke - DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvLKW.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1 + DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvLKW.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle7 Me.dgvLKW.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.dgvLKW.ContextMenuStrip = Me.cntxtCntxtSpeditionsbuch - DataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.dgvLKW.DefaultCellStyle = DataGridViewCellStyle2 + DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.dgvLKW.DefaultCellStyle = DataGridViewCellStyle8 Me.dgvLKW.Dock = System.Windows.Forms.DockStyle.Left Me.dgvLKW.Location = New System.Drawing.Point(0, 0) Me.dgvLKW.Name = "dgvLKW" - DataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvLKW.RowHeadersDefaultCellStyle = DataGridViewCellStyle3 + DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvLKW.RowHeadersDefaultCellStyle = DataGridViewCellStyle9 Me.dgvLKW.Size = New System.Drawing.Size(450, 262) Me.dgvLKW.TabIndex = 35 Me.dgvLKW.Visible = False @@ -851,8 +906,9 @@ Partial Class usrCntlSpeditionsBuchSuche ' Me.pnlBerichte.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.pnlBerichte.Controls.Add(Me.pnlHandlingAmbar) + Me.pnlBerichte.Controls.Add(Me.pnlHandling) Me.pnlBerichte.Controls.Add(Me.CheckBox5) - Me.pnlBerichte.Controls.Add(Me.FlowLayoutPanel1) Me.pnlBerichte.Controls.Add(Me.cbxHandlingAbrechnen) Me.pnlBerichte.Controls.Add(Me.cbxDetailbericht) Me.pnlBerichte.Controls.Add(Me.Button24) @@ -890,76 +946,12 @@ Partial Class usrCntlSpeditionsBuchSuche Me.CheckBox5.Text = "mit DL-Kosten" Me.CheckBox5.UseVisualStyleBackColor = False ' - 'FlowLayoutPanel1 - ' - Me.FlowLayoutPanel1.Controls.Add(Me.btnHandling) - Me.FlowLayoutPanel1.Controls.Add(Me.cboHandlingssatz) - Me.FlowLayoutPanel1.Controls.Add(Me.btnHandling_AMBAR) - Me.FlowLayoutPanel1.Controls.Add(Me.cboHandlingssatz_AMBAR) - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 123) - Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" - Me.FlowLayoutPanel1.Size = New System.Drawing.Size(319, 60) - Me.FlowLayoutPanel1.TabIndex = 97 - ' - 'btnHandling - ' - Me.btnHandling.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnHandling.Image = Global.SDL.My.Resources.Resources.statistik_small - Me.btnHandling.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnHandling.Location = New System.Drawing.Point(0, 0) - Me.btnHandling.Margin = New System.Windows.Forms.Padding(0) - Me.btnHandling.Name = "btnHandling" - Me.btnHandling.Size = New System.Drawing.Size(159, 28) - Me.btnHandling.TabIndex = 59 - Me.btnHandling.Text = "Handling an Außenstellen" - Me.btnHandling.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnHandling.UseVisualStyleBackColor = True - ' - 'cboHandlingssatz - ' - Me.cboHandlingssatz._allowedValuesFreiText = Nothing - Me.cboHandlingssatz._allowFreiText = False - Me.cboHandlingssatz._value = "" - Me.cboHandlingssatz.DropDownWidth = 300 - Me.cboHandlingssatz.FormattingEnabled = True - Me.cboHandlingssatz.Location = New System.Drawing.Point(3, 31) - Me.cboHandlingssatz.Name = "cboHandlingssatz" - Me.cboHandlingssatz.Size = New System.Drawing.Size(159, 21) - Me.cboHandlingssatz.TabIndex = 60 - ' - 'btnHandling_AMBAR - ' - Me.btnHandling_AMBAR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnHandling_AMBAR.Image = Global.SDL.My.Resources.Resources.statistik_small - Me.btnHandling_AMBAR.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnHandling_AMBAR.Location = New System.Drawing.Point(165, 28) - Me.btnHandling_AMBAR.Margin = New System.Windows.Forms.Padding(0) - Me.btnHandling_AMBAR.Name = "btnHandling_AMBAR" - Me.btnHandling_AMBAR.Size = New System.Drawing.Size(128, 28) - Me.btnHandling_AMBAR.TabIndex = 94 - Me.btnHandling_AMBAR.Text = "Handling (AMBAR)" - Me.btnHandling_AMBAR.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnHandling_AMBAR.UseVisualStyleBackColor = True - ' - 'cboHandlingssatz_AMBAR - ' - Me.cboHandlingssatz_AMBAR._allowedValuesFreiText = Nothing - Me.cboHandlingssatz_AMBAR._allowFreiText = False - Me.cboHandlingssatz_AMBAR._value = "" - Me.cboHandlingssatz_AMBAR.DropDownWidth = 250 - Me.cboHandlingssatz_AMBAR.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.cboHandlingssatz_AMBAR.FormattingEnabled = True - Me.cboHandlingssatz_AMBAR.Location = New System.Drawing.Point(3, 59) - Me.cboHandlingssatz_AMBAR.Name = "cboHandlingssatz_AMBAR" - Me.cboHandlingssatz_AMBAR.Size = New System.Drawing.Size(128, 22) - Me.cboHandlingssatz_AMBAR.TabIndex = 53 - ' 'cbxHandlingAbrechnen ' Me.cbxHandlingAbrechnen.AutoSize = True Me.cbxHandlingAbrechnen.BackColor = System.Drawing.Color.WhiteSmoke Me.cbxHandlingAbrechnen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.cbxHandlingAbrechnen.Location = New System.Drawing.Point(4, 107) + Me.cbxHandlingAbrechnen.Location = New System.Drawing.Point(4, 102) Me.cbxHandlingAbrechnen.Name = "cbxHandlingAbrechnen" Me.cbxHandlingAbrechnen.Size = New System.Drawing.Size(140, 17) Me.cbxHandlingAbrechnen.TabIndex = 96 @@ -3017,6 +3009,25 @@ Partial Class usrCntlSpeditionsBuchSuche Me.SplitContainer.SplitterWidth = 2 Me.SplitContainer.TabIndex = 3 ' + 'pnlHandling + ' + Me.pnlHandling.Controls.Add(Me.cboHandlingssatz) + Me.pnlHandling.Controls.Add(Me.btnHandling) + Me.pnlHandling.Location = New System.Drawing.Point(3, 126) + Me.pnlHandling.Name = "pnlHandling" + Me.pnlHandling.Size = New System.Drawing.Size(163, 58) + Me.pnlHandling.TabIndex = 99 + ' + 'pnlHandlingAmbar + ' + Me.pnlHandlingAmbar.Controls.Add(Me.cboHandlingssatz_AMBAR) + Me.pnlHandlingAmbar.Controls.Add(Me.btnHandling_AMBAR) + Me.pnlHandlingAmbar.Location = New System.Drawing.Point(3, 122) + Me.pnlHandlingAmbar.Name = "pnlHandlingAmbar" + Me.pnlHandlingAmbar.Size = New System.Drawing.Size(159, 62) + Me.pnlHandlingAmbar.TabIndex = 36 + Me.pnlHandlingAmbar.Visible = False + ' 'usrCntlSpeditionsBuchSuche ' Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None @@ -3040,7 +3051,6 @@ Partial Class usrCntlSpeditionsBuchSuche Me.Panel1.PerformLayout() Me.pnlBerichte.ResumeLayout(False) Me.pnlBerichte.PerformLayout() - Me.FlowLayoutPanel1.ResumeLayout(False) Me.MenuStrip1.ResumeLayout(False) Me.MenuStrip1.PerformLayout() Me.pnl.ResumeLayout(False) @@ -3063,6 +3073,8 @@ Partial Class usrCntlSpeditionsBuchSuche Me.SplitContainer.Panel2.ResumeLayout(False) CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainer.ResumeLayout(False) + Me.pnlHandling.ResumeLayout(False) + Me.pnlHandlingAmbar.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -3250,8 +3262,9 @@ Partial Class usrCntlSpeditionsBuchSuche Friend WithEvents cbxfehlZahlung_AVISOID As CheckBox Friend WithEvents cbxfehlZahlung_SENDUNG As CheckBox Friend WithEvents cbxHandlingAbrechnen As CheckBox - Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel Friend WithEvents CheckBox5 As CheckBox Friend WithEvents ToolStripMenuItem3 As ToolStripMenuItem Friend WithEvents btnnachLeistungsNr As Button + Friend WithEvents pnlHandling As Panel + Friend WithEvents pnlHandlingAmbar As Panel End Class diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx index b5d92bf9..3a799283 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx @@ -129,9 +129,6 @@ 546, 17 - - 431, 17 - diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb index a2ad12e3..e7262cf7 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb @@ -582,11 +582,9 @@ Public Class usrCntlSpeditionsBuchSuche For Each p In pnlBerichte.Controls p.Visible = False Next - btnHandling_AMBAR.Visible = True - cboHandlingssatz_AMBAR.Visible = True - - btnHandling.Visible = False - cboHandlingssatz.Visible = False + cbxHandlingAbrechnen.Visible = True + pnlHandling.Visible = False + pnlHandlingAmbar.Visible = True End If @@ -2930,10 +2928,9 @@ Public Class usrCntlSpeditionsBuchSuche If cbxHandlingAbrechnen.Checked Then - Select Case lstFiliale.SelectedItems.Count - Case 0 : MsgBox("Es muss mind. eine Filiale ausgewählt werden!") : Exit Sub - - End Select + 'Select Case lstFiliale.SelectedItems.Count + ' Case 0 : MsgBox("Es muss mind. eine Filiale ausgewählt werden!") : Exit Sub + 'End Select createHandlingAbrechnung(dtAbrechnung, cboHandlingssatz_AMBAR._value, cboHandlingssatz_AMBAR._value, CDate(txtAbfertDat.Text), CDate(txtAbfertDatBis.Text), anhang_path, HandlingList) End If @@ -2978,14 +2975,27 @@ Public Class usrCntlSpeditionsBuchSuche If frm.ShowDialog() = DialogResult.OK Then Dim kdNr As Integer = -1 - Select Case anFirma.Trim() - Case "UNISPED" : kdNr = 704028 - Case "IMEX" : kdNr = 550574 - Case "AMBAR" : kdNr = 725012 - Case Else - MsgBox("falscher Kunde!") - Return False - End Select + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + Select Case anFirma.Trim() + Case "UNISPED" : kdNr = 3013303 + Case "IMEX" : kdNr = 3011904 + Case "VERAG" : kdNr = 3013401 + Case Else + MsgBox("falscher Kunde!") + Return False + End Select + Else + Select Case anFirma.Trim() + Case "UNISPED" : kdNr = 704028 + Case "IMEX" : kdNr = 550574 + Case "AMBAR" : kdNr = 725012 + Case Else + MsgBox("falscher Kunde!") + Return False + End Select + + End If + Dim counter = 0 diff --git a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb index 3121ab26..22605d2e 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb @@ -27,6 +27,8 @@ Partial Class frmMDM_USTVAntrag Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.pnlBottom = New System.Windows.Forms.Panel() + Me.lblVZAenderungsdatum = New System.Windows.Forms.Label() + Me.Label20 = New System.Windows.Forms.Label() Me.pbXMLExport = New System.Windows.Forms.PictureBox() Me.btnRMCQuartal = New System.Windows.Forms.Button() Me.Label18 = New System.Windows.Forms.Label() @@ -122,7 +124,6 @@ Partial Class frmMDM_USTVAntrag Me.dgvUSTVPositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlAntragsPosDetails = New System.Windows.Forms.Panel() Me.Panel2 = New System.Windows.Forms.Panel() - Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() Me.Panel4 = New System.Windows.Forms.Panel() Me.cbxKIUploaddelete = New System.Windows.Forms.CheckBox() Me.scanUSTVA = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan() @@ -133,7 +134,6 @@ Partial Class frmMDM_USTVAntrag Me.Panel3 = New System.Windows.Forms.Panel() Me.dgvErstattungspositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlErstattungsdetails = New System.Windows.Forms.Panel() - Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() Me.Panel1 = New System.Windows.Forms.Panel() Me.Button2 = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() @@ -150,6 +150,8 @@ Partial Class frmMDM_USTVAntrag Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() + Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() Me.pnlBottom.SuspendLayout() CType(Me.pbXMLExport, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pbMail, System.ComponentModel.ISupportInitialize).BeginInit() @@ -182,6 +184,8 @@ Partial Class frmMDM_USTVAntrag ' Me.pnlBottom.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer)) Me.pnlBottom.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.pnlBottom.Controls.Add(Me.lblVZAenderungsdatum) + Me.pnlBottom.Controls.Add(Me.Label20) Me.pnlBottom.Controls.Add(Me.pbXMLExport) Me.pnlBottom.Controls.Add(Me.btnRMCQuartal) Me.pnlBottom.Controls.Add(Me.Label18) @@ -200,11 +204,31 @@ Partial Class frmMDM_USTVAntrag Me.pnlBottom.Controls.Add(Me.Button1) Me.pnlBottom.Controls.Add(Me.lbl_EintrageVerarbetiet) Me.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pnlBottom.Location = New System.Drawing.Point(0, 667) + Me.pnlBottom.Location = New System.Drawing.Point(0, 663) Me.pnlBottom.Name = "pnlBottom" Me.pnlBottom.Size = New System.Drawing.Size(1444, 100) Me.pnlBottom.TabIndex = 3 ' + 'lblVZAenderungsdatum + ' + Me.lblVZAenderungsdatum.ForeColor = System.Drawing.Color.Black + Me.lblVZAenderungsdatum.Location = New System.Drawing.Point(304, 67) + Me.lblVZAenderungsdatum.Name = "lblVZAenderungsdatum" + Me.lblVZAenderungsdatum.Size = New System.Drawing.Size(224, 19) + Me.lblVZAenderungsdatum.TabIndex = 58 + Me.lblVZAenderungsdatum.Text = "-" + Me.lblVZAenderungsdatum.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'Label20 + ' + Me.Label20.ForeColor = System.Drawing.Color.Black + Me.Label20.Location = New System.Drawing.Point(186, 67) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(112, 19) + Me.Label20.TabIndex = 57 + Me.Label20.Text = "VZ-Änderungsdatum:" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' 'pbXMLExport ' Me.pbXMLExport.Image = Global.SDL.My.Resources.Resources.xml @@ -1602,7 +1626,7 @@ Partial Class frmMDM_USTVAntrag Me.pnlBody.Controls.Add(Me.TabControl1) Me.pnlBody.Location = New System.Drawing.Point(0, 230) Me.pnlBody.Name = "pnlBody" - Me.pnlBody.Size = New System.Drawing.Size(1444, 437) + Me.pnlBody.Size = New System.Drawing.Size(1444, 433) Me.pnlBody.TabIndex = 1 ' 'TabControl1 @@ -1613,7 +1637,7 @@ Partial Class frmMDM_USTVAntrag Me.TabControl1.Location = New System.Drawing.Point(0, 0) Me.TabControl1.Name = "TabControl1" Me.TabControl1.SelectedIndex = 0 - Me.TabControl1.Size = New System.Drawing.Size(1442, 435) + Me.TabControl1.Size = New System.Drawing.Size(1442, 431) Me.TabControl1.TabIndex = 1 ' 'TabPage1 @@ -1623,7 +1647,7 @@ Partial Class frmMDM_USTVAntrag Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(1434, 409) + Me.TabPage1.Size = New System.Drawing.Size(1434, 405) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Antragspositionen" Me.TabPage1.UseVisualStyleBackColor = True @@ -1646,14 +1670,14 @@ Partial Class frmMDM_USTVAntrag Me.dgvUSTVPositionen.RowHeadersVisible = False Me.dgvUSTVPositionen.RowHeadersWidth = 62 Me.dgvUSTVPositionen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.dgvUSTVPositionen.Size = New System.Drawing.Size(1428, 134) + Me.dgvUSTVPositionen.Size = New System.Drawing.Size(1428, 130) Me.dgvUSTVPositionen.TabIndex = 0 ' 'pnlAntragsPosDetails ' Me.pnlAntragsPosDetails.Controls.Add(Me.Panel2) Me.pnlAntragsPosDetails.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pnlAntragsPosDetails.Location = New System.Drawing.Point(3, 143) + Me.pnlAntragsPosDetails.Location = New System.Drawing.Point(3, 139) Me.pnlAntragsPosDetails.Name = "pnlAntragsPosDetails" Me.pnlAntragsPosDetails.Size = New System.Drawing.Size(1428, 263) Me.pnlAntragsPosDetails.TabIndex = 2 @@ -1670,14 +1694,6 @@ Partial Class frmMDM_USTVAntrag Me.Panel2.Size = New System.Drawing.Size(1428, 263) Me.Panel2.TabIndex = 1 ' - 'UstCntlUSTV_AntragPosition1 - ' - Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" - Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) - Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 - ' 'Panel4 ' Me.Panel4.BackColor = System.Drawing.Color.WhiteSmoke @@ -1823,14 +1839,6 @@ Partial Class frmMDM_USTVAntrag Me.pnlErstattungsdetails.Size = New System.Drawing.Size(1426, 261) Me.pnlErstattungsdetails.TabIndex = 0 ' - 'UstCntlUSTV_AntragErstattungen1 - ' - Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" - Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) - Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 - ' 'Panel1 ' Me.Panel1.BackColor = System.Drawing.Color.WhiteSmoke @@ -1902,13 +1910,13 @@ Partial Class frmMDM_USTVAntrag 'AktivierenToolStripMenuItem ' Me.AktivierenToolStripMenuItem.Name = "AktivierenToolStripMenuItem" - Me.AktivierenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.AktivierenToolStripMenuItem.Size = New System.Drawing.Size(138, 22) Me.AktivierenToolStripMenuItem.Text = "aktivieren" ' 'DeaktivierenToolStripMenuItem ' Me.DeaktivierenToolStripMenuItem.Name = "DeaktivierenToolStripMenuItem" - Me.DeaktivierenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.DeaktivierenToolStripMenuItem.Size = New System.Drawing.Size(138, 22) Me.DeaktivierenToolStripMenuItem.Text = "deaktivieren" ' 'FakturiertZurücksetzenToolStripMenuItem @@ -1921,7 +1929,7 @@ Partial Class frmMDM_USTVAntrag ' Me.ncs_Belege.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem1, Me.FakturiertToolStripMenuItem}) Me.ncs_Belege.Name = "cns_vorauszahlen" - Me.ncs_Belege.Size = New System.Drawing.Size(196, 70) + Me.ncs_Belege.Size = New System.Drawing.Size(196, 48) ' 'ToolStripMenuItem1 ' @@ -1949,11 +1957,27 @@ Partial Class frmMDM_USTVAntrag Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen" Me.FakturiertToolStripMenuItem.Visible = False ' + 'UstCntlUSTV_AntragPosition1 + ' + Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" + Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) + Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 + ' + 'UstCntlUSTV_AntragErstattungen1 + ' + Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" + Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) + Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 + ' 'frmMDM_USTVAntrag ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1444, 767) + Me.ClientSize = New System.Drawing.Size(1444, 763) Me.Controls.Add(Me.pnlHeader) Me.Controls.Add(Me.pnlBody) Me.Controls.Add(Me.pnlBottom) @@ -2123,4 +2147,6 @@ Partial Class frmMDM_USTVAntrag Friend WithEvents btnSortNachLeist As Button Friend WithEvents txtVZOffen As VERAG_PROG_ALLGEMEIN.MyTextBox Friend WithEvents Label19 As Label + Friend WithEvents lblVZAenderungsdatum As Label + Friend WithEvents Label20 As Label End Class diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index ef608d24..def7a4b2 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -60,14 +60,14 @@ Public Class frmMDM_USTVAntrag lblGesamtUSteuer.Text="-" lblGesamtErstattung.Text = "-" lblDiffernezbetrag.Text = "-" + lblVZAenderungsdatum.Text = "-" btnAntrageeinarbeiten.Enabled = Not UStVAn_ID <= 0 FlowLayoutPanel.Enabled= Not UStVAn_ID <= 0 btnEintragloeschen.Enabled= Not UStVAn_ID <= 0 btnNeuerEintrag.Enabled= Not UStVAn_ID <= 0 UstCntlUSTV_AntragPosition1.Enabled= Not UStVAn_ID <= 0 - cbxLand.Visible= UStVAn_ID <= 0 - + cbxLand.Visible = UStVAn_ID <= 0 With dgvUSTVPositionen .ClearSelection() @@ -289,57 +289,68 @@ Public Class frmMDM_USTVAntrag Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL") setValue(USTV_ANTRAG) + + If USTV_ANTRAG.UStVAn_letzteAenderung IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderung) Then + lblVZAenderungsdatum.Text = CDate(USTV_ANTRAG.UStVAn_letzteAenderung).ToString + End If + + If USTV_ANTRAG.UStVAn_letzteAenderungUser IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderungUser) Then + lblVZAenderungsdatum.Text &= "(" & USTV_ANTRAG.UStVAn_letzteAenderungUser & ")" + End If + + + Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) - Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) - If KUNDE IsNot Nothing Then - pnlHeader.BackColor = Color.FromArgb(0, 54, 128) - If KUNDE.Abfertigungsverbot Then pnlHeader.BackColor = Color.IndianRed - Else - pnlHeader.BackColor = Color.FromArgb(0, 54, 128) - End If - - If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then - looked = True - Else - looked = False - End If - - lookFields(looked) - - If KUNDE_ERW IsNot Nothing Then - - If KUNDE_ERW.kde_MWStAbrechnung <> "" Then - lblMWSTAntrag.Text = KUNDE_ERW.kde_MWStAbrechnung + Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) + If KUNDE IsNot Nothing Then + pnlHeader.BackColor = Color.FromArgb(0, 54, 128) + If KUNDE.Abfertigungsverbot Then pnlHeader.BackColor = Color.IndianRed Else - lblMWSTAntrag.Text = "" + pnlHeader.BackColor = Color.FromArgb(0, 54, 128) End If - If KUNDE_ERW.kde_AnmerkungAntrag IsNot Nothing AndAlso KUNDE_ERW.kde_AnmerkungAntrag <> "" Then lblMWSTAntrag.Text &= " - " & KUNDE_ERW.kde_AnmerkungAntrag - End If - If USTV_ANTRAG.FilialenNr IsNot Nothing AndAlso USTV_ANTRAG.FilialenNr > 0 AndAlso USTV_ANTRAG.AbfertigungsNr IsNot Nothing AndAlso USTV_ANTRAG.AbfertigungsNr > 0 Then - Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) - If spedBuch.hasEntry Then + If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then + looked = True + Else + looked = False + End If - If CInt(SQL.getValueTxtBySql("select COUNT(*) from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19 and DruckDatumZeit is not null", "FMZOLL",,, "0")) > 0 Then - pb_Beleg.Visible = True + lookFields(looked) + + If KUNDE_ERW IsNot Nothing Then + + If KUNDE_ERW.kde_MWStAbrechnung <> "" Then + lblMWSTAntrag.Text = KUNDE_ERW.kde_MWStAbrechnung Else - pb_Beleg.Visible = False - + lblMWSTAntrag.Text = "" End If + If KUNDE_ERW.kde_AnmerkungAntrag IsNot Nothing AndAlso KUNDE_ERW.kde_AnmerkungAntrag <> "" Then lblMWSTAntrag.Text &= " - " & KUNDE_ERW.kde_AnmerkungAntrag + End If - Button4.Text = "Sped.-Buch anzeigen" - Button5.Visible = True + If USTV_ANTRAG.FilialenNr IsNot Nothing AndAlso USTV_ANTRAG.FilialenNr > 0 AndAlso USTV_ANTRAG.AbfertigungsNr IsNot Nothing AndAlso USTV_ANTRAG.AbfertigungsNr > 0 Then + Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) + If spedBuch.hasEntry Then + + If CInt(SQL.getValueTxtBySql("select COUNT(*) from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19 and DruckDatumZeit is not null", "FMZOLL",,, "0")) > 0 Then + pb_Beleg.Visible = True + Else + pb_Beleg.Visible = False + + End If + + Button4.Text = "Sped.-Buch anzeigen" + Button5.Visible = True + Else + Button4.Text = "Sped.-Buch eintragen" + Button5.Visible = False + End If Else Button4.Text = "Sped.-Buch eintragen" Button5.Visible = False End If - Else - Button4.Text = "Sped.-Buch eintragen" - Button5.Visible = False End If - End If - If posIndex > 0 Then + If posIndex > 0 Then posIndex = posIndex - 1 If posIndex > 0 And dgvUSTVPositionen.Rows.Count > posIndex Then dgvUSTVPositionen.ClearSelection() @@ -3401,6 +3412,11 @@ Public Class frmMDM_USTVAntrag .Columns("Berufungshöhe").HeaderText = "BE-Höhe" .Columns("Berufungsgrund").HeaderText = "BE-Grund" + + .Columns("Berufungsdatum").Visible = False + .Columns("Berufungshöhe").Visible = False + .Columns("Berufungsgrund").Visible = False + .Columns("UStVEr_VZ").HeaderText = "VZ" .Columns("UStVEr_RZVZ").HeaderText = "RZVZ" .Columns("UStVEr_Bank").HeaderText = "Bank" @@ -3870,7 +3886,7 @@ Public Class frmMDM_USTVAntrag Next - If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If @@ -3906,7 +3922,7 @@ Public Class frmMDM_USTVAntrag Dim count_nichtAbgerVZ As Integer = -1 count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL")) If count_nichtAbgerVZ = 0 Then - SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If init() @@ -4000,7 +4016,7 @@ Public Class frmMDM_USTVAntrag Next - SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderung_User = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index f29d8c7d..09776133 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -2065,7 +2065,8 @@ Public Class usrCntlUSTV .btnPreisliste.Visible = False .dgvHandling.RowHeadersVisible = False .Button2.Text = "Importieren" - + .cbxDivers.Visible = True + .cbxDivers.Text = "VZ und RZ-Beträge im Antrag erhöhen" End With frm.ShowDialog() @@ -2073,108 +2074,120 @@ Public Class usrCntlUSTV If frm.DialogResult = DialogResult.OK Then - For Each r As DataRow In dt.Rows + For Each r As DataGridViewRow In frm.dgvHandling.SelectedRows - Dim BelegNr = r.Item("BelegNr") - Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(r.Item("AntragID")) + Dim BelegNr = r.Cells("BelegNr").Value + Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(r.Cells("AntragID").Value) - If USTV_ANTRAG.hasEntry Then + If USTV_ANTRAG.hasEntry Then - If r.Item("3470").ToString.ToLower = "ja" Then + If r.Cells("3470").Value.ToString.ToLower = "ja" Then USTV_ANTRAG.UStVAn_Sicherheit = True End If + Dim updateVURZ As Boolean = False + updateVURZ = frm.cbxDivers.Checked - Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.FileName) - If Not UStV_ERS.hasEntry Then + Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.SafeFileName) + If Not UStV_ERS.hasEntry Then Dim isVZ As Boolean = False UStV_ERS.UStVEr_ID = USTV_ANTRAG.getMaxPosNrErst() UStV_ERS.UStVEr_interneNr = USTV_ANTRAG.getMaxinternePosNrErst() - UStV_ERS.UStVAn_ID = USTV_ANTRAG.UStVAn_ID - UStV_ERS.Belegnummer = BelegNr - UStV_ERS.UStVEr_USteuerbetragEUR = r.Item("BetragEUR") - UStV_ERS.UStVEr_Importfilename = fd.SafeFileName - UStV_ERS.UStVEr_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME - UStV_ERS.UStVEr_Zeitstempel = Now + UStV_ERS.UStVAn_ID = USTV_ANTRAG.UStVAn_ID + UStV_ERS.Belegnummer = BelegNr + UStV_ERS.UStVEr_USteuerbetragEUR = r.Cells("BetragEUR").Value + UStV_ERS.UStVEr_Importfilename = fd.SafeFileName + UStV_ERS.UStVEr_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME + UStV_ERS.UStVEr_Zeitstempel = Now - If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then - Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) - UStV_ERS.UStVEr_USteuerbetrag = System.Math.Round(kurs.EXCHANGE_EURTOCUR(UStV_ERS.UStVEr_USteuerbetragEUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(Belegdatum)), 2) - UStV_ERS.UStVEr_Umrechnungskurs = Math.floor((CDbl(UStV_ERS.UStVEr_USteuerbetrag) / CDbl(UStV_ERS.UStVEr_USteuerbetragEUR) * 100 + 0.5)) / 100 - Else - UStV_ERS.UStVEr_USteuerbetrag = r.Item("BetragEUR") - UStV_ERS.UStVEr_Umrechnungskurs = 1 - End If + If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then + Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) + UStV_ERS.UStVEr_USteuerbetrag = System.Math.Round(kurs.EXCHANGE_EURTOCUR(UStV_ERS.UStVEr_USteuerbetragEUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(Belegdatum)), 2) + UStV_ERS.UStVEr_Umrechnungskurs = Math.floor((CDbl(UStV_ERS.UStVEr_USteuerbetrag) / CDbl(UStV_ERS.UStVEr_USteuerbetragEUR) * 100 + 0.5)) / 100 + Else + UStV_ERS.UStVEr_USteuerbetrag = r.Cells("BetragEUR").Value + UStV_ERS.UStVEr_Umrechnungskurs = 1 + End If - Dim Bemerkung As String = "" + Dim Bemerkung As String = "" - If Not String.IsNullOrWhiteSpace(r.Item("VZ")) AndAlso IsNumeric(r.Item("VZ")) AndAlso Not IsDBNull(r.Item("VZ")) AndAlso CDbl(r.Item("VZ")) <> 0 Then - Bemerkung &= "VZ: " & CDbl(r.Item("VZ")).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode + If Not String.IsNullOrWhiteSpace(r.Cells("VZ").Value) AndAlso IsNumeric(r.Cells("VZ").Value) AndAlso Not IsDBNull(r.Cells("VZ").Value) AndAlso CDbl(r.Cells("VZ").Value) <> 0 Then + Bemerkung &= "VZ: " & CDbl(r.Cells("VZ").Value).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode isVZ = True - UStV_ERS.UStVEr_VZ = CDbl(r.Item("VZ")) + UStV_ERS.UStVEr_VZ = CDbl(r.Cells("VZ").Value) - If USTV_ANTRAG.UStVAn_VZBetrag Is Nothing OrElse IsNothing(USTV_ANTRAG.UStVAn_VZBetrag) Then + If updateVURZ Then + If USTV_ANTRAG.UStVAn_VZBetrag Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) Then USTV_ANTRAG.UStVAn_VZBetrag = UStV_ERS.UStVEr_VZ + Else + USTV_ANTRAG.UStVAn_VZBetrag += UStV_ERS.UStVEr_VZ End If - End If - If Not String.IsNullOrWhiteSpace(r.Item("Bank")) AndAlso IsNumeric(r.Item("Bank")) AndAlso Not IsDBNull(r.Item("Bank")) AndAlso CDbl(r.Item("Bank")) <> 0 Then - Bemerkung &= ", a.K. : " & CDbl(r.Item("Bank")).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode - UStV_ERS.UStVEr_Bank = CDbl(r.Item("Bank")) - End If + + End If + + If Not String.IsNullOrWhiteSpace(r.Cells("Bank").Value) AndAlso IsNumeric(r.Cells("Bank").Value) AndAlso Not IsDBNull(r.Cells("Bank")) AndAlso CDbl(r.Cells("Bank").Value) <> 0 Then + Bemerkung &= ", a.K. : " & CDbl(r.Cells("Bank").Value).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode + UStV_ERS.UStVEr_Bank = CDbl(r.Cells("Bank").Value) + End If If isVZ Then - If Not String.IsNullOrWhiteSpace(r.Item("VZDiff")) AndAlso IsNumeric(r.Item("VZDiff")) AndAlso Not IsDBNull(r.Item("VZDiff")) AndAlso CDbl(r.Item("VZDiff")) <> 0 Then - Bemerkung &= ", VZDiff: " & CDbl(r.Item("VZDiff")).ToString("N2") - UStV_ERS.UStVEr_Differenz = CDbl(r.Item("VZDiff")) + If Not String.IsNullOrWhiteSpace(r.Cells("VZDiff").Value) AndAlso IsNumeric(r.Cells("VZDiff")) AndAlso Not IsDBNull(r.Cells("VZDiff")) AndAlso CDbl(r.Cells("VZDiff").Value) <> 0 Then + Bemerkung &= ", VZDiff: " & CDbl(r.Cells("VZDiff").Value).ToString("N2") + UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("VZDiff").Value) End If Else - If Not String.IsNullOrWhiteSpace(r.Item("Diff")) AndAlso IsNumeric(r.Item("Diff")) AndAlso Not IsDBNull(r.Item("Diff")) AndAlso CDbl(r.Item("Diff")) <> 0 Then - Bemerkung &= ", Diff: " & CDbl(r.Item("Diff")).ToString("N2") - UStV_ERS.UStVEr_Differenz = CDbl(r.Item("Diff")) + If Not String.IsNullOrWhiteSpace(r.Cells("Diff").Value) AndAlso IsNumeric(r.Cells("Diff")) AndAlso Not IsDBNull(r.Cells("Diff")) AndAlso CDbl(r.Cells("Diff").Value) <> 0 Then + Bemerkung &= ", Diff: " & CDbl(r.Cells("Diff").Value).ToString("N2") + UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("Diff").Value) End If End If - If Not String.IsNullOrWhiteSpace(r.Item("RZVZ")) AndAlso IsNumeric(r.Item("RZVZ")) AndAlso Not IsDBNull(r.Item("RZVZ")) AndAlso CDbl(r.Item("RZVZ")) <> 0 Then - UStV_ERS.UStVEr_RZVZ = CDbl(r.Item("RZVZ")).ToString("N2") - If USTV_ANTRAG.UStVAn_RZBetragVZ Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_RZBetragVZ) Then - USTV_ANTRAG.UStVAn_RZBetragVZ = UStV_ERS.UStVEr_RZVZ + If Not String.IsNullOrWhiteSpace(r.Cells("RZVZ").Value) AndAlso IsNumeric(r.Cells("RZVZ")) AndAlso Not IsDBNull(r.Cells("RZVZ")) AndAlso CDbl(r.Cells("RZVZ").Value) <> 0 Then + UStV_ERS.UStVEr_RZVZ = CDbl(r.Cells("RZVZ").Value).ToString("N2") + If updateVURZ Then + If USTV_ANTRAG.UStVAn_RZBetragVZ Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_RZBetragVZ) Then + USTV_ANTRAG.UStVAn_RZBetragVZ = UStV_ERS.UStVEr_RZVZ + Else + USTV_ANTRAG.UStVAn_RZBetragVZ += UStV_ERS.UStVEr_RZVZ + End If End If + End If If Bemerkung <> "" Then - If Bemerkung.StartsWith(", ") Then - Bemerkung = Bemerkung.Remove(0, 2) - End If - - UStV_ERS.Bemerkung = Bemerkung - + If Bemerkung.StartsWith(", ") Then + Bemerkung = Bemerkung.Remove(0, 2) End If - - If UStV_ERS.SAVE() Then - USTV_ANTRAG.UStVAn_MWSTEingang_offen = True - USTV_ANTRAG.SAVE() - counter += 1 - End If + UStV_ERS.Bemerkung = Bemerkung End If + If UStV_ERS.SAVE() Then + USTV_ANTRAG.UStVAn_MWSTEingang_offen = True + USTV_ANTRAG.SAVE() + counter += 1 + End If + End If - Next - importiert = True + End If + + Next + + importiert = True MsgBox(counter & " von " & dt.Rows.Count & " erfolgreich importiert!") End If diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb index 23052ca0..2f50bf5c 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb @@ -541,6 +541,8 @@ Partial Class ustCntlUSTV_AntragPosition Me.cbxAntragsfilter._showdate = False Me.cbxAntragsfilter._value = "" Me.cbxAntragsfilter.AutoSize = True + Me.cbxAntragsfilter.Checked = True + Me.cbxAntragsfilter.CheckState = System.Windows.Forms.CheckState.Checked Me.cbxAntragsfilter.Location = New System.Drawing.Point(779, 29) Me.cbxAntragsfilter.Name = "cbxAntragsfilter" Me.cbxAntragsfilter.Size = New System.Drawing.Size(134, 17) diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 3ec96229..7dd75c86 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -5,12 +5,14 @@ Public Class ustCntlUSTV_AntragPosition Public UStV_Leist As VERAG_PROG_ALLGEMEIN.cUStVLeistender = Nothing Dim sql As New VERAG_PROG_ALLGEMEIN.SQL Public Antrag_LandKz = "" - Dim kdnr = "" Public Event EV_PREV() Public Event EV_NEXT() Public Event CHANGED(UStVPo_ID) - Dim gridAktiv = False - Dim txtChanged As Boolean = False + + Private _kundenNr As Integer + Private _gridAktiv As Boolean + Private _txtChanged As Boolean + Dim API As cATEZ_NCTS_IN Private Sub btnBildAuf_Click(sender As Object, e As EventArgs) Handles btnBildAuf.Click RaiseEvent EV_PREV() @@ -46,15 +48,17 @@ Public Class ustCntlUSTV_AntragPosition txtLand.Text = "" txtUIDNr.Text = "" - gridAktiv = True + _gridAktiv = True - Dim filter As String = "UstV_aktiv = 1" - If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then - filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'" - sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - Else - sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - End If + InitLeistenderSearchBox() + + 'Dim filter As String = "UstV_aktiv = 1" + 'If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then + ' filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'" + ' sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) + 'Else + ' sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) + 'End If End Sub @@ -62,26 +66,35 @@ Public Class ustCntlUSTV_AntragPosition initSchnittstellenNr() - gridAktiv = False + _gridAktiv = False btnLeistenderSave.Visible = False Me.Antrag_LandKz = Antrag_LandKz Me.UStV_POS = UStV_POS - Me.kdnr = kdnr + Me._kundenNr = kdnr cbxAPI.Checked = If(UStV_POS.UStVPo_Schnittstelle, False) cboSchnittstellennr.changeItem(If(UStV_POS.UStVPo_SchnittstellenNr, "")) - txtRgDatum._value = If(UStV_POS.UStVPo_ReDat, "") - txtRgNr._value = If(UStV_POS.UStVPo_ReNr, "") - lblSachbearbeiter.Text = If(UStV_POS.UStVPo_Sachbearbeiter, "") + + If UStV_POS.UStVPo_Zeitstempel IsNot Nothing Then lblAenderungsdatum.Text = CDate(UStV_POS.UStVPo_Zeitstempel).ToString("dd.MM.yyyy HH:mm") cboLeistungsgeber.Text = If(UStV_POS.UStVPo_Leistender, "") - txtLeistungsbezeichnung.Text = If(UStV_POS.UStVPo_Leistungsbezeichnung, "") - txtUSTBetrag.Text = If(UStV_POS.UStVPo_USteuerbetrag, "") - txtUmrechnungskurs.Text = If(UStV_POS.UStVPo_Umrechnungskurs, "") - txtUSTBetragEUR.Text = If(UStV_POS.UStVPo_USteuerbetragEUR, "") - txtNettobetrag.Text = If(UStV_POS.UStVPo_Nettobetrag, "") - txtNettobetragEUR.Text = If(UStV_POS.UStVPo_NettobetragEUR, "") + + + txtRgDatum._value = ValueOrEmpty(UStV_POS.UStVPo_ReDat) + txtRgNr._value = ValueOrEmpty(UStV_POS.UStVPo_ReNr) + txtLeistungsbezeichnung.Text = ValueOrEmpty(UStV_POS.UStVPo_Leistungsbezeichnung) + txtUSTBetrag.Text = ValueOrEmpty(UStV_POS.UStVPo_USteuerbetrag) + txtUmrechnungskurs.Text = ValueOrEmpty(UStV_POS.UStVPo_Umrechnungskurs) + txtUSTBetragEUR.Text = ValueOrEmpty(UStV_POS.UStVPo_USteuerbetragEUR) + txtNettobetrag.Text = ValueOrEmpty(UStV_POS.UStVPo_Nettobetrag) + txtNettobetragEUR.Text = ValueOrEmpty(UStV_POS.UStVPo_NettobetragEUR) + lblSachbearbeiter.Text = ValueOrEmpty(UStV_POS.UStVPo_Sachbearbeiter) sbLeistender.Text = UStV_Leitender.UStV_Leistender + If IsNumeric(UStV_Leitender.UStV_LeistenderId) Then + sbLeistender._value = UStV_Leitender.UStV_LeistenderId + End If + + sbLeistender_VALUE_CHANGED() loadChangedDSToPanel(UStV_Leitender, True) API = atez_api @@ -131,17 +144,9 @@ Public Class ustCntlUSTV_AntragPosition scanUSTVFABest.INIT(kdnr, "KUNDENDATEN", "FA_Bestaetigungen") scanUSTVVollmachten.INIT(kdnr, "KUNDENDATEN", "USTV_Vollmachten") - Dim filter As String = "UstV_aktiv = 1" - If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then - filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'" - sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] ) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - Else - sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - End If + InitLeistenderSearchBox() - 'sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] + ' ' + isnull([UstV_Leistender_UstNr],'')) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, "UstV_aktiv = 1", "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - - gridAktiv = True + _gridAktiv = True End Sub Sub getValues(ByRef UStV_POS As cUStVPositionen, ByRef save As Boolean) @@ -163,27 +168,45 @@ Public Class ustCntlUSTV_AntragPosition lblWarning.Text = "Rechnungsdatum muss ausgefüllt werden." save = False End If - If txtUSTBetrag.Text <> "" Then - UStV_POS.UStVPo_USteuerbetrag = txtUSTBetrag.Text.Replace(",", ".") - Else - lblWarning.Text = "UST-Betrag muss ausgefüllt werden." + + + + Dim ustBetrag As Decimal + + If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then + lblWarning.Text = "UST-Betrag ist ungültig." save = False - End If - - If txtUSTBetragEUR.Text <> "" Then - UStV_POS.UStVPo_USteuerbetragEUR = txtUSTBetragEUR.Text.Replace(",", ".") Else + UStV_POS.UStVPo_USteuerbetrag = ustBetrag + End If + + + Dim ustBetragEUR As Decimal + + If Not TryGetDecimal(txtUSTBetragEUR.Text, ustBetragEUR) Then + lblWarning.Text = "UST-Betrag ist ungültig." save = False + Else + UStV_POS.UStVPo_USteuerbetragEUR = ustBetragEUR End If - If txtNettobetrag.Text <> "" Then - UStV_POS.UStVPo_Nettobetrag = txtNettobetrag.Text.Replace(",", ".") + + + Dim Nettobetrag As Decimal + + If TryGetDecimal(txtNettobetrag.Text, Nettobetrag) Then + UStV_POS.UStVPo_Nettobetrag = Nettobetrag End If - If txtNettobetragEUR.Text <> "" Then - UStV_POS.UStVPo_NettobetragEUR = txtNettobetragEUR.Text.Replace(",", ".") + Dim NettobetragEUR As Decimal + + If TryGetDecimal(txtNettobetragEUR.Text, NettobetragEUR) Then + UStV_POS.UStVPo_NettobetragEUR = NettobetragEUR End If + + + If txtLeistungsbezeichnung.Text <> "" Then UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text Else @@ -192,7 +215,12 @@ Public Class ustCntlUSTV_AntragPosition End If If Not txtUmrechnungskurs.Text = "" Then If txtUmrechnungskurs.Text <> "" Then - UStV_POS.UStVPo_Umrechnungskurs = txtUmrechnungskurs.Text.Replace(",", ".") + + Dim Umrechnungskurs As Decimal + If TryGetDecimal(txtUmrechnungskurs.Text, Umrechnungskurs) Then + UStV_POS.UStVPo_Umrechnungskurs = Umrechnungskurs + End If + End If Else lblWarning.Text = "Umrechnungskurs muss ausgefüllt werden." @@ -214,14 +242,25 @@ Public Class ustCntlUSTV_AntragPosition End If UStV_POS.UStVPo_Schnittstelle = cbxAPI.Checked - - UStV_POS.UStVPo_SchnittstellenNr = IIf(cboSchnittstellennr.SelectedItem IsNot Nothing, cboSchnittstellennr._value, -1) - + UStV_POS.UStVPo_SchnittstellenNr = If(cboSchnittstellennr.SelectedItem IsNot Nothing, cboSchnittstellennr._value, -1) UStV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME UStV_POS.UStVPo_Zeitstempel = Now End Sub + Private Sub InitLeistenderSearchBox() + + Dim filter As String = "UstV_aktiv = 1" + + If cbxAntragsfilter.Checked AndAlso Not String.IsNullOrWhiteSpace(Antrag_LandKz) Then + filter &= " AND LEFT(UstV_Leistender_UstNr, 2) = '" & + Antrag_LandKz.Replace("'", "''") & "'" + End If + + sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender],[UStV_Leistender] AS Leistender,[UstV_Leistender_PLZ] AS PLZ,([UstV_Leistender_Strasse] + ' ' + [UstV_Leistender_StrasseNr]) AS Strasse,[UstV_Leistender_Stadt] AS Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) + + End Sub + Private Sub ustCntlUSTV_AntragPosition_KeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown If e.KeyValue = Keys.PageDown Then RaiseEvent EV_NEXT() @@ -239,29 +278,59 @@ Public Class ustCntlUSTV_AntragPosition Return False End Function - Private Sub txtBestellung_TextChanged(sender As Object, e As EventArgs) Handles txtLeistungsbezeichnung.TextChanged, txtRgDatum.TextChanged, txtRgNr.TextChanged, txtUSTBetrag.TextChanged, txtUmrechnungskurs.TextChanged, txtUSTBetragEUR.TextChanged - - If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub - - If gridAktiv And Me.FindForm IsNot Nothing Then - - 'If sender Is txtLieferung Then - ' If Not PROG.checkSDLNrPartnerKdNr(kdNr, SDLNr) Then MsgBox("Bitte geben Sie die Partner-Kundennummer im Kundenblatt oder im FM-ZOLL ein!") - 'End If - - If sender Is cboLeistungsgeber AndAlso cboLeistungsgeber.SelectedItem <> "" Then - 'UStV_POS.UStVPo_Leistender = cboLeistungsgeber.SelectedItem - 'values_changed() - - Else - 'txtChanged = True - End If + Private Shared Function ValueOrEmpty(value As Object) As String + If value Is Nothing OrElse IsDBNull(value) Then + Return String.Empty End If + Return Convert.ToString(value) + End Function + + Private Function RoundCurrency(value As Decimal) As Decimal + + Return Decimal.Round(value, 2, MidpointRounding.AwayFromZero) + End Function + + Private Function TryGetDecimal(text As String, ByRef value As Decimal) As Boolean + + text = text.Trim() + + If text = "" Then + Return False + End If + + Return Decimal.TryParse( + text, + Globalization.NumberStyles.Number, + Globalization.CultureInfo.CurrentCulture, + value + ) + + End Function + + 'Private Sub txtBestellung_TextChanged(sender As Object, e As EventArgs) Handles txtLeistungsbezeichnung.TextChanged, txtRgDatum.TextChanged, txtRgNr.TextChanged, txtUSTBetrag.TextChanged, txtUmrechnungskurs.TextChanged, txtUSTBetragEUR.TextChanged + + ' If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub + + ' If _gridAktiv And Me.FindForm IsNot Nothing Then + + ' 'If sender Is txtLieferung Then + ' ' If Not PROG.checkSDLNrPartnerKdNr(kdNr, SDLNr) Then MsgBox("Bitte geben Sie die Partner-Kundennummer im Kundenblatt oder im FM-ZOLL ein!") + ' 'End If + + ' If sender Is cboLeistungsgeber AndAlso cboLeistungsgeber.SelectedItem <> "" Then + ' 'UStV_POS.UStVPo_Leistender = cboLeistungsgeber.SelectedItem + ' 'values_changed() + + ' Else + ' 'txtChanged = True + ' End If + ' End If - End Sub + + 'End Sub Sub values_changed() lblSachbearbeiter.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME @@ -307,25 +376,9 @@ Public Class ustCntlUSTV_AntragPosition End If - If Not initial Then - 'Listener für Änderungen im Detail-Panel - If Not adressLoadedByLeistender Then - For Each c As Control In pnlAdresse.Controls - - If TypeOf (c) Is TextBox Then - AddHandler CType(c, TextBox).TextChanged, AddressOf SomethingChanged - End If - If TypeOf (c) Is MyComboBox Then - AddHandler CType(c, MyComboBox).TextChanged, AddressOf SomethingChanged - End If - - - Next - Else - btnLeistenderSave.Visible = False - End If - Else + SetAddressChangeHandlers(Not initial AndAlso Not adressLoadedByLeistender) + If initial OrElse adressLoadedByLeistender Then btnLeistenderSave.Visible = False End If @@ -410,10 +463,6 @@ Public Class ustCntlUSTV_AntragPosition End If - End Sub - - Private Sub cboLeistungsgeber_Enter(sender As Object, e As EventArgs) Handles cboLeistungsgeber.Enter - End Sub Private Sub cboLeistungsgeber_DropDown(sender As Object, e As EventArgs) Handles cboLeistungsgeber.DropDown @@ -463,179 +512,472 @@ Public Class ustCntlUSTV_AntragPosition End Sub Private Sub txtUSTBetrag_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtUSTBetrag.PreviewKeyDown, txtUSTBetragEUR.PreviewKeyDown, txtRgDatum.PreviewKeyDown, txtRgNr.PreviewKeyDown, txtUmrechnungskurs.PreviewKeyDown, sbLeistender.PreviewKeyDown, txtLeistungsbezeichnung.PreviewKeyDown - If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub - If gridAktiv And Me.FindForm IsNot Nothing Then + If e.KeyValue <> Keys.Tab Then Return + If Not CanEdit() Then Return + If Not _gridAktiv OrElse Me.FindForm Is Nothing Then Return - ' Eingabeprüfung - If e.KeyValue = 9 Then + lblWarning.Text = "" - lblWarning.Text = "" - If sender Is txtUSTBetrag Or sender Is txtUSTBetragEUR Or sender Is txtUmrechnungskurs Then + Select Case True - If txtUSTBetrag.Text = "" Then - lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben." - Exit Sub - End If + Case sender Is txtUSTBetrag + HandleVatAmountChanged() - End If + Case sender Is txtUSTBetragEUR + HandleVatAmountEurChanged() + + Case sender Is txtUmrechnungskurs + HandleExchangeRateChanged() + + Case sender Is txtRgDatum + HandleInvoiceDateChanged() + + Case sender Is txtLeistungsbezeichnung + HandleServiceDescriptionChanged() + + Case sender Is sbLeistender + HandleSupplierChanged() + + End Select + + SaveIfChanged() + + 'If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub + + 'If _gridAktiv And Me.FindForm IsNot Nothing Then + + ' ' Eingabeprüfung + ' If e.KeyValue = 9 Then + + ' lblWarning.Text = "" + ' If sender Is txtUSTBetrag Or sender Is txtUSTBetragEUR Or sender Is txtUmrechnungskurs Then + + ' If txtUSTBetrag.Text = "" Then + ' lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben." + ' Exit Sub + ' End If + + ' End If - If sender Is txtUSTBetrag Then - If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs.Text) Then + ' If sender Is txtUSTBetrag Then + ' If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs.Text) Then - If CDbl(UStV_POS.UStVPo_USteuerbetrag) <> CDbl(txtUSTBetrag.Text) OrElse UStV_POS.UStVPo_USteuerbetrag Is Nothing Then - 'Umrechnung bei Währung <> EUR im Antrag! + ' If UStV_POS.UStVPo_USteuerbetrag Is Nothing OrElse CDbl(UStV_POS.UStVPo_USteuerbetrag) <> CDbl(txtUSTBetrag.Text) Then + ' 'Umrechnung bei Währung <> EUR im Antrag! - Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID) + ' Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID) - If antr.UStVAn_Währungscode <> "EUR" AndAlso (IsDate(UStV_POS.UStVPo_ReDat) OrElse (txtRgDatum.Text <> "" AndAlso IsDate(txtRgDatum.Text))) Then - If txtUmrechnungskurs.Text = 1 Or txtUmrechnungskurs.Text = "" Then - Dim kurs As New cEZB_Waehrungskurse(antr.UStVAn_Währungscode) + ' If antr.UStVAn_Währungscode <> "EUR" AndAlso (IsDate(UStV_POS.UStVPo_ReDat) OrElse (txtRgDatum.Text <> "" AndAlso IsDate(txtRgDatum.Text))) Then + ' If txtUmrechnungskurs.Text = 1 Or txtUmrechnungskurs.Text = "" Then + ' Dim kurs As New cEZB_Waehrungskurse(antr.UStVAn_Währungscode) - If IsDate(UStV_POS.UStVPo_ReDat) Then - txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(UStV_POS.UStVPo_ReDat)) - ElseIf IsDate(txtRgDatum.Text) Then - txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(txtRgDatum.Text)) - Else - txtUmrechnungskurs.Text = kurs.ezb_kurs - End If + ' If IsDate(UStV_POS.UStVPo_ReDat) Then + ' txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(UStV_POS.UStVPo_ReDat)) + ' ElseIf IsDate(txtRgDatum.Text) Then + ' txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(txtRgDatum.Text)) + ' Else + ' txtUmrechnungskurs.Text = kurs.ezb_kurs + ' End If - End If + ' End If - End If + ' End If - txtUSTBetragEUR.Text = Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 + ' txtUSTBetragEUR.Text = RoundCurrency(txtUSTBetrag.Text / txtUmrechnungskurs.Text).ToString() - If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 + ' If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = RoundCurrency(txtNettobetrag.Text / txtUmrechnungskurs.Text).ToString() 'Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 - txtChanged = True - End If + ' _txtChanged = True + ' End If - End If + ' End If - ElseIf sender Is txtUSTBetragEUR Then + ' ElseIf sender Is txtUSTBetragEUR Then - 'so herum nicht umrechnen!!!! - 'If IsNumeric(txtUSTBetragEUR._value) AndAlso IsNumeric(txtUmrechnungskurs._value) Then - ' txtUSTBetrag.Text = Math.Floor((txtUSTBetragEUR._value * txtUmrechnungskurs._value) * 100 + 0.5) / 100 - ' 'values_changed() - 'End If + ' 'so herum nicht umrechnen!!!! + ' 'If IsNumeric(txtUSTBetragEUR._value) AndAlso IsNumeric(txtUmrechnungskurs._value) Then + ' ' txtUSTBetrag.Text = Math.Floor((txtUSTBetragEUR._value * txtUmrechnungskurs._value) * 100 + 0.5) / 100 + ' ' 'values_changed() + ' 'End If - If IsNumeric(txtUSTBetragEUR.Text) AndAlso IsNumeric(txtUSTBetrag.Text) Then + ' If IsNumeric(txtUSTBetragEUR.Text) AndAlso IsNumeric(txtUSTBetrag.Text) Then - If CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing Then + ' If UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) Then - Dim zahl1 = CDbl(txtUSTBetrag.Text) / CDbl(txtUSTBetragEUR.Text) + ' 'If CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing Then - txtUmrechnungskurs.Text = Math.Round(zahl1, 2) - txtChanged = True - End If - End If + ' Dim zahl1 = CDbl(txtUSTBetrag.Text) / CDbl(txtUSTBetragEUR.Text) - ElseIf sender Is txtUmrechnungskurs Then + ' txtUmrechnungskurs.Text = Math.Round(zahl1, 2) + ' _txtChanged = True + ' End If + ' End If + + ' ElseIf sender Is txtUmrechnungskurs Then - If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs._value) Then + ' If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs._value) Then - If UStV_POS.UStVPo_Umrechnungskurs <> txtUmrechnungskurs.Text.Replace(",", ".") OrElse UStV_POS.UStVPo_Umrechnungskurs Is Nothing Then + ' If UStV_POS.UStVPo_Umrechnungskurs <> txtUmrechnungskurs.Text.Replace(",", ".") OrElse UStV_POS.UStVPo_Umrechnungskurs Is Nothing Then - txtUSTBetragEUR.Text = Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 - If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 - txtChanged = True - End If - End If + ' txtUSTBetragEUR.Text = RoundCurrency(txtUSTBetrag.Text / txtUmrechnungskurs.Text).ToString() ' Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 + ' If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = RoundCurrency(txtNettobetrag.Text / txtUmrechnungskurs.Text).ToString() 'Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100 + ' _txtChanged = True + ' End If + ' End If - 'ElseIf sender Is sbLeistender Then + ' 'ElseIf sender Is sbLeistender Then - ' If UStV_Leist.hasEntry Then + ' ' If UStV_Leist.hasEntry Then - ' UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender - ' If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId - ' txtChanged = True + ' ' UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender + ' ' If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId + ' ' txtChanged = True - ' End If + ' ' End If - ElseIf sender Is txtRgDatum Then + ' ElseIf sender Is txtRgDatum Then - If txtRgDatum.Text <> "" Then - txtRgDatum.Text = txtRgDatum.Text.Replace("-", ".") - txtRgDatum.Text = txtRgDatum.Text.Replace(",", ".") + ' If txtRgDatum.Text <> "" Then + ' txtRgDatum.Text = txtRgDatum.Text.Replace("-", ".") + ' txtRgDatum.Text = txtRgDatum.Text.Replace(",", ".") - Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID) + ' Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID) - If IsDate(txtRgDatum.Text) AndAlso ((CDate(txtRgDatum.Text) > antr.UStVAn_ReDatBis) OrElse (CDate(txtRgDatum.Text) < antr.UStVAn_ReDatVon)) Then - MsgBox("Rechnungsdatum " & CDate(txtRgDatum.Text) & " darf nicht außerhalb der Antragsperiode liegen!") - Else - txtChanged = True - End If - End If + ' If IsDate(txtRgDatum.Text) AndAlso ((CDate(txtRgDatum.Text) > antr.UStVAn_ReDatBis) OrElse (CDate(txtRgDatum.Text) < antr.UStVAn_ReDatVon)) Then + ' MsgBox("Rechnungsdatum " & CDate(txtRgDatum.Text) & " darf nicht außerhalb der Antragsperiode liegen!") + ' Else + ' _txtChanged = True + ' End If + ' End If - ElseIf sender Is txtLeistungsbezeichnung Then + ' ElseIf sender Is txtLeistungsbezeichnung Then - 'If UStV_POS.UStVPo_Leistungsbezeichnung <> txtLeistungsbezeichnung.Text Then - 'UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text - txtChanged = True - 'End If + ' 'If UStV_POS.UStVPo_Leistungsbezeichnung <> txtLeistungsbezeichnung.Text Then + ' 'UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text + ' _txtChanged = True + ' 'End If - ElseIf sender Is sbLeistender Then - If sbLeistender.Text <> "" Then - If sbLeistender.Text IsNot Nothing AndAlso sbLeistender.Text <> "" Then - If IsNumeric(sbLeistender.Text) Then - If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_POS.UStVPo_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_LeistenderId <> sbLeistender.Text) Then - 'speichern der Änderung nur, wenn 1. Leistender gelöscht wird. - txtChanged = True - ElseIf UStV_Leist Is Nothing Then - txtChanged = True - End If + ' ElseIf sender Is sbLeistender Then + ' If sbLeistender.Text <> "" Then + ' If sbLeistender.Text IsNot Nothing AndAlso sbLeistender.Text <> "" Then + ' If IsNumeric(sbLeistender.Text) Then + ' If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_POS.UStVPo_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_LeistenderId <> sbLeistender.Text) Then + ' 'speichern der Änderung nur, wenn 1. Leistender gelöscht wird. + ' _txtChanged = True + ' ElseIf UStV_Leist Is Nothing Then + ' _txtChanged = True + ' End If - UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(sbLeistender.Text)) - Else - If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_Leist.UStV_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_Leistender <> sbLeistender.Text) Then - txtChanged = True - ElseIf UStV_Leist Is Nothing Then - txtChanged = True - End If - End If + ' UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(sbLeistender.Text)) + ' Else + ' If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_Leist.UStV_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_Leistender <> sbLeistender.Text) Then + ' _txtChanged = True + ' ElseIf UStV_Leist Is Nothing Then + ' _txtChanged = True + ' End If + ' End If - UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(sbLeistender.Text) - loadChangedDSToPanel(UStV_Leist) - Else - If UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0 Then - loadChangedDSToPanel(Nothing, True) - End If + ' UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(sbLeistender.Text) + ' loadChangedDSToPanel(UStV_Leist) + ' Else + ' If UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0 Then + ' loadChangedDSToPanel(Nothing, True) + ' End If - End If - End If - 'MsgBox() - End If + ' End If + ' End If + ' 'MsgBox() + ' End If + ' End If + + ' If _txtChanged Then + ' values_changed() + ' _txtChanged = False + ' End If + + + 'End If + + End Sub + + Private Function CanEdit() As Boolean + + Return VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) + + End Function + + Private Sub HandleVatAmountChanged() + + If String.IsNullOrWhiteSpace(txtUSTBetrag.Text) Then + lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben." + Return + End If + + Dim ustBetrag As Decimal + Dim umrechnungskurs As Decimal + + If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then + lblWarning.Text = "USt-Betrag ist ungültig." + Return + End If + + If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) OrElse + umrechnungskurs <= 0 Then + + LoadExchangeRate() + + If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) OrElse + umrechnungskurs <= 0 Then + + lblWarning.Text = "Umrechnungskurs ist ungültig." + Return + End If - If txtChanged Then - values_changed() - txtChanged = False - End If - - End If + Dim oldValueChanged As Boolean = + UStV_POS Is Nothing OrElse + UStV_POS.UStVPo_USteuerbetrag Is Nothing OrElse + Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetrag) <> ustBetrag + + If Not oldValueChanged Then Return + + txtUSTBetragEUR.Text = + RoundCurrency(ustBetrag / umrechnungskurs).ToString() + + Dim nettoBetrag As Decimal + + If TryGetDecimal(txtNettobetrag.Text, nettoBetrag) Then + txtNettobetragEUR.Text = + RoundCurrency(nettoBetrag / umrechnungskurs).ToString() + End If + + _txtChanged = True + + End Sub + + Private Sub HandleVatAmountEurChanged() + + Dim ustBetragEUR As Decimal + Dim ustBetrag As Decimal + + If Not TryGetDecimal(txtUSTBetragEUR.Text, ustBetragEUR) Then + Return + End If + + If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then + Return + End If + + If ustBetragEUR = 0 Then + lblWarning.Text = "USt-Betrag EUR darf nicht 0 sein." + Return + End If + + Dim oldValueChanged As Boolean = + UStV_POS Is Nothing OrElse + UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse + Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetragEUR) <> ustBetragEUR + + If Not oldValueChanged Then Return + + Dim kurs As Decimal = + RoundCurrency(ustBetrag / ustBetragEUR) + + txtUmrechnungskurs.Text = kurs.ToString() + + _txtChanged = True + + End Sub + + Private Sub HandleExchangeRateChanged() + + Dim ustBetrag As Decimal + Dim umrechnungskurs As Decimal + + If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then + Return + End If + + If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) Then + lblWarning.Text = "Umrechnungskurs ist ungültig." + Return + End If + + If umrechnungskurs <= 0 Then + lblWarning.Text = "Umrechnungskurs muss größer als 0 sein." + Return + End If + + Dim oldKurs As Decimal + + If UStV_POS IsNot Nothing AndAlso UStV_POS.UStVPo_Umrechnungskurs IsNot Nothing AndAlso TryGetDecimal(Convert.ToString(UStV_POS.UStVPo_Umrechnungskurs), oldKurs) Then + + If oldKurs = umrechnungskurs Then + Return + End If + + End If + + txtUSTBetragEUR.Text = + RoundCurrency(ustBetrag / umrechnungskurs).ToString() + + Dim nettoBetrag As Decimal + + If TryGetDecimal(txtNettobetrag.Text, nettoBetrag) Then + txtNettobetragEUR.Text = + RoundCurrency(nettoBetrag / umrechnungskurs).ToString() + End If + + _txtChanged = True + + End Sub + + Private Sub HandleInvoiceDateChanged() + + If String.IsNullOrWhiteSpace(txtRgDatum.Text) Then + Return + End If + + txtRgDatum.Text = + txtRgDatum.Text.Replace("-", ".").Replace(",", ".") + + Dim rechnungsDatum As DateTime + + If Not DateTime.TryParse(txtRgDatum.Text, rechnungsDatum) Then + lblWarning.Text = "Rechnungsdatum ist ungültig." + Return + End If + + Dim antrag As New cUSTVAntrag(UStV_POS.UStVAn_ID) + + If rechnungsDatum > antrag.UStVAn_ReDatBis OrElse + rechnungsDatum < antrag.UStVAn_ReDatVon Then + + MsgBox("Rechnungsdatum " & rechnungsDatum.ToString("dd.MM.yyyy") & " darf nicht außerhalb der Antragsperiode liegen!") + + Return + End If + + _txtChanged = True + + End Sub + + Private Sub HandleServiceDescriptionChanged() + + If String.IsNullOrWhiteSpace(txtLeistungsbezeichnung.Text) Then + lblWarning.Text = "Leistungsbez. muss ausgefüllt werden." + Return + End If + + _txtChanged = True + + End Sub + + Private Sub HandleSupplierChanged() + + Dim supplierText As String = sbLeistender.Text.Trim() + + If String.IsNullOrWhiteSpace(supplierText) Then + + If UStV_POS IsNot Nothing AndAlso + (UStV_POS.UStVPo_Leistender <> "" OrElse + UStV_POS.UStVPo_LeistenderId <> 0) Then + + UStV_Leist = Nothing + loadChangedDSToPanel(Nothing, True) + _txtChanged = True + + End If + + Return + + End If + + Dim supplier As VERAG_PROG_ALLGEMEIN.cUStVLeistender + + If IsNumeric(supplierText) Then + supplier = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(supplierText)) + Else + supplier = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(supplierText) + End If + + If supplier Is Nothing Then Return + + Dim changed As Boolean = False + + If UStV_Leist Is Nothing Then + changed = True + ElseIf UStV_POS Is Nothing Then + changed = True + ElseIf UStV_POS.UStVPo_Leistender <> supplier.UStV_Leistender Then + changed = True + ElseIf UStV_POS.UStVPo_LeistenderId <> supplier.UStV_LeistenderId Then + changed = True + End If + + UStV_Leist = supplier + + loadChangedDSToPanel(UStV_Leist) + + If changed Then + _txtChanged = True + End If + + End Sub + + Private Sub LoadExchangeRate() + + If UStV_POS Is Nothing Then Return + + Dim antrag As New cUSTVAntrag(UStV_POS.UStVAn_ID) + + If antrag.UStVAn_Währungscode = "EUR" Then + txtUmrechnungskurs.Text = "1" + Return + End If + + Dim rechnungsDatum As DateTime + + If DateTime.TryParse(txtRgDatum.Text, rechnungsDatum) Then + + Dim kurs As New cEZB_Waehrungskurse(antrag.UStVAn_Währungscode) + + txtUmrechnungskurs.Text = kurs.GET_KURS(antrag.UStVAn_Währungscode, rechnungsDatum).ToString() + + End If + + End Sub + + Private Sub SaveIfChanged() + + If Not _txtChanged Then Return + + _txtChanged = False + + values_changed() + End Sub Private Sub scanSonstiges_FileAdded(id As String, path As String, name As String) Handles scanSonstiges.FileAdded @@ -659,12 +1001,8 @@ Public Class ustCntlUSTV_AntragPosition Private Sub cbxAntragsfilter_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAntragsfilter.CheckedChanged - Dim filter As String = "UstV_aktiv = 1" - If Antrag_LandKz <> "" Then - If cbxAntragsfilter.Checked Then filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'" - sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - 'sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] + ' ' + isnull([UstV_Leistender_UstNr],'')) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - End If + InitLeistenderSearchBox() + End Sub Private Sub mnuItemKIUPLOAD_Clicked(sender As Object, e As EventArgs) @@ -716,7 +1054,7 @@ Public Class ustCntlUSTV_AntragPosition f.usrcntlVAT_ATEZ1.btnUebernehmen.Enabled = UStV_POS.UStVPo_daId_loeschbar 'NUR ÜBERNEHMEN WENN LÖSCHBAR! f.usrcntlVAT_ATEZ1.initDGV(dt) f.usrcntlVAT_ATEZ1.setColorIndgv() - f.usrcntlVAT_ATEZ1.setAmountOnly = IIf(UStV_POS.UStVPo_SchnittstellenNr = 7, True, False) + f.usrcntlVAT_ATEZ1.setAmountOnly = UStV_POS.UStVPo_SchnittstellenNr = 7 If f.ShowDialog = DialogResult.OK Then @@ -826,6 +1164,36 @@ Public Class ustCntlUSTV_AntragPosition + End Sub + + Private Sub SetAddressChangeHandlers(enabled As Boolean) + + For Each c As Control In pnlAdresse.Controls + + If TypeOf c Is TextBox Then + + Dim tb As TextBox = DirectCast(c, TextBox) + + RemoveHandler tb.TextChanged, AddressOf SomethingChanged + + If enabled Then + AddHandler tb.TextChanged, AddressOf SomethingChanged + End If + + ElseIf TypeOf c Is MyComboBox Then + + Dim cb As MyComboBox = DirectCast(c, MyComboBox) + + RemoveHandler cb.TextChanged, AddressOf SomethingChanged + + If enabled Then + AddHandler cb.TextChanged, AddressOf SomethingChanged + End If + + End If + + Next + End Sub Private Sub btnAPIUbload_Click(sender As Object, e As EventArgs) Handles btnAPIUbload.Click @@ -852,7 +1220,7 @@ Public Class ustCntlUSTV_AntragPosition Private Sub txtStrasse_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtStrasse.PreviewKeyDown, txtPLZ.PreviewKeyDown, txtOrt.PreviewKeyDown, txtLand.PreviewKeyDown, txtStrassenNr.PreviewKeyDown, txtUIDNr.PreviewKeyDown - If gridAktiv And Me.FindForm IsNot Nothing Then + If _gridAktiv And Me.FindForm IsNot Nothing Then ' Eingabeprüfung If e.KeyValue = 9 Then @@ -913,11 +1281,11 @@ Public Class ustCntlUSTV_AntragPosition Else If IsNumeric(txtNettobetragEUR.Text) Then txtNettobetrag.Text = Math.Floor((txtNettobetragEUR.Text * txtUmrechnungskurs.Text) * 100 + 0.5) / 100 - txtChanged = True + _txtChanged = True - If txtChanged Then + If _txtChanged Then values_changed() - txtChanged = False + _txtChanged = False End If End If diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb index 31992cab..a3186114 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb @@ -63,6 +63,7 @@ Public Class cUSTVAntrag Property UStVAn_MWSTEingang_offen As Object = Nothing Property POSITIONEN As New List(Of cUStVPositionen) '= Nothing Property UStVAn_letzteAenderung As Object = Nothing + Property UStVAn_letzteAenderungUser As Object = Nothing Public hasEntry = False @@ -135,6 +136,7 @@ Public Class cUSTVAntrag list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_Sicherheit", UStVAn_Sicherheit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_MWSTEingang_offen", UStVAn_MWSTEingang_offen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_letzteAenderung", UStVAn_letzteAenderung)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_letzteAenderungUser", UStVAn_letzteAenderungUser)) Return list From b4b483d9d2bf7303bf5524854a68ff118a4f82c9 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 25 Aug 2026 11:51:30 +0200 Subject: [PATCH 12/54] Fiskaltrust, etc. --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 197 ++++++++++++++++----- SDL/kassenbuch/frmBelegNeu.vb | 13 +- SDL/kassenbuch/frmFremdbeleg.vb | 13 +- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 12 +- 4 files changed, 189 insertions(+), 46 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 87785ae8..967d88ab 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -1,12 +1,4 @@ - -Imports System.Data.SqlClient -Imports System.IO -Imports System.Reflection -Imports Chilkat -Imports Gma.QrCodeNet.Encoding -Imports GrapeCity.DataVisualization.Chart -Imports itextsharp.text.pdf.qrcode -Imports Newtonsoft.Json +Imports Chilkat Imports QRCoder Public Class FtReceiptCases @@ -104,7 +96,7 @@ Public Class cFiskaltrustClient_chilkat p.LeistungsNr = 300 p.LeistungsBez = "TEST" p.Preis = 10 - p.Anzahl = 1 + p.Anzahl = 10 LIST.Add(p) Dim amount = 100 @@ -181,28 +173,87 @@ Public Class cFiskaltrustClient_chilkat Return SendChilkat(endpoint, "") End Function + 'Private Function old_SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String + + ' Dim retries As Integer = 3 + ' Dim lastEx As Exception = Nothing + ' VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + ' Dim rest As New Chilkat.Rest + ' Dim failureDesc As String + ' rest.VerboseLogging = True + + + ' For i As Integer = 1 To retries + + ' Try + + ' Dim uri As New Uri(_baseUrl) + + ' If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then + + ' Throw New Exception(rest.LastErrorText) + ' failureDesc = rest.LastErrorText + ' Return failureDesc + + ' End If + + ' rest.AddHeader("cashboxid", _cashboxId) + ' rest.AddHeader("accesstoken", _accessToken) + + ' Dim response As String + + ' If isGet Then + ' response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint) + ' Else + + + ' If _country = "AT" Then + ' rest.AddHeader("Content-Type", "text/plain") + ' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) + ' Else + ' rest.AddHeader("Content-Type", "application/json") + ' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) + ' End If + + + ' End If + + ' If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then + ' Return response + ' Else + ' failureDesc = rest.LastErrorText + ' End If + + ' Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response) + + ' Catch ex As Exception + ' lastEx = ex + ' Threading.Thread.Sleep(500) + ' End Try + + ' Next + + ' Throw lastEx + + 'End Function + Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String Dim retries As Integer = 3 Dim lastEx As Exception = Nothing - VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() - Dim rest As New Chilkat.Rest - Dim failureDesc As String - rest.VerboseLogging = True + VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + + Dim rest As New Chilkat.Rest + rest.VerboseLogging = True For i As Integer = 1 To retries Try - Dim uri As New Uri(_baseUrl) If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then - Throw New Exception(rest.LastErrorText) - failureDesc = rest.LastErrorText - Return failureDesc - End If rest.AddHeader("cashboxid", _cashboxId) @@ -211,32 +262,79 @@ Public Class cFiskaltrustClient_chilkat Dim response As String If isGet Then - response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint) - Else + response = rest.FullRequestNoBody( + "GET", + uri.AbsoluteUri & endpoint + ) + + Else If _country = "AT" Then rest.AddHeader("Content-Type", "text/plain") - response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) Else rest.AddHeader("Content-Type", "application/json") - response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) End If + response = rest.FullRequestString( + "POST", + uri.AbsoluteUri & endpoint, + payload + ) End If - If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then + Dim statusCode As Integer = rest.ResponseStatusCode + + ' SUCCESS + If statusCode >= 200 AndAlso statusCode < 300 Then Return response - Else - failureDesc = rest.LastErrorText End If - Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response) + ' 4xx = client/request error -> DO NOT RETRY + If statusCode >= 400 AndAlso statusCode < 500 Then + Throw New Exception( + "HTTP " & statusCode & ": " & response + ) + End If + + ' 5xx = server error -> retry + If statusCode >= 500 AndAlso statusCode < 600 Then + + lastEx = New Exception( + "HTTP " & statusCode & ": " & response + ) + + If i < retries Then + Threading.Thread.Sleep(500) + Continue For + End If + + Throw lastEx + End If + + ' Unexpected status code + Throw New Exception( + "HTTP " & statusCode & ": " & response + ) Catch ex As Exception + lastEx = ex - Threading.Thread.Sleep(500) + + ' If this was an HTTP 4xx, don't retry. + If rest.ResponseStatusCode >= 400 AndAlso + rest.ResponseStatusCode < 500 Then + + Throw + + End If + + ' Connection/transport error -> retry + If i < retries Then + Threading.Thread.Sleep(500) + End If + End Try Next @@ -261,19 +359,32 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) - Dim receipCase As Long - Select Case _receiptCase - Case "Storno" - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 'Storno + Dim receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction - Case Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction 'Verkauf + If _receiptCase = "Storno" Then - End Select + ' New reference for the Storno receipt + json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) + ' Reference to the original receipt from the database + json.UpdateString("cbPreviousReceiptReference", _reference) + + ' Storno = POS receipt + reversal + implicit transaction + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + + Else + + ' New reference for a normal receipt + json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) + + ' Normal sale + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + + End If + + json.UpdateString("ftReceiptCase", receipCase.ToString()) - json.UpdateString("ftReceiptCase", receipCase) Dim chargeItems = json.AppendArray("cbChargeItems") @@ -466,8 +577,12 @@ Public Class cFiskaltrustClient_chilkat Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String, ByRef beleg_temp As EABeleg, ByRef isStorno As Boolean) As Boolean - If result_zahlung <> "" Then - Dim json As New Chilkat.JsonObject + If String.IsNullOrWhiteSpace(result_zahlung) Then + Return False + End If + + + Dim json As New Chilkat.JsonObject Dim success As Boolean = json.Load(result_zahlung) If (success <> True) Then Debug.WriteLine(json.LastErrorText) @@ -572,10 +687,6 @@ Public Class cFiskaltrustClient_chilkat Return saved - - End If - - End Function @@ -625,7 +736,7 @@ Public Class cFiskaltrustClient_chilkat R("ftQueueId") = .StringOf("ftQueueId") R("ftQueueItemId") = .StringOf("ftQueueItemId") R("ftReceiptHash") = .StringOf("ftReceiptHash") - R("TimeStamp") = tmstmp.GetAsTimestamp(getAsLocal) + R("TimeStamp") = .StringOf("ftReceiptMoment") End With diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 7c9f8cf0..a2d11657 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -1965,6 +1965,12 @@ Public Class frmBelegNeu cm_FT.Items.Add(ids) End If + If Not cm_FT.Items.ContainsKey("exportJournal") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + cm_FT.Show(Cursor.Position) End Sub @@ -2078,7 +2084,7 @@ Public Class frmBelegNeu End If - ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem") Then + ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then 'Dim result As String = Await client.Journal(2) @@ -2088,12 +2094,17 @@ Public Class frmBelegNeu Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) + Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) End Select If result <> "" Then MsgBox(client_chilkat.PrettyPrintJson(result)) + If item.Name = "exportJournal" Then + client_chilkat.exportJournal(result) + End If + End If diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 265e444a..070900a9 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -225,7 +225,18 @@ Public Class frmFremdbeleg Dim answer = "" If KASSE.rksv_aktiv Then - If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + Dim verarbeitet As Boolean = False + If KASSE.rksv_FT_RestServiceURL <> "" Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS) + 'result.Wait() + verarbeitet = result + Else + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If + + + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index 1f5c2d35..b735bd89 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -365,7 +365,17 @@ Public Class frmNacherfassungLeihgeld If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt Dim answer = "" - If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + Dim verarbeitet As Boolean = False + If KASSE.rksv_FT_RestServiceURL <> "" Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS) + 'result.Wait() + verarbeitet = result + Else + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If + + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) From 9588c5f7d13c1f50371dfa6d6c2a0f4eaa080f34 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 25 Aug 2026 12:45:09 +0200 Subject: [PATCH 13/54] automail, etc. --- SDL/Fakturierung/cAutomailversand.vb | 4 +- .../frmAbrechnungsMaske.Designer.vb | 135 +++++++++++++----- SDL/Fakturierung/frmAbrechnungsMaske.vb | 41 +++++- SDL/Fakturierung/frmFaktSammelRgDrucken.vb | 8 +- SDL/Fakturierung/usrCntlFaktAbrechnung.vb | 12 +- 5 files changed, 149 insertions(+), 51 deletions(-) diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index a1fbbf64..4a69234c 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -1529,7 +1529,7 @@ Public Class cAutomailversand End Function - Public Shared Function automRechnungsversand_aktivieren(showMessage As Boolean, Optional isEinzelrechnung As Boolean = False) + Public Shared Function automRechnungsversand_aktivieren(showMessage As Boolean, datum As Date, Optional isEinzelrechnung As Boolean = False) Dim RE_Text = "" @@ -1542,7 +1542,7 @@ Public Class cAutomailversand If Not showMessage Then Return True Else - If vbYes = MsgBox("Möchten Sie für " & RE_Text & " den automatischen Emailversand aktivieren?" & vbNewLine & "Die Rechnungen werden automatisch im Nachtlauf per EMail verschickt!", vbYesNoCancel) Then + If vbYes = MsgBox("Möchten Sie für " & RE_Text & " den automatischen Emailversand aktivieren?" & vbNewLine & "Die Rechnungen werden automatisch im Nachtlauf per EMail verschickt!" & vbNewLine & "Rechungsdatum: " & datum.ToShortDateString, vbYesNoCancel) Then Return True Else Return False diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb index bda671a5..d7c1241c 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb @@ -32,6 +32,8 @@ Partial Class frmAbrechnungsMaske Me.Label12 = New System.Windows.Forms.Label() Me.dgvRechnungen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.Panel2 = New System.Windows.Forms.Panel() + Me.txtMailanzeigen = New System.Windows.Forms.TextBox() + Me.cbxMailoeffnen = New System.Windows.Forms.CheckBox() Me.btn_doMailAutoversand = New System.Windows.Forms.Button() Me.Button11 = New System.Windows.Forms.Button() Me.cbxOriginalDrucken = New System.Windows.Forms.CheckBox() @@ -52,7 +54,10 @@ Partial Class frmAbrechnungsMaske Me.Label2 = New System.Windows.Forms.Label() Me.Label10 = New System.Windows.Forms.Label() Me.Panel1 = New System.Windows.Forms.Panel() + Me.txtRechnungsdatumAutomail = New VERAG_PROG_ALLGEMEIN.MyTextBox() + Me.dtp_RD_automail = New System.Windows.Forms.DateTimePicker() Me.KdSearchBox1 = New VERAG_PROG_ALLGEMEIN.KdSearchBox() + Me.lblRechnungsdatumAUTOMAIL = New System.Windows.Forms.Label() Me.lblKunde = New System.Windows.Forms.Label() Me.PictureBox5 = New System.Windows.Forms.PictureBox() Me.cbxGutschriftenAnVerag = New System.Windows.Forms.CheckBox() @@ -89,8 +94,6 @@ Partial Class frmAbrechnungsMaske Me.btnVonJahr = New System.Windows.Forms.Button() Me.UsrCntlFaktAbrechnung1 = New SDL.usrCntlFaktAbrechnung() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.cbxMailoeffnen = New System.Windows.Forms.CheckBox() - Me.txtMailanzeigen = New System.Windows.Forms.TextBox() Me.pnl.SuspendLayout() CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer.Panel1.SuspendLayout() @@ -111,7 +114,7 @@ Partial Class frmAbrechnungsMaske Me.pnl.Dock = System.Windows.Forms.DockStyle.Fill Me.pnl.Location = New System.Drawing.Point(0, 0) Me.pnl.Name = "pnl" - Me.pnl.Size = New System.Drawing.Size(1442, 615) + Me.pnl.Size = New System.Drawing.Size(1442, 646) Me.pnl.TabIndex = 0 ' 'SplitContainer @@ -130,7 +133,7 @@ Partial Class frmAbrechnungsMaske 'SplitContainer.Panel2 ' Me.SplitContainer.Panel2.Controls.Add(Me.UsrCntlFaktAbrechnung1) - Me.SplitContainer.Size = New System.Drawing.Size(1442, 615) + Me.SplitContainer.Size = New System.Drawing.Size(1442, 646) Me.SplitContainer.SplitterDistance = 575 Me.SplitContainer.TabIndex = 0 ' @@ -138,10 +141,10 @@ Partial Class frmAbrechnungsMaske ' Me.tbcntr.Controls.Add(Me.TabPage1) Me.tbcntr.Dock = System.Windows.Forms.DockStyle.Fill - Me.tbcntr.Location = New System.Drawing.Point(0, 170) + Me.tbcntr.Location = New System.Drawing.Point(0, 187) Me.tbcntr.Name = "tbcntr" Me.tbcntr.SelectedIndex = 0 - Me.tbcntr.Size = New System.Drawing.Size(575, 445) + Me.tbcntr.Size = New System.Drawing.Size(575, 459) Me.tbcntr.TabIndex = 3 ' 'TabPage1 @@ -153,7 +156,7 @@ Partial Class frmAbrechnungsMaske Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(567, 419) + Me.TabPage1.Size = New System.Drawing.Size(567, 433) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Rechnungen" Me.TabPage1.UseVisualStyleBackColor = True @@ -197,7 +200,7 @@ Partial Class frmAbrechnungsMaske Me.dgvRechnungen.RowHeadersVisible = False Me.dgvRechnungen.RowTemplate.Height = 28 Me.dgvRechnungen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.dgvRechnungen.Size = New System.Drawing.Size(561, 316) + Me.dgvRechnungen.Size = New System.Drawing.Size(561, 334) Me.dgvRechnungen.TabIndex = 1 ' 'Panel2 @@ -225,12 +228,34 @@ Partial Class frmAbrechnungsMaske Me.Panel2.Controls.Add(Me.Label2) Me.Panel2.Controls.Add(Me.Label10) Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom - Me.Panel2.Location = New System.Drawing.Point(3, 319) + Me.Panel2.Location = New System.Drawing.Point(3, 337) Me.Panel2.Margin = New System.Windows.Forms.Padding(2) Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(561, 97) + Me.Panel2.Size = New System.Drawing.Size(561, 93) Me.Panel2.TabIndex = 0 ' + 'txtMailanzeigen + ' + Me.txtMailanzeigen.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.txtMailanzeigen.Location = New System.Drawing.Point(327, 51) + Me.txtMailanzeigen.Multiline = True + Me.txtMailanzeigen.Name = "txtMailanzeigen" + Me.txtMailanzeigen.Size = New System.Drawing.Size(57, 34) + Me.txtMailanzeigen.TabIndex = 33 + Me.txtMailanzeigen.Text = "Mail anzeigen" + ' + 'cbxMailoeffnen + ' + Me.cbxMailoeffnen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.cbxMailoeffnen.AutoSize = True + Me.cbxMailoeffnen.Checked = True + Me.cbxMailoeffnen.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbxMailoeffnen.Location = New System.Drawing.Point(306, 54) + Me.cbxMailoeffnen.Name = "cbxMailoeffnen" + Me.cbxMailoeffnen.Size = New System.Drawing.Size(15, 14) + Me.cbxMailoeffnen.TabIndex = 32 + Me.cbxMailoeffnen.UseVisualStyleBackColor = True + ' 'btn_doMailAutoversand ' Me.btn_doMailAutoversand.BackgroundImage = Global.SDL.My.Resources.Resources.auto_mailversand_small @@ -463,7 +488,10 @@ Partial Class frmAbrechnungsMaske 'Panel1 ' Me.Panel1.BackColor = System.Drawing.Color.White + Me.Panel1.Controls.Add(Me.txtRechnungsdatumAutomail) + Me.Panel1.Controls.Add(Me.dtp_RD_automail) Me.Panel1.Controls.Add(Me.KdSearchBox1) + Me.Panel1.Controls.Add(Me.lblRechnungsdatumAUTOMAIL) Me.Panel1.Controls.Add(Me.lblKunde) Me.Panel1.Controls.Add(Me.PictureBox5) Me.Panel1.Controls.Add(Me.cbxGutschriftenAnVerag) @@ -481,9 +509,47 @@ Partial Class frmAbrechnungsMaske Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Margin = New System.Windows.Forms.Padding(2) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(575, 170) + Me.Panel1.Size = New System.Drawing.Size(575, 187) Me.Panel1.TabIndex = 0 ' + 'txtRechnungsdatumAutomail + ' + Me.txtRechnungsdatumAutomail._DateTimeOnly = False + Me.txtRechnungsdatumAutomail._numbersOnly = False + Me.txtRechnungsdatumAutomail._numbersOnlyKommastellen = "" + Me.txtRechnungsdatumAutomail._numbersOnlyTrennzeichen = True + Me.txtRechnungsdatumAutomail._Prozent = False + Me.txtRechnungsdatumAutomail._ShortDateNew = True + Me.txtRechnungsdatumAutomail._ShortDateOnly = False + Me.txtRechnungsdatumAutomail._TimeOnly = False + Me.txtRechnungsdatumAutomail._TimeOnly_Seconds = False + Me.txtRechnungsdatumAutomail._value = "" + Me.txtRechnungsdatumAutomail._Waehrung = False + Me.txtRechnungsdatumAutomail._WaehrungZeichen = True + Me.txtRechnungsdatumAutomail.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtRechnungsdatumAutomail.ForeColor = System.Drawing.Color.Black + Me.txtRechnungsdatumAutomail.Location = New System.Drawing.Point(442, 42) + Me.txtRechnungsdatumAutomail.MaxLength = 10 + Me.txtRechnungsdatumAutomail.MaxLineLength = -1 + Me.txtRechnungsdatumAutomail.MaxLines_Warning = "" + Me.txtRechnungsdatumAutomail.MaxLines_Warning_Label = Nothing + Me.txtRechnungsdatumAutomail.Name = "txtRechnungsdatumAutomail" + Me.txtRechnungsdatumAutomail.Size = New System.Drawing.Size(73, 20) + Me.txtRechnungsdatumAutomail.TabIndex = 58 + Me.txtRechnungsdatumAutomail.Visible = False + ' + 'dtp_RD_automail + ' + Me.dtp_RD_automail.CustomFormat = "''" + Me.dtp_RD_automail.Format = System.Windows.Forms.DateTimePickerFormat.Custom + Me.dtp_RD_automail.Location = New System.Drawing.Point(442, 42) + Me.dtp_RD_automail.Margin = New System.Windows.Forms.Padding(0) + Me.dtp_RD_automail.Name = "dtp_RD_automail" + Me.dtp_RD_automail.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.dtp_RD_automail.Size = New System.Drawing.Size(106, 20) + Me.dtp_RD_automail.TabIndex = 59 + Me.dtp_RD_automail.Visible = False + ' 'KdSearchBox1 ' Me.KdSearchBox1._AlleFirmenCLUSTER = False @@ -512,6 +578,16 @@ Partial Class frmAbrechnungsMaske Me.KdSearchBox1.TIMER_SEARCH = True Me.KdSearchBox1.usrcntl = Nothing ' + 'lblRechnungsdatumAUTOMAIL + ' + Me.lblRechnungsdatumAUTOMAIL.AutoSize = True + Me.lblRechnungsdatumAUTOMAIL.Location = New System.Drawing.Point(331, 45) + Me.lblRechnungsdatumAUTOMAIL.Name = "lblRechnungsdatumAUTOMAIL" + Me.lblRechnungsdatumAUTOMAIL.Size = New System.Drawing.Size(74, 13) + Me.lblRechnungsdatumAUTOMAIL.TabIndex = 60 + Me.lblRechnungsdatumAUTOMAIL.Text = "ReDat.-AUTO" + Me.lblRechnungsdatumAUTOMAIL.Visible = False + ' 'lblKunde ' Me.lblKunde.AutoSize = True @@ -534,7 +610,7 @@ Partial Class frmAbrechnungsMaske 'cbxGutschriftenAnVerag ' Me.cbxGutschriftenAnVerag.AutoSize = True - Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(332, 44) + Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(334, 66) Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag" Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(128, 17) Me.cbxGutschriftenAnVerag.TabIndex = 54 @@ -568,7 +644,7 @@ Partial Class frmAbrechnungsMaske Me.cbx.AutoSize = True Me.cbx.Checked = True Me.cbx.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx.Location = New System.Drawing.Point(332, 61) + Me.cbx.Location = New System.Drawing.Point(334, 83) Me.cbx.Name = "cbx" Me.cbx.Size = New System.Drawing.Size(181, 17) Me.cbx.TabIndex = 34 @@ -662,9 +738,9 @@ Partial Class frmAbrechnungsMaske Me.MyPanel1.Controls.Add(Me.btnBisJahr) Me.MyPanel1.Controls.Add(Me.btnVonJahr) Me.MyPanel1.Dock = System.Windows.Forms.DockStyle.Bottom - Me.MyPanel1.Location = New System.Drawing.Point(0, 80) + Me.MyPanel1.Location = New System.Drawing.Point(0, 102) Me.MyPanel1.Name = "MyPanel1" - Me.MyPanel1.Size = New System.Drawing.Size(575, 90) + Me.MyPanel1.Size = New System.Drawing.Size(575, 85) Me.MyPanel1.TabIndex = 51 Me.MyPanel1.Visible = False ' @@ -988,7 +1064,7 @@ Partial Class frmAbrechnungsMaske Me.UsrCntlFaktAbrechnung1.Location = New System.Drawing.Point(0, 0) Me.UsrCntlFaktAbrechnung1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.UsrCntlFaktAbrechnung1.Name = "UsrCntlFaktAbrechnung1" - Me.UsrCntlFaktAbrechnung1.Size = New System.Drawing.Size(863, 615) + Me.UsrCntlFaktAbrechnung1.Size = New System.Drawing.Size(863, 646) Me.UsrCntlFaktAbrechnung1.TabIndex = 0 ' 'ContextMenuStrip1 @@ -996,33 +1072,11 @@ Partial Class frmAbrechnungsMaske Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) ' - 'cbxMailoeffnen - ' - Me.cbxMailoeffnen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) - Me.cbxMailoeffnen.AutoSize = True - Me.cbxMailoeffnen.Checked = True - Me.cbxMailoeffnen.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbxMailoeffnen.Location = New System.Drawing.Point(306, 58) - Me.cbxMailoeffnen.Name = "cbxMailoeffnen" - Me.cbxMailoeffnen.Size = New System.Drawing.Size(15, 14) - Me.cbxMailoeffnen.TabIndex = 32 - Me.cbxMailoeffnen.UseVisualStyleBackColor = True - ' - 'txtMailanzeigen - ' - Me.txtMailanzeigen.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.txtMailanzeigen.Location = New System.Drawing.Point(327, 51) - Me.txtMailanzeigen.Multiline = True - Me.txtMailanzeigen.Name = "txtMailanzeigen" - Me.txtMailanzeigen.Size = New System.Drawing.Size(57, 34) - Me.txtMailanzeigen.TabIndex = 33 - Me.txtMailanzeigen.Text = "Mail anzeigen" - ' 'frmAbrechnungsMaske ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1442, 615) + Me.ClientSize = New System.Drawing.Size(1442, 646) Me.Controls.Add(Me.pnl) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True @@ -1114,4 +1168,7 @@ Partial Class frmAbrechnungsMaske Friend WithEvents btn_doMailAutoversand As Button Friend WithEvents txtMailanzeigen As TextBox Friend WithEvents cbxMailoeffnen As CheckBox + Friend WithEvents txtRechnungsdatumAutomail As VERAG_PROG_ALLGEMEIN.MyTextBox + Friend WithEvents dtp_RD_automail As DateTimePicker + Friend WithEvents lblRechnungsdatumAUTOMAIL As Label End Class diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index e5ccdcaf..d8cd4f83 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -12,6 +12,8 @@ Public Class frmAbrechnungsMaske Dim FilialNrRestriction As Integer = -1 + Dim setDefaultAutoMailversand As Boolean = VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AUTOMAILVERSAND", "SDL") + Private Sub frmAbrechnungsMaske_Load(sender As Object, e As EventArgs) Handles Me.Load 'Größe anpassen: @@ -49,6 +51,8 @@ Public Class frmAbrechnungsMaske cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Pos.Nr", "POS")) cboSort.changeItem("EZ") + + txtRechnungsdatumAutomail.Text = Today.ToShortDateString 'BERECHTIGUNG 90 = FAKTURIERUNG!!! Dim FirmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA @@ -56,9 +60,15 @@ Public Class frmAbrechnungsMaske FirmaTmp = "VERAGIMEX" End If - 'FirmaTmp = "AMBAR" - cboSachbearbeiter.Items.Clear() + txtRechnungsdatumAutomail.Visible = setDefaultAutoMailversand + dtp_RD_automail.Visible = setDefaultAutoMailversand + lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand + + + 'FirmaTmp = "AMBAR" + + cboSachbearbeiter.Items.Clear() Select Case FirmaTmp @@ -357,7 +367,6 @@ Public Class frmAbrechnungsMaske Button8.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL) Button9.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL) - ' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)" Return sqlstr End Function @@ -1059,5 +1068,31 @@ Public Class frmAbrechnungsMaske End If + End Sub + + Private Sub txtRechnungsdatumAutomail_TextChanged(sender As Object, e As EventArgs) Handles txtRechnungsdatumAutomail.TextChanged + If txtRechnungsdatumAutomail._value <> "" AndAlso IsDate(txtRechnungsdatumAutomail._value) Then + + + UsrCntlFaktAbrechnung1.automail_rechnungsdatum = CDate(txtRechnungsdatumAutomail._value) + + + + End If + End Sub + + Private Sub dtp_RD_automail_ValueChanged(sender As Object, e As EventArgs) Handles dtp_RD_automail.ValueChanged + + If CDate(sender.value).AddDays(-4) > Today() Then + MsgBox("Rechnungen können max. 4 Tage vordatiert werden!") + txtRechnungsdatumAutomail._value = Today + Else + + txtRechnungsdatumAutomail._value = CDate(sender.value).ToShortDateString + + End If + + + End Sub End Class \ No newline at end of file diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb index 949cf579..57b04f5d 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb @@ -660,7 +660,11 @@ Public Class frmFaktSammelRgDrucken Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click If MyDatagridview1.SelectedRows.Count > 0 Then - If cAutomailversand.automRechnungsversand_aktivieren(True) Then + If txtRechnungsdatum.Text = "" Then MsgBox("Bitte Rechnungsdatum angeben!") : Exit Sub + + If CDate(txtRechnungsdatum.Text).AddDays(-4) > Today() Then MsgBox("Rechnungen können max. 4 Tage vordatiert werden!") : Exit Sub + + If cAutomailversand.automRechnungsversand_aktivieren(True, CDate(txtRechnungsdatum.Text).ToShortDateString) Then Dim onlyEMAIL As Boolean = True @@ -670,7 +674,7 @@ Public Class frmFaktSammelRgDrucken If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub If txtZeitraumBis.Text = "" Then MsgBox("Bitte Zeitraum-Bis angeben!") : Exit Sub - If txtRechnungsdatum.Text = "" Then MsgBox("Bitte Rechnungsdatum angeben!") : Exit Sub + If Not onlyEMAIL Then MsgBox("Sammelrechnungen die per POST/FAX verschickt werden, können nicht gesetzt werden!") : Exit Sub If vbYes = MsgBox("Es wird eine Beleg-NR vergeben, die Belege gelten somit als gedruckt und können nicht mehr bearbeitet werden.", vbYesNoCancel) Then diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index 75a47310..380f8928 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -21,6 +21,8 @@ Public Class usrCntlFaktAbrechnung Public Event EVENT_DELETED() Public Event SOMETHING_CHANGED(RK_ID) + Public automail_rechnungsdatum As Date = Today() + Dim vorherige_RK_ID = 0 Dim nachstehende_RK_ID = 0 Dim veragKunde As Integer = -1 @@ -39,7 +41,7 @@ Public Class usrCntlFaktAbrechnung End Sub - Sub New(RK_ID) + Sub New(RK_ID As Integer) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() @@ -49,6 +51,7 @@ Public Class usrCntlFaktAbrechnung End Sub + Public Sub newRECHNUNG(Optional Firma = Nothing) RECHNUNG = Nothing @@ -3512,7 +3515,7 @@ Public Class usrCntlFaktAbrechnung If RECHNUNG IsNot Nothing AndAlso RECHNUNG.Sammelrechnung = 0 Then 'nur bei ER If cbxAUTOMailversand.Checked AndAlso (Not RECHNUNG.Automailversand Or RECHNUNG.RechnungsDatum Is Nothing) Then - If cAutomailversand.automRechnungsversand_aktivieren(showMessageBox, RECHNUNG.Sammelrechnung = 0) Then + If cAutomailversand.automRechnungsversand_aktivieren(showMessageBox, automail_rechnungsdatum, RECHNUNG.Sammelrechnung = 0) Then Dim fun As New cAutomailversand Dim AD As VERAG_PROG_ALLGEMEIN.cAdressen = kdFirmaRechnungAn.KdData_ADRESSEN @@ -3522,8 +3525,8 @@ Public Class usrCntlFaktAbrechnung If RECHNUNG.RechnungsDatum Is Nothing Then - 'LAUT AUSSAGE VON VERR. IMMER HEUTIGES DATUM! - RECHNUNG.RechnungsDatum = Today() + 'LAUT AUSSAGE VON VERR. IMMER HEUTIGES DATUM! - NUN DOCH WIEDER NICHT!!!!!!!!!!!!!!!!! + RECHNUNG.RechnungsDatum = automail_rechnungsdatum 'If Not cFakturierung.getRgDatInput("", RECHNUNG.[RechnungsDatum]) Then 'Now.ToShortDateString ' cbxAUTOMailversand.Checked = False ' Exit Sub @@ -5683,7 +5686,6 @@ mwst: ' 'Button16.Enabled = Not enableAUTOMAIL 'End If - Return enableAUTOMAIL From def18b7dd213aaf337353ffb171f7a9695c22e9b Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 25 Aug 2026 14:05:13 +0200 Subject: [PATCH 14/54] fix --- SDL/USTV/frmMDM_USTVAntrag.vb | 16 +++++++++++----- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 14 ++++++++++---- .../Classes/USTV/cUStVLeistender.vb | 15 +++++++++------ 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index def7a4b2..412dbefb 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -2043,13 +2043,19 @@ Public Class frmMDM_USTVAntrag If UStVPo_ID > 0 Then Dim ANTR_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen(USTV_ANTRAG.UStVAn_ID, UStVPo_ID) - Dim ANTR_Leistender As New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_Leistender) - If Not IsDBNull(ANTR_POS.UStVPo_LeistenderId) AndAlso ANTR_POS.UStVPo_LeistenderId > 0 Then - ANTR_Leistender = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_LeistenderId) + If ANTR_POS.UStVPo_Leistender IsNot Nothing Then + Dim ANTR_Leistender As New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_Leistender) + If Not IsDBNull(ANTR_POS.UStVPo_LeistenderId) AndAlso ANTR_POS.UStVPo_LeistenderId > 0 Then + ANTR_Leistender = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_LeistenderId) + End If + UstCntlUSTV_AntragPosition1.Enabled = True + UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender, atez_api) + Else + UstCntlUSTV_AntragPosition1.Enabled = True + UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, Nothing, atez_api) End If - UstCntlUSTV_AntragPosition1.Enabled = True - UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender, atez_api) + Else UstCntlUSTV_AntragPosition1.reset() UstCntlUSTV_AntragPosition1.Enabled = False diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 7dd75c86..35e441e0 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -89,12 +89,18 @@ Public Class ustCntlUSTV_AntragPosition txtNettobetragEUR.Text = ValueOrEmpty(UStV_POS.UStVPo_NettobetragEUR) lblSachbearbeiter.Text = ValueOrEmpty(UStV_POS.UStVPo_Sachbearbeiter) - sbLeistender.Text = UStV_Leitender.UStV_Leistender - If IsNumeric(UStV_Leitender.UStV_LeistenderId) Then - sbLeistender._value = UStV_Leitender.UStV_LeistenderId + If UStV_Leitender IsNot Nothing Then + sbLeistender.Text = UStV_Leitender.UStV_Leistender + If IsNumeric(UStV_Leitender.UStV_LeistenderId) AndAlso UStV_Leitender.UStV_LeistenderId > 0 Then + sbLeistender._value = UStV_Leitender.UStV_LeistenderId + sbLeistender_VALUE_CHANGED() + Else + sbLeistender._value = -1 + End If End If - sbLeistender_VALUE_CHANGED() + + loadChangedDSToPanel(UStV_Leitender, True) API = atez_api diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb index 43af32eb..e84a1917 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb @@ -19,16 +19,19 @@ Public Class cUStVLeistender Dim SQL As New SQL Sub New(UStV_Leistender As String, Optional searchbyUID As Boolean = False) - If Not searchbyUID Then - Me.UStV_Leistender = UStV_Leistender - LOAD() + If UStV_Leistender <> "" Then + If Not searchbyUID Then + Me.UStV_Leistender = UStV_Leistender + LOAD() - Else - Me.UstV_Leistender_UstNr = UStV_Leistender - LOADBYUID() + Else + Me.UstV_Leistender_UstNr = UStV_Leistender + LOADByUID() + End If End If + End Sub Sub New(Id As Integer) From a2974c731906524b4593299c1d33e391c0d42b36 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 26 Aug 2026 09:50:31 +0200 Subject: [PATCH 15/54] fiskal, Abrechungsmaske, etx. --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 68 +++++++-------- .../frmAbrechnungsMaske.Designer.vb | 34 ++++---- SDL/Fakturierung/frmFaktEmail.vb | 50 ++++++----- SDL/USTV/frmMDM_USTVAntrag.Designer.vb | 87 ++++++++++++++----- SDL/USTV/frmMDM_USTVAntrag.vb | 29 +++++-- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 43 ++------- 6 files changed, 170 insertions(+), 141 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 967d88ab..af0b4158 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -489,7 +489,6 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) json.UpdateString("ftReceiptCase", (FtReceiptCases.OutOfOperation).ToString()) json.UpdateString("cbReceiptReference", "OutOfOperation") - json.UpdateString("cbUser", "Admin") json.UpdateString("ftReceiptCaseData", "") @@ -644,47 +643,48 @@ Public Class cFiskaltrustClient_chilkat Dim numSignatures As Integer = Signatures.Size - For i = 0 To numSignatures - 1 + For i = 0 To numSignatures - 1 - Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i) - Dim ftSigPos As New cFiskaltrustSignaturPositions() + Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i) + Dim ftSigPos As New cFiskaltrustSignaturPositions() - With ftSigPos - .ftSignatures = ftSig.ft_id - .ftData = SignObj.StringOf("Data") - .ftSignatureFormat = SignObj.StringOf("ftSignatureFormat") - .ftSignatureType = SignObj.StringOf("ftSignatureType") - saved = .SAVE() - 'If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then - ' QR_CodeString = .ftData - 'End If - - 'https://receipts.fiskaltrust.eu/{ftQueueID}/{ftQueueItemID} - Dim URL_FT As String = "" - If Not String.IsNullOrWhiteSpace(ftSig.ftQueueID) AndAlso Not String.IsNullOrWhiteSpace(ftSig.ftQueueItemID) Then - URL_FT = $"https://receipts.fiskaltrust.eu/{ftSig.ftQueueID}/{ftSig.ftQueueItemID}" - - Using qrGenerator As New QRCodeGenerator() - Using qrData As QRCodeData = qrGenerator.CreateQrCode(URL_FT, QRCodeGenerator.ECCLevel.Q) - - Dim qrCode As New PngByteQRCode(qrData) - Dim qrBytes As Byte() = qrCode.GetGraphic(20) - Dim qrBase64 As String = Convert.ToBase64String(qrBytes) - - QR_CodeString = qrBase64 - - End Using - End Using + With ftSigPos + .ftSignatures = ftSig.ft_id + .ftData = SignObj.StringOf("Data") + .ftSignatureFormat = SignObj.StringOf("ftSignatureFormat") + .ftSignatureType = SignObj.StringOf("ftSignatureType") + saved = .SAVE() + 'If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then + ' QR_CodeString = .ftData + 'End If - End If - End With + End With - Next + Next + + 'https://receipts.fiskaltrust.eu/{ftQueueID}/{ftQueueItemID} + Dim URL_FT As String = "" + If Not String.IsNullOrWhiteSpace(ftSig.ftQueueID) AndAlso Not String.IsNullOrWhiteSpace(ftSig.ftQueueItemID) Then + URL_FT = $"https://receipts.fiskaltrust.eu/{ftSig.ftQueueID}/{ftSig.ftQueueItemID}" + + Using qrGenerator As New QRCodeGenerator() + Using qrData As QRCodeData = qrGenerator.CreateQrCode(URL_FT, QRCodeGenerator.ECCLevel.Q) + + Dim qrCode As New PngByteQRCode(qrData) + Dim qrBytes As Byte() = qrCode.GetGraphic(20) + Dim qrBase64 As String = Convert.ToBase64String(qrBytes) + + QR_CodeString = qrBase64 + + End Using + End Using + + End If - Return saved + Return saved End Function diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb index d7c1241c..5b744c90 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb @@ -60,7 +60,6 @@ Partial Class frmAbrechnungsMaske Me.lblRechnungsdatumAUTOMAIL = New System.Windows.Forms.Label() Me.lblKunde = New System.Windows.Forms.Label() Me.PictureBox5 = New System.Windows.Forms.PictureBox() - Me.cbxGutschriftenAnVerag = New System.Windows.Forms.CheckBox() Me.cboRechnungsdruck = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.Label14 = New System.Windows.Forms.Label() Me.cbx = New System.Windows.Forms.CheckBox() @@ -92,6 +91,7 @@ Partial Class frmAbrechnungsMaske Me.btnMonat = New System.Windows.Forms.Button() Me.btnBisJahr = New System.Windows.Forms.Button() Me.btnVonJahr = New System.Windows.Forms.Button() + Me.cbxGutschriftenAnVerag = New System.Windows.Forms.CheckBox() Me.UsrCntlFaktAbrechnung1 = New SDL.usrCntlFaktAbrechnung() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.pnl.SuspendLayout() @@ -494,7 +494,6 @@ Partial Class frmAbrechnungsMaske Me.Panel1.Controls.Add(Me.lblRechnungsdatumAUTOMAIL) Me.Panel1.Controls.Add(Me.lblKunde) Me.Panel1.Controls.Add(Me.PictureBox5) - Me.Panel1.Controls.Add(Me.cbxGutschriftenAnVerag) Me.Panel1.Controls.Add(Me.cboRechnungsdruck) Me.Panel1.Controls.Add(Me.Label14) Me.Panel1.Controls.Add(Me.cbx) @@ -505,6 +504,7 @@ Partial Class frmAbrechnungsMaske Me.Panel1.Controls.Add(Me.lblSachbearbeiter) Me.Panel1.Controls.Add(Me.cboFirma) Me.Panel1.Controls.Add(Me.MyPanel1) + Me.Panel1.Controls.Add(Me.cbxGutschriftenAnVerag) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Margin = New System.Windows.Forms.Padding(2) @@ -607,16 +607,6 @@ Partial Class frmAbrechnungsMaske Me.PictureBox5.TabIndex = 133 Me.PictureBox5.TabStop = False ' - 'cbxGutschriftenAnVerag - ' - Me.cbxGutschriftenAnVerag.AutoSize = True - Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(334, 66) - Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag" - Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(128, 17) - Me.cbxGutschriftenAnVerag.TabIndex = 54 - Me.cbxGutschriftenAnVerag.Text = "nicht an Verag abger." - Me.cbxGutschriftenAnVerag.UseVisualStyleBackColor = True - ' 'cboRechnungsdruck ' Me.cboRechnungsdruck._allowedValuesFreiText = Nothing @@ -644,11 +634,11 @@ Partial Class frmAbrechnungsMaske Me.cbx.AutoSize = True Me.cbx.Checked = True Me.cbx.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx.Location = New System.Drawing.Point(334, 83) + Me.cbx.Location = New System.Drawing.Point(313, 65) Me.cbx.Name = "cbx" - Me.cbx.Size = New System.Drawing.Size(181, 17) + Me.cbx.Size = New System.Drawing.Size(139, 17) Me.cbx.TabIndex = 34 - Me.cbx.Text = "Gedruckte Rechnugen anzeigen" + Me.cbx.Text = "gedruckte Rechnungen" Me.cbx.UseVisualStyleBackColor = True ' 'cboER_SR @@ -738,9 +728,9 @@ Partial Class frmAbrechnungsMaske Me.MyPanel1.Controls.Add(Me.btnBisJahr) Me.MyPanel1.Controls.Add(Me.btnVonJahr) Me.MyPanel1.Dock = System.Windows.Forms.DockStyle.Bottom - Me.MyPanel1.Location = New System.Drawing.Point(0, 102) + Me.MyPanel1.Location = New System.Drawing.Point(0, 100) Me.MyPanel1.Name = "MyPanel1" - Me.MyPanel1.Size = New System.Drawing.Size(575, 85) + Me.MyPanel1.Size = New System.Drawing.Size(575, 87) Me.MyPanel1.TabIndex = 51 Me.MyPanel1.Visible = False ' @@ -1055,6 +1045,16 @@ Partial Class frmAbrechnungsMaske Me.btnVonJahr.TextAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnVonJahr.UseVisualStyleBackColor = True ' + 'cbxGutschriftenAnVerag + ' + Me.cbxGutschriftenAnVerag.AutoSize = True + Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(454, 65) + Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag" + Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(118, 17) + Me.cbxGutschriftenAnVerag.TabIndex = 54 + Me.cbxGutschriftenAnVerag.Text = "offene VERAG-Abr." + Me.cbxGutschriftenAnVerag.UseVisualStyleBackColor = True + ' 'UsrCntlFaktAbrechnung1 ' Me.UsrCntlFaktAbrechnung1.BackColor = System.Drawing.Color.White diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 3f14e874..0b67122b 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -1,5 +1,4 @@ -Imports GrapeCity.DataVisualization.TypeScript -Imports Microsoft.Office.Interop +Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN Public Class frmFaktEmail @@ -798,25 +797,24 @@ Public Class frmFaktEmail If SPEDBUCH.hasEntry AndAlso (SPEDBUCH.Abfertigungsart = 114 Or SPEDBUCH.Abfertigungsart = 115) Then Dim USTV_ANTRAG As New cUSTVAntrag(RECHNUNG.ErfassungsNr) - Dim bearbGeb As Double = 0 - Dim hasVZ As Boolean = False + Dim GUBetrag_ohneBearbeitung As Double = 0 + Dim hatNichtAbgerechneteVZ As Boolean = False 'todo_Prüfung ist zu spät -> früher (vor dem eintragen in die DB)!!!! For Each pos In USTV_ANTRAG.POSITIONEN If pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) OrElse pos.UStVPo_VZ_RKID Is Nothing) Then 'VZ die noch nicht abgerechnet wurde! - hasVZ = True + hatNichtAbgerechneteVZ = True Exit For End If Next For Each r As cRechnungsausgangPositionen In RECHNUNG.POSITIONEN - If r.BerechnungsartNr = 8 AndAlso (r.LeistungsBez.ToLower.Contains("mwst") Or r.LeistungsBez.ToLower.Contains("moest") Or r.LeistungsBez.ToLower.Contains("vat") Or r.LeistungsBez.ToLower.Contains("excise duty") Or r.LeistungsBez.ToLower.Contains("tva")) Then bearbGeb += r.Preis + If r.BerechnungsartNr = 8 AndAlso (r.LeistungsBez.ToLower.Contains("mwst") Or r.LeistungsBez.ToLower.Contains("moest") Or r.LeistungsBez.ToLower.Contains("vat") Or r.LeistungsBez.ToLower.Contains("excise duty") Or r.LeistungsBez.ToLower.Contains("tva")) Then GUBetrag_ohneBearbeitung += r.Preis Next - 'nur bei NICHT VZ! - If Not hasVZ Then + If Not hatNichtAbgerechneteVZ Then 'Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.UnterNr + 1) 'If Not ANTR_ERSTATTUNG.hasEntry Then ' ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum @@ -828,30 +826,36 @@ Public Class frmFaktEmail 'End If - If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) AndAlso IsDBNull(USTV_ANTRAG.UStVAn_VZDatum) Then + If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) Then - USTV_ANTRAG.UStVAn_VZBetrag = bearbGeb + USTV_ANTRAG.UStVAn_VZBetrag = GUBetrag_ohneBearbeitung + USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum + USTV_ANTRAG.SAVE() + + Else + + USTV_ANTRAG.UStVAn_VZBetrag += GUBetrag_ohneBearbeitung USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum USTV_ANTRAG.SAVE() End If End If - If hasVZ Then - Dim SQL As New SQL + If hatNichtAbgerechneteVZ Then + Dim SQL As New SQL - For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN + For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN - If Not IsDBNull(pos.UStVPo_VZ) AndAlso pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then - pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID - pos.SAVE() - End If + If Not IsDBNull(pos.UStVPo_VZ) AndAlso pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then + pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID + pos.SAVE() + End If - Next + Next - Dim count_nichtAbgerVZ As Integer = -1 - count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL")) - If count_nichtAbgerVZ = 0 Then + Dim count_nichtAbgerVZ As Integer = -1 + count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL")) + If count_nichtAbgerVZ = 0 Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] IN (SELECT [UStVAn_ID] FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 AND [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " )", "FMZOLL") End If @@ -859,7 +863,7 @@ Public Class frmFaktEmail End If - End If + End If End If @@ -1194,7 +1198,7 @@ Public Class frmFaktEmail If cbxMDMAnh.Checked Then Mail.Attachments.Add(a.Pfad, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , a.MailName) Else - If a.Pfad.ToString.toLowerCase.EndsWith("maut_at.pdf") Or a.Pfad.ToString.toLowerCase.EndsWith("maut_uta.pdf") Or a.Pfad.ToString.toLowerCase.EndsWith("maut_mse.pdf") Then + If a.Pfad.ToString.ToLower.EndsWith("maut_at.pdf") Or a.Pfad.ToString.ToLower.EndsWith("maut_uta.pdf") Or a.Pfad.ToString.ToLower.EndsWith("maut_mse.pdf") Then 'NICHT ANFÜGEN! Else Mail.Attachments.Add(a.Pfad, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , a.MailName) diff --git a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb index 22605d2e..9bb2457c 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb @@ -124,6 +124,7 @@ Partial Class frmMDM_USTVAntrag Me.dgvUSTVPositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlAntragsPosDetails = New System.Windows.Forms.Panel() Me.Panel2 = New System.Windows.Forms.Panel() + Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() Me.Panel4 = New System.Windows.Forms.Panel() Me.cbxKIUploaddelete = New System.Windows.Forms.CheckBox() Me.scanUSTVA = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan() @@ -134,6 +135,7 @@ Partial Class frmMDM_USTVAntrag Me.Panel3 = New System.Windows.Forms.Panel() Me.dgvErstattungspositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlErstattungsdetails = New System.Windows.Forms.Panel() + Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() Me.Panel1 = New System.Windows.Forms.Panel() Me.Button2 = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() @@ -150,8 +152,8 @@ Partial Class frmMDM_USTVAntrag Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() - Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() + Me.txtErstattung = New VERAG_PROG_ALLGEMEIN.MyTextBox() + Me.Label21 = New System.Windows.Forms.Label() Me.pnlBottom.SuspendLayout() CType(Me.pbXMLExport, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pbMail, System.ComponentModel.ISupportInitialize).BeginInit() @@ -631,6 +633,8 @@ Partial Class frmMDM_USTVAntrag ' Me.Panel8.BackColor = System.Drawing.Color.WhiteSmoke Me.Panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.Panel8.Controls.Add(Me.Label21) + Me.Panel8.Controls.Add(Me.txtErstattung) Me.Panel8.Controls.Add(Me.txtVZOffen) Me.Panel8.Controls.Add(Me.Label19) Me.Panel8.Controls.Add(Me.btnSortNachLeist) @@ -689,13 +693,13 @@ Partial Class frmMDM_USTVAntrag Me.txtVZOffen.Enabled = False Me.txtVZOffen.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!) Me.txtVZOffen.ForeColor = System.Drawing.Color.Black - Me.txtVZOffen.Location = New System.Drawing.Point(654, 116) + Me.txtVZOffen.Location = New System.Drawing.Point(884, 116) Me.txtVZOffen.MaxLength = 10 Me.txtVZOffen.MaxLineLength = -1 Me.txtVZOffen.MaxLines_Warning = "" Me.txtVZOffen.MaxLines_Warning_Label = Nothing Me.txtVZOffen.Name = "txtVZOffen" - Me.txtVZOffen.Size = New System.Drawing.Size(125, 23) + Me.txtVZOffen.Size = New System.Drawing.Size(78, 23) Me.txtVZOffen.TabIndex = 60 ' 'Label19 @@ -705,7 +709,7 @@ Partial Class frmMDM_USTVAntrag Me.Label19.Cursor = System.Windows.Forms.Cursors.Hand Me.Label19.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label19.ForeColor = System.Drawing.Color.Black - Me.Label19.Location = New System.Drawing.Point(524, 117) + Me.Label19.Location = New System.Drawing.Point(800, 122) Me.Label19.Name = "Label19" Me.Label19.Size = New System.Drawing.Size(66, 17) Me.Label19.TabIndex = 59 @@ -1694,6 +1698,14 @@ Partial Class frmMDM_USTVAntrag Me.Panel2.Size = New System.Drawing.Size(1428, 263) Me.Panel2.TabIndex = 1 ' + 'UstCntlUSTV_AntragPosition1 + ' + Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" + Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) + Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 + ' 'Panel4 ' Me.Panel4.BackColor = System.Drawing.Color.WhiteSmoke @@ -1789,7 +1801,7 @@ Partial Class frmMDM_USTVAntrag Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(1434, 409) + Me.TabPage2.Size = New System.Drawing.Size(1434, 405) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Erstattungspositionen" Me.TabPage2.UseVisualStyleBackColor = True @@ -1803,7 +1815,7 @@ Partial Class frmMDM_USTVAntrag Me.Panel3.Dock = System.Windows.Forms.DockStyle.Fill Me.Panel3.Location = New System.Drawing.Point(3, 3) Me.Panel3.Name = "Panel3" - Me.Panel3.Size = New System.Drawing.Size(1428, 403) + Me.Panel3.Size = New System.Drawing.Size(1428, 399) Me.Panel3.TabIndex = 3 ' 'dgvErstattungspositionen @@ -1824,7 +1836,7 @@ Partial Class frmMDM_USTVAntrag Me.dgvErstattungspositionen.RowHeadersVisible = False Me.dgvErstattungspositionen.RowHeadersWidth = 62 Me.dgvErstattungspositionen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.dgvErstattungspositionen.Size = New System.Drawing.Size(1428, 137) + Me.dgvErstattungspositionen.Size = New System.Drawing.Size(1428, 133) Me.dgvErstattungspositionen.TabIndex = 1 ' 'pnlErstattungsdetails @@ -1834,11 +1846,19 @@ Partial Class frmMDM_USTVAntrag Me.pnlErstattungsdetails.Controls.Add(Me.UstCntlUSTV_AntragErstattungen1) Me.pnlErstattungsdetails.Controls.Add(Me.Panel1) Me.pnlErstattungsdetails.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pnlErstattungsdetails.Location = New System.Drawing.Point(0, 140) + Me.pnlErstattungsdetails.Location = New System.Drawing.Point(0, 136) Me.pnlErstattungsdetails.Name = "pnlErstattungsdetails" Me.pnlErstattungsdetails.Size = New System.Drawing.Size(1426, 261) Me.pnlErstattungsdetails.TabIndex = 0 ' + 'UstCntlUSTV_AntragErstattungen1 + ' + Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" + Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) + Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 + ' 'Panel1 ' Me.Panel1.BackColor = System.Drawing.Color.WhiteSmoke @@ -1957,21 +1977,44 @@ Partial Class frmMDM_USTVAntrag Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen" Me.FakturiertToolStripMenuItem.Visible = False ' - 'UstCntlUSTV_AntragPosition1 + 'txtErstattung ' - Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" - Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) - Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 + Me.txtErstattung._DateTimeOnly = False + Me.txtErstattung._numbersOnly = True + Me.txtErstattung._numbersOnlyKommastellen = "2" + Me.txtErstattung._numbersOnlyTrennzeichen = True + Me.txtErstattung._Prozent = False + Me.txtErstattung._ShortDateNew = False + Me.txtErstattung._ShortDateOnly = False + Me.txtErstattung._TimeOnly = False + Me.txtErstattung._TimeOnly_Seconds = False + Me.txtErstattung._value = "" + Me.txtErstattung._Waehrung = True + Me.txtErstattung._WaehrungZeichen = True + Me.txtErstattung.Enabled = False + Me.txtErstattung.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!) + Me.txtErstattung.ForeColor = System.Drawing.Color.Black + Me.txtErstattung.Location = New System.Drawing.Point(654, 114) + Me.txtErstattung.MaxLength = 10 + Me.txtErstattung.MaxLineLength = -1 + Me.txtErstattung.MaxLines_Warning = "" + Me.txtErstattung.MaxLines_Warning_Label = Nothing + Me.txtErstattung.Name = "txtErstattung" + Me.txtErstattung.Size = New System.Drawing.Size(125, 23) + Me.txtErstattung.TabIndex = 61 ' - 'UstCntlUSTV_AntragErstattungen1 + 'Label21 ' - Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" - Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) - Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 + Me.Label21.AutoSize = True + Me.Label21.BackColor = System.Drawing.Color.Transparent + Me.Label21.Cursor = System.Windows.Forms.Cursors.Hand + Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label21.ForeColor = System.Drawing.Color.Black + Me.Label21.Location = New System.Drawing.Point(524, 119) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(77, 17) + Me.Label21.TabIndex = 62 + Me.Label21.Text = "Erstattung:" ' 'frmMDM_USTVAntrag ' @@ -2149,4 +2192,6 @@ Partial Class frmMDM_USTVAntrag Friend WithEvents Label19 As Label Friend WithEvents lblVZAenderungsdatum As Label Friend WithEvents Label20 As Label + Friend WithEvents Label21 As Label + Friend WithEvents txtErstattung As VERAG_PROG_ALLGEMEIN.MyTextBox End Class diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 412dbefb..b7237a3e 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -396,6 +396,8 @@ Public Class frmMDM_USTVAntrag cbxRGretour.Checked = USTV_ANTRAG.UStVAn_RGRetour cbxSicherheit.Checked = USTV_ANTRAG.UStVAn_Sicherheit + txtErstattung.Text = CDbl(SQL.getValueTxtBySql("SELECT SUM(dbo.tblUStVErstattung.UStVEr_USteuerbetragEUR) FROM dbo.tblUStVErstattung WHERE dbo.tblUStVErstattung.UStVAn_ID = " & USTV_ANTRAG.UStVAn_ID, "FMZOLL",,, "0")) + End Sub Sub getValue(ByRef USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag, Optional ADR As cAdressen = Nothing, Optional FIRMA As cFirmen = Nothing) @@ -3148,7 +3150,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_Zeitstempel = Now() If USTV_POS.SAVE() Then init() - dgvUSTVPositionen.SetOrder() + 'dgvUSTVPositionen.SetOrder() Else End If @@ -5396,21 +5398,30 @@ Public Class frmMDM_USTVAntrag End Function - Private Sub txtRZ_ValueChanged() Handles txtRZ.TextChanged, txtVZ.TextChanged + Private Sub txtRZ_ValueChanged() Handles txtRZ.TextChanged, txtVZ.TextChanged, txtErstattung.TextChanged + Dim VZ As Double = 0 Dim RZ As Double = 0 + Dim ERST As Double = 0 + If txtVZ.Text <> "" AndAlso IsNumeric(txtVZ.Text) Then VZ = CDbl(txtVZ.Text) - If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then - RZ = CDbl(txtRZ.Text) - End If - - txtVZOffen.Text = VZ - RZ - End If - End Sub + If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then + RZ = CDbl(txtRZ.Text) + End If + If txtErstattung.Text <> "" AndAlso IsNumeric(txtErstattung.Text) Then + ERST = CDbl(txtErstattung.Text) + End If + + Dim offenerBetrag As Double = VZ - RZ - ERST + If offenerBetrag < 0 Then offenerBetrag = 0 + + txtVZOffen.Text = offenerBetrag.ToString + + End Sub Public Shared Function rearangePosNrByLeistender(UStVAn_ID As Integer) diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 35e441e0..72f79cad 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -52,14 +52,6 @@ Public Class ustCntlUSTV_AntragPosition InitLeistenderSearchBox() - 'Dim filter As String = "UstV_aktiv = 1" - 'If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then - ' filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'" - ' sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - 'Else - ' sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) - 'End If - End Sub Sub setValues(kdnr As Integer, UStV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen, Antrag_LandKz As String, UStV_Leitender As VERAG_PROG_ALLGEMEIN.cUStVLeistender, atez_api As cATEZ_NCTS_IN) @@ -95,8 +87,11 @@ Public Class ustCntlUSTV_AntragPosition sbLeistender._value = UStV_Leitender.UStV_LeistenderId sbLeistender_VALUE_CHANGED() Else - sbLeistender._value = -1 + sbLeistender._value = "" End If + sbLeistender._value = "" + Else + sbLeistender._value = "" End If @@ -244,7 +239,7 @@ Public Class ustCntlUSTV_AntragPosition UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId Else - 'save = False + UStV_POS.UStVPo_Leistender = Nothing End If UStV_POS.UStVPo_Schnittstelle = cbxAPI.Checked @@ -314,30 +309,6 @@ Public Class ustCntlUSTV_AntragPosition End Function - 'Private Sub txtBestellung_TextChanged(sender As Object, e As EventArgs) Handles txtLeistungsbezeichnung.TextChanged, txtRgDatum.TextChanged, txtRgNr.TextChanged, txtUSTBetrag.TextChanged, txtUmrechnungskurs.TextChanged, txtUSTBetragEUR.TextChanged - - ' If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub - - ' If _gridAktiv And Me.FindForm IsNot Nothing Then - - ' 'If sender Is txtLieferung Then - ' ' If Not PROG.checkSDLNrPartnerKdNr(kdNr, SDLNr) Then MsgBox("Bitte geben Sie die Partner-Kundennummer im Kundenblatt oder im FM-ZOLL ein!") - ' 'End If - - ' If sender Is cboLeistungsgeber AndAlso cboLeistungsgeber.SelectedItem <> "" Then - ' 'UStV_POS.UStVPo_Leistender = cboLeistungsgeber.SelectedItem - ' 'values_changed() - - ' Else - ' 'txtChanged = True - ' End If - ' End If - - - - - 'End Sub - Sub values_changed() lblSachbearbeiter.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME lblAenderungsdatum.Text = Now.ToString("dd.MM.yyyy HH:mm") @@ -907,9 +878,7 @@ Public Class ustCntlUSTV_AntragPosition If String.IsNullOrWhiteSpace(supplierText) Then - If UStV_POS IsNot Nothing AndAlso - (UStV_POS.UStVPo_Leistender <> "" OrElse - UStV_POS.UStVPo_LeistenderId <> 0) Then + If UStV_POS IsNot Nothing AndAlso (UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0) Then UStV_Leist = Nothing loadChangedDSToPanel(Nothing, True) From 7fd1e05b29f7536363f0db2fc6a138fb9e880983 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 27 Aug 2026 13:20:23 +0200 Subject: [PATCH 16/54] =?UTF-8?q?div.=20=C3=84nderunge,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Fakturierung/frmFaktEmail.vb | 33 ++-- SDL/My Project/AssemblyInfo.vb | 4 +- SDL/SMS/usrCntlSMS.Designer.vb | 88 +++++++-- SDL/SMS/usrCntlSMS.vb | 16 ++ SDL/USTV/frmMDM_USTVAntrag.Designer.vb | 82 ++++----- SDL/USTV/frmMDM_USTVAntrag.vb | 174 ++++++++++++------ SDL/USTV/usrCntlUSTV.vb | 6 +- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 5 +- .../Classes/USTV/cUSTVAntrag.vb | 49 ++++- 9 files changed, 318 insertions(+), 139 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 0b67122b..745c3991 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -792,7 +792,7 @@ Public Class frmFaktEmail If Firma_ID = 19 AndAlso RECHNUNG IsNot Nothing AndAlso RECHNUNG.FilialenNr = 4817 AndAlso RECHNUNG.DruckDatumZeit IsNot Nothing Then - Dim SPEDBUCH = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, RECHNUNG.UnterNr) + Dim SPEDBUCH = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, 0) If SPEDBUCH.hasEntry AndAlso (SPEDBUCH.Abfertigungsart = 114 Or SPEDBUCH.Abfertigungsart = 115) Then @@ -815,30 +815,31 @@ Public Class frmFaktEmail Next If Not hatNichtAbgerechneteVZ Then - 'Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.UnterNr + 1) - 'If Not ANTR_ERSTATTUNG.hasEntry Then - ' ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum - ' ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr - ' ANTR_ERSTATTUNG.UStVEr_Umrechnungskurs = 1 - ' ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = bearbGeb - ' ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = bearbGeb - ' ANTR_ERSTATTUNG.SAVE() - 'End If + Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) + If Not ANTR_ERSTATTUNG.hasEntry Then + ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum + ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr + ANTR_ERSTATTUNG.UStVEr_Umrechnungskurs = 1 + ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = 0 + ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = 0 + ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID + ANTR_ERSTATTUNG.SAVE() + End If + USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum - If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) Then + If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) OrElse USTV_ANTRAG.UStVAn_VZBetrag Is Nothing Then USTV_ANTRAG.UStVAn_VZBetrag = GUBetrag_ohneBearbeitung - USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum - USTV_ANTRAG.SAVE() - Else + ElseIf IsNumeric(USTV_ANTRAG.UStVAn_VZBetrag) Then USTV_ANTRAG.UStVAn_VZBetrag += GUBetrag_ohneBearbeitung - USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum - USTV_ANTRAG.SAVE() End If + + USTV_ANTRAG.SAVE() + End If If hatNichtAbgerechneteVZ Then diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index c20b27cd..90b95bea 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/SMS/usrCntlSMS.Designer.vb b/SDL/SMS/usrCntlSMS.Designer.vb index 7a1bbe55..e498600d 100644 --- a/SDL/SMS/usrCntlSMS.Designer.vb +++ b/SDL/SMS/usrCntlSMS.Designer.vb @@ -33,6 +33,7 @@ Partial Class usrCntlSMS Me.Button6 = New System.Windows.Forms.Button() Me.Button5 = New System.Windows.Forms.Button() Me.pnloptions = New System.Windows.Forms.Panel() + Me.Button3 = New System.Windows.Forms.Button() Me.Button1 = New System.Windows.Forms.Button() Me.Button2 = New System.Windows.Forms.Button() Me.FlatButton7 = New System.Windows.Forms.Button() @@ -56,13 +57,16 @@ Partial Class usrCntlSMS Me.Label12 = New System.Windows.Forms.Label() Me.DateTimePicker1 = New System.Windows.Forms.DateTimePicker() Me.pnl = New System.Windows.Forms.Panel() + Me.Label5 = New System.Windows.Forms.Label() + Me.lblgesendetOK = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() Me.cboAbsedner = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.Label1 = New System.Windows.Forms.Label() Me.Label8 = New System.Windows.Forms.Label() Me.cntxtOptionen = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.AbgeholtToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.StornoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.Button3 = New System.Windows.Forms.Button() + Me.lblFehlerhaft = New System.Windows.Forms.Label() Me.pnloptions.SuspendLayout() Me.pnlTop.SuspendLayout() Me.Panel1.SuspendLayout() @@ -80,7 +84,7 @@ Partial Class usrCntlSMS Me.cboSachbearbeiter.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems Me.cboSachbearbeiter.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cboSachbearbeiter.FormattingEnabled = True - Me.cboSachbearbeiter.Location = New System.Drawing.Point(435, 78) + Me.cboSachbearbeiter.Location = New System.Drawing.Point(444, 77) Me.cboSachbearbeiter.Name = "cboSachbearbeiter" Me.cboSachbearbeiter.Size = New System.Drawing.Size(168, 24) Me.cboSachbearbeiter.TabIndex = 21 @@ -90,10 +94,12 @@ Partial Class usrCntlSMS Me.txtAbfertDatBis._DateTimeOnly = False Me.txtAbfertDatBis._numbersOnly = False Me.txtAbfertDatBis._numbersOnlyKommastellen = "" + Me.txtAbfertDatBis._numbersOnlyTrennzeichen = True Me.txtAbfertDatBis._Prozent = False Me.txtAbfertDatBis._ShortDateNew = True Me.txtAbfertDatBis._ShortDateOnly = False Me.txtAbfertDatBis._TimeOnly = False + Me.txtAbfertDatBis._TimeOnly_Seconds = False Me.txtAbfertDatBis._value = "" Me.txtAbfertDatBis._Waehrung = False Me.txtAbfertDatBis._WaehrungZeichen = True @@ -113,10 +119,12 @@ Partial Class usrCntlSMS Me.txtAbfertDat._DateTimeOnly = False Me.txtAbfertDat._numbersOnly = False Me.txtAbfertDat._numbersOnlyKommastellen = "" + Me.txtAbfertDat._numbersOnlyTrennzeichen = True Me.txtAbfertDat._Prozent = False Me.txtAbfertDat._ShortDateNew = True Me.txtAbfertDat._ShortDateOnly = False Me.txtAbfertDat._TimeOnly = False + Me.txtAbfertDat._TimeOnly_Seconds = False Me.txtAbfertDat._value = "" Me.txtAbfertDat._Waehrung = False Me.txtAbfertDat._WaehrungZeichen = True @@ -148,16 +156,18 @@ Partial Class usrCntlSMS Me.txtHandyNr._DateTimeOnly = False Me.txtHandyNr._numbersOnly = False Me.txtHandyNr._numbersOnlyKommastellen = "" + Me.txtHandyNr._numbersOnlyTrennzeichen = True Me.txtHandyNr._Prozent = False Me.txtHandyNr._ShortDateNew = False Me.txtHandyNr._ShortDateOnly = False Me.txtHandyNr._TimeOnly = False + Me.txtHandyNr._TimeOnly_Seconds = False Me.txtHandyNr._value = "" Me.txtHandyNr._Waehrung = False Me.txtHandyNr._WaehrungZeichen = True Me.txtHandyNr.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtHandyNr.ForeColor = System.Drawing.Color.Black - Me.txtHandyNr.Location = New System.Drawing.Point(435, 57) + Me.txtHandyNr.Location = New System.Drawing.Point(444, 52) Me.txtHandyNr.MaxLineLength = -1 Me.txtHandyNr.MaxLines_Warning = "" Me.txtHandyNr.MaxLines_Warning_Label = Nothing @@ -225,6 +235,19 @@ Partial Class usrCntlSMS Me.pnloptions.Size = New System.Drawing.Size(1111, 59) Me.pnloptions.TabIndex = 2 ' + 'Button3 + ' + Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button3.Location = New System.Drawing.Point(226, 5) + Me.Button3.Margin = New System.Windows.Forms.Padding(0) + Me.Button3.Name = "Button3" + Me.Button3.Size = New System.Drawing.Size(104, 45) + Me.Button3.TabIndex = 10 + Me.Button3.Text = "Status Link" + Me.Button3.UseVisualStyleBackColor = True + ' 'Button1 ' Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) @@ -284,10 +307,12 @@ Partial Class usrCntlSMS Me.txtMaxSrch._DateTimeOnly = False Me.txtMaxSrch._numbersOnly = True Me.txtMaxSrch._numbersOnlyKommastellen = "" + Me.txtMaxSrch._numbersOnlyTrennzeichen = True Me.txtMaxSrch._Prozent = False Me.txtMaxSrch._ShortDateNew = False Me.txtMaxSrch._ShortDateOnly = False Me.txtMaxSrch._TimeOnly = False + Me.txtMaxSrch._TimeOnly_Seconds = False Me.txtMaxSrch._value = "" Me.txtMaxSrch._Waehrung = False Me.txtMaxSrch._WaehrungZeichen = True @@ -523,6 +548,10 @@ Partial Class usrCntlSMS ' Me.pnl.BackColor = System.Drawing.Color.WhiteSmoke Me.pnl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.pnl.Controls.Add(Me.lblFehlerhaft) + Me.pnl.Controls.Add(Me.Label5) + Me.pnl.Controls.Add(Me.lblgesendetOK) + Me.pnl.Controls.Add(Me.Label3) Me.pnl.Controls.Add(Me.cboAbsedner) Me.pnl.Controls.Add(Me.Label1) Me.pnl.Controls.Add(Me.Label8) @@ -553,6 +582,36 @@ Partial Class usrCntlSMS Me.pnl.Size = New System.Drawing.Size(1111, 140) Me.pnl.TabIndex = 0 ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label5.Location = New System.Drawing.Point(631, 109) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(61, 13) + Me.Label5.TabIndex = 39 + Me.Label5.Text = "fehlerhaft" + ' + 'lblgesendetOK + ' + Me.lblgesendetOK.AutoSize = True + Me.lblgesendetOK.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblgesendetOK.Location = New System.Drawing.Point(787, 92) + Me.lblgesendetOK.Name = "lblgesendetOK" + Me.lblgesendetOK.Size = New System.Drawing.Size(11, 13) + Me.lblgesendetOK.TabIndex = 38 + Me.lblgesendetOK.Text = "." + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label3.Location = New System.Drawing.Point(631, 87) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(95, 13) + Me.Label3.TabIndex = 37 + Me.Label3.Text = "erfolgreich ges." + ' 'cboAbsedner ' Me.cboAbsedner._allowedValuesFreiText = Nothing @@ -607,18 +666,15 @@ Partial Class usrCntlSMS Me.StornoToolStripMenuItem.Size = New System.Drawing.Size(123, 22) Me.StornoToolStripMenuItem.Text = "Storno" ' - 'Button3 + 'lblFehlerhaft ' - Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) - Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button3.Location = New System.Drawing.Point(226, 5) - Me.Button3.Margin = New System.Windows.Forms.Padding(0) - Me.Button3.Name = "Button3" - Me.Button3.Size = New System.Drawing.Size(104, 45) - Me.Button3.TabIndex = 10 - Me.Button3.Text = "Status Link" - Me.Button3.UseVisualStyleBackColor = True + Me.lblFehlerhaft.AutoSize = True + Me.lblFehlerhaft.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFehlerhaft.Location = New System.Drawing.Point(787, 113) + Me.lblFehlerhaft.Name = "lblFehlerhaft" + Me.lblFehlerhaft.Size = New System.Drawing.Size(11, 13) + Me.lblFehlerhaft.TabIndex = 42 + Me.lblFehlerhaft.Text = "." ' 'usrCntlSMS ' @@ -680,4 +736,8 @@ Partial Class usrCntlSMS Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Button1 As Button Friend WithEvents Button3 As Button + Friend WithEvents lblgesendetOK As Label + Friend WithEvents Label3 As Label + Friend WithEvents Label5 As Label + Friend WithEvents lblFehlerhaft As Label End Class diff --git a/SDL/SMS/usrCntlSMS.vb b/SDL/SMS/usrCntlSMS.vb index 9d08e644..660d4e8b 100644 --- a/SDL/SMS/usrCntlSMS.vb +++ b/SDL/SMS/usrCntlSMS.vb @@ -1,4 +1,5 @@ Imports com.esendex.sdk.sent +Imports java.rmi.dgc Public Class usrCntlSMS @@ -175,6 +176,19 @@ Public Class usrCntlSMS End With showDGV() + Dim OK As Integer = 0 + Dim failed As Integer = 0 + For Each r As DataGridViewRow In MyDatagridview1.Rows + If r.Cells("Status").Value = "OK" Then + OK += 1 + ElseIf r.Cells("Status").Value = "FEHLER" Then + failed += 1 + End If + Next + + lblgesendetOK.Text = OK & " / " & MyDatagridview1.Rows.Count + lblFehlerhaft.Text = failed & " / " & MyDatagridview1.Rows.Count + Me.Cursor = Cursors.Default End Sub @@ -399,5 +413,7 @@ Public Class usrCntlSMS End If End Sub + + End Class diff --git a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb index 9bb2457c..70e1f68b 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb @@ -58,6 +58,8 @@ Partial Class frmMDM_USTVAntrag Me.cbxLand = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.lblLand = New System.Windows.Forms.Label() Me.Panel8 = New System.Windows.Forms.Panel() + Me.Label21 = New System.Windows.Forms.Label() + Me.txtErstattung = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtVZOffen = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Label19 = New System.Windows.Forms.Label() Me.btnSortNachLeist = New System.Windows.Forms.Button() @@ -152,8 +154,6 @@ Partial Class frmMDM_USTVAntrag Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.txtErstattung = New VERAG_PROG_ALLGEMEIN.MyTextBox() - Me.Label21 = New System.Windows.Forms.Label() Me.pnlBottom.SuspendLayout() CType(Me.pbXMLExport, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pbMail, System.ComponentModel.ISupportInitialize).BeginInit() @@ -676,6 +676,45 @@ Partial Class frmMDM_USTVAntrag Me.Panel8.Size = New System.Drawing.Size(963, 144) Me.Panel8.TabIndex = 19 ' + 'Label21 + ' + Me.Label21.AutoSize = True + Me.Label21.BackColor = System.Drawing.Color.Transparent + Me.Label21.Cursor = System.Windows.Forms.Cursors.Hand + Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label21.ForeColor = System.Drawing.Color.Black + Me.Label21.Location = New System.Drawing.Point(524, 119) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(77, 17) + Me.Label21.TabIndex = 62 + Me.Label21.Text = "Erstattung:" + ' + 'txtErstattung + ' + Me.txtErstattung._DateTimeOnly = False + Me.txtErstattung._numbersOnly = True + Me.txtErstattung._numbersOnlyKommastellen = "2" + Me.txtErstattung._numbersOnlyTrennzeichen = True + Me.txtErstattung._Prozent = False + Me.txtErstattung._ShortDateNew = False + Me.txtErstattung._ShortDateOnly = False + Me.txtErstattung._TimeOnly = False + Me.txtErstattung._TimeOnly_Seconds = False + Me.txtErstattung._value = "" + Me.txtErstattung._Waehrung = True + Me.txtErstattung._WaehrungZeichen = True + Me.txtErstattung.Enabled = False + Me.txtErstattung.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!) + Me.txtErstattung.ForeColor = System.Drawing.Color.Black + Me.txtErstattung.Location = New System.Drawing.Point(654, 114) + Me.txtErstattung.MaxLength = 10 + Me.txtErstattung.MaxLineLength = -1 + Me.txtErstattung.MaxLines_Warning = "" + Me.txtErstattung.MaxLines_Warning_Label = Nothing + Me.txtErstattung.Name = "txtErstattung" + Me.txtErstattung.Size = New System.Drawing.Size(125, 23) + Me.txtErstattung.TabIndex = 61 + ' 'txtVZOffen ' Me.txtVZOffen._DateTimeOnly = False @@ -1977,45 +2016,6 @@ Partial Class frmMDM_USTVAntrag Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen" Me.FakturiertToolStripMenuItem.Visible = False ' - 'txtErstattung - ' - Me.txtErstattung._DateTimeOnly = False - Me.txtErstattung._numbersOnly = True - Me.txtErstattung._numbersOnlyKommastellen = "2" - Me.txtErstattung._numbersOnlyTrennzeichen = True - Me.txtErstattung._Prozent = False - Me.txtErstattung._ShortDateNew = False - Me.txtErstattung._ShortDateOnly = False - Me.txtErstattung._TimeOnly = False - Me.txtErstattung._TimeOnly_Seconds = False - Me.txtErstattung._value = "" - Me.txtErstattung._Waehrung = True - Me.txtErstattung._WaehrungZeichen = True - Me.txtErstattung.Enabled = False - Me.txtErstattung.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!) - Me.txtErstattung.ForeColor = System.Drawing.Color.Black - Me.txtErstattung.Location = New System.Drawing.Point(654, 114) - Me.txtErstattung.MaxLength = 10 - Me.txtErstattung.MaxLineLength = -1 - Me.txtErstattung.MaxLines_Warning = "" - Me.txtErstattung.MaxLines_Warning_Label = Nothing - Me.txtErstattung.Name = "txtErstattung" - Me.txtErstattung.Size = New System.Drawing.Size(125, 23) - Me.txtErstattung.TabIndex = 61 - ' - 'Label21 - ' - Me.Label21.AutoSize = True - Me.Label21.BackColor = System.Drawing.Color.Transparent - Me.Label21.Cursor = System.Windows.Forms.Cursors.Hand - Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label21.ForeColor = System.Drawing.Color.Black - Me.Label21.Location = New System.Drawing.Point(524, 119) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(77, 17) - Me.Label21.TabIndex = 62 - Me.Label21.Text = "Erstattung:" - ' 'frmMDM_USTVAntrag ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index b7237a3e..208ddccf 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -24,6 +24,7 @@ Public Class frmMDM_USTVAntrag Dim GesamtUSteuerEUR As Double Dim GesamtUSteuer As Double Dim looked As Boolean = False + Dim suppressSelectionChanged = False Sub New(UStVAn_ID) @@ -51,22 +52,25 @@ Public Class frmMDM_USTVAntrag End Sub Sub init(Optional posIndex As Integer = -1, Optional Lieferant As String = "") + + suppressSelectionChanged = True + pnlBody.AutoScroll = False lblGesamtUSteuerFW.Text = "-" lblGesamtErstattungFW.Text = "-" lblDiffernezbetragFW.Text = "-" - lblGesamtUSteuer.Text="-" + lblGesamtUSteuer.Text = "-" lblGesamtErstattung.Text = "-" lblDiffernezbetrag.Text = "-" lblVZAenderungsdatum.Text = "-" btnAntrageeinarbeiten.Enabled = Not UStVAn_ID <= 0 - FlowLayoutPanel.Enabled= Not UStVAn_ID <= 0 - btnEintragloeschen.Enabled= Not UStVAn_ID <= 0 - btnNeuerEintrag.Enabled= Not UStVAn_ID <= 0 - UstCntlUSTV_AntragPosition1.Enabled= Not UStVAn_ID <= 0 + FlowLayoutPanel.Enabled = Not UStVAn_ID <= 0 + btnEintragloeschen.Enabled = Not UStVAn_ID <= 0 + btnNeuerEintrag.Enabled = Not UStVAn_ID <= 0 + UstCntlUSTV_AntragPosition1.Enabled = Not UStVAn_ID <= 0 cbxLand.Visible = UStVAn_ID <= 0 With dgvUSTVPositionen @@ -301,71 +305,71 @@ Public Class frmMDM_USTVAntrag Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) - Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) - If KUNDE IsNot Nothing Then - pnlHeader.BackColor = Color.FromArgb(0, 54, 128) - If KUNDE.Abfertigungsverbot Then pnlHeader.BackColor = Color.IndianRed + Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) + If KUNDE IsNot Nothing Then + pnlHeader.BackColor = Color.FromArgb(0, 54, 128) + If KUNDE.Abfertigungsverbot Then pnlHeader.BackColor = Color.IndianRed + Else + pnlHeader.BackColor = Color.FromArgb(0, 54, 128) + End If + + If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then + looked = True + Else + looked = False + End If + + lookFields(looked) + + If KUNDE_ERW IsNot Nothing Then + + If KUNDE_ERW.kde_MWStAbrechnung <> "" Then + lblMWSTAntrag.Text = KUNDE_ERW.kde_MWStAbrechnung Else - pnlHeader.BackColor = Color.FromArgb(0, 54, 128) + lblMWSTAntrag.Text = "" End If + If KUNDE_ERW.kde_AnmerkungAntrag IsNot Nothing AndAlso KUNDE_ERW.kde_AnmerkungAntrag <> "" Then lblMWSTAntrag.Text &= " - " & KUNDE_ERW.kde_AnmerkungAntrag + End If - If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then - looked = True - Else - looked = False - End If + If USTV_ANTRAG.FilialenNr IsNot Nothing AndAlso USTV_ANTRAG.FilialenNr > 0 AndAlso USTV_ANTRAG.AbfertigungsNr IsNot Nothing AndAlso USTV_ANTRAG.AbfertigungsNr > 0 Then + Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) + If spedBuch.hasEntry Then - lookFields(looked) - - If KUNDE_ERW IsNot Nothing Then - - If KUNDE_ERW.kde_MWStAbrechnung <> "" Then - lblMWSTAntrag.Text = KUNDE_ERW.kde_MWStAbrechnung + If CInt(SQL.getValueTxtBySql("select COUNT(*) from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19 and DruckDatumZeit is not null", "FMZOLL",,, "0")) > 0 Then + pb_Beleg.Visible = True Else - lblMWSTAntrag.Text = "" + pb_Beleg.Visible = False + End If - If KUNDE_ERW.kde_AnmerkungAntrag IsNot Nothing AndAlso KUNDE_ERW.kde_AnmerkungAntrag <> "" Then lblMWSTAntrag.Text &= " - " & KUNDE_ERW.kde_AnmerkungAntrag - End If - If USTV_ANTRAG.FilialenNr IsNot Nothing AndAlso USTV_ANTRAG.FilialenNr > 0 AndAlso USTV_ANTRAG.AbfertigungsNr IsNot Nothing AndAlso USTV_ANTRAG.AbfertigungsNr > 0 Then - Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) - If spedBuch.hasEntry Then - - If CInt(SQL.getValueTxtBySql("select COUNT(*) from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19 and DruckDatumZeit is not null", "FMZOLL",,, "0")) > 0 Then - pb_Beleg.Visible = True - Else - pb_Beleg.Visible = False - - End If - - Button4.Text = "Sped.-Buch anzeigen" - Button5.Visible = True - Else - Button4.Text = "Sped.-Buch eintragen" - Button5.Visible = False - End If + Button4.Text = "Sped.-Buch anzeigen" + Button5.Visible = True Else Button4.Text = "Sped.-Buch eintragen" Button5.Visible = False End If + Else + Button4.Text = "Sped.-Buch eintragen" + Button5.Visible = False End If + End If - If posIndex > 0 Then - posIndex = posIndex - 1 - If posIndex > 0 And dgvUSTVPositionen.Rows.Count > posIndex Then + If posIndex > 0 Then + Dim idx As Integer = posIndex - 1 + If idx >= 0 AndAlso dgvUSTVPositionen.Rows.Count > idx Then dgvUSTVPositionen.ClearSelection() - dgvUSTVPositionen.Rows(posIndex).Selected = True - For Each c As DataGridViewCell In dgvUSTVPositionen.Rows(posIndex).Cells + dgvUSTVPositionen.Rows(idx).Selected = True + For Each c As DataGridViewCell In dgvUSTVPositionen.Rows(idx).Cells If c.Visible Then - dgvUSTVPositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht + dgvUSTVPositionen.CurrentCell = c Exit For End If Next - End If - End If + suppressSelectionChanged = False + End Sub Sub setValue(USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag) @@ -510,7 +514,6 @@ Public Class frmMDM_USTVAntrag End Sub Private Sub UsrCntlDatenDetails1_Changed(POSId) Handles UstCntlUSTV_AntragPosition1.CHANGED - 'refreshDgv(kdNr, SDLNr, Kfz, History)'?????????????? ausgebelndet,was das ein VErsuch? 31.07.2017 Dim posIdinDGV As Boolean = False @@ -2080,6 +2083,7 @@ Public Class frmMDM_USTVAntrag Private Sub dgvUSTVPositionen_SelectionChanged(sender As Object, e As EventArgs) Handles dgvUSTVPositionen.SelectionChanged + If suppressSelectionChanged Then Exit Sub If dgvUSTVPositionen.SelectedRows.Count > 0 Then initPosition(dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value) @@ -3150,7 +3154,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_Zeitstempel = Now() If USTV_POS.SAVE() Then init() - 'dgvUSTVPositionen.SetOrder() + dgvUSTVPositionen.SetOrder() Else End If @@ -3387,7 +3391,7 @@ Public Class frmMDM_USTVAntrag If UStVAn_ID <= 0 Then Exit Sub - .SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetragEUR],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],UStVEr_VZ,UStVEr_RZVZ,UStVEr_Bank,UStVEr_Differenz,[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetrag],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel] + .SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetragEUR],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],UStVEr_VZ,UStVEr_RZVZ,UStVEr_Bank,UStVEr_Differenz,[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetrag],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel],[UStVEr_RK_ID] FROM [tblUStVErstattung] where UStVAn_ID=" & UStVAn_ID & " ORDER BY UStVEr_ID", "FMZOLL") .LOAD() @@ -3404,6 +3408,9 @@ Public Class frmMDM_USTVAntrag .Columns("Belegdatum").Width = 80 .Columns("Belegnummer").Width = 130 + .Columns("Belegdatum").Visible = False + .Columns("Belegnummer").Visible = False + .Columns("UStVEr_USteuerbetrag").HeaderText = "USt-Betrag" .Columns("UStVEr_USteuerbetrag").Width = 110 .Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Format = "N2" @@ -3447,8 +3454,8 @@ Public Class frmMDM_USTVAntrag .Columns("Berufungsgrund").Width = 100 .Columns("Bemerkung").Width = 200 - .Columns("UStVEr_Umrechnungskurs").HeaderText = "Umrechnungskurs" - .Columns("UStVEr_Umrechnungskurs").Width = 60 + .Columns("UStVEr_Umrechnungskurs").HeaderText = "Kurs" + .Columns("UStVEr_Umrechnungskurs").Width = 30 .Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Format = "N2" .Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight @@ -3462,9 +3469,40 @@ Public Class frmMDM_USTVAntrag .Columns("UStVEr_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("UStVEr_Zeitstempel").Visible = False + .Columns("UStVEr_RK_ID").Visible = False End If + + Dim c As New DataGridViewImageColumn + c.Name = "clmnPDF" : c.HeaderText = "GU" + ' c.Image = Nothing + c.DefaultCellStyle.NullValue = Nothing + c.ImageLayout = DataGridViewImageCellLayout.Zoom + c.Width = 40 : c.DefaultCellStyle.Padding = New Padding(2) : c.DefaultCellStyle.BackColor = Color.White + 'c.DefaultCellStyle.Tag = "Therefore anzeigen" + + + If Not .Columns.Contains("clmnPDF") Then .Columns.Add(c) + + + + For Each r As DataGridViewRow In .Rows + + Dim rk_id As Integer = -1 + + If Not IsDBNull(r.Cells("UStVEr_RK_ID").Value) Then + rk_id = r.Cells("UStVEr_RK_ID").Value + End If + + + If rk_id > 0 Then + DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = Nothing + DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf + End If + + Next + If .RowCount < 1 Then initErstsattungsPosition(-1) @@ -3474,9 +3512,9 @@ Public Class frmMDM_USTVAntrag If posIndex > 0 And dgvErstattungspositionen.Rows.Count > posIndex Then dgvErstattungspositionen.ClearSelection() dgvErstattungspositionen.Rows(posIndex).Selected = True - For Each c As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells - If c.Visible Then - dgvErstattungspositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht + For Each co As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells + If co.Visible Then + dgvErstattungspositionen.CurrentCell = co 'Damit der Cursor in der DGV richtig steht Exit For End If Next @@ -5423,6 +5461,28 @@ Public Class frmMDM_USTVAntrag End Sub + Private Sub dgvErstattungspositionen_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvErstattungspositionen.CellContentDoubleClick + + Try + If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then + + Dim pdf As String = "" + pdf = func.getPDF(1, Nothing, Nothing, dgvErstattungspositionen.Rows(e.RowIndex).Cells("UStVEr_RK_ID").Value, False, False, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) + + If System.IO.File.Exists(pdf) Then + Process.Start(pdf) + End If + + End If + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + Me.Cursor = Cursors.Default + End Try + Me.Cursor = Cursors.Default + + + + End Sub Public Shared Function rearangePosNrByLeistender(UStVAn_ID As Integer) diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index 09776133..dbb2f135 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -2065,8 +2065,8 @@ Public Class usrCntlUSTV .btnPreisliste.Visible = False .dgvHandling.RowHeadersVisible = False .Button2.Text = "Importieren" - .cbxDivers.Visible = True - .cbxDivers.Text = "VZ und RZ-Beträge im Antrag erhöhen" + '.cbxDivers.Visible = True + '.cbxDivers.Text = "VZ und RZ-Beträge im Antrag erhöhen" End With frm.ShowDialog() @@ -2087,7 +2087,7 @@ Public Class usrCntlUSTV Dim updateVURZ As Boolean = False - updateVURZ = frm.cbxDivers.Checked + updateVURZ = False 'frm.cbxDivers.Checked Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.SafeFileName) If Not UStV_ERS.hasEntry Then diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 72f79cad..453f57cb 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -87,11 +87,12 @@ Public Class ustCntlUSTV_AntragPosition sbLeistender._value = UStV_Leitender.UStV_LeistenderId sbLeistender_VALUE_CHANGED() Else - sbLeistender._value = "" + 'sbLeistender._value = "" End If - sbLeistender._value = "" + 'sbLeistender._value = "" Else sbLeistender._value = "" + sbLeistender.Text = "" End If diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb index a3186114..11c90575 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb @@ -604,6 +604,7 @@ Public Class cUStVErstattungPositionen Property UStVEr_RZVZ As Object = Nothing Property UStVEr_Bank As Object = Nothing Property UStVEr_Differenz As Object = Nothing + Property UStVEr_RK_ID As Object = Nothing Public hasEntry = False @@ -635,10 +636,11 @@ Public Class cUStVErstattungPositionen list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_RZVZ", UStVEr_RZVZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Bank", UStVEr_Bank)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Differenz", UStVEr_Differenz)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_RK_ID", UStVEr_RK_ID)) Return list End Function - Sub New(Belegdatum, Belegnummer, UStVEr_Importfilename) + Sub New(Belegdatum As Date, Belegnummer As Integer, UStVEr_Importfilename As String) Me.Belegdatum = Belegdatum Me.Belegnummer = Belegnummer Me.UStVEr_Importfilename = UStVEr_Importfilename @@ -647,18 +649,26 @@ Public Class cUStVErstattungPositionen End Sub - Sub New(UStVAn_ID, UStVEr_ID) + Sub New(UStVAn_ID As Integer, UStVEr_ID As Integer) Me.UStVAn_ID = UStVAn_ID Me.UStVEr_ID = UStVEr_ID LOAD(UStVAn_ID, UStVEr_ID) End Sub + + Sub New(UStVAn_ID As Integer, GutschriftsNr As Integer, GutschriftsDatum As Date) + Me.UStVAn_ID = UStVAn_ID + Me.GutschriftsNr = GutschriftsNr + Me.GutschriftsDatum = GutschriftsDatum + + LOAD(UStVAn_ID, GutschriftsDatum, GutschriftsNr) + End Sub Sub New() End Sub - Public Sub LOAD(UStVAn_ID, UStVEr_ID) + Public Sub LOAD(UStVAn_ID As Integer, UStVEr_ID As Integer) Try hasEntry = False @@ -688,7 +698,7 @@ Public Class cUStVErstattungPositionen End Try End Sub - Public Sub LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename) + Public Sub LOAD(Belegdatum As Date, Belegnummer As Integer, UStVEr_Importfilename As String) Try hasEntry = False @@ -719,6 +729,37 @@ Public Class cUStVErstattungPositionen End Try End Sub + Public Sub LOAD(UStVAn_ID As Integer, GutschriftsDatum As Date, GutschriftNr As Integer) + Try + + hasEntry = False + + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE GutschriftsDatum=@GutschriftsDatum AND GutschriftsNr=@GutschriftsNr AND UStVAn_ID=@UStVAn_ID ", conn) + cmd.Parameters.AddWithValue("@GutschriftsDatum", GutschriftsDatum) + cmd.Parameters.AddWithValue("@GutschriftsNr", GutschriftsNr) + cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID) + Dim dr = cmd.ExecuteReader() + If dr.Read Then + 'Dim l As New cOfferte + For Each i In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable) + If dr.Item(i.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(i.Text)) + End If + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + End Sub + Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() From 7a6ac9df0099fd870f398a198b751c40f39926e3 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 27 Aug 2026 14:41:36 +0200 Subject: [PATCH 17/54] fix USTVA-VZ --- SDL/Fakturierung/frmFaktEmail.vb | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 745c3991..401e21a8 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -799,8 +799,8 @@ Public Class frmFaktEmail Dim USTV_ANTRAG As New cUSTVAntrag(RECHNUNG.ErfassungsNr) Dim GUBetrag_ohneBearbeitung As Double = 0 Dim hatNichtAbgerechneteVZ As Boolean = False + Dim durchREWurdeVZAbgerechnet As Boolean = False - 'todo_Prüfung ist zu spät -> früher (vor dem eintragen in die DB)!!!! For Each pos In USTV_ANTRAG.POSITIONEN If pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) OrElse pos.UStVPo_VZ_RKID Is Nothing) Then 'VZ die noch nicht abgerechnet wurde! hatNichtAbgerechneteVZ = True @@ -808,6 +808,13 @@ Public Class frmFaktEmail End If Next + For Each pos In USTV_ANTRAG.POSITIONEN + If pos.UStVPo_VZ AndAlso pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID Then 'VZ wurde durch diese RE abgerechnet + durchREWurdeVZAbgerechnet = True + Exit For + End If + Next + For Each r As cRechnungsausgangPositionen In RECHNUNG.POSITIONEN If r.BerechnungsartNr = 8 AndAlso (r.LeistungsBez.ToLower.Contains("mwst") Or r.LeistungsBez.ToLower.Contains("moest") Or r.LeistungsBez.ToLower.Contains("vat") Or r.LeistungsBez.ToLower.Contains("excise duty") Or r.LeistungsBez.ToLower.Contains("tva")) Then GUBetrag_ohneBearbeitung += r.Preis @@ -817,6 +824,7 @@ Public Class frmFaktEmail If Not hatNichtAbgerechneteVZ Then Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) If Not ANTR_ERSTATTUNG.hasEntry Then + ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr ANTR_ERSTATTUNG.UStVEr_Umrechnungskurs = 1 @@ -826,23 +834,26 @@ Public Class frmFaktEmail ANTR_ERSTATTUNG.SAVE() End If - USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum + If durchREWurdeVZAbgerechnet Then - If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) OrElse USTV_ANTRAG.UStVAn_VZBetrag Is Nothing Then + USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum - USTV_ANTRAG.UStVAn_VZBetrag = GUBetrag_ohneBearbeitung + If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) OrElse USTV_ANTRAG.UStVAn_VZBetrag Is Nothing Then - ElseIf IsNumeric(USTV_ANTRAG.UStVAn_VZBetrag) Then + USTV_ANTRAG.UStVAn_VZBetrag = GUBetrag_ohneBearbeitung - USTV_ANTRAG.UStVAn_VZBetrag += GUBetrag_ohneBearbeitung + ElseIf IsNumeric(USTV_ANTRAG.UStVAn_VZBetrag) Then + USTV_ANTRAG.UStVAn_VZBetrag += GUBetrag_ohneBearbeitung + + End If + + USTV_ANTRAG.SAVE() End If - USTV_ANTRAG.SAVE() - End If - If hatNichtAbgerechneteVZ Then + If hatNichtAbgerechneteVZ Then Dim SQL As New SQL For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN From b3e2bc81a0469f8b79599d6a8e925f6e63234021 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 27 Aug 2026 16:11:09 +0200 Subject: [PATCH 18/54] fix --- SDL/USTV/usrCntlUSTV.vb | 2 +- VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index dbb2f135..da2ce78b 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -2089,7 +2089,7 @@ Public Class usrCntlUSTV updateVURZ = False 'frm.cbxDivers.Checked - Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.SafeFileName) + Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.SafeFileName, USTV_ANTRAG.UStVAn_ID) If Not UStV_ERS.hasEntry Then Dim isVZ As Boolean = False diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb index 11c90575..70f4c5e6 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb @@ -640,12 +640,13 @@ Public Class cUStVErstattungPositionen Return list End Function - Sub New(Belegdatum As Date, Belegnummer As Integer, UStVEr_Importfilename As String) + Sub New(Belegdatum As Date, Belegnummer As String, UStVEr_Importfilename As String, antragsid As Integer) Me.Belegdatum = Belegdatum Me.Belegnummer = Belegnummer Me.UStVEr_Importfilename = UStVEr_Importfilename + Me.UStVAn_ID = antragsid - LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename) + LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename, antragsid) End Sub @@ -698,16 +699,17 @@ Public Class cUStVErstattungPositionen End Try End Sub - Public Sub LOAD(Belegdatum As Date, Belegnummer As Integer, UStVEr_Importfilename As String) + Public Sub LOAD(Belegdatum As Date, Belegnummer As String, UStVEr_Importfilename As String, UStVAn_ID As Integer) Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() - Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE Belegdatum=@Belegdatum AND Belegnummer=@Belegnummer AND UStVEr_Importfilename=@UStVEr_Importfilename ", conn) + Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE Belegdatum=@Belegdatum AND Belegnummer=@Belegnummer AND UStVEr_Importfilename=@UStVEr_Importfilename AND UStVAn_ID=@UStVAn_ID ", conn) cmd.Parameters.AddWithValue("@Belegdatum", Belegdatum) cmd.Parameters.AddWithValue("@Belegnummer", Belegnummer) cmd.Parameters.AddWithValue("@UStVEr_Importfilename", UStVEr_Importfilename) + cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID) Dim dr = cmd.ExecuteReader() If dr.Read Then 'Dim l As New cOfferte From a912be044ac374cc196fdcddb69b0d6bee1cceb8 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 31 Aug 2026 09:18:48 +0200 Subject: [PATCH 19/54] fix ustva, etc. --- SDL/USTV/frmMDM_USTVAntrag.vb | 77 +++++++++++++++----------- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 11 +--- 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 208ddccf..b5b6623f 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -5,6 +5,7 @@ Imports System.Web.UI.WebControls.Expressions Imports System.Windows.Documents Imports itextsharp.text.pdf Imports Microsoft.Office.Interop +Imports TAlex.WPF.Helpers Imports VERAG_PROG_ALLGEMEIN Public Class frmMDM_USTVAntrag @@ -55,6 +56,7 @@ Public Class frmMDM_USTVAntrag suppressSelectionChanged = True + pnlBody.AutoScroll = False lblGesamtUSteuerFW.Text = "-" @@ -354,6 +356,12 @@ Public Class frmMDM_USTVAntrag End If End If + If dgvUSTVPositionen.Rows.Count = 1 Then + posIndex = dgvUSTVPositionen.Rows.Count + suppressSelectionChanged = False + End If + + If posIndex > 0 Then Dim idx As Integer = posIndex - 1 If idx >= 0 AndAlso dgvUSTVPositionen.Rows.Count > idx Then @@ -595,7 +603,7 @@ Public Class frmMDM_USTVAntrag Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL") setValue(USTV_ANTRAG) - If (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 150000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <160000) Or (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 180000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <190000) Then + If (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 150000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) < 160000) Or (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 180000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) < 190000) Then btnRMCQuartal.Visible = True Else btnRMCQuartal.Visible = False @@ -2324,6 +2332,8 @@ Public Class frmMDM_USTVAntrag UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr UstCntlUSTV_AntragPosition1.Enabled = True + UstCntlUSTV_AntragPosition1.txtRgDatum.Focus() + End Sub @@ -2343,53 +2353,54 @@ Public Class frmMDM_USTVAntrag End If - If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then + If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then - If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = -1 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId_loeschbar Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden! + If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = -1 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId_loeschbar Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden! - If UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId < 0 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId Is Nothing Then + If UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId < 0 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId Is Nothing Then - Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) + Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) - If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then - If DS.DELETE_COMPLETE() Then - 'löschen nicht vorhandenen Verweis! - SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") - - End If - End If - - ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then - - Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId) - - If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then - If DS.DELETE_COMPLETE() Then - 'löschen nicht vorhandenen Verweis! - SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") - End If + If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then + If DS.DELETE_COMPLETE() Then + 'löschen nicht vorhandenen Verweis! + SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") End If - End If - - End If - Dim Leistungsbezeichnung = "" - If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung + ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then - If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, Leistungsbezeichnung) Then - If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then - reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID) + Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId) + + If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then + If DS.DELETE_COMPLETE() Then + 'löschen nicht vorhandenen Verweis! + SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") End If - init() + End If End If - UstCntlUSTV_AntragPosition1.Enabled = False - End If + + + End If + + Dim Leistungsbezeichnung = "" + If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung + + If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, Leistungsbezeichnung) Then + If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then + reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID) + End If + init() + End If + init() + + UstCntlUSTV_AntragPosition1.Enabled = False + End Sub Private Sub btnMail_Click(sender As Object, e As EventArgs) Handles btnMail.Click diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 453f57cb..b16f0c6d 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -26,9 +26,8 @@ Public Class ustCntlUSTV_AntragPosition txtRgDatum._value = "" txtRgNr._value = "" btnLeistenderSave.Visible = False - txtUmrechnungskurs._value = 1 + txtUmrechnungskurs._value = "" txtLeistungsbezeichnung._value = "" - txtUmrechnungskurs._value = 1 txtUSTBetrag._value = 0 txtUSTBetragEUR._value = 0 txtNettobetrag._value = 0 @@ -773,15 +772,11 @@ Public Class ustCntlUSTV_AntragPosition Return End If - Dim oldValueChanged As Boolean = - UStV_POS Is Nothing OrElse - UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse - Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetragEUR) <> ustBetragEUR + Dim oldValueChanged As Boolean = UStV_POS Is Nothing OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetragEUR) <> ustBetragEUR If Not oldValueChanged Then Return - Dim kurs As Decimal = - RoundCurrency(ustBetrag / ustBetragEUR) + Dim kurs As Decimal = RoundCurrency(ustBetrag / ustBetragEUR) txtUmrechnungskurs.Text = kurs.ToString() From b171558cbe0486f5df665f30648edefe8374bdb9 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 31 Aug 2026 10:22:39 +0200 Subject: [PATCH 20/54] fix --- SDL/USTV/frmMDM_USTVAntrag.vb | 18 ++++++++++-------- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 7 ++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index b5b6623f..346079c7 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -5,7 +5,6 @@ Imports System.Web.UI.WebControls.Expressions Imports System.Windows.Documents Imports itextsharp.text.pdf Imports Microsoft.Office.Interop -Imports TAlex.WPF.Helpers Imports VERAG_PROG_ALLGEMEIN Public Class frmMDM_USTVAntrag @@ -26,6 +25,7 @@ Public Class frmMDM_USTVAntrag Dim GesamtUSteuer As Double Dim looked As Boolean = False Dim suppressSelectionChanged = False + Dim suppressSelectionFirstTime = True Sub New(UStVAn_ID) @@ -54,7 +54,9 @@ Public Class frmMDM_USTVAntrag Sub init(Optional posIndex As Integer = -1, Optional Lieferant As String = "") - suppressSelectionChanged = True + + If Not suppressSelectionFirstTime Then suppressSelectionChanged = True + suppressSelectionFirstTime = False pnlBody.AutoScroll = False @@ -356,10 +358,10 @@ Public Class frmMDM_USTVAntrag End If End If - If dgvUSTVPositionen.Rows.Count = 1 Then - posIndex = dgvUSTVPositionen.Rows.Count - suppressSelectionChanged = False - End If + 'If dgvUSTVPositionen.Rows.Count = 1 Then + ' posIndex = dgvUSTVPositionen.Rows.Count + ' suppressSelectionChanged = False + 'End If If posIndex > 0 Then @@ -2070,7 +2072,7 @@ Public Class frmMDM_USTVAntrag Else - UstCntlUSTV_AntragPosition1.reset() + UstCntlUSTV_AntragPosition1.reset(Antrag_LandKz) UstCntlUSTV_AntragPosition1.Enabled = False End If @@ -2327,7 +2329,7 @@ Public Class frmMDM_USTVAntrag Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnNeuerEintrag.Click - UstCntlUSTV_AntragPosition1.reset() + UstCntlUSTV_AntragPosition1.reset(Antrag_LandKz) UstCntlUSTV_AntragPosition1.UStV_POS = New cUStVPositionen(UStVAn_ID) UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index b16f0c6d..583f6098 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -22,7 +22,7 @@ Public Class ustCntlUSTV_AntragPosition RaiseEvent EV_NEXT() End Sub - Sub reset() + Sub reset(Antrag_LandKz As String) txtRgDatum._value = "" txtRgNr._value = "" btnLeistenderSave.Visible = False @@ -46,6 +46,7 @@ Public Class ustCntlUSTV_AntragPosition txtOrt.Text = "" txtLand.Text = "" txtUIDNr.Text = "" + Me.Antrag_LandKz = Antrag_LandKz _gridAktiv = True @@ -60,6 +61,7 @@ Public Class ustCntlUSTV_AntragPosition _gridAktiv = False btnLeistenderSave.Visible = False Me.Antrag_LandKz = Antrag_LandKz + Me.UStV_POS = UStV_POS Me._kundenNr = kdnr cbxAPI.Checked = If(UStV_POS.UStVPo_Schnittstelle, False) @@ -254,8 +256,7 @@ Public Class ustCntlUSTV_AntragPosition Dim filter As String = "UstV_aktiv = 1" If cbxAntragsfilter.Checked AndAlso Not String.IsNullOrWhiteSpace(Antrag_LandKz) Then - filter &= " AND LEFT(UstV_Leistender_UstNr, 2) = '" & - Antrag_LandKz.Replace("'", "''") & "'" + filter &= " AND LEFT(UstV_Leistender_UstNr, 2) = '" & Antrag_LandKz.Replace("'", "''") & "'" End If sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender],[UStV_Leistender] AS Leistender,[UstV_Leistender_PLZ] AS PLZ,([UstV_Leistender_Strasse] + ' ' + [UstV_Leistender_StrasseNr]) AS Strasse,[UstV_Leistender_Stadt] AS Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"}) From f66b136a9e3e464685ead0c7f931296e4a5c3346 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 31 Aug 2026 11:43:46 +0200 Subject: [PATCH 21/54] fix ustva --- SDL/Fakturierung/frmFaktEmail.vb | 31 ++++++++++++++++---------- SDL/USTV/frmMDM_USTVAntrag.vb | 16 +++++-------- SDL/USTV/usrCntlUSTV.vb | 12 +++++----- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 20 +++++++++++++---- 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 401e21a8..66eb9f1e 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -821,19 +821,26 @@ Public Class frmFaktEmail Next + Dim SQL As New SQL If Not hatNichtAbgerechneteVZ Then - Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) - If Not ANTR_ERSTATTUNG.hasEntry Then - ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() - ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum - ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr - ANTR_ERSTATTUNG.UStVEr_Umrechnungskurs = 1 - ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = 0 - ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = 0 - ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID - ANTR_ERSTATTUNG.SAVE() + + Dim count_offene_importierteErstattungen As Integer = -1 + count_offene_importierteErstattungen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVEr_Importfilename] is not null and [GutschriftsNr] is null and [GutschriftsDatum] is null ", "FMZOLL")) + + If count_offene_importierteErstattungen > 0 Then + SQL.doSQL("UPDATE [tblUStVErstattung] SET GutschriftsNr = " & RECHNUNG.RechnungsNr & ",GutschriftsDatum = '" & CDate(RECHNUNG.RechnungsDatum).ToShortDateString & "', UStVEr_RK_ID = " & RECHNUNG.RK_ID & " WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVEr_Importfilename] is not null and [GutschriftsNr] is null and [GutschriftsDatum] is null ", "FMZOLL") + End If + 'Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) + 'If Not ANTR_ERSTATTUNG.hasEntry Then + ' ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() + ' ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum + ' ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr + ' ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID + ' ANTR_ERSTATTUNG.SAVE() + 'End If + If durchREWurdeVZAbgerechnet Then USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum @@ -853,8 +860,8 @@ Public Class frmFaktEmail End If - If hatNichtAbgerechneteVZ Then - Dim SQL As New SQL + If hatNichtAbgerechneteVZ Then + For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 346079c7..ff8424be 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -358,12 +358,6 @@ Public Class frmMDM_USTVAntrag End If End If - 'If dgvUSTVPositionen.Rows.Count = 1 Then - ' posIndex = dgvUSTVPositionen.Rows.Count - ' suppressSelectionChanged = False - 'End If - - If posIndex > 0 Then Dim idx As Integer = posIndex - 1 If idx >= 0 AndAlso dgvUSTVPositionen.Rows.Count > idx Then @@ -500,7 +494,6 @@ Public Class frmMDM_USTVAntrag If USTV_ANTRAG.UStVAn_Gewerbe Is Nothing Then USTV_ANTRAG.UStVAn_Gewerbe = "Transportunternehmer" If USTV_ANTRAG.UStVAn_Erklärung_9_a Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_a = "Warentransport" If USTV_ANTRAG.UStVAn_Ausstellungsort Is Nothing Then USTV_ANTRAG.UStVAn_Ausstellungsort = "Suben" - If USTV_ANTRAG.UStVAn_Erklärung_9_b_1 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_1 = False If USTV_ANTRAG.UStVAn_Erklärung_9_b_2 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_2 = False If USTV_ANTRAG.UStVAn_Erklärung_9_b_3 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_3 = False @@ -1916,7 +1909,7 @@ Public Class frmMDM_USTVAntrag End If - + checkIfMWSTEingangAbrechung() Else @@ -2335,6 +2328,7 @@ Public Class frmMDM_USTVAntrag UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr UstCntlUSTV_AntragPosition1.Enabled = True UstCntlUSTV_AntragPosition1.txtRgDatum.Focus() + UstCntlUSTV_AntragPosition1.initUsrCntlPDF() End Sub @@ -3280,8 +3274,8 @@ Public Class frmMDM_USTVAntrag Dim count_nichtMWSTOffen As Integer = -1 - count_nichtMWSTOffen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and isnull([GutschriftsDatum],0) = 0 and UStVEr_Importfilename is not null", "FMZOLL")) - If count_nichtMWSTOffen = 0 Then + count_nichtMWSTOffen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [GutschriftsDatum] is null and UStVEr_Importfilename is not null", "FMZOLL")) + If count_nichtMWSTOffen = 0 AndAlso USTV_ANTRAG.UStVAn_MWSTEingang_offen Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_MWSTEingang_offen = 0 WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If @@ -3488,7 +3482,7 @@ Public Class frmMDM_USTVAntrag Dim c As New DataGridViewImageColumn - c.Name = "clmnPDF" : c.HeaderText = "GU" + c.Name = "clmnPDF" : c.HeaderText = "GS" ' c.Image = Nothing c.DefaultCellStyle.NullValue = Nothing c.ImageLayout = DataGridViewImageCellLayout.Zoom diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index da2ce78b..daaff3d1 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -1968,8 +1968,8 @@ Public Class usrCntlUSTV Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count Dim input = Convert.ToString(Blatt.Cells(1, 1).Value).Trim() - If input <> "" AndAlso input.StartsWith("MWST-Eingang") Then - BelegdatumInput = input.Replace("MWST-Eingang", "") + If input <> "" AndAlso input.StartsWith("MWST Eingänge ") Then + BelegdatumInput = input.Replace("MWST Eingänge ", "") BelegdatumInput = BelegdatumInput.Trim End If @@ -2130,20 +2130,20 @@ Public Class usrCntlUSTV End If - If Not String.IsNullOrWhiteSpace(r.Cells("Bank").Value) AndAlso IsNumeric(r.Cells("Bank").Value) AndAlso Not IsDBNull(r.Cells("Bank")) AndAlso CDbl(r.Cells("Bank").Value) <> 0 Then + If Not String.IsNullOrWhiteSpace(r.Cells("Bank").Value) AndAlso IsNumeric(r.Cells("Bank").Value) AndAlso Not IsDBNull(r.Cells("Bank").Value) AndAlso CDbl(r.Cells("Bank").Value) <> 0 Then Bemerkung &= ", a.K. : " & CDbl(r.Cells("Bank").Value).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode UStV_ERS.UStVEr_Bank = CDbl(r.Cells("Bank").Value) End If If isVZ Then - If Not String.IsNullOrWhiteSpace(r.Cells("VZDiff").Value) AndAlso IsNumeric(r.Cells("VZDiff")) AndAlso Not IsDBNull(r.Cells("VZDiff")) AndAlso CDbl(r.Cells("VZDiff").Value) <> 0 Then + If Not String.IsNullOrWhiteSpace(r.Cells("VZDiff").Value) AndAlso IsNumeric(r.Cells("VZDiff").Value) AndAlso Not IsDBNull(r.Cells("VZDiff").Value) AndAlso CDbl(r.Cells("VZDiff").Value) <> 0 Then Bemerkung &= ", VZDiff: " & CDbl(r.Cells("VZDiff").Value).ToString("N2") UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("VZDiff").Value) End If Else - If Not String.IsNullOrWhiteSpace(r.Cells("Diff").Value) AndAlso IsNumeric(r.Cells("Diff")) AndAlso Not IsDBNull(r.Cells("Diff")) AndAlso CDbl(r.Cells("Diff").Value) <> 0 Then + If Not String.IsNullOrWhiteSpace(r.Cells("Diff").Value) AndAlso IsNumeric(r.Cells("Diff").Value) AndAlso Not IsDBNull(r.Cells("Diff").Value) AndAlso CDbl(r.Cells("Diff").Value) <> 0 Then Bemerkung &= ", Diff: " & CDbl(r.Cells("Diff").Value).ToString("N2") UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("Diff").Value) @@ -2152,7 +2152,7 @@ Public Class usrCntlUSTV - If Not String.IsNullOrWhiteSpace(r.Cells("RZVZ").Value) AndAlso IsNumeric(r.Cells("RZVZ")) AndAlso Not IsDBNull(r.Cells("RZVZ")) AndAlso CDbl(r.Cells("RZVZ").Value) <> 0 Then + If Not String.IsNullOrWhiteSpace(r.Cells("RZVZ").Value) AndAlso IsNumeric(r.Cells("RZVZ").Value) AndAlso Not IsDBNull(r.Cells("RZVZ").Value) AndAlso CDbl(r.Cells("RZVZ").Value) <> 0 Then UStV_ERS.UStVEr_RZVZ = CDbl(r.Cells("RZVZ").Value).ToString("N2") If updateVURZ Then If USTV_ANTRAG.UStVAn_RZBetragVZ Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_RZBetragVZ) Then diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index 583f6098..47ccd0bd 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -48,12 +48,23 @@ Public Class ustCntlUSTV_AntragPosition txtUIDNr.Text = "" Me.Antrag_LandKz = Antrag_LandKz + + _gridAktiv = True InitLeistenderSearchBox() End Sub + Sub initUsrCntlPDF() + + scanSonstiges.INIT(_kundenNr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr) + 'scanSonstiges.INIT_daId(da_id) + scanSonstiges.Enabled = True + btnAPIUbload.Enabled = False + + End Sub + Sub setValues(kdnr As Integer, UStV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen, Antrag_LandKz As String, UStV_Leitender As VERAG_PROG_ALLGEMEIN.cUStVLeistender, atez_api As cATEZ_NCTS_IN) initSchnittstellenNr() @@ -131,10 +142,11 @@ Public Class ustCntlUSTV_AntragPosition scanSonstiges.Enabled = UStV_POS.UStVPo_daId_loeschbar 'Not UStV_POS.UStVPo_SchnittstellenNr > 0 btnAPIUbload.Enabled = True 'hochladbar aber nicht einfügen lassen! UStV_POS.UStVPo_daId_loeschbar Else - scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr) - 'scanSonstiges.INIT_daId(da_id) - scanSonstiges.Enabled = True - btnAPIUbload.Enabled = False + initUsrCntlPDF() + 'scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr) + ''scanSonstiges.INIT_daId(da_id) + 'scanSonstiges.Enabled = True + 'btnAPIUbload.Enabled = False End If If txtNettobetrag.Text = "" AndAlso txtNettobetragEUR.Text <> "" Then From 3a5c58de71ccf315108bb497d6dabe78d6d0036e Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 31 Aug 2026 13:17:38 +0200 Subject: [PATCH 22/54] Einblendung BelegNr, Belegdat. USTVA --- SDL/USTV/frmMDM_USTVAntrag.vb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index ff8424be..310c39f7 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -3415,8 +3415,8 @@ Public Class frmMDM_USTVAntrag .Columns("Belegdatum").Width = 80 .Columns("Belegnummer").Width = 130 - .Columns("Belegdatum").Visible = False - .Columns("Belegnummer").Visible = False + '.Columns("Belegdatum").Visible = False + '.Columns("Belegnummer").Visible = False .Columns("UStVEr_USteuerbetrag").HeaderText = "USt-Betrag" .Columns("UStVEr_USteuerbetrag").Width = 110 @@ -3433,8 +3433,6 @@ Public Class frmMDM_USTVAntrag .Columns("Berufungsdatum").HeaderText = "BE-Datum" .Columns("Berufungshöhe").HeaderText = "BE-Höhe" .Columns("Berufungsgrund").HeaderText = "BE-Grund" - - .Columns("Berufungsdatum").Visible = False .Columns("Berufungshöhe").Visible = False .Columns("Berufungsgrund").Visible = False From 27765bcf12e2993aaa18ed76045f3746474299c8 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 31 Aug 2026 17:05:54 +0200 Subject: [PATCH 23/54] kasse, abrechnung --- SDL/Fakturierung/usrCntlFaktAbrechnung.vb | 20 ++++++++++++++------ SDL/kassenbuch/frmBelegNeu.vb | 1 + 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index 380f8928..31ec40fc 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -5261,13 +5261,19 @@ mwst: r.Cells("Preis").Value = sumVZAntrag Else - Dim GesamtUSteuerEUR As Double = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0") - Dim GesamtErstattungEUR As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0") - Dim DiffernezbetragEUR As Double = GesamtUSteuerEUR - GesamtErstattungEUR + 'vorher wurde der Differenzbetrag zuerst verrechnet und dann erst ausgetragen, nun umgekehrt! + 'Dim GesamtUSteuerEUR As Double = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0") + 'Dim GesamtErstattungEUR As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0") + 'Dim DiffernezbetragEUR As Double = GesamtUSteuerEUR - GesamtErstattungEUR + + 'If DiffernezbetragEUR <> 0 Then + ' r.Cells("Preis").Value = DiffernezbetragEUR + 'Else + ' r.Cells("Preis").Value = 0 + 'End If + 'quickfix! + r.Cells("Preis").Value = sumFremdAntrag + sumRMCAntrag - If DiffernezbetragEUR <> 0 Then - r.Cells("Preis").Value = DiffernezbetragEUR - End If End If @@ -5286,6 +5292,8 @@ mwst: If Not IsDBNull(r.Cells("Preis").Value) Then Dim OFFERTE As New VERAG_PROG_ALLGEMEIN.cOfferte(IIf(RECHNUNG.RechnungsKundenNr > 0, RECHNUNG.RechnungsKundenNr, kdFirmaRechnungAn.KdNr), OffertNr, True) Call prBearbGeb_NEW(r, OFFERTE, RECHNUNG, r.Cells("BGebLeistungsNr").Value, r.Cells("BGebProzent").Value, IIf(Not IsDBNull(r.Cells("BGebMinBetrag").Value), r.Cells("BGebMinBetrag").Value, 0), r.Cells("Preis").Value * If(RECHNUNG.Vorzeichen = "-", -1, 1), summeRMC, summeFremd, OFFERT_RMC, OFFERT_FREMD, FremdUndRMC, changed, sumRMCAntrag, sumOffertRMC, sumFremdAntrag, sumOffertFremd, sumVZAntrag, POSChanged) + Else + 'MsgBox("kein Preis im Offert hinterlegt!") End If End If diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index a2d11657..396a5833 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -420,6 +420,7 @@ Public Class frmBelegNeu End If If PERSONAL.Niederlassung = "SBG" Then where = "Preislisten_visibleSBG = 1" If PERSONAL.Niederlassung = "WAI" Then where = "Preislisten_visibleWAI = 1" + If PERSONAL.Niederlassung = "KLP" Then where = "Preislisten_visibleWAI = 1" If PERSONAL.Niederlassung = "NKD" Then where = "Preislisten_visibleNKD = 1" If PERSONAL.Niederlassung = "IME" Then where = "Preislisten_visibleIMEX = 1" From d098d0a1f364cfc7090a552c23fa86c8a74a7c54 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 1 Sep 2026 15:02:09 +0200 Subject: [PATCH 24/54] AEO Logo korrigiert. --- SDL/Fakturierung/cFakturierung.vb | 2 +- SDL/My Project/AssemblyInfo.vb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 7000b6fe..2b795787 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -945,7 +945,7 @@ Public Class cFakturierung Case 1 rpt.picVERAG.Image = My.Resources.Verag_AG_Logo - rpt.Picture1.Image = My.Resources.aeo_AT_imex + rpt.Picture1.Image = My.Resources.aeo Case 4 rpt.picVERAG.Image = My.Resources.Verag_AG_Logo diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 90b95bea..d26a4e70 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 42808b5d259f8002a29751d763f5e20ae873c199 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 2 Sep 2026 08:33:37 +0200 Subject: [PATCH 25/54] SPedbuch --- .../usrCntlSpeditionsBuchSuche.vb | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb index e7262cf7..3337a11d 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb @@ -577,18 +577,24 @@ Public Class usrCntlSpeditionsBuchSuche Button16.Visible = True Button17.Visible = True btnnachLeistungsNr.Visible = True - ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then - pnlBerichte.Visible = True - For Each p In pnlBerichte.Controls - p.Visible = False - Next - cbxHandlingAbrechnen.Visible = True - pnlHandling.Visible = False - pnlHandlingAmbar.Visible = True + + 'darf nur angezeigt werden, wenn Berechtigung: ZOLL_Auswertungen + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + pnlBerichte.Visible = True + For Each p In pnlBerichte.Controls + p.Visible = False + Next + cbxHandlingAbrechnen.Visible = True + pnlHandling.Visible = False + pnlHandlingAmbar.Visible = True + + End If End If + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZOLL_Auswertungen_Erlöse", "SDL") Then btnSpedBuchEinnahmen.Visible = True End If From 19e698bc537016bf6a068958393d1423cb16aa56 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 2 Sep 2026 15:10:21 +0200 Subject: [PATCH 26/54] =?UTF-8?q?ansicht=20vz-=C3=84nderung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/USTV/frmMDM_USTVAntrag.Designer.vb | 68 +++++++++++++------------- SDL/USTV/frmMDM_USTVAntrag.vb | 33 ++++++++----- 2 files changed, 56 insertions(+), 45 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb index 70e1f68b..ecfaa7fb 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb @@ -24,8 +24,8 @@ Partial Class frmMDM_USTVAntrag Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMDM_USTVAntrag)) - Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.pnlBottom = New System.Windows.Forms.Panel() Me.lblVZAenderungsdatum = New System.Windows.Forms.Label() Me.Label20 = New System.Windows.Forms.Label() @@ -126,7 +126,6 @@ Partial Class frmMDM_USTVAntrag Me.dgvUSTVPositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlAntragsPosDetails = New System.Windows.Forms.Panel() Me.Panel2 = New System.Windows.Forms.Panel() - Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() Me.Panel4 = New System.Windows.Forms.Panel() Me.cbxKIUploaddelete = New System.Windows.Forms.CheckBox() Me.scanUSTVA = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan() @@ -137,7 +136,6 @@ Partial Class frmMDM_USTVAntrag Me.Panel3 = New System.Windows.Forms.Panel() Me.dgvErstattungspositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlErstattungsdetails = New System.Windows.Forms.Panel() - Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() Me.Panel1 = New System.Windows.Forms.Panel() Me.Button2 = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() @@ -154,6 +152,8 @@ Partial Class frmMDM_USTVAntrag Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition() + Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition() Me.pnlBottom.SuspendLayout() CType(Me.pbXMLExport, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pbMail, System.ComponentModel.ISupportInitialize).BeginInit() @@ -214,22 +214,24 @@ Partial Class frmMDM_USTVAntrag 'lblVZAenderungsdatum ' Me.lblVZAenderungsdatum.ForeColor = System.Drawing.Color.Black - Me.lblVZAenderungsdatum.Location = New System.Drawing.Point(304, 67) + Me.lblVZAenderungsdatum.Location = New System.Drawing.Point(186, 75) Me.lblVZAenderungsdatum.Name = "lblVZAenderungsdatum" - Me.lblVZAenderungsdatum.Size = New System.Drawing.Size(224, 19) + Me.lblVZAenderungsdatum.Size = New System.Drawing.Size(216, 19) Me.lblVZAenderungsdatum.TabIndex = 58 Me.lblVZAenderungsdatum.Text = "-" Me.lblVZAenderungsdatum.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.lblVZAenderungsdatum.Visible = False ' 'Label20 ' Me.Label20.ForeColor = System.Drawing.Color.Black - Me.Label20.Location = New System.Drawing.Point(186, 67) + Me.Label20.Location = New System.Drawing.Point(9, 75) Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(112, 19) + Me.Label20.Size = New System.Drawing.Size(171, 19) Me.Label20.TabIndex = 57 - Me.Label20.Text = "VZ-Änderungsdatum:" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Label20.Text = "letzte Änderung (VZ) am:" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Label20.Visible = False ' 'pbXMLExport ' @@ -409,7 +411,7 @@ Partial Class frmMDM_USTVAntrag Me.btnAntrageeinarbeiten.ForeColor = System.Drawing.Color.Black Me.btnAntrageeinarbeiten.Image = CType(resources.GetObject("btnAntrageeinarbeiten.Image"), System.Drawing.Image) Me.btnAntrageeinarbeiten.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnAntrageeinarbeiten.Location = New System.Drawing.Point(12, 29) + Me.btnAntrageeinarbeiten.Location = New System.Drawing.Point(12, 23) Me.btnAntrageeinarbeiten.Name = "btnAntrageeinarbeiten" Me.btnAntrageeinarbeiten.Size = New System.Drawing.Size(168, 38) Me.btnAntrageeinarbeiten.TabIndex = 1 @@ -421,7 +423,7 @@ Partial Class frmMDM_USTVAntrag ' Me.cbxArchivierteEintracheNochmalsEinarbetien.AutoSize = True Me.cbxArchivierteEintracheNochmalsEinarbetien.ForeColor = System.Drawing.Color.Black - Me.cbxArchivierteEintracheNochmalsEinarbetien.Location = New System.Drawing.Point(12, 8) + Me.cbxArchivierteEintracheNochmalsEinarbetien.Location = New System.Drawing.Point(12, 2) Me.cbxArchivierteEintracheNochmalsEinarbetien.Name = "cbxArchivierteEintracheNochmalsEinarbetien" Me.cbxArchivierteEintracheNochmalsEinarbetien.Size = New System.Drawing.Size(203, 17) Me.cbxArchivierteEintracheNochmalsEinarbetien.TabIndex = 0 @@ -444,7 +446,7 @@ Partial Class frmMDM_USTVAntrag 'lbl_EintrageVerarbetiet ' Me.lbl_EintrageVerarbetiet.ForeColor = System.Drawing.Color.Black - Me.lbl_EintrageVerarbetiet.Location = New System.Drawing.Point(12, 70) + Me.lbl_EintrageVerarbetiet.Location = New System.Drawing.Point(12, 61) Me.lbl_EintrageVerarbetiet.Name = "lbl_EintrageVerarbetiet" Me.lbl_EintrageVerarbetiet.Size = New System.Drawing.Size(168, 19) Me.lbl_EintrageVerarbetiet.TabIndex = 3 @@ -1700,8 +1702,8 @@ Partial Class frmMDM_USTVAntrag Me.dgvUSTVPositionen.AKTUALISIERUNGS_INTERVALL = 500 Me.dgvUSTVPositionen.AllowUserToAddRows = False Me.dgvUSTVPositionen.AllowUserToDeleteRows = False - DataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.dgvUSTVPositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle1 + DataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvUSTVPositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle3 Me.dgvUSTVPositionen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) @@ -1737,14 +1739,6 @@ Partial Class frmMDM_USTVAntrag Me.Panel2.Size = New System.Drawing.Size(1428, 263) Me.Panel2.TabIndex = 1 ' - 'UstCntlUSTV_AntragPosition1 - ' - Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" - Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) - Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 - ' 'Panel4 ' Me.Panel4.BackColor = System.Drawing.Color.WhiteSmoke @@ -1862,8 +1856,8 @@ Partial Class frmMDM_USTVAntrag Me.dgvErstattungspositionen.AKTUALISIERUNGS_INTERVALL = 500 Me.dgvErstattungspositionen.AllowUserToAddRows = False Me.dgvErstattungspositionen.AllowUserToDeleteRows = False - DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.dgvErstattungspositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2 + DataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvErstattungspositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle4 Me.dgvErstattungspositionen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) @@ -1890,14 +1884,6 @@ Partial Class frmMDM_USTVAntrag Me.pnlErstattungsdetails.Size = New System.Drawing.Size(1426, 261) Me.pnlErstattungsdetails.TabIndex = 0 ' - 'UstCntlUSTV_AntragErstattungen1 - ' - Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) - Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" - Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) - Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 - ' 'Panel1 ' Me.Panel1.BackColor = System.Drawing.Color.WhiteSmoke @@ -2016,6 +2002,22 @@ Partial Class frmMDM_USTVAntrag Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen" Me.FakturiertToolStripMenuItem.Visible = False ' + 'UstCntlUSTV_AntragPosition1 + ' + Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1" + Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261) + Me.UstCntlUSTV_AntragPosition1.TabIndex = 0 + ' + 'UstCntlUSTV_AntragErstattungen1 + ' + Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0) + Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1" + Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259) + Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2 + ' 'frmMDM_USTVAntrag ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 310c39f7..0557a088 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -298,16 +298,13 @@ Public Class frmMDM_USTVAntrag setValue(USTV_ANTRAG) - If USTV_ANTRAG.UStVAn_letzteAenderung IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderung) Then + If USTV_ANTRAG.UStVAn_letzteAenderung IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderung) AndAlso USTV_ANTRAG.UStVAn_letzteAenderungUser IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderungUser) Then lblVZAenderungsdatum.Text = CDate(USTV_ANTRAG.UStVAn_letzteAenderung).ToString + lblVZAenderungsdatum.Text &= " (" & USTV_ANTRAG.UStVAn_letzteAenderungUser & ")" + Label20.Visible = True + lblVZAenderungsdatum.Visible = True End If - If USTV_ANTRAG.UStVAn_letzteAenderungUser IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderungUser) Then - lblVZAenderungsdatum.Text &= "(" & USTV_ANTRAG.UStVAn_letzteAenderungUser & ")" - End If - - - Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) If KUNDE IsNot Nothing Then @@ -3952,9 +3949,10 @@ Public Class frmMDM_USTVAntrag If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktivieren?", vbYesNoCancel) Then - + Dim setUSTVA As Boolean = False For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows + If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then 'nur noch nicht abgerech. dürfen gesetzt werden! Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value) @@ -3962,6 +3960,7 @@ Public Class frmMDM_USTVAntrag If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = True Then USTV_POS.UStVPo_VZ = False USTV_POS.SAVE() + setUSTVA = True End If End If @@ -3976,6 +3975,10 @@ Public Class frmMDM_USTVAntrag SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If + If setUSTVA Then + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") + End If + init() End If @@ -4067,12 +4070,17 @@ Public Class frmMDM_USTVAntrag Next - SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1 WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung + + + If isSet Then + SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") 'Aktualisierung + End If init() - End If + End If - Else + Else MsgBox("NICHT BERECHTIGT") @@ -4174,7 +4182,7 @@ Public Class frmMDM_USTVAntrag Dim TextHTML = "" If mailText <> "" Then - TextHTML = "
" & mailText.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, 19,,,,,, ) & "
" + TextHTML = "
" & mailText.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, 19,,,,,, ) & "
" Mail.HTMLBody = TextHTML End If @@ -5489,6 +5497,7 @@ Public Class frmMDM_USTVAntrag End Sub + Public Shared Function rearangePosNrByLeistender(UStVAn_ID As Integer) If UStVAn_ID > 0 Then From df5a69ae6469bcc2cb280952b21dc1564e71f8cf Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 3 Sep 2026 16:05:30 +0200 Subject: [PATCH 27/54] fakt, ustva, etc --- SDL/Fakturierung/cFakturierung.vb | 14 +++++++++--- SDL/Fakturierung/frmFaktEmail.vb | 19 ++++++++++------- SDL/My Project/AssemblyInfo.vb | 4 ++-- SDL/USTV/frmMDM_USTVAntrag.vb | 26 ++++++++++++----------- VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb | 10 +++++---- 5 files changed, 44 insertions(+), 29 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 2b795787..7106d981 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2627,12 +2627,20 @@ Public Class cFakturierung If listVZMonth.Count > 0 Then If listVZMonth.Count = 1 Then - MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString + MonthStart = IIf(listVZMonth(0) < 10, "0", "") & listVZMonth(0).ToString MonthEnd = "" Else - MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString - MonthEnd = IIf(CDate(MWSTAntrag.UStVAn_ReDatBis).Month < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString + MonthStart = IIf(listVZMonth(0) < 10, "0", "") & listVZMonth(0).ToString + MonthEnd = IIf(listVZMonth(listVZMonth.Count - 1) < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString End If + + 'If listVZMonth.Count = 1 Then + ' MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString + ' MonthEnd = "" + 'Else + ' MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString + ' MonthEnd = IIf(CDate(MWSTAntrag.UStVAn_ReDatBis).Month < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString + 'End If End If diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 66eb9f1e..81f78734 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -832,14 +832,6 @@ Public Class frmFaktEmail End If - 'Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) - 'If Not ANTR_ERSTATTUNG.hasEntry Then - ' ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() - ' ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum - ' ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr - ' ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID - ' ANTR_ERSTATTUNG.SAVE() - 'End If If durchREWurdeVZAbgerechnet Then @@ -858,6 +850,17 @@ Public Class frmFaktEmail USTV_ANTRAG.SAVE() End If + Else + + Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) + If Not ANTR_ERSTATTUNG.hasEntry Then + ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() + ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum + ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr + ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID + ANTR_ERSTATTUNG.SAVE() + End If + End If If hatNichtAbgerechneteVZ Then diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index d26a4e70..fcfd83e6 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 0557a088..606de055 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -3321,25 +3321,27 @@ Public Class frmMDM_USTVAntrag Dim kunde As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim kunde_erw As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) - Dim BezAntrag = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung " + Dim BezAntrag = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung " & IIf(kunde_erw.kde_VZ, "VZ ", "") If kunde_erw IsNot Nothing Then - If USTV_ANTRAG.UStVAn_AntragArt = "MÖST" Then + 'NICHT ÜBERSETZEN - Select Case kunde_erw.kde_Fakturierung_Sprache - Case "EN", "TR" : BezAntrag = "Excise duty " - Case "RO" : BezAntrag = "Rambursare acciza " - End Select + 'If USTV_ANTRAG.UStVAn_AntragArt = "MÖST" Then - Else + ' Select Case kunde_erw.kde_Fakturierung_Sprache + ' Case "EN", "TR" : BezAntrag = "Excise duty " + ' Case "RO" : BezAntrag = "Rambursare acciza " + ' End Select - Select Case kunde_erw.kde_Fakturierung_Sprache - Case "EN", "TR" : BezAntrag = "VAT refund " - Case "RO" : BezAntrag = "Rambursare TVA " - End Select + 'Else - End If + ' Select Case kunde_erw.kde_Fakturierung_Sprache + ' Case "EN", "TR" : BezAntrag = "VAT refund " + ' Case "RO" : BezAntrag = "Rambursare TVA " + ' End Select + + 'End If End If diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb index 1f3a6990..d3c35e40 100644 --- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb +++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb @@ -958,15 +958,17 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object( End If - - - mySmtpsvr.UseDefaultCredentials = False mySmtpsvr.Credentials = myCredentials Try 'Msg.BodyEncoding = System.Text.Encoding.GetEncoding("UTF-8") Msg.BodyEncoding = System.Text.Encoding.UTF8 'System.Text.Encoding.GetEncoding("ISO-8859-1") - Msg.From = New MailAddress(eMailfrom) + + If myCredentials.UserName.ToLower.Contains("no-reply") AndAlso eMailfrom.ToString.ToLower.Contains("no-reply") Then + Msg.From = New MailAddress(myCredentials.UserName) + Else + Msg.From = New MailAddress(eMailfrom) + End If If eMailTo IsNot Nothing Then For Each s As String In eMailTo.ToString.Split(";"c) From 0992ba29a202966afb534f98b45cb978a8660cc4 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 4 Sep 2026 08:39:09 +0200 Subject: [PATCH 28/54] fix ustva --- SDL/Fakturierung/frmFaktEmail.vb | 148 +++++++++++++++++-------------- SDL/USTV/frmMDM_USTVAntrag.vb | 3 +- 2 files changed, 81 insertions(+), 70 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 81f78734..f3d5089f 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -574,85 +574,85 @@ Public Class frmFaktEmail 'Mail-Adressen eintragen '----------------------------------------------------------------- For Each r In dgvEmail.Rows - If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";" - Next - For Each r In dgvEmailCC.Rows - If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";" - Next - For Each r In dgvEmailBCC.Rows - If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";" - Next + If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";" + Next + For Each r In dgvEmailCC.Rows + If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";" + Next + For Each r In dgvEmailBCC.Rows + If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";" + Next - RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr) - txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr) + RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr) + txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr) - Dim TextHTML = "
" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine,, IIf(Firma_ID = "24", True, False)) & "
" + Dim TextHTML = "
" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine,, IIf(Firma_ID = "24", True, False)) & "
" - Mail.HTMLBody = TextHTML - Mail.Subject = txtSubject.Text + Mail.HTMLBody = TextHTML + Mail.Subject = txtSubject.Text - ATTACHMENTS.Clear() - '----------------------------------------------------------------- - 'Rechnungen anfügen - '----------------------------------------------------------------- - For Each l In listPDFs - ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + ATTACHMENTS.Clear() + '----------------------------------------------------------------- + 'Rechnungen anfügen + '----------------------------------------------------------------- + For Each l In listPDFs + ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - Next - For Each l In SonstAnlagen - ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + Next + For Each l In SonstAnlagen + ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - Next - addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked) + Next + addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked) - '----------------------------------------------------------------- - 'Steuerbescheid/VDB anfügen - '----------------------------------------------------------------- - getAnhaenge() - 'For Each l In listPDFs - ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ' ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - 'Next + '----------------------------------------------------------------- + 'Steuerbescheid/VDB anfügen + '----------------------------------------------------------------- + getAnhaenge() + 'For Each l In listPDFs + ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + ' ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + 'Next - 'Rechnungsanhänge anfügen - '----------------------------------------------------------------- - If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then - For Each r In SR_DT.Rows - Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID")) - If RG_ANH IsNot Nothing Then - For Each ANH In RG_ANH - ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung)) - Next - End If + 'Rechnungsanhänge anfügen + '----------------------------------------------------------------- + If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then + For Each r In SR_DT.Rows + Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID")) + If RG_ANH IsNot Nothing Then + For Each ANH In RG_ANH + ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung)) Next End If - '----------------------------------------------------------------- + Next + End If + '----------------------------------------------------------------- - addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked) + addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked) - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then - Try - Mail.SentOnBehalfOfName = "buchhaltung@ambarlog.com" - Catch ex2 As Exception - MsgBox(ex2.Message) - End Try - End If + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + Try + Mail.SentOnBehalfOfName = "buchhaltung@ambarlog.com" + Catch ex2 As Exception + MsgBox(ex2.Message) + End Try + End If - Mail.Display() - '------------------------------------------------------------------------------------------ - ' STB /FA SR: ABFRAGE FISKAL-VZ - If isFiskal Then - send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr) - End If + Mail.Display() + '------------------------------------------------------------------------------------------ + ' STB /FA SR: ABFRAGE FISKAL-VZ + If isFiskal Then + send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr) + End If '------------------------------------------------------------------------------------------ End If @@ -830,6 +830,9 @@ Public Class frmFaktEmail If count_offene_importierteErstattungen > 0 Then SQL.doSQL("UPDATE [tblUStVErstattung] SET GutschriftsNr = " & RECHNUNG.RechnungsNr & ",GutschriftsDatum = '" & CDate(RECHNUNG.RechnungsDatum).ToShortDateString & "', UStVEr_RK_ID = " & RECHNUNG.RK_ID & " WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVEr_Importfilename] is not null and [GutschriftsNr] is null and [GutschriftsDatum] is null ", "FMZOLL") + Else + insertNewErstattungsPos(USTV_ANTRAG) + End If @@ -851,15 +854,7 @@ Public Class frmFaktEmail End If Else - - Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) - If Not ANTR_ERSTATTUNG.hasEntry Then - ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() - ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum - ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr - ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID - ANTR_ERSTATTUNG.SAVE() - End If + insertNewErstattungsPos(USTV_ANTRAG) End If @@ -888,7 +883,7 @@ Public Class frmFaktEmail End If - End If + End If '------------------------------------------------------------------------------------------ ' STB /FA @@ -909,6 +904,21 @@ Public Class frmFaktEmail End Sub + Private Sub insertNewErstattungsPos(USTV_ANTRAG As cUSTVAntrag) + + + Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum)) + If Not ANTR_ERSTATTUNG.hasEntry Then + ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr() + ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum + ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr + ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID + ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = 0 + ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = 0 + ANTR_ERSTATTUNG.SAVE() + End If + End Sub + Function addRgData_ZF_Passau(RechnungsLandKz) As String addRgData_ZF_Passau = vbNewLine & vbNewLine diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 606de055..4caeab1d 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -761,6 +761,7 @@ Public Class frmMDM_USTVAntrag loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked, IIf(item.Name = "ploseneu", True, False)) init() ElseIf item.Name = "rmc" Then + VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "mse" Then @@ -1196,7 +1197,7 @@ Public Class frmMDM_USTVAntrag End If - + VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True From f70bdbbf71563a21b4dfe7e9a272f525d4d57cf1 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 4 Sep 2026 09:13:19 +0200 Subject: [PATCH 29/54] IMportfunktion ustva verbessert --- SDL/USTV/usrCntlUSTV.vb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index daaff3d1..352e177b 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -2098,7 +2098,7 @@ Public Class usrCntlUSTV UStV_ERS.UStVEr_interneNr = USTV_ANTRAG.getMaxinternePosNrErst() UStV_ERS.UStVAn_ID = USTV_ANTRAG.UStVAn_ID UStV_ERS.Belegnummer = BelegNr - UStV_ERS.UStVEr_USteuerbetragEUR = r.Cells("BetragEUR").Value + UStV_ERS.UStVEr_USteuerbetragEUR = r.Cells("Bank").Value UStV_ERS.UStVEr_Importfilename = fd.SafeFileName UStV_ERS.UStVEr_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME UStV_ERS.UStVEr_Zeitstempel = Now @@ -2108,14 +2108,14 @@ Public Class usrCntlUSTV UStV_ERS.UStVEr_USteuerbetrag = System.Math.Round(kurs.EXCHANGE_EURTOCUR(UStV_ERS.UStVEr_USteuerbetragEUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(Belegdatum)), 2) UStV_ERS.UStVEr_Umrechnungskurs = Math.floor((CDbl(UStV_ERS.UStVEr_USteuerbetrag) / CDbl(UStV_ERS.UStVEr_USteuerbetragEUR) * 100 + 0.5)) / 100 Else - UStV_ERS.UStVEr_USteuerbetrag = r.Cells("BetragEUR").Value + UStV_ERS.UStVEr_USteuerbetrag = r.Cells("Bank").Value UStV_ERS.UStVEr_Umrechnungskurs = 1 End If Dim Bemerkung As String = "" If Not String.IsNullOrWhiteSpace(r.Cells("VZ").Value) AndAlso IsNumeric(r.Cells("VZ").Value) AndAlso Not IsDBNull(r.Cells("VZ").Value) AndAlso CDbl(r.Cells("VZ").Value) <> 0 Then - Bemerkung &= "VZ: " & CDbl(r.Cells("VZ").Value).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode + Bemerkung &= "VZ: " & CDbl(r.Cells("VZ").Value).ToString("N2") & " EUR " isVZ = True UStV_ERS.UStVEr_VZ = CDbl(r.Cells("VZ").Value) @@ -2131,7 +2131,7 @@ Public Class usrCntlUSTV End If If Not String.IsNullOrWhiteSpace(r.Cells("Bank").Value) AndAlso IsNumeric(r.Cells("Bank").Value) AndAlso Not IsDBNull(r.Cells("Bank").Value) AndAlso CDbl(r.Cells("Bank").Value) <> 0 Then - Bemerkung &= ", a.K. : " & CDbl(r.Cells("Bank").Value).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode + Bemerkung &= ", a.K. : " & CDbl(r.Cells("Bank").Value).ToString("N2") & " EUR" UStV_ERS.UStVEr_Bank = CDbl(r.Cells("Bank").Value) End If From f71f799e3ef8d8027151db90a84aa0d1cd207e5f Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 8 Sep 2026 14:16:16 +0200 Subject: [PATCH 30/54] essensbestellungen, etc. --- SDL/Fakturierung/cFakturierung.vb | 34 +- ...ptSammelRechnungAnlagenDruck_Leistungen.vb | 35 +- SDL/Formulare/KDFormulare/frmFormulare.vb | 6 +- SDL/SDL.vbproj | 9 + SDL/USTV/frmMDM_USTVAntrag.vb | 6 + SDL/buchhaltung/usrCntlBH.Designer.vb | 157 +++- SDL/buchhaltung/usrCntlBH.vb | 48 +- SDL/frmEssensbestellungenAdministration.vb | 47 +- SDL/kunden/frmKundenlogin.vb | 3 +- SDL/mdm/rptPOS_ZNB.Designer.vb | 758 ++++++++++++++++++ SDL/mdm/rptPOS_ZNB.resx | 132 +++ SDL/mdm/rptPOS_ZNB.vb | 120 +++ .../usrCntlFakturierung.Designer.vb | 39 +- SDL/seriendruck/usrCntlFakturierung.resx | 24 + SDL/seriendruck/usrCntlFakturierung.vb | 140 +++- .../usrcntlPDFScanList.vb | 2 + .../Classes/Essensbestellung.vb | 8 + .../Classes/cMDMZinsberechnung.vb | 2 +- 18 files changed, 1476 insertions(+), 94 deletions(-) create mode 100644 SDL/mdm/rptPOS_ZNB.Designer.vb create mode 100644 SDL/mdm/rptPOS_ZNB.resx create mode 100644 SDL/mdm/rptPOS_ZNB.vb diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 7106d981..d5592d46 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -5589,6 +5589,7 @@ Public Class cFakturierung End If + AddHandler rpt.Detail.Format, Sub() ' rpt.lblVon.Text = CDate(rpt.Fields.Item("von").Value).ToShortDateString ' rpt.lblLKWNr.Text = CDate(rpt.Fields.Item("bis").Value).ToShortDateString @@ -5656,18 +5657,33 @@ Public Class cFakturierung Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(RECHNUNG.RechnungsKundenNr) If KUNDE_ERW.kde_FakturierungSR_Details OrElse isMDMRechnungsdruck Then - Dim subRpt = New rptSammelRechnungAnlagenDruck_Leistungen(rpt._LAN, RECHNUNG, VorschauID) + Dim isZNB As Boolean = False + Dim Anzahl = 0 + Dim SteuerfreierBetrag As Double = 0 + Dim SteuerpflichtigerBetrag As Double = 0 + Dim LeistungsText As String = "" + If RECHNUNG.FilialenNr = 8001 AndAlso RECHNUNG.OffertenNr = 95 Then 'dann ist es eine Zinsnachberechnungs-Rechnung + isZNB = True + LeistungsText = "Nachberechnung von VZ " + 'LeistungsText = System.Text.RegularExpressions.Regex.Replace(LeistungsText, "\r\n|\r|\n", " ") + Anzahl = 1 + SteuerfreierBetrag = RECHNUNG.SteuerfreierGesamtbetrag + SteuerpflichtigerBetrag = RECHNUNG.SteuerpflichtigerGesamtbetrag + End If + + + Dim subRpt = New rptSammelRechnungAnlagenDruck_Leistungen(rpt._LAN, RECHNUNG, VorschauID, isZNB, LeistungsText, Anzahl, SteuerpflichtigerBetrag, SteuerfreierBetrag) rpt.SubReport.Report = subRpt - rpt.lblSteuerfrei.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold) - rpt.lblSteuerpflichtig.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold) + rpt.lblSteuerfrei.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold) + rpt.lblSteuerpflichtig.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold) - 'txtPackstuecke.Top += SubReport.Height - 'txtKdAuftragsnummer.Top += SubReport.Height - 'txtSendungsdetails.Top += SubReport.Height - Else - rpt.SubReport.Report = Nothing + 'txtPackstuecke.Top += SubReport.Height + 'txtKdAuftragsnummer.Top += SubReport.Height + 'txtSendungsdetails.Top += SubReport.Height + Else + rpt.SubReport.Report = Nothing End If ' rpt.Line10.AnchorBottom = True ' rpt.Line10.Height = rpt.Detail.Height @@ -6257,7 +6273,7 @@ Public Class cFakturierung Else - If RG_AH.Bezeichnung.ToUpper.Contains("MAUT") Or RG_AH.Bezeichnung.ToUpper.Contains("DIESEL") Or RG_AH.Bezeichnung.ToUpper.Contains("INVOICE") Then + If RG_AH.Bezeichnung.ToUpper.Contains("MAUT") Or RG_AH.Bezeichnung.ToUpper.Contains("DIESEL") Or RG_AH.Bezeichnung.ToUpper.Contains("INVOICE") Or RG_AH.Bezeichnung.ToUpper.Contains("VERZUGSZINSEN") Then Dim Path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(RG_AH.dsId) If Not listAnh.Contains(Path) Then diff --git a/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb b/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb index c98b0ada..ce9c3f2c 100644 --- a/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb +++ b/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb @@ -6,12 +6,23 @@ Public Class rptSammelRechnungAnlagenDruck_Leistungen Dim _LAN = "" Dim RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang = Nothing Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - Sub New(_LAN As String, RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, VorschauID As String) + Dim isZNB As Boolean + Dim LeistungsText As String + Dim Anzahl As Integer + Dim SteuerpflichtigerBetrag As Double + Dim SteuerfreierBetrag As Double + + Sub New(_LAN As String, RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, VorschauID As String, Optional isZNB As Boolean = False, Optional LeistungsText As String = "", Optional Anzahl As Integer = 0, Optional SteuerpflichtigerBetrag As Double = 0, Optional SteuerfreierBetrag As Double = 0) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me._LAN = _LAN Me.RECHNUNG = RECHNUNG Me.VorschauID = VorschauID + Me.isZNB = isZNB + Me.LeistungsText = LeistungsText + Me.Anzahl = Anzahl + Me.SteuerpflichtigerBetrag = SteuerpflichtigerBetrag + Me.SteuerfreierBetrag = SteuerfreierBetrag ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub rptRechnungDruck_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart @@ -52,16 +63,22 @@ Public Class rptSammelRechnungAnlagenDruck_Leistungen dt.Columns.Add("clmnLeistungsNr") RECHNUNG.ORDER_POSITIONEN() - - For Each POS In RECHNUNG.POSITIONEN - If VorschauID = "PROVISIONSABRECHNUNG" Then - If CBool(SQL.DLookup("Abfertigungskosten", "Leistungen", "LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then + If Not isZNB Then + For Each POS In RECHNUNG.POSITIONEN + If VorschauID = "PROVISIONSABRECHNUNG" Then + If CBool(SQL.DLookup("Abfertigungskosten", "Leistungen", "LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then + dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr) + End If + Else dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr) End If - Else - dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr) - End If - Next + Next + + Else + + dt.Rows.Add(LeistungsText, SteuerfreierBetrag, SteuerpflichtigerBetrag, Anzahl, 950) + End If + Me.DataSource = dt diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb index 2e055acc..fc5db48b 100644 --- a/SDL/Formulare/KDFormulare/frmFormulare.vb +++ b/SDL/Formulare/KDFormulare/frmFormulare.vb @@ -1866,13 +1866,13 @@ Public Class FormularManagerNEU listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(formatAmountEUR(usrCntl.txtCBAM_jeZertBest_Paket_1._value, True), 168, Top + 114.5, 25, 6, "bold", 10, , iTextSharp.text.Element.ALIGN_RIGHT, 2)) - + Dim ohneOnboarding As String = IIf(usrCntl.cbxOnboardingVerrechnen.Checked, "", "ohne_Onboarding_") ' Dim firma=getUO2() Select Case usrCntl.cboSprache._value Case "TR", "EN" - Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt_" & usrCntl.cboSprache._value, listTowrite) + Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt_" & ohneOnboarding & usrCntl.cboSprache._value, listTowrite) Case Else - Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt", listTowrite) + Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt" & ohneOnboarding, listTowrite) End Select Return "" diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj index b1be67fd..8587163d 100644 --- a/SDL/SDL.vbproj +++ b/SDL/SDL.vbproj @@ -1253,6 +1253,12 @@ Component + + rptPOS_ZNB.vb + + + Component + usrcntlFremdrechnungen.vb @@ -3881,6 +3887,9 @@ rptIDS_Anhang.vb + + rptPOS_ZNB.vb + rptPLOSE_CustomerConsortio.vb diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 4caeab1d..7c979ecd 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -2355,6 +2355,9 @@ Public Class frmMDM_USTVAntrag Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) + 'Datenarchiv/Dokumente/MDM/kdNr/MDM/MDM_Daten/Ustva_id_PosNr + + If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then If DS.DELETE_COMPLETE() Then 'löschen nicht vorhandenen Verweis! @@ -3573,6 +3576,9 @@ Public Class frmMDM_USTVAntrag Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UStVAn_ID & "_" & r.Cells("UStVPo_ID").Value, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) + ' + ' 'Datenarchiv/Dokumente/MDM/kdNr/MDM/MDM_Daten/Ustva_id_PosNr + If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then DS.DELETE_COMPLETE() End If diff --git a/SDL/buchhaltung/usrCntlBH.Designer.vb b/SDL/buchhaltung/usrCntlBH.Designer.vb index 03a2355e..127f84fb 100644 --- a/SDL/buchhaltung/usrCntlBH.Designer.vb +++ b/SDL/buchhaltung/usrCntlBH.Designer.vb @@ -76,6 +76,9 @@ Partial Class usrCntlBH Me.Label1 = New System.Windows.Forms.Label() Me.btnWord = New System.Windows.Forms.Button() Me.GroupBox2 = New System.Windows.Forms.GroupBox() + Me.cboFirma_FIBUFilialen = New VERAG_PROG_ALLGEMEIN.MyComboBox() + Me.Label67 = New System.Windows.Forms.Label() + Me.Button16 = New System.Windows.Forms.Button() Me.txtMonateSyskavergleich = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Label61 = New System.Windows.Forms.Label() Me.Button15 = New System.Windows.Forms.Button() @@ -166,6 +169,11 @@ Partial Class usrCntlBH Me.btn_Erloeskkonten = New System.Windows.Forms.Button() Me.Label62 = New System.Windows.Forms.Label() Me.GroupBox11 = New System.Windows.Forms.GroupBox() + Me.txtPloseAnh_Einarbeitung = New System.Windows.Forms.TextBox() + Me.Label71 = New System.Windows.Forms.Label() + Me.pbPloseAnh_Proz = New System.Windows.Forms.ProgressBar() + Me.lblPloseAnh_Proz = New System.Windows.Forms.Label() + Me.cbxZBalsSR = New System.Windows.Forms.CheckBox() Me.Label57 = New System.Windows.Forms.Label() Me.btnDel_ = New VERAG_PROG_ALLGEMEIN.FlatButton() Me.btnWikiStatusmails = New System.Windows.Forms.Button() @@ -190,9 +198,7 @@ Partial Class usrCntlBH Me.txtZRbis = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Label51 = New System.Windows.Forms.Label() Me.txtJahr_FIBU = New VERAG_PROG_ALLGEMEIN.MyTextBox() - Me.Button16 = New System.Windows.Forms.Button() - Me.Label67 = New System.Windows.Forms.Label() - Me.cboFirma_FIBUFilialen = New VERAG_PROG_ALLGEMEIN.MyComboBox() + Me.Button17 = New System.Windows.Forms.Button() Me.pnl.SuspendLayout() Me.TabPage1.SuspendLayout() Me.GroupBox13.SuspendLayout() @@ -906,6 +912,41 @@ Partial Class usrCntlBH Me.GroupBox2.TabIndex = 4 Me.GroupBox2.TabStop = False ' + 'cboFirma_FIBUFilialen + ' + Me.cboFirma_FIBUFilialen._allowedValuesFreiText = Nothing + Me.cboFirma_FIBUFilialen._allowFreiText = False + Me.cboFirma_FIBUFilialen._value = "" + Me.cboFirma_FIBUFilialen.DropDownWidth = 150 + Me.cboFirma_FIBUFilialen.FormattingEnabled = True + Me.cboFirma_FIBUFilialen.Location = New System.Drawing.Point(406, 57) + Me.cboFirma_FIBUFilialen.Name = "cboFirma_FIBUFilialen" + Me.cboFirma_FIBUFilialen.Size = New System.Drawing.Size(54, 21) + Me.cboFirma_FIBUFilialen.TabIndex = 43 + ' + 'Label67 + ' + Me.Label67.AutoSize = True + Me.Label67.Location = New System.Drawing.Point(145, 87) + Me.Label67.Name = "Label67" + Me.Label67.Size = New System.Drawing.Size(105, 13) + Me.Label67.TabIndex = 45 + Me.Label67.Text = "Vergleich UID-Syska" + ' + 'Button16 + ' + Me.Button16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center + Me.Button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button16.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) + Me.Button16.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.Button16.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button16.Location = New System.Drawing.Point(6, 81) + Me.Button16.Name = "Button16" + Me.Button16.Size = New System.Drawing.Size(121, 23) + Me.Button16.TabIndex = 44 + Me.Button16.Text = " Excel" + Me.Button16.UseVisualStyleBackColor = True + ' 'txtMonateSyskavergleich ' Me.txtMonateSyskavergleich._DateTimeOnly = False @@ -1949,6 +1990,7 @@ Partial Class usrCntlBH ' 'GroupBox14 ' + Me.GroupBox14.Controls.Add(Me.Button17) Me.GroupBox14.Controls.Add(Me.Label63) Me.GroupBox14.Controls.Add(Me.Label66) Me.GroupBox14.Controls.Add(Me.txtLand) @@ -1959,7 +2001,7 @@ Partial Class usrCntlBH Me.GroupBox14.Controls.Add(Me.btn_ZV) Me.GroupBox14.Controls.Add(Me.btn_Laender) Me.GroupBox14.Controls.Add(Me.btn_Erloeskkonten) - Me.GroupBox14.Location = New System.Drawing.Point(20, 153) + Me.GroupBox14.Location = New System.Drawing.Point(14, 227) Me.GroupBox14.Name = "GroupBox14" Me.GroupBox14.Size = New System.Drawing.Size(841, 123) Me.GroupBox14.TabIndex = 38 @@ -2115,7 +2157,7 @@ Partial Class usrCntlBH Me.Label62.AutoSize = True Me.Label62.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label62.ForeColor = System.Drawing.SystemColors.ControlDarkDark - Me.Label62.Location = New System.Drawing.Point(17, 133) + Me.Label62.Location = New System.Drawing.Point(11, 207) Me.Label62.Name = "Label62" Me.Label62.Size = New System.Drawing.Size(145, 17) Me.Label62.TabIndex = 37 @@ -2123,6 +2165,11 @@ Partial Class usrCntlBH ' 'GroupBox11 ' + Me.GroupBox11.Controls.Add(Me.txtPloseAnh_Einarbeitung) + Me.GroupBox11.Controls.Add(Me.Label71) + Me.GroupBox11.Controls.Add(Me.pbPloseAnh_Proz) + Me.GroupBox11.Controls.Add(Me.lblPloseAnh_Proz) + Me.GroupBox11.Controls.Add(Me.cbxZBalsSR) Me.GroupBox11.Controls.Add(Me.Label57) Me.GroupBox11.Controls.Add(Me.btnDel_) Me.GroupBox11.Controls.Add(Me.btnWikiStatusmails) @@ -2147,10 +2194,57 @@ Partial Class usrCntlBH Me.GroupBox11.Controls.Add(Me.txtZRbis) Me.GroupBox11.Location = New System.Drawing.Point(14, 30) Me.GroupBox11.Name = "GroupBox11" - Me.GroupBox11.Size = New System.Drawing.Size(847, 88) + Me.GroupBox11.Size = New System.Drawing.Size(847, 149) Me.GroupBox11.TabIndex = 36 Me.GroupBox11.TabStop = False ' + 'txtPloseAnh_Einarbeitung + ' + Me.txtPloseAnh_Einarbeitung.BackColor = System.Drawing.Color.White + Me.txtPloseAnh_Einarbeitung.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.txtPloseAnh_Einarbeitung.Location = New System.Drawing.Point(80, 121) + Me.txtPloseAnh_Einarbeitung.Name = "txtPloseAnh_Einarbeitung" + Me.txtPloseAnh_Einarbeitung.Size = New System.Drawing.Size(106, 13) + Me.txtPloseAnh_Einarbeitung.TabIndex = 80 + ' + 'Label71 + ' + Me.Label71.AutoSize = True + Me.Label71.Location = New System.Drawing.Point(13, 121) + Me.Label71.Name = "Label71" + Me.Label71.Size = New System.Drawing.Size(56, 13) + Me.Label71.TabIndex = 77 + Me.Label71.Text = "Fortschritt:" + ' + 'pbPloseAnh_Proz + ' + Me.pbPloseAnh_Proz.Location = New System.Drawing.Point(16, 92) + Me.pbPloseAnh_Proz.Name = "pbPloseAnh_Proz" + Me.pbPloseAnh_Proz.Size = New System.Drawing.Size(245, 23) + Me.pbPloseAnh_Proz.TabIndex = 78 + ' + 'lblPloseAnh_Proz + ' + Me.lblPloseAnh_Proz.Location = New System.Drawing.Point(192, 121) + Me.lblPloseAnh_Proz.Name = "lblPloseAnh_Proz" + Me.lblPloseAnh_Proz.Size = New System.Drawing.Size(69, 13) + Me.lblPloseAnh_Proz.TabIndex = 79 + Me.lblPloseAnh_Proz.Text = "0%" + Me.lblPloseAnh_Proz.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'cbxZBalsSR + ' + Me.cbxZBalsSR.AutoSize = True + Me.cbxZBalsSR.Checked = True + Me.cbxZBalsSR.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbxZBalsSR.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.cbxZBalsSR.Location = New System.Drawing.Point(524, 67) + Me.cbxZBalsSR.Name = "cbxZBalsSR" + Me.cbxZBalsSR.Size = New System.Drawing.Size(177, 17) + Me.cbxZBalsSR.TabIndex = 76 + Me.cbxZBalsSR.Text = "als Sammelrechnung fakturieren" + Me.cbxZBalsSR.UseVisualStyleBackColor = True + ' 'Label57 ' Me.Label57.AutoSize = True @@ -2519,7 +2613,7 @@ Partial Class usrCntlBH Me.txtJahr_FIBU._Waehrung = False Me.txtJahr_FIBU._WaehrungZeichen = True Me.txtJahr_FIBU.ForeColor = System.Drawing.Color.Black - Me.txtJahr_FIBU.Location = New System.Drawing.Point(175, 133) + Me.txtJahr_FIBU.Location = New System.Drawing.Point(169, 207) Me.txtJahr_FIBU.MaxLineLength = -1 Me.txtJahr_FIBU.MaxLines_Warning = "" Me.txtJahr_FIBU.MaxLines_Warning_Label = Nothing @@ -2528,40 +2622,17 @@ Partial Class usrCntlBH Me.txtJahr_FIBU.TabIndex = 76 Me.txtJahr_FIBU.Text = "0" ' - 'Button16 + 'Button17 ' - Me.Button16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center - Me.Button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button16.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) - Me.Button16.Image = Global.SDL.My.Resources.Resources.Excel_logo - Me.Button16.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button16.Location = New System.Drawing.Point(6, 81) - Me.Button16.Name = "Button16" - Me.Button16.Size = New System.Drawing.Size(121, 23) - Me.Button16.TabIndex = 44 - Me.Button16.Text = " Excel" - Me.Button16.UseVisualStyleBackColor = True - ' - 'Label67 - ' - Me.Label67.AutoSize = True - Me.Label67.Location = New System.Drawing.Point(145, 87) - Me.Label67.Name = "Label67" - Me.Label67.Size = New System.Drawing.Size(105, 13) - Me.Label67.TabIndex = 45 - Me.Label67.Text = "Vergleich UID-Syska" - ' - 'cboFirma_FIBUFilialen - ' - Me.cboFirma_FIBUFilialen._allowedValuesFreiText = Nothing - Me.cboFirma_FIBUFilialen._allowFreiText = False - Me.cboFirma_FIBUFilialen._value = "" - Me.cboFirma_FIBUFilialen.DropDownWidth = 150 - Me.cboFirma_FIBUFilialen.FormattingEnabled = True - Me.cboFirma_FIBUFilialen.Location = New System.Drawing.Point(406, 57) - Me.cboFirma_FIBUFilialen.Name = "cboFirma_FIBUFilialen" - Me.cboFirma_FIBUFilialen.Size = New System.Drawing.Size(54, 21) - Me.cboFirma_FIBUFilialen.TabIndex = 43 + Me.Button17.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen + Me.Button17.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.Button17.FlatAppearance.BorderSize = 0 + Me.Button17.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button17.Location = New System.Drawing.Point(816, 19) + Me.Button17.Name = "Button17" + Me.Button17.Size = New System.Drawing.Size(25, 20) + Me.Button17.TabIndex = 81 + Me.Button17.UseVisualStyleBackColor = True ' 'usrCntlBH ' @@ -2788,4 +2859,10 @@ Partial Class usrCntlBH Friend WithEvents cboFirma_FIBUFilialen As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents Label67 As Label Friend WithEvents Button16 As Button + Friend WithEvents cbxZBalsSR As CheckBox + Friend WithEvents txtPloseAnh_Einarbeitung As TextBox + Friend WithEvents Label71 As Label + Friend WithEvents pbPloseAnh_Proz As ProgressBar + Friend WithEvents lblPloseAnh_Proz As Label + Friend WithEvents Button17 As Button End Class diff --git a/SDL/buchhaltung/usrCntlBH.vb b/SDL/buchhaltung/usrCntlBH.vb index 17e1d9a3..89dee112 100644 --- a/SDL/buchhaltung/usrCntlBH.vb +++ b/SDL/buchhaltung/usrCntlBH.vb @@ -1,7 +1,9 @@ Imports System.Globalization Imports System.Text Imports ClosedXML.Excel +Imports com.sun.xml.internal.rngom Imports VERAG_PROG_ALLGEMEIN +Imports VERAG_PROG_ALLGEMEIN.TESTJSON Public Class usrCntlBH Dim GrenzeVersicherung = 50000 @@ -901,6 +903,7 @@ Public Class usrCntlBH Else Dim counter As Integer = 0 + Dim cnt As Integer = 0 For Each r As DataRow In dt.Rows @@ -936,6 +939,15 @@ Public Class usrCntlBH End If End If + txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt.Rows.Count + Dim proz As Double = (cnt / dt.Rows.Count) * 100 + pbPloseAnh_Proz.Value = proz + lblPloseAnh_Proz.Text = proz.ToString("N2") & " %" + 'GroupBox12.Refresh() + My.Application.DoEvents() + + cnt += 1 + Next @@ -987,6 +999,10 @@ Public Class usrCntlBH End If + pbPloseAnh_Proz.Value = 100 + txtPloseAnh_Einarbeitung.Text = dt.Rows.Count & " / " & dt.Rows.Count + lblPloseAnh_Proz.Text = "100.00 %" + End If @@ -1042,7 +1058,7 @@ Public Class usrCntlBH End Function - Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer) + Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer, sammelrechnung As Boolean) Try If KdNr = "" Then Return False @@ -1055,7 +1071,7 @@ Public Class usrCntlBH Dim Abfertigungsart As Integer 'TODO. Setzen! - OffertenNr = 95 : Abfertigungsart = 10 : RG.Anlage_1 = "" + OffertenNr = 95 : Abfertigungsart = 10 RG.Firma_ID = 19 @@ -1067,7 +1083,13 @@ Public Class usrCntlBH RG.Buchungsjahr = cRKSV.getGJ(SPEDBUCH.Abfertigungsdatum, RG.Firma_ID) 'If(Now.Month = 1, Now.Year - 1, Now.Year) RG.FilialenNr = SPEDBUCH.FilialenNr RG.Abfertigungsdatum = SPEDBUCH.Abfertigungsdatum - RG.Sammelrechnung = 0 + + If sammelrechnung Then + RG.Sammelrechnung = 6 + Else + RG.Sammelrechnung = 0 + End If + RG.BelegartenKz = "AR" RG.BelegartenNr = 70 RG.BelegartenBez = "Rechnung" @@ -1180,6 +1202,7 @@ Public Class usrCntlBH RG.Text = (cFakturierung.przRechnungstextTXT(RG, SPEDBUCH) & vbNewLine & cFakturierung.przRechnungstextZZ(RG)).Trim + If RG.SAVE Then RK_ID = RG.RK_ID Return True @@ -1238,6 +1261,8 @@ Public Class usrCntlBH Return False End Function + + Private Sub Button13_Click_1(sender As Object, e As EventArgs) Handles Button13.Click Dim frm As New frmZinsnachberechnung("tblMDM_Zinsberechnung", "FMZOLL") frm.ShowDialog(Me) @@ -1330,7 +1355,7 @@ Public Class usrCntlBH If vbYes = MsgBox("Möchten Sie für " & dt_Main.Rows.Count & " Kunden die Zinsbelastung mit Abrechnungsdatum " & CDate(txtZRbis.Text).ToShortDateString & " verrechnen?" & vbNewLine & "Es werden nur Rechnungen erstellt, deren Gesamtbelastung über " & LimitBEtrag & " EUR liegt!", vbYesNoCancel) Then - + Dim cnt As Integer = 0 For Each R In dt_Main.Rows @@ -1353,18 +1378,31 @@ Public Class usrCntlBH Dim SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch = Nothing Dim RK_ID As Integer = -1 If Not gen_SPEDBUCH_ByKdNr(R("kundenNr"), SPEDBUCH, CDate(txtZRbis.Text).ToShortDateString, vermerk) Then verarbOK = False - If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel")) Then verarbOK = False + If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel"), cbxZBalsSR.Checked) Then verarbOK = False If verarbOK Then SQL.doSQL("UPDATE [tblMDM_Zinsberechnung] SET [verrechnet]=GETDATE(), RK_ID = " & RK_ID & " WHERE [verrechnet] Is null And kundenNr='" & R("kundenNr") & "' ", "FMZOLL") End If + txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count + Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100 + pbPloseAnh_Proz.Value = proz + lblPloseAnh_Proz.Text = proz.ToString("N2") & " %" + 'GroupBox12.Refresh() + My.Application.DoEvents() + + cnt += 1 + Next txtnichtabrechneteKunden.Text = SQL.getValueTxtBySql("SELECT count(distinct(kundenNr)) FROM [VERAG].[dbo].[tblMDM_Zinsberechnung] where verrechnet is null", "FMZOLL",,, "0") End If + + pbPloseAnh_Proz.Value = 100 + txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count + lblPloseAnh_Proz.Text = "100.00 %" End If diff --git a/SDL/frmEssensbestellungenAdministration.vb b/SDL/frmEssensbestellungenAdministration.vb index 1f613c17..589d5d69 100644 --- a/SDL/frmEssensbestellungenAdministration.vb +++ b/SDL/frmEssensbestellungenAdministration.vb @@ -45,7 +45,7 @@ Public Class frmEssensbestellungenAdministration Dim SQLString As String = "SELECT [eb_mitid] , [eb_mitname] ,[eb_firma] , [eb_kw] , [eb_gebaeude],[eb_abteilung],[eb_montag],[eb_dienstag],[eb_mittwoch], - [eb_donnerstag] ,[eb_freitag],[eb_datum],[eb_preis], [eb_anmerkung],[eb_storniert],[eb_storniert_am],[eb_abgerechnet],[eb_abgerechnet_am], [eb_gesendet], [eb_gesendet_am] + [eb_donnerstag] ,[eb_freitag],[eb_datum],[eb_preis], [eb_anmerkung],[eb_storniert],[eb_storniert_am],[eb_abgerechnet],[eb_abgerechnet_am], [eb_gesendet], cast([eb_gesendet_am] as Date) as eb_gesendet_am FROM [tblEssensbestellungen] WHERE 1=1 " @@ -328,6 +328,11 @@ Public Class frmEssensbestellungenAdministration End If + dgvBestellungen.GetOrder() + dgvBestellungen.LOAD() + dgvBestellungen.SetOrder() + + End Select @@ -348,6 +353,11 @@ Public Class frmEssensbestellungenAdministration End If + dgvBestellungen.GetOrder() + dgvBestellungen.LOAD() + dgvBestellungen.SetOrder() + + End Select @@ -355,7 +365,7 @@ Public Class frmEssensbestellungenAdministration Select Case dgvBestellungen.SelectedRows.Count Case 1 If vbYes = MsgBox("Möchten Sie die Essensbestellung '" & dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value & " von Mitarbeiter " & dgvBestellungen.SelectedRows(0).Cells("eb_mitname").Value & " abschicken?", vbYesNoCancel) Then - bestellungenSenden(True) + bestellungenSenden(True, "SEL") generateEMailforHighway(sender, e) Else Exit Sub @@ -363,7 +373,7 @@ Public Class frmEssensbestellungenAdministration Case Else If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen abschicken", vbYesNoCancel) Then - bestellungenSenden(True) + bestellungenSenden(True, "ALL") generateEMailforHighway(sender, e) Else Exit Sub @@ -387,6 +397,7 @@ Public Class frmEssensbestellungenAdministration bestellung.eb_storniert = True If stornieren Then bestellung.eb_storniert_am = Now + bestellung.eb_storniertVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME Else bestellung.eb_storniert_am = DBNull.Value @@ -399,10 +410,6 @@ Public Class frmEssensbestellungenAdministration Next - dgvBestellungen.GetOrder() - dgvBestellungen.LOAD() - dgvBestellungen.SetOrder() - End Sub Private Sub bestellungenAbrechnen(abrechnen As Boolean) @@ -415,6 +422,7 @@ Public Class frmEssensbestellungenAdministration bestellung.eb_abgerechnet = abrechnen If abrechnen Then bestellung.eb_abgerechnet_am = Now + bestellung.eb_abgerechnetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME Else bestellung.eb_abgerechnet_am = DBNull.Value @@ -425,14 +433,9 @@ Public Class frmEssensbestellungenAdministration Next - - dgvBestellungen.GetOrder() - dgvBestellungen.LOAD() - dgvBestellungen.SetOrder() - End Sub - Private Sub bestellungenSenden(senden As Boolean) + Private Sub bestellungenSenden(senden As Boolean, anmerkung As String) For Each row As DataGridViewRow In dgvBestellungen.SelectedRows @@ -442,6 +445,8 @@ Public Class frmEssensbestellungenAdministration bestellung.eb_gesendet = senden If senden Then bestellung.eb_gesendet_am = Now + bestellung.eb_gesendetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & " " & anmerkung + If IsDBNull(bestellung.eb_gesendetFirst_am) OrElse bestellung.eb_gesendetFirst_am Is Nothing Then bestellung.eb_gesendetFirst_am = bestellung.eb_gesendet_am Else bestellung.eb_gesendet_am = DBNull.Value @@ -451,13 +456,7 @@ Public Class frmEssensbestellungenAdministration Next - If dgvBestellungen.RowCount > 0 Then - dgvBestellungen.GetOrder() - dgvBestellungen.LOAD() - dgvBestellungen.SetOrder() - - End If End Sub @@ -500,6 +499,8 @@ Public Class frmEssensbestellungenAdministration bestellung.eb_gesendet = True bestellung.eb_gesendet_am = Now + If IsDBNull(bestellung.eb_gesendetFirst_am) OrElse bestellung.eb_gesendetFirst_am Is Nothing Then bestellung.eb_gesendetFirst_am = bestellung.eb_gesendet_am + bestellung.eb_gesendetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME bestellung.SAVE() End If Next @@ -543,6 +544,14 @@ Public Class frmEssensbestellungenAdministration Me.Cursor = Cursors.Default + If dgvBestellungen.RowCount > 0 Then + + dgvBestellungen.GetOrder() + dgvBestellungen.LOAD() + dgvBestellungen.SetOrder() + + End If + End Sub diff --git a/SDL/kunden/frmKundenlogin.vb b/SDL/kunden/frmKundenlogin.vb index c1c54eb7..dab39640 100644 --- a/SDL/kunden/frmKundenlogin.vb +++ b/SDL/kunden/frmKundenlogin.vb @@ -115,9 +115,10 @@ Select Case txtPortal.Text Case "Q8-TRUCK" : link.AccessibleDescription = "https://iaccount.q8.com/" : link.Text = cboLieferant.Text & "-Link" - Case "UTA PORTAL" : link.AccessibleDescription = "https://meinedenred.at/login" : link.Text = cboLieferant.Text & "-Link" + 'Case "UTA PORTAL" : link.AccessibleDescription = "https://meinedenred.at/login" : link.Text = cboLieferant.Text & "-Link" Case "PLOSE APR" : link.AccessibleDescription = "https://www.apr.plose.it/login" : link.Text = cboLieferant.Text & "-Link" Case "MSTSTTOLLS" : link.AccessibleDescription = "https://iaccount.q8.com/" : link.Text = cboLieferant.Text & "-Link" + Case "UTA PORTAL" : link.AccessibleDescription = "https://sso.eu.edenred.io/web/session/step/password?returnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fscope%3Dopenid%2520uta-service-center-api%26acr_values%3Dtenant%253Auta-service-center%26state%3Dauthoauth2%257C_29893002dacb85543f3e1a66a7f91556dc1792c392%253Ahttps%253A%252F%252Fssoprod.uta.com%252Fsimplesamlphp%252Fsaml2%252Fidp%252FSSOService.php%253Fspentityid%253Dhttps%25253A%25252F%25252Fwww.uta.com%25252Fsamlsps%25252Fedenredproxy%2526cookieTime%253D1788790826%26response_type%3Dcode%26approval_prompt%3Dauto%26redirect_uri%3Dhttps%253A%252F%252Fssoprod.uta.com%252Fsimplesamlphp%252Fmodule.php%252Fauthoauth2%252Flinkback.php%26client_id%3De8d6c5eab5c64fc38f7f0764c0114083" : link.Text = cboLieferant.Text & "-Link" Case "HUB4TRUCKS" : link.AccessibleDescription = "https://truck.telepass.com/api/uaa/login" : link.Text = cboLieferant.Text & "-Link" Case Else : link.AccessibleDescription = "" : link.Text = cboLieferant.Text & "" diff --git a/SDL/mdm/rptPOS_ZNB.Designer.vb b/SDL/mdm/rptPOS_ZNB.Designer.vb new file mode 100644 index 00000000..435b4878 --- /dev/null +++ b/SDL/mdm/rptPOS_ZNB.Designer.vb @@ -0,0 +1,758 @@ + +Partial Public Class rptPOS_ZNB + Inherits GrapeCity.ActiveReports.SectionReport + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + End If + MyBase.Dispose(disposing) + End Sub + + 'NOTE: The following procedure is required by the ActiveReports Designer + 'It can be modified using the ActiveReports Designer. + 'Do not modify it using the code editor. + Private WithEvents PageHeader As GrapeCity.ActiveReports.SectionReportModel.PageHeader + Private WithEvents PageFooter As GrapeCity.ActiveReports.SectionReportModel.PageFooter + + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(rptPOS_ZNB)) + Me.PageHeader = New GrapeCity.ActiveReports.SectionReportModel.PageHeader() + Me.lblReNr = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblReDat = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblReBetrag = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblZahlungsdat = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblTage = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblZinsen = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblVZ = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Label5 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Detail = New GrapeCity.ActiveReports.SectionReportModel.Detail() + Me.txt_Anmerkung = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtREnr = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtReDat = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtZE = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtReBetrag = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtTage = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtZinsen = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtVZ = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.txtFaellig = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.PageFooter = New GrapeCity.ActiveReports.SectionReportModel.PageFooter() + Me.Line2 = New GrapeCity.ActiveReports.SectionReportModel.Line() + Me.ReportInfo2 = New GrapeCity.ActiveReports.SectionReportModel.ReportInfo() + Me.ReportHeader1 = New GrapeCity.ActiveReports.SectionReportModel.ReportHeader() + Me.lblRgDatum = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.txtKunde = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.Label16 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Picture1 = New GrapeCity.ActiveReports.SectionReportModel.Picture() + Me.picVERAG = New GrapeCity.ActiveReports.SectionReportModel.Picture() + Me.lblUeberschriftRG_GS = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Line3 = New GrapeCity.ActiveReports.SectionReportModel.Line() + Me.lblFirmaOrt = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblFirmaStrasse = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblFirmaTel = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblFirmaFax = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblFirmaEmail = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblFirmaWeb = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Label18 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.TextBox1 = New GrapeCity.ActiveReports.SectionReportModel.TextBox() + Me.Label2 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Label3 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Label4 = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblHeader = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.ReportFooter1 = New GrapeCity.ActiveReports.SectionReportModel.ReportFooter() + Me.txtBruttoGesSum = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.lblGessumme = New GrapeCity.ActiveReports.SectionReportModel.Label() + Me.Line7 = New GrapeCity.ActiveReports.SectionReportModel.Line() + Me.Line8 = New GrapeCity.ActiveReports.SectionReportModel.Line() + CType(Me.lblReNr, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblReDat, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblReBetrag, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblZahlungsdat, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblTage, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblZinsen, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblVZ, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txt_Anmerkung, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtREnr, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtReDat, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtZE, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtReBetrag, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTage, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtZinsen, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtVZ, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtFaellig, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.ReportInfo2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblRgDatum, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtKunde, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label16, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Picture1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.picVERAG, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblUeberschriftRG_GS, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaOrt, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaStrasse, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaTel, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaFax, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaEmail, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblFirmaWeb, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label18, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextBox1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblHeader, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtBruttoGesSum, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblGessumme, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me, System.ComponentModel.ISupportInitialize).BeginInit() + ' + 'PageHeader + ' + Me.PageHeader.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.lblReNr, Me.lblReDat, Me.lblReBetrag, Me.lblZahlungsdat, Me.lblTage, Me.lblZinsen, Me.lblVZ, Me.Label5}) + Me.PageHeader.Height = 0.1458333! + Me.PageHeader.Name = "PageHeader" + ' + 'lblReNr + ' + Me.lblReNr.Height = 0.1433071! + Me.lblReNr.HyperLink = Nothing + Me.lblReNr.Left = 0.01417351! + Me.lblReNr.Name = "lblReNr" + Me.lblReNr.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblReNr.Text = "RENR" + Me.lblReNr.Top = 0! + Me.lblReNr.Width = 0.9220473! + ' + 'lblReDat + ' + Me.lblReDat.Height = 0.1433071! + Me.lblReDat.HyperLink = Nothing + Me.lblReDat.Left = 0.9362205! + Me.lblReDat.Name = "lblReDat" + Me.lblReDat.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblReDat.Text = "RE Datum" + Me.lblReDat.Top = 0! + Me.lblReDat.Width = 0.9842521! + ' + 'lblReBetrag + ' + Me.lblReBetrag.Height = 0.1433071! + Me.lblReBetrag.HyperLink = Nothing + Me.lblReBetrag.Left = 4.343308! + Me.lblReBetrag.Name = "lblReBetrag" + Me.lblReBetrag.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblReBetrag.Text = "RE Betrag" + Me.lblReBetrag.Top = 0! + Me.lblReBetrag.Width = 1.181102! + ' + 'lblZahlungsdat + ' + Me.lblZahlungsdat.Height = 0.1433071! + Me.lblZahlungsdat.HyperLink = Nothing + Me.lblZahlungsdat.Left = 2.64252! + Me.lblZahlungsdat.Name = "lblZahlungsdat" + Me.lblZahlungsdat.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblZahlungsdat.Text = "Zahlung" + Me.lblZahlungsdat.Top = 0! + Me.lblZahlungsdat.Width = 0.9661417! + ' + 'lblTage + ' + Me.lblTage.Height = 0.1433071! + Me.lblTage.HyperLink = Nothing + Me.lblTage.Left = 3.608661! + Me.lblTage.Name = "lblTage" + Me.lblTage.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblTage.Text = "VZ Tage" + Me.lblTage.Top = 0! + Me.lblTage.Width = 0.7346458! + ' + 'lblZinsen + ' + Me.lblZinsen.Height = 0.1433071! + Me.lblZinsen.HyperLink = Nothing + Me.lblZinsen.Left = 5.936615! + Me.lblZinsen.Name = "lblZinsen" + Me.lblZinsen.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.lblZinsen.Text = "Zinsen p.a." + Me.lblZinsen.Top = 0.002362205! + Me.lblZinsen.Width = 0.7374014! + ' + 'lblVZ + ' + Me.lblVZ.Height = 0.1433071! + Me.lblVZ.HyperLink = Nothing + Me.lblVZ.Left = 6.674016! + Me.lblVZ.Name = "lblVZ" + Me.lblVZ.Style = "font-size: 6.75pt; font-weight: bold; text-align: right; text-justify: auto; ddo-" & + "char-set: 0" + Me.lblVZ.Text = "Verzugszinsen" + Me.lblVZ.Top = 0! + Me.lblVZ.Width = 0.8169292! + ' + 'Label5 + ' + Me.Label5.Height = 0.1433071! + Me.Label5.HyperLink = Nothing + Me.Label5.Left = 1.920473! + Me.Label5.Name = "Label5" + Me.Label5.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" & + "har-set: 0" + Me.Label5.Text = "Fällig" + Me.Label5.Top = 0! + Me.Label5.Width = 0.7220473! + ' + 'Detail + ' + Me.Detail.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txt_Anmerkung, Me.txtREnr, Me.txtReDat, Me.txtZE, Me.txtReBetrag, Me.txtTage, Me.txtZinsen, Me.txtVZ, Me.txtFaellig}) + Me.Detail.Height = 0.1338583! + Me.Detail.KeepTogether = True + Me.Detail.Name = "Detail" + ' + 'txt_Anmerkung + ' + Me.txt_Anmerkung.Height = 0.1338583! + Me.txt_Anmerkung.Left = 1.903543! + Me.txt_Anmerkung.Name = "txt_Anmerkung" + Me.txt_Anmerkung.Padding = New GrapeCity.ActiveReports.PaddingEx(6, 0, 0, 0) + Me.txt_Anmerkung.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: center; ddo-ch" & + "ar-set: 0" + Me.txt_Anmerkung.Text = "-" + Me.txt_Anmerkung.Top = 0! + Me.txt_Anmerkung.Visible = False + Me.txt_Anmerkung.Width = 3.620866! + ' + 'txtREnr + ' + Me.txtREnr.Height = 0.1338583! + Me.txtREnr.Left = 0.01417323! + Me.txtREnr.Name = "txtREnr" + Me.txtREnr.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtREnr.Text = "-" + Me.txtREnr.Top = 0! + Me.txtREnr.Width = 0.9220473! + ' + 'txtReDat + ' + Me.txtReDat.Height = 0.1338583! + Me.txtReDat.Left = 0.9362202! + Me.txtReDat.Name = "txtReDat" + Me.txtReDat.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtReDat.Text = "-" + Me.txtReDat.Top = 0! + Me.txtReDat.Width = 0.9842521! + ' + 'txtZE + ' + Me.txtZE.Height = 0.1338583! + Me.txtZE.Left = 2.64252! + Me.txtZE.Name = "txtZE" + Me.txtZE.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtZE.Text = "-" + Me.txtZE.Top = 0! + Me.txtZE.Width = 0.9661417! + ' + 'txtReBetrag + ' + Me.txtReBetrag.Height = 0.1338583! + Me.txtReBetrag.Left = 4.343308! + Me.txtReBetrag.Name = "txtReBetrag" + Me.txtReBetrag.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtReBetrag.Text = "-" + Me.txtReBetrag.Top = 0! + Me.txtReBetrag.Width = 0.8267722! + ' + 'txtTage + ' + Me.txtTage.Height = 0.1338583! + Me.txtTage.Left = 3.608661! + Me.txtTage.Name = "txtTage" + Me.txtTage.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtTage.Text = "-" + Me.txtTage.Top = 0! + Me.txtTage.Width = 0.6618112! + ' + 'txtZinsen + ' + Me.txtZinsen.Height = 0.1338583! + Me.txtZinsen.Left = 6.753544! + Me.txtZinsen.Name = "txtZinsen" + Me.txtZinsen.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: right; ddo-cha" & + "r-set: 0" + Me.txtZinsen.Text = "-" + Me.txtZinsen.Top = 0! + Me.txtZinsen.Width = 0.7374014! + ' + 'txtVZ + ' + Me.txtVZ.Height = 0.1338583! + Me.txtVZ.Left = 5.936615! + Me.txtVZ.Name = "txtVZ" + Me.txtVZ.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: center; ddo-ch" & + "ar-set: 0" + Me.txtVZ.Text = "-" + Me.txtVZ.Top = 0! + Me.txtVZ.Width = 0.7492127! + ' + 'txtFaellig + ' + Me.txtFaellig.Height = 0.1338583! + Me.txtFaellig.Left = 1.920472! + Me.txtFaellig.Name = "txtFaellig" + Me.txtFaellig.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" & + "-set: 0" + Me.txtFaellig.Text = "-" + Me.txtFaellig.Top = 0! + Me.txtFaellig.Width = 0.7220473! + ' + 'PageFooter + ' + Me.PageFooter.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.Line2, Me.ReportInfo2}) + Me.PageFooter.Height = 0.2503937! + Me.PageFooter.Name = "PageFooter" + ' + 'Line2 + ' + Me.Line2.Height = 0! + Me.Line2.Left = 0! + Me.Line2.LineWeight = 1.0! + Me.Line2.Name = "Line2" + Me.Line2.Top = 0.07401575! + Me.Line2.Width = 7.480313! + Me.Line2.X1 = 0! + Me.Line2.X2 = 7.480313! + Me.Line2.Y1 = 0.07401575! + Me.Line2.Y2 = 0.07401575! + ' + 'ReportInfo2 + ' + Me.ReportInfo2.FormatString = "Seite {PageNumber} von {PageCount} Seiten " + Me.ReportInfo2.Height = 0.1330709! + Me.ReportInfo2.Left = 5.480315! + Me.ReportInfo2.Name = "ReportInfo2" + Me.ReportInfo2.Style = "font-size: 8pt; text-align: right" + Me.ReportInfo2.Top = 0.1173228! + Me.ReportInfo2.Width = 1.994928! + ' + 'ReportHeader1 + ' + Me.ReportHeader1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.lblRgDatum, Me.txtKunde, Me.Label16, Me.Picture1, Me.picVERAG, Me.lblUeberschriftRG_GS, Me.Line3, Me.lblFirmaOrt, Me.lblFirmaStrasse, Me.lblFirmaTel, Me.lblFirmaFax, Me.lblFirmaEmail, Me.lblFirmaWeb, Me.Label18, Me.Label1, Me.TextBox1, Me.Label2, Me.Label3, Me.Label4, Me.lblHeader}) + Me.ReportHeader1.Height = 1.405906! + Me.ReportHeader1.Name = "ReportHeader1" + ' + 'lblRgDatum + ' + Me.lblRgDatum.Height = 0.1574803! + Me.lblRgDatum.HyperLink = Nothing + Me.lblRgDatum.Left = 6.674016! + Me.lblRgDatum.Name = "lblRgDatum" + Me.lblRgDatum.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" & + "-char-set: 1" + Me.lblRgDatum.Text = "01.01.2019" + Me.lblRgDatum.Top = 0.6716536! + Me.lblRgDatum.Width = 0.7921257! + ' + 'txtKunde + ' + Me.txtKunde.Height = 0.1574802! + Me.txtKunde.HyperLink = Nothing + Me.txtKunde.Left = 5.111811! + Me.txtKunde.Name = "txtKunde" + Me.txtKunde.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" & + "-char-set: 1" + Me.txtKunde.Text = "1000000 TEST" + Me.txtKunde.Top = 0.8291339! + Me.txtKunde.Width = 2.354331! + ' + 'Label16 + ' + Me.Label16.Height = 0.1574803! + Me.Label16.HyperLink = Nothing + Me.Label16.Left = 4.304331! + Me.Label16.Name = "Label16" + Me.Label16.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.Label16.Text = "Kunde:" + Me.Label16.Top = 0.8291339! + Me.Label16.Width = 0.8114175! + ' + 'Picture1 + ' + Me.Picture1.Height = 0.6102362! + Me.Picture1.HyperLink = Nothing + Me.Picture1.ImageBase64String = resources.GetString("Picture1.ImageBase64String") + Me.Picture1.Left = 3.244882! + Me.Picture1.Name = "Picture1" + Me.Picture1.SizeMode = GrapeCity.ActiveReports.SectionReportModel.SizeModes.Zoom + Me.Picture1.Top = 0! + Me.Picture1.Visible = False + Me.Picture1.Width = 1.059449! + ' + 'picVERAG + ' + Me.picVERAG.Height = 0.4169292! + Me.picVERAG.HyperLink = Nothing + Me.picVERAG.ImageBase64String = resources.GetString("picVERAG.ImageBase64String") + Me.picVERAG.Left = 0.01023622! + Me.picVERAG.Name = "picVERAG" + Me.picVERAG.SizeMode = GrapeCity.ActiveReports.SectionReportModel.SizeModes.Zoom + Me.picVERAG.Top = 0.1220473! + Me.picVERAG.Width = 2.198425! + ' + 'lblUeberschriftRG_GS + ' + Me.lblUeberschriftRG_GS.Height = 0.2311024! + Me.lblUeberschriftRG_GS.HyperLink = Nothing + Me.lblUeberschriftRG_GS.Left = 4.500394! + Me.lblUeberschriftRG_GS.Name = "lblUeberschriftRG_GS" + Me.lblUeberschriftRG_GS.Style = "font-size: 12pt; font-weight: bold; text-align: right; ddo-char-set: 1" + Me.lblUeberschriftRG_GS.Text = "Anlage zur Sammelrechnung" + Me.lblUeberschriftRG_GS.Top = 0.3870079! + Me.lblUeberschriftRG_GS.Width = 2.969686! + ' + 'Line3 + ' + Me.Line3.Height = 0! + Me.Line3.Left = 0.002755864! + Me.Line3.LineColor = System.Drawing.Color.DimGray + Me.Line3.LineWeight = 1.0! + Me.Line3.Name = "Line3" + Me.Line3.Top = 0.6102362! + Me.Line3.Width = 7.475196! + Me.Line3.X1 = 0.002755864! + Me.Line3.X2 = 7.477952! + Me.Line3.Y1 = 0.6102362! + Me.Line3.Y2 = 0.6102362! + ' + 'lblFirmaOrt + ' + Me.lblFirmaOrt.Height = 0.1181102! + Me.lblFirmaOrt.HyperLink = Nothing + Me.lblFirmaOrt.Left = 0.01417317! + Me.lblFirmaOrt.Name = "lblFirmaOrt" + Me.lblFirmaOrt.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.lblFirmaOrt.Text = "A-4975 Suben" + Me.lblFirmaOrt.Top = 0.7503937! + Me.lblFirmaOrt.Width = 1.19685! + ' + 'lblFirmaStrasse + ' + Me.lblFirmaStrasse.Height = 0.1181102! + Me.lblFirmaStrasse.HyperLink = Nothing + Me.lblFirmaStrasse.Left = 0.01417319! + Me.lblFirmaStrasse.Name = "lblFirmaStrasse" + Me.lblFirmaStrasse.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.lblFirmaStrasse.Text = "Suben Nr. 100" + Me.lblFirmaStrasse.Top = 0.8685039! + Me.lblFirmaStrasse.Width = 1.19685! + ' + 'lblFirmaTel + ' + Me.lblFirmaTel.Height = 0.1181103! + Me.lblFirmaTel.HyperLink = Nothing + Me.lblFirmaTel.Left = 1.211024! + Me.lblFirmaTel.Name = "lblFirmaTel" + Me.lblFirmaTel.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.lblFirmaTel.Text = "Tel. +43 7711 2777 - 0" + Me.lblFirmaTel.Top = 0.7503937! + Me.lblFirmaTel.Width = 1.28189! + ' + 'lblFirmaFax + ' + Me.lblFirmaFax.Height = 0.1181103! + Me.lblFirmaFax.HyperLink = Nothing + Me.lblFirmaFax.Left = 1.211024! + Me.lblFirmaFax.Name = "lblFirmaFax" + Me.lblFirmaFax.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.lblFirmaFax.Text = "Fax +43 7711 31600" + Me.lblFirmaFax.Top = 0.868504! + Me.lblFirmaFax.Width = 1.28189! + ' + 'lblFirmaEmail + ' + Me.lblFirmaEmail.Height = 0.1181103! + Me.lblFirmaEmail.HyperLink = Nothing + Me.lblFirmaEmail.Left = 2.492913! + Me.lblFirmaEmail.Name = "lblFirmaEmail" + Me.lblFirmaEmail.Style = "font-size: 7pt; font-weight: normal; text-align: right; vertical-align: middle; d" & + "do-char-set: 1" + Me.lblFirmaEmail.Text = "s.kriegner@verag.ag" + Me.lblFirmaEmail.Top = 0.868504! + Me.lblFirmaEmail.Width = 1.436614! + ' + 'lblFirmaWeb + ' + Me.lblFirmaWeb.Height = 0.1181102! + Me.lblFirmaWeb.HyperLink = Nothing + Me.lblFirmaWeb.Left = 2.492913! + Me.lblFirmaWeb.Name = "lblFirmaWeb" + Me.lblFirmaWeb.Style = "font-size: 7pt; font-weight: normal; text-align: right; vertical-align: middle; d" & + "do-char-set: 1" + Me.lblFirmaWeb.Text = "www.verag.ag" + Me.lblFirmaWeb.Top = 0.7503937! + Me.lblFirmaWeb.Width = 1.436614! + ' + 'Label18 + ' + Me.Label18.Height = 0.1574803! + Me.Label18.HyperLink = Nothing + Me.Label18.Left = 6.237402! + Me.Label18.Name = "Label18" + Me.Label18.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.Label18.Text = "Datum:" + Me.Label18.Top = 0.6716536! + Me.Label18.Width = 0.436614! + ' + 'Label1 + ' + Me.Label1.Height = 0.2311024! + Me.Label1.HyperLink = Nothing + Me.Label1.Left = 4.496457! + Me.Label1.Name = "Label1" + Me.Label1.Style = "font-size: 12pt; font-weight: bold; text-align: right; ddo-char-set: 1" + Me.Label1.Text = "-" + Me.Label1.Top = 0.0523622! + Me.Label1.Width = 2.969686! + ' + 'TextBox1 + ' + Me.TextBox1.Height = 0.1574803! + Me.TextBox1.Left = 5.0! + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" & + "-char-set: 1" + Me.TextBox1.Text = "1000000" + Me.TextBox1.Top = 0.9866142! + Me.TextBox1.Width = 0.8688979! + ' + 'Label2 + ' + Me.Label2.Height = 0.1574803! + Me.Label2.HyperLink = Nothing + Me.Label2.Left = 4.304331! + Me.Label2.Name = "Label2" + Me.Label2.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.Label2.Text = "Partner-Kunden-Nr:" + Me.Label2.Top = 0.9866142! + Me.Label2.Width = 1.020079! + ' + 'Label3 + ' + Me.Label3.Height = 0.1574803! + Me.Label3.HyperLink = Nothing + Me.Label3.Left = 5.983465! + Me.Label3.Name = "Label3" + Me.Label3.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" & + "o-char-set: 1" + Me.Label3.Text = "Zeitraum bis:" + Me.Label3.Top = 0.9866142! + Me.Label3.Width = 0.6905512! + ' + 'Label4 + ' + Me.Label4.Height = 0.1574803! + Me.Label4.HyperLink = Nothing + Me.Label4.Left = 6.670079! + Me.Label4.Name = "Label4" + Me.Label4.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" & + "-char-set: 1" + Me.Label4.Text = "01.01.2019" + Me.Label4.Top = 0.9866142! + Me.Label4.Width = 0.7960634! + ' + 'lblHeader + ' + Me.lblHeader.Height = 0.2094488! + Me.lblHeader.HyperLink = Nothing + Me.lblHeader.Left = 0! + Me.lblHeader.Name = "lblHeader" + Me.lblHeader.Padding = New GrapeCity.ActiveReports.PaddingEx(6, 0, 0, 0) + Me.lblHeader.Style = "background-color: #003680; color: White; font-size: 10pt; font-weight: bold; text" & + "-align: left; text-justify: auto; vertical-align: middle; ddo-char-set: 1" + Me.lblHeader.Text = "VERZUGSZINSEN" + Me.lblHeader.Top = 1.196457! + Me.lblHeader.Width = 7.466146! + ' + 'ReportFooter1 + ' + Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtBruttoGesSum, Me.lblGessumme, Me.Line7, Me.Line8}) + Me.ReportFooter1.Height = 0.6578248! + Me.ReportFooter1.KeepTogether = True + Me.ReportFooter1.Name = "ReportFooter1" + ' + 'txtBruttoGesSum + ' + Me.txtBruttoGesSum.Height = 0.1417323! + Me.txtBruttoGesSum.HyperLink = Nothing + Me.txtBruttoGesSum.Left = 6.563386! + Me.txtBruttoGesSum.Name = "txtBruttoGesSum" + Me.txtBruttoGesSum.Style = "font-size: 8pt; font-weight: bold; text-align: right; ddo-char-set: 1" + Me.txtBruttoGesSum.Text = "Betrag" + Me.txtBruttoGesSum.Top = 0.1098426! + Me.txtBruttoGesSum.Width = 0.9169284! + ' + 'lblGessumme + ' + Me.lblGessumme.Height = 0.1417323! + Me.lblGessumme.HyperLink = Nothing + Me.lblGessumme.Left = 3.244878! + Me.lblGessumme.Name = "lblGessumme" + Me.lblGessumme.Style = "font-size: 8pt; font-weight: bold; text-align: right; ddo-char-set: 1; ddo-font-v" & + "ertical: none" + Me.lblGessumme.Text = "Gesamtsumme:" + Me.lblGessumme.Top = 0.1098426! + Me.lblGessumme.Width = 1.484645! + ' + 'Line7 + ' + Me.Line7.Height = 0! + Me.Line7.Left = 0.002752304! + Me.Line7.LineWeight = 2.0! + Me.Line7.Name = "Line7" + Me.Line7.Top = 0! + Me.Line7.Width = 7.475196! + Me.Line7.X1 = 0.002752304! + Me.Line7.X2 = 7.477948! + Me.Line7.Y1 = 0! + Me.Line7.Y2 = 0! + ' + 'Line8 + ' + Me.Line8.Height = 0! + Me.Line8.Left = 0.002752304! + Me.Line8.LineWeight = 2.0! + Me.Line8.Name = "Line8" + Me.Line8.Top = 0.03543304! + Me.Line8.Width = 7.475196! + Me.Line8.X1 = 0.002752304! + Me.Line8.X2 = 7.477948! + Me.Line8.Y1 = 0.03543304! + Me.Line8.Y2 = 0.03543304! + ' + 'rptPOS_ZNB + ' + Me.MasterReport = False + Me.PageSettings.Margins.Bottom = 0.3937008! + Me.PageSettings.Margins.Left = 0.3937008! + Me.PageSettings.Margins.Right = 0.3937008! + Me.PageSettings.Margins.Top = 0.3937008! + Me.PageSettings.PaperHeight = 11.0! + Me.PageSettings.PaperWidth = 8.5! + Me.PrintWidth = 7.490945! + Me.Sections.Add(Me.ReportHeader1) + Me.Sections.Add(Me.PageHeader) + Me.Sections.Add(Me.Detail) + Me.Sections.Add(Me.PageFooter) + Me.Sections.Add(Me.ReportFooter1) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Arial; font-style: normal; text-decoration: none; font-weight: norma" & + "l; font-size: 10pt; color: Black; ddo-char-set: 204", "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-size: 16pt; font-weight: bold", "Heading1", "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Times New Roman; font-size: 14pt; font-weight: bold; font-style: ita" & + "lic", "Heading2", "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-size: 13pt; font-weight: bold", "Heading3", "Normal")) + CType(Me.lblReNr, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblReDat, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblReBetrag, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblZahlungsdat, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblTage, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblZinsen, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblVZ, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txt_Anmerkung, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtREnr, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtReDat, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtZE, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtReBetrag, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTage, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtZinsen, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtVZ, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtFaellig, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.ReportInfo2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblRgDatum, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtKunde, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label16, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Picture1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.picVERAG, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblUeberschriftRG_GS, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaOrt, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaStrasse, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaTel, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaFax, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaEmail, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblFirmaWeb, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label18, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextBox1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label4, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblHeader, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtBruttoGesSum, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblGessumme, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me, System.ComponentModel.ISupportInitialize).EndInit() + + End Sub + Private WithEvents ReportHeader1 As GrapeCity.ActiveReports.SectionReportModel.ReportHeader + Private WithEvents Line2 As GrapeCity.ActiveReports.SectionReportModel.Line + Public WithEvents Detail As GrapeCity.ActiveReports.SectionReportModel.Detail + Public WithEvents lblUeberschriftRG_GS As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents ReportInfo2 As GrapeCity.ActiveReports.SectionReportModel.ReportInfo + Public WithEvents ReportFooter1 As GrapeCity.ActiveReports.SectionReportModel.ReportFooter + Private WithEvents Line3 As GrapeCity.ActiveReports.SectionReportModel.Line + Private WithEvents Label18 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents txtKunde As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents lblRgDatum As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents Picture1 As GrapeCity.ActiveReports.SectionReportModel.Picture + Public WithEvents picVERAG As GrapeCity.ActiveReports.SectionReportModel.Picture + Public WithEvents lblFirmaOrt As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblFirmaStrasse As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblFirmaTel As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblFirmaFax As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblFirmaEmail As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblFirmaWeb As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents Label16 As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents Line7 As GrapeCity.ActiveReports.SectionReportModel.Line + Private WithEvents Line8 As GrapeCity.ActiveReports.SectionReportModel.Line + Public WithEvents txtBruttoGesSum As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblGessumme As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents Label1 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents TextBox1 As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents Label2 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents Label3 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents Label4 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents lblHeader As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblReNr As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblReDat As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblReBetrag As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblZahlungsdat As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblTage As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblZinsen As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents lblVZ As GrapeCity.ActiveReports.SectionReportModel.Label + Private WithEvents Label5 As GrapeCity.ActiveReports.SectionReportModel.Label + Public WithEvents txt_Anmerkung As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtREnr As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtReDat As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtZE As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtReBetrag As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtTage As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtZinsen As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtVZ As GrapeCity.ActiveReports.SectionReportModel.TextBox + Public WithEvents txtFaellig As GrapeCity.ActiveReports.SectionReportModel.TextBox +End Class diff --git a/SDL/mdm/rptPOS_ZNB.resx b/SDL/mdm/rptPOS_ZNB.resx new file mode 100644 index 00000000..d44ec9f5 --- /dev/null +++ b/SDL/mdm/rptPOS_ZNB.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + 0, 0 + + + 0, 0 + + \ No newline at end of file diff --git a/SDL/mdm/rptPOS_ZNB.vb b/SDL/mdm/rptPOS_ZNB.vb new file mode 100644 index 00000000..f909f366 --- /dev/null +++ b/SDL/mdm/rptPOS_ZNB.vb @@ -0,0 +1,120 @@ +Imports GrapeCity.ActiveReports +Imports GrapeCity.ActiveReports.Document + +Public Class rptPOS_ZNB + + Dim RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang = Nothing + Dim Betrag As Double + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Sub New(RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Betrag As Double) + + ' Dieser Aufruf ist für den Designer erforderlich. + InitializeComponent() + Me.RECHNUNG = RECHNUNG + Me.Betrag = Betrag + ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. + End Sub + + + Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format + If Me.DataSource IsNot Nothing AndAlso Me.Fields IsNot Nothing Then + txtREnr.Text = "" + txtReDat.Text = "" + txtReBetrag.Text = "" + + txtZE.Text = "" + txtTage.Text = "" + txtZinsen.Text = "" + txtVZ.Text = "" + txtFaellig.Text = "" + txt_Anmerkung.Text = "" + + If Me.Fields.Item("clmnReNr") IsNot Nothing AndAlso Me.Fields.Item("clmnReNr").Value IsNot Nothing Then txtREnr.Text &= Me.Fields.Item("clmnReNr").Value.ToString + If Me.Fields.Item("clmnReDatum") IsNot Nothing AndAlso Me.Fields.Item("clmnReDatum").Value IsNot Nothing AndAlso IsDate(Me.Fields.Item("clmnReDatum").Value) Then txtReDat.Text &= CDate(Me.Fields.Item("clmnReDatum").Value).ToShortDateString + If Me.Fields.Item("clmnReBetrag") IsNot Nothing AndAlso Me.Fields.Item("clmnReBetrag").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnReBetrag").Value) AndAlso CDbl(Me.Fields.Item("clmnReBetrag").Value) <> 0 Then txtReBetrag.Text &= Math.Abs(CDbl(Me.Fields.Item("clmnReBetrag").Value)).ToString("N2") + If Me.Fields.Item("clmnFaellig") IsNot Nothing AndAlso Me.Fields.Item("clmnFaellig").Value IsNot Nothing AndAlso IsDate(Me.Fields.Item("clmnFaellig").Value) Then txtFaellig.Text &= CDate(Me.Fields.Item("clmnFaellig").Value).ToShortDateString + If Me.Fields.Item("clmnZE") IsNot Nothing AndAlso Me.Fields.Item("clmnZE").Value IsNot Nothing Then + If IsDate(Me.Fields.Item("clmnZE").Value) Then + txtZE.Text &= CDate(Me.Fields.Item("clmnZE").Value).ToShortDateString + txt_Anmerkung.Visible = False + txtZE.Visible = True + txtFaellig.Visible = True + txtTage.Visible = True + txtReBetrag.Visible = True + Else + txt_Anmerkung.Text &= Me.Fields.Item("clmnZE").Value + txt_Anmerkung.Visible = True + txtZE.Visible = False + txtFaellig.Visible = False + txtTage.Visible = False + txtReBetrag.Visible = False + End If + End If + If Me.Fields.Item("clmnTage") IsNot Nothing AndAlso Me.Fields.Item("clmnTage").Value IsNot Nothing Then txtTage.Text &= Me.Fields.Item("clmnTage").Value.ToString + If Me.Fields.Item("clmnZinsen") IsNot Nothing AndAlso Me.Fields.Item("clmnZinsen").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnZinsen").Value) AndAlso CDbl(Me.Fields.Item("clmnZinsen").Value) <> 0 Then txtZinsen.Text &= CDbl(Me.Fields.Item("clmnZinsen").Value).ToString("N2") + If Me.Fields.Item("clmnVZ") IsNot Nothing AndAlso Me.Fields.Item("clmnVZ").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnVZ").Value) Then txtVZ.Text &= Me.Fields.Item("clmnVZ").Value.ToString() & "%" + + End If + End Sub + + + Private Sub rptAuswertung_ReportStart(sender As System.Object, e As System.EventArgs) Handles MyBase.ReportStart + + + Dim dt As New DataTable + dt.Columns.Add("clmnID") + dt.Columns.Add("clmnReNr") + dt.Columns.Add("clmnReDatum") + dt.Columns.Add("clmnAbfNr") + dt.Columns.Add("clmnReBetrag") + dt.Columns.Add("clmnZE") + dt.Columns.Add("clmnTage") + dt.Columns.Add("clmnZinsen") + dt.Columns.Add("clmnVZ") + dt.Columns.Add("clmnFaellig") + + + If Betrag < 0 Then + + Dim Rabatt As String = "Rabatt" + + Select Case RECHNUNG.RechnungSprache + Case "EN" : Rabatt = "Discount" + Case "RO" : Rabatt = "Reducere" + Case "TR" : Rabatt = "İndirim" + Case Else + Rabatt = "Rabatt" + + End Select + + + dt.Rows.Add("0", Rabatt, RECHNUNG.Abfertigungsdatum.ToShortDateString, "", "", "", "", Betrag.ToString, "", "") + 'dt.Rows.Add(rg.Item("clmnID"), rg.Item("clmnReNr"), rg.Item("clmnReDatum"), rg.Item("clmnAbfNr"), rg.Item("clmnReBetrag"), rg.Item("clmnZE"), rg.Item("clmnTage"), rg.Item("clmnZinsen"), rg.Item("clmnVZ"), rg.Item("clmnFaellig")) + + Else + + + If RECHNUNG.BelegartenKz <> "AG" Then + + ' Dim dtTemp As DataTable + ' dtTemp = SQL.loadDgvBySql_Param("select [id] as clmnID,[belegNr] as clmnReNr,[buchungstext] as clmnAbfNr,[zinssatz] clmnVZ,[belegZahlungsziel],[ueberschreitungInTagen] clmnTage,[zinsbetrag] clmnZinsen,[belegDatum] as clmnReDatum,[zahlungsBetrag] as clmnReBetrag,[zahlungDatum] as clmnZE, [faelligkeitsDatum] as clmnFaellig from tblMDM_Zinsberechnung where RK_ID =" & RECHNUNG.RK_ID, "FMZOLL") + + For Each rg As DataRow In Me.DataSource.Rows + dt.Rows.Add(rg.Item("id"), rg.Item("belegNr"), rg.Item("belegDatum"), rg.Item("buchungstext"), rg.Item("zahlungsBetrag"), rg.Item("zahlungDatum"), rg.Item("ueberschreitungInTagen"), rg.Item("zinsbetrag"), rg.Item("zinssatz"), rg.Item("faelligkeitsDatum")) + Next + Else + dt.Rows.Add("0", "", RECHNUNG.Abfertigungsdatum.ToShortDateString, "", "", "", "", Betrag.ToString, "", "") + + End If + + End If + + + + Me.DataSource = dt + + End Sub + + + +End Class diff --git a/SDL/seriendruck/usrCntlFakturierung.Designer.vb b/SDL/seriendruck/usrCntlFakturierung.Designer.vb index 265ed183..906be5f9 100644 --- a/SDL/seriendruck/usrCntlFakturierung.Designer.vb +++ b/SDL/seriendruck/usrCntlFakturierung.Designer.vb @@ -107,6 +107,8 @@ Partial Class usrcntlFakturierung Me.btnWikiStatusmails = New System.Windows.Forms.Button() Me.gb_MDM_Rechnungen = New System.Windows.Forms.GroupBox() Me.Label14 = New System.Windows.Forms.Label() + Me.PictureBox13 = New System.Windows.Forms.PictureBox() + Me.Label15 = New System.Windows.Forms.Label() Me.gb_fakturierung.SuspendLayout() Me.GBMautberichte.SuspendLayout() CType(Me.dgvMautbericht, System.ComponentModel.ISupportInitialize).BeginInit() @@ -124,6 +126,7 @@ Partial Class usrcntlFakturierung CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.gb_MDM_Rechnungen.SuspendLayout() + CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'gb_fakturierung @@ -352,6 +355,8 @@ Partial Class usrcntlFakturierung ' 'GBSammelrechnung ' + Me.GBSammelrechnung.Controls.Add(Me.PictureBox13) + Me.GBSammelrechnung.Controls.Add(Me.Label15) Me.GBSammelrechnung.Controls.Add(Me.PictureBox12) Me.GBSammelrechnung.Controls.Add(Me.Label13) Me.GBSammelrechnung.Controls.Add(Me.PictureBox11) @@ -535,7 +540,7 @@ Partial Class usrcntlFakturierung ' 'Label8 ' - Me.Label8.Location = New System.Drawing.Point(168, 239) + Me.Label8.Location = New System.Drawing.Point(168, 245) Me.Label8.Name = "Label8" Me.Label8.Size = New System.Drawing.Size(151, 16) Me.Label8.TabIndex = 120 @@ -545,7 +550,7 @@ Partial Class usrcntlFakturierung ' Me.PictureBox10.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.PictureBox10.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.PictureBox10.Location = New System.Drawing.Point(148, 239) + Me.PictureBox10.Location = New System.Drawing.Point(148, 245) Me.PictureBox10.Name = "PictureBox10" Me.PictureBox10.Size = New System.Drawing.Size(14, 14) Me.PictureBox10.TabIndex = 119 @@ -604,7 +609,7 @@ Partial Class usrcntlFakturierung ' Me.PictureBox9.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.PictureBox9.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.PictureBox9.Location = New System.Drawing.Point(148, 221) + Me.PictureBox9.Location = New System.Drawing.Point(148, 227) Me.PictureBox9.Name = "PictureBox9" Me.PictureBox9.Size = New System.Drawing.Size(14, 14) Me.PictureBox9.TabIndex = 113 @@ -613,7 +618,7 @@ Partial Class usrcntlFakturierung ' 'Label2 ' - Me.Label2.Location = New System.Drawing.Point(168, 221) + Me.Label2.Location = New System.Drawing.Point(168, 227) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(224, 17) Me.Label2.TabIndex = 112 @@ -623,7 +628,7 @@ Partial Class usrcntlFakturierung ' Me.PictureBox8.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.PictureBox8.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.PictureBox8.Location = New System.Drawing.Point(148, 204) + Me.PictureBox8.Location = New System.Drawing.Point(148, 210) Me.PictureBox8.Name = "PictureBox8" Me.PictureBox8.Size = New System.Drawing.Size(14, 14) Me.PictureBox8.TabIndex = 111 @@ -632,7 +637,7 @@ Partial Class usrcntlFakturierung ' 'Label1 ' - Me.Label1.Location = New System.Drawing.Point(168, 204) + Me.Label1.Location = New System.Drawing.Point(168, 210) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(224, 17) Me.Label1.TabIndex = 110 @@ -1036,6 +1041,25 @@ Partial Class usrcntlFakturierung Me.Label14.TabIndex = 73 Me.Label14.Text = "Rechnungsdaten" ' + 'PictureBox13 + ' + Me.PictureBox13.BackgroundImage = CType(resources.GetObject("PictureBox13.BackgroundImage"), System.Drawing.Image) + Me.PictureBox13.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.PictureBox13.Location = New System.Drawing.Point(148, 187) + Me.PictureBox13.Name = "PictureBox13" + Me.PictureBox13.Size = New System.Drawing.Size(14, 14) + Me.PictureBox13.TabIndex = 134 + Me.PictureBox13.TabStop = False + Me.PictureBox13.Visible = False + ' + 'Label15 + ' + Me.Label15.Location = New System.Drawing.Point(168, 187) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(429, 14) + Me.Label15.TabIndex = 133 + Me.Label15.Text = "8. Hängt ZNB-Liste an." + ' 'usrcntlFakturierung ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1071,6 +1095,7 @@ Partial Class usrcntlFakturierung CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() Me.gb_MDM_Rechnungen.ResumeLayout(False) + CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -1158,4 +1183,6 @@ Partial Class usrcntlFakturierung Friend WithEvents Label13 As Label Friend WithEvents gb_MDM_Rechnungen As GroupBox Friend WithEvents Label14 As Label + Friend WithEvents PictureBox13 As PictureBox + Friend WithEvents Label15 As Label End Class diff --git a/SDL/seriendruck/usrCntlFakturierung.resx b/SDL/seriendruck/usrCntlFakturierung.resx index 32e578b1..cac4d60c 100644 --- a/SDL/seriendruck/usrCntlFakturierung.resx +++ b/SDL/seriendruck/usrCntlFakturierung.resx @@ -118,6 +118,30 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGPC/xhBQAABGdJREFUSEtj + YKAyYOFk4Za0knSzzrXOd8x2jJeUlGRgZ2dHV0YFwMjAKKInomlUYJRl32e/wn+Z/0Gf2T4L9eP1rQRV + BQWZ2JnQdVAGBNQEFI2KjHLCj4Qfjz0f+zX+Uvz/iKMR9z2XeU7USdNxENYVFmZkYWRE10c2sGqyKgg/ + FH4s7mLcPxAGWQhjR5+Pnm5Wa+bAxs/Ggq6PbODQ77Aw5mzMO5BF6DjuYtzDoB1BU5ynO9uh6yMZcIpy + Sin5KsX5rva9gMWiP3EX4354LPDYb9VkVWpSZmKIrp8kwMrDyifnLBcUtCPoYfSp6G9oln2PPh39InRf + 6EXVYNUYLjEuCXT9JAMFT4UI5+nO22POxPyMuxD3F83CK/4b/CdoJ2hb8CnwiTIyM5Iff8yczNxSVlJu + Nm02i8P2h72EJRKwRRfifsScibnts9Kn0yjfyIZfkZ+bhZOFGd0MkgC7ALuIXppeDXq8xZ6L/Rl+MPyR + 2xy3iXpperai+qLUyfG4LIw8GvnGY57HVnFDcTk2bjZ0beQBHikeeWV/5QTvpd4nI49FfoRZFnM+5rdd + j91KEV0REzY+Ng5GZgJ5nJmDmZtPgU9dwUPBUsZeRoNLgosNXRO7ILsIOKFMdd4adTzqE7Lv/Pf6b9JM + 1wxB0YALgFIQrxyvmlacVrHfer/prnNccxW9FWXZBdhZGZCKQEENQUOzKrMpaKnxR9zFuOeWMyy9JDwl + WJHNxQk4xTilVAJVkkP2hjyLPhP9NvJE5C7PJZ7J4ibikqw8rPDkjMPCazEXYorkveWVWHiISPnMHMxc + qsGqKe7z3Q+Cy75LcSBDXkQcjdjuMMEhStJKUo6JlYmVlZdVQD9Lv8F3je9FeKq8EHvZf5N/j26Grg6P + LA8PutlYgYKbQqjzVOdtyK6GuvxD7IXYlea15v5ixmISXBJcsm5z3PZC5X7FXYx7Grg9cKpZlZkzuxA7 + GxMrE4FUAgXIpTuahWDxmPMx011mudiiWQhyzBKzSjMvQQ1BXnQz8QJpG2lPZX/lKMs6y464i3H34y/F + g+syJIsfhh8KPw6yLPxQ+GuQWOSRyNc27Tbd0rbSZizcZJQibHxsvBImEsamFaaVrjNdNwXvDH6A7mMY + BlnqNtttj5yrXDAosaGbRTKQdZYNsOu2WxZ9MvpD3IW43/GX4hHl5MW4n75rfI/pZ+kXsouwC6HrJQuw + cLPwKngqeLvPc18adTLqRfyl+F9IFt73We0zQTdd14BdkIotI25JbgkZBxkHtVC1JLc5brtjz8f+jL0Q + +z1oZ9B6syqzaGEdYX5mdmYqt4qgQDVINcVjocfByBORr63brCulbaW10NVQHYibiNsHbQ+6L24q7oAu + RxPAxs8mJG4iDmp1USehIAMuLi4GeXl5NlNTU347OzsRe3t7UWRsZ2cnbG5uzicrK8vKxcVFXOmCD0hK + SjJ6enoK1NXVqU6aNMlg2rRpxsh48uTJus3NzYqurq68EhISJGd6ADkzAttxL7feAAAAAElFTkSuQmCC + + iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGPC/xhBQAABGdJREFUSEtj diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index f36dafcc..5851d7d7 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -1,6 +1,7 @@ Imports System.Globalization Imports System.IO Imports System.Web.UI.WebControls.Expressions +Imports com.sun.xml.internal.rngom Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFakturierung @@ -372,6 +373,12 @@ Public Class usrcntlFakturierung Dim okMaut As Boolean = False okMaut = setMautgesamtberichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen) + + 'Gesamtmautberichte an Sammelrechnung anhängen + Dim okEZB As Boolean = False + okEZB = setZNBerichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen) + + showPic(okMaut, PictureBox7) If Not okMaut Then @@ -743,7 +750,7 @@ Public Class usrcntlFakturierung Dim ok As Boolean = False - Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] + Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [Status],[FilialenNr], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] FROM Rechnungsausgang WHERE " & IIf(setTextifNull, "[Status] = 4 AND Text is null", "[Status] = 0") & " AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL") @@ -1109,6 +1116,137 @@ Public Class usrcntlFakturierung End Function + + + Private Function setZNBerichtInRechnung(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable) As Boolean + Try + Dim counterAnhang As Integer = 0 + Dim hatFehler As Boolean = False + + If dtSammelRechnugen.Rows.Count = 0 Then + MsgBox("Keine Rechnungen für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.") + Return False + End If + + Dim dtSammelRechnugen_EZB = dtSammelRechnugen.Select("FilialenNr = 8001 and OffertenNr = 95").CopyToDataTable() + + If dtSammelRechnugen_EZB.Rows.Count = 0 Then + MsgBox("Keine Rechnungen der Filiale 8001 für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.") + Return False + End If + + For Each row In dtSammelRechnugen_EZB.Rows + + Dim kdNr = row("RechnungsKundenNr") + Dim RK_ID = row("RK_ID") + + Dim RG As New cRechnungsausgang(RK_ID) + + If RG Is Nothing Then + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Rechnung RK_ID " & RK_ID & " konnte nicht geladen werden.", "", System.Reflection.MethodInfo.GetCurrentMethod.Name) + hatFehler = True + Continue For + End If + + Dim dtZNBList = (New SQL).loadDgvBySql("select [id] ,[belegNr] ,[buchungstext] ,[zinssatz] ,[belegZahlungsziel],[ueberschreitungInTagen] ,[zinsbetrag] ,[belegDatum] ,[zahlungsBetrag] ,[zahlungDatum] , [faelligkeitsDatum] from tblMDM_Zinsberechnung where RK_ID =" & RG.RK_ID, "FMZOLL") + + If dtZNBList.Rows.Count = 0 Then + MsgBox("Keine Zinsberechnungsdaten für RK_ID " & RG.RK_ID & " gefunden. Diese Rechnung wird übersprungen.") + hatFehler = True + Continue For + End If + + Dim path As String = createZNBReport(dtZNBList, kdNr, rechnungsdatum, RG) + + If path = "" Then Continue For + + Dim fi As New System.IO.FileInfo(path) + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "ZNB", RG.KundenNrZentrale, rechnungsdatum.ToShortDateString, "", fi.Name & fi.Extension) + + If Not DS.uploadDataToDATENSERVER(path, fi.Name, fi.Extension,,,, True) Then + MsgBox("Fehler beim Speichern: Datenserver! :" & RG.Firma_ID) + hatFehler = True + Continue For ' kein Anhang ohne gültigen Datenserver-Eintrag anlegen + End If + + Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge + ANH.dsId = CInt(DS.da_id) + ANH.Bezeichnung = "POS-Liste VERZUGSZINSEN " & rechnungsdatum.ToShortDateString & fi.Extension + RG.ANHAENGE.Add(ANH) + + If Not ANH.INSERT(RG.RK_ID, False) Then + MsgBox("Fehler beim Anlegen des Anhangs für RK_ID " & RG.RK_ID) + hatFehler = True + Else + RG.Anlage_1 = "POS-Liste VERZUGSZINSEN" + RG.SAVE() + counterAnhang += 1 + End If + + Next + + Label15.Text = "8. Hängt ZNB-Liste an." & " Anzahl: " & counterAnhang + Return Not hatFehler AndAlso counterAnhang > 0 + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + Label15.Text = "8. Hängt ZNB-Liste an. FEHLER!" + Return False + End Try + + End Function + + Private Function createZNBReport(dtZNBList As DataTable, KDNr As Integer, rechnungsdatum As Date, RG As cRechnungsausgang) As String + + + Dim rpt As New rptPOS_ZNB(RG, RG.SteuerfreierGesamtbetrag + RG.SteuerpflichtigerGesamtbetrag) + + rpt.DataSource = dtZNBList + + rpt.lblRgDatum.Text = rechnungsdatum + rpt.txtKunde.Text = KDNr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(KDNr).FullName + rpt.Label2.Visible = False + rpt.TextBox1.Visible = False + rpt.Label4.Text = rechnungsdatum + + rpt.lblHeader.Text &= " " & RG.Vermerk + + If rpt.DataSource.rows.count = 0 Then Return "" + + Dim AD As New cAdressen(KDNr) + Dim sum As Double = 0 + + rpt.txtKunde.Text = AD.FullName + + AddHandler rpt.Detail.Format, Sub() + + If Not IsDBNull(rpt.Fields.Item("clmnZinsen").Value) AndAlso Not IsNothing(rpt.Fields.Item("clmnZinsen").Value) AndAlso IsNumeric(rpt.Fields.Item("clmnZinsen").Value) Then + sum += CDbl(rpt.Fields.Item("clmnZinsen").Value) + End If + + + End Sub + + + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.txtBruttoGesSum.Text = sum.ToString("N2") + End Sub + + + Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG.AbfertigungsNr & ".pdf", ".pdf", , False) + Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport + rpt.Run(False) + p.NeverEmbedFonts = "" + p.Export(rpt.Document, tmpPath) + rpt.Dispose() + + Return tmpPath + + End Function + + + + Private Function AddAttachementToRE(pathFile As String, kdNr As Integer, RECHNUNG As cRechnungsausgang, rechnungsdatum As Date) As Boolean 'TODO: Prüfung, damit anhänge nicht doppelt eingearbeitet werden! -> ist DBteschnisch unterbunden mit PrimaryKey-Einschränkung!!! diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb index a524122f..79227bd2 100644 --- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb +++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb @@ -72,6 +72,8 @@ Public Class usrcntlPDFScanList End Sub + + Private Sub usrcntlPDFScan_Load(sender As Object, e As EventArgs) Handles Me.Load ' Me.txt.Text = _TEXT_PDF Me.AllowDrop = True diff --git a/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb b/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb index 603542da..9d624da8 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb @@ -26,6 +26,10 @@ Public Class cEssensbestellung Property eb_firma As Object = Nothing Property eb_MenuID As Object = Nothing Property eb_archiviert As Boolean + Property eb_gesendetVon As Object = Nothing + Property eb_abgerechnetVon As Object = Nothing + Property eb_storniertVon As Object = Nothing + Property eb_gesendetFirst_am As Object = Nothing Public hasEntry = False @@ -90,6 +94,10 @@ Public Class cEssensbestellung list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_firma", eb_firma)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_archiviert", eb_archiviert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_MenuID", eb_MenuID)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_gesendetVon", eb_gesendetVon)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_abgerechnetVon", eb_abgerechnetVon)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_storniertVon", eb_storniertVon)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_gesendetFirst_am", eb_gesendetFirst_am)) Return list diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb b/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb index 13b732d4..e4edd066 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb @@ -181,7 +181,7 @@ Public Class cMDMZinsberechnung Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() - Using cmd As New SqlCommand("SELECT id,belegNr,belegDatum,buchungstext,zahlungsBetrag,zahlungDatum, ueberschreitungInTagen, zinssatz,zinsbetrag, zahlungsperiode_start,zahlungsperiode_ende + Using cmd As New SqlCommand("SELECT id,belegNr,belegDatum,buchungstext,zahlungsBetrag,zahlungDatum, ueberschreitungInTagen, zinssatz,zinsbetrag, zahlungsperiode_start,zahlungsperiode_ende, faelligkeitsDatum FROM tblMDM_Zinsberechnung From ab2324c911f66bfb17e151135f922facc05e3ae5 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 8 Sep 2026 14:37:51 +0200 Subject: [PATCH 31/54] ZNB --- SDL/Formulare/KDFormulare/frmFormulare.vb | 6 +- SDL/buchhaltung/usrCntlBH.Designer.vb | 15 ++++ SDL/buchhaltung/usrCntlBH.vb | 89 ++++++++++++++++++++++- 3 files changed, 105 insertions(+), 5 deletions(-) diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb index fc5db48b..2f7ad9f8 100644 --- a/SDL/Formulare/KDFormulare/frmFormulare.vb +++ b/SDL/Formulare/KDFormulare/frmFormulare.vb @@ -1866,13 +1866,13 @@ Public Class FormularManagerNEU listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(formatAmountEUR(usrCntl.txtCBAM_jeZertBest_Paket_1._value, True), 168, Top + 114.5, 25, 6, "bold", 10, , iTextSharp.text.Element.ALIGN_RIGHT, 2)) - Dim ohneOnboarding As String = IIf(usrCntl.cbxOnboardingVerrechnen.Checked, "", "ohne_Onboarding_") + 'Dim ohneOnboarding As String = IIf(usrCntl.cbxOnboardingVerrechnen.Checked, "", "ohne_Onboarding_") ' Dim firma=getUO2() Select Case usrCntl.cboSprache._value Case "TR", "EN" - Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt_" & ohneOnboarding & usrCntl.cboSprache._value, listTowrite) + Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt_" & usrCntl.cboSprache._value, listTowrite) Case Else - Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt" & ohneOnboarding, listTowrite) + Return fm.fillPDF("DOKUMENTE", "VORLAGEN", "SONSTIGE", "VERAG", "", "CBAM_indirekt", listTowrite) End Select Return "" diff --git a/SDL/buchhaltung/usrCntlBH.Designer.vb b/SDL/buchhaltung/usrCntlBH.Designer.vb index 127f84fb..610d0d46 100644 --- a/SDL/buchhaltung/usrCntlBH.Designer.vb +++ b/SDL/buchhaltung/usrCntlBH.Designer.vb @@ -199,6 +199,7 @@ Partial Class usrCntlBH Me.Label51 = New System.Windows.Forms.Label() Me.txtJahr_FIBU = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Button17 = New System.Windows.Forms.Button() + Me.cbxPOSBNZerstellen = New System.Windows.Forms.CheckBox() Me.pnl.SuspendLayout() Me.TabPage1.SuspendLayout() Me.GroupBox13.SuspendLayout() @@ -2165,6 +2166,7 @@ Partial Class usrCntlBH ' 'GroupBox11 ' + Me.GroupBox11.Controls.Add(Me.cbxPOSBNZerstellen) Me.GroupBox11.Controls.Add(Me.txtPloseAnh_Einarbeitung) Me.GroupBox11.Controls.Add(Me.Label71) Me.GroupBox11.Controls.Add(Me.pbPloseAnh_Proz) @@ -2634,6 +2636,18 @@ Partial Class usrCntlBH Me.Button17.TabIndex = 81 Me.Button17.UseVisualStyleBackColor = True ' + 'cbxPOSBNZerstellen + ' + Me.cbxPOSBNZerstellen.AutoSize = True + Me.cbxPOSBNZerstellen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.cbxPOSBNZerstellen.Location = New System.Drawing.Point(524, 90) + Me.cbxPOSBNZerstellen.Name = "cbxPOSBNZerstellen" + Me.cbxPOSBNZerstellen.Size = New System.Drawing.Size(115, 17) + Me.cbxPOSBNZerstellen.TabIndex = 81 + Me.cbxPOSBNZerstellen.Text = "POS-BNZ erstellen" + Me.cbxPOSBNZerstellen.UseVisualStyleBackColor = True + Me.cbxPOSBNZerstellen.Visible = False + ' 'usrCntlBH ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -2865,4 +2879,5 @@ Partial Class usrCntlBH Friend WithEvents pbPloseAnh_Proz As ProgressBar Friend WithEvents lblPloseAnh_Proz As Label Friend WithEvents Button17 As Button + Friend WithEvents cbxPOSBNZerstellen As CheckBox End Class diff --git a/SDL/buchhaltung/usrCntlBH.vb b/SDL/buchhaltung/usrCntlBH.vb index 89dee112..929ebe67 100644 --- a/SDL/buchhaltung/usrCntlBH.vb +++ b/SDL/buchhaltung/usrCntlBH.vb @@ -1,5 +1,6 @@ Imports System.Globalization Imports System.Text +Imports System.Web.UI.WebControls.Expressions Imports ClosedXML.Excel Imports com.sun.xml.internal.rngom Imports VERAG_PROG_ALLGEMEIN @@ -69,6 +70,13 @@ Public Class usrCntlBH Dim isMDM As Boolean = False If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_abteilung = "MDM" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_nname = "Breimaier" Then isMDM = True If isMDM Then + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMIN", "SDL") Then + + cbxPOSBNZerstellen.Visible = True + + End If + txtnichtabrechneteKunden.Text = SQL.getValueTxtBySql("SELECT count(distinct(kundenNr)) FROM [VERAG].[dbo].[tblMDM_Zinsberechnung] where verrechnet is null", "FMZOLL",,, "0") If IsNumeric(txtnichtabrechneteKunden.Text) AndAlso CInt(txtnichtabrechneteKunden.Text) > 0 Then btnDel_.Visible = True @@ -1058,7 +1066,7 @@ Public Class usrCntlBH End Function - Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer, sammelrechnung As Boolean) + Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer, sammelrechnung As Boolean, POSBNZ As Boolean) Try If KdNr = "" Then Return False @@ -1202,6 +1210,31 @@ Public Class usrCntlBH RG.Text = (cFakturierung.przRechnungstextTXT(RG, SPEDBUCH) & vbNewLine & cFakturierung.przRechnungstextZZ(RG)).Trim + If POSBNZ Then + + Dim path As String = createZNBReport(dt, KdNr, CDate(SPEDBUCH.Abfertigungsdatum), RG) + + Dim fi As New System.IO.FileInfo(path) + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "ZNB", RG.KundenNrZentrale, CDate(SPEDBUCH.Abfertigungsdatum).ToShortDateString, "", fi.Name & fi.Extension) + + If Not DS.uploadDataToDATENSERVER(path, fi.Name, fi.Extension,,,, True) Then + MsgBox("Fehler beim Speichern: Datenserver! :" & RG.Firma_ID) + End If + + Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge + ANH.dsId = CInt(DS.da_id) + ANH.Bezeichnung = "POS-Liste VERZUGSZINSEN " & CDate(SPEDBUCH.Abfertigungsdatum).ToShortDateString & fi.Extension + RG.ANHAENGE.Add(ANH) + + If Not ANH.INSERT(RG.RK_ID, False) Then + MsgBox("Fehler beim Anlegen des Anhangs für RK_ID " & RG.RK_ID) + Else + RG.Anlage_1 = "POS-Liste VERZUGSZINSEN" + End If + + + End If + If RG.SAVE Then RK_ID = RG.RK_ID @@ -1217,6 +1250,54 @@ Public Class usrCntlBH End Function + Private Function createZNBReport(dtZNBList As DataTable, KDNr As Integer, rechnungsdatum As Date, RG As cRechnungsausgang) As String + + + Dim rpt As New rptPOS_ZNB(RG, RG.SteuerfreierGesamtbetrag + RG.SteuerpflichtigerGesamtbetrag) + + rpt.DataSource = dtZNBList + + rpt.lblRgDatum.Text = rechnungsdatum + rpt.txtKunde.Text = KDNr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(KDNr).FullName + rpt.Label2.Visible = False + rpt.TextBox1.Visible = False + rpt.Label4.Text = rechnungsdatum + + rpt.lblHeader.Text &= " " & RG.Vermerk + + If rpt.DataSource.rows.count = 0 Then Return "" + + Dim AD As New cAdressen(KDNr) + Dim sum As Double = 0 + + rpt.txtKunde.Text = AD.FullName + + AddHandler rpt.Detail.Format, Sub() + + If Not IsDBNull(rpt.Fields.Item("clmnZinsen").Value) AndAlso Not IsNothing(rpt.Fields.Item("clmnZinsen").Value) AndAlso IsNumeric(rpt.Fields.Item("clmnZinsen").Value) Then + sum += CDbl(rpt.Fields.Item("clmnZinsen").Value) + End If + + + End Sub + + + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.txtBruttoGesSum.Text = sum.ToString("N2") + End Sub + + + Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG.AbfertigungsNr & ".pdf", ".pdf", , False) + Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport + rpt.Run(False) + p.NeverEmbedFonts = "" + p.Export(rpt.Document, tmpPath) + rpt.Dispose() + + Return tmpPath + + End Function + Function allPos(ByRef RG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, OFFERTE As VERAG_PROG_ALLGEMEIN.cOfferte, LeistungsNr As Integer, NettoBetrag As Double, BruttoBetrag As Double, Optional UstBetrag As Double = 0, Optional leistungsBez As String = "", Optional nachzahlungsID As Integer = -1) @@ -1378,7 +1459,7 @@ Public Class usrCntlBH Dim SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch = Nothing Dim RK_ID As Integer = -1 If Not gen_SPEDBUCH_ByKdNr(R("kundenNr"), SPEDBUCH, CDate(txtZRbis.Text).ToShortDateString, vermerk) Then verarbOK = False - If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel"), cbxZBalsSR.Checked) Then verarbOK = False + If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel"), cbxZBalsSR.Checked, cbxPOSBNZerstellen.Checked) Then verarbOK = False If verarbOK Then SQL.doSQL("UPDATE [tblMDM_Zinsberechnung] SET [verrechnet]=GETDATE(), RK_ID = " & RK_ID & " WHERE [verrechnet] Is null And kundenNr='" & R("kundenNr") & "' ", "FMZOLL") @@ -2115,5 +2196,9 @@ Public Class usrCntlBH End If + End Sub + + Private Sub Button18_Click(sender As Object, e As EventArgs) + End Sub End Class From 27dcae663454763bac353f69efcd5eef6428af14 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 8 Sep 2026 14:40:04 +0200 Subject: [PATCH 32/54] Version --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index fcfd83e6..03280adf 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 1a726d351e44c52c35127ba9e49b2dfe33d53c2d Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 9 Sep 2026 14:41:05 +0200 Subject: [PATCH 33/54] Fiskaltrust, Kassenbuch, Gestellungen-DAKOSY, --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 4 +- SDL/Classes/cRKSV.vb | 5 + SDL/Classes/cRKSV_Kasse.vb | 21 +- SDL/My Project/Resources.Designer.vb | 10 + SDL/My Project/Resources.resx | 3 + SDL/Resources/Klipphausen_Logo.jpg | Bin 0 -> 6700 bytes SDL/SDL.vbproj | 1 + .../EXGestellung/usrCntlATLAS_EXGestellung.vb | 13 +- SDL/kassenbuch/frmBelegNeu.Designer.vb | 4 +- SDL/kassenbuch/frmBelegNeu.vb | 136 ++++--- SDL/kassenbuch/frmKassenbuch.Designer.vb | 262 +++++++++++- SDL/kassenbuch/frmKassenbuch.resx | 3 + SDL/kassenbuch/frmKassenbuch.vb | 372 +++++++++++++++++- 13 files changed, 759 insertions(+), 75 deletions(-) create mode 100644 SDL/Resources/Klipphausen_Logo.jpg diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index af0b4158..e3570208 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -1,5 +1,6 @@ Imports Chilkat Imports QRCoder +Imports VERAG_PROG_ALLGEMEIN Public Class FtReceiptCases @@ -327,6 +328,7 @@ Public Class cFiskaltrustClient_chilkat rest.ResponseStatusCode < 500 Then Throw + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL) End If @@ -552,7 +554,7 @@ Public Class cFiskaltrustClient_chilkat Case "journal" Select Case _country - Case "DE" : Return "/json/v0/Journal" + Case "DE" : Return "/json/v1/Journal" Case "AT" : Return "/json/Journal" End Select diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index fb781b8e..f2fc2954 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -1325,6 +1325,11 @@ Public Class cRKSV rpt.picVERAG.Image = My.Resources.FrontOfficeSUB rpt.lblFirma_Name.Text = "Front-Office Suben eG" rpt.lblFirma_Details.Text = "A 4975 Suben | Suben 14" & vbNewLine & "UID: ATU74813856 " + Case "FT DE-KLIPPHAUSEN" + 'Default Werte: + rpt.picVERAG.Image = My.Resources.Klipphausen_Logo + rpt.lblFirma_Name.Text = "Front-Office Klipphausen GmbH" + rpt.lblFirma_Details.Text = "D 01665 Klipphausen | Am Bahndamm 3" End Select If KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv Then diff --git a/SDL/Classes/cRKSV_Kasse.vb b/SDL/Classes/cRKSV_Kasse.vb index f76d0f02..9c139262 100644 --- a/SDL/Classes/cRKSV_Kasse.vb +++ b/SDL/Classes/cRKSV_Kasse.vb @@ -30,6 +30,8 @@ Public Class cRKSV_Kasse Property rksv_FT_RestServiceURL As Object = Nothing Property rksv_FT_Country As Object = Nothing + Property rksv_FT_ZeroReceiptCreated As Object = Nothing + Dim SQL As New SQL @@ -184,6 +186,22 @@ Public Class cRKSV_Kasse Return False End Function + Public Function SET_NULLBELEG() As Boolean + Try + Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_ZeroReceiptCreated = getDate() WHERE rksv_id=@rksv_id", conn) + cmd.Parameters.AddWithValue("@rksv_id", rksv_id) + Dim dr = cmd.ExecuteReader() + dr.Close() + End Using + End Using + Return True + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + Return False + End Function + Public Function SAVE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) = getParameterList() @@ -208,7 +226,6 @@ Public Class cRKSV_Kasse Me.rksv_id = cSqlDb.checkNullReturnValue(dr.Item("rksv_id"), Nothing) Me.rksv_bez = cSqlDb.checkNullReturnValue(dr.Item("rksv_bez"), Nothing) Me.rksv_CompanyGUID = cSqlDb.checkNullReturnValue(dr.Item("rksv_CompanyGUID"), Nothing) - Me.rksv_firma = cSqlDb.checkNullReturnValue(dr.Item("rksv_firma"), Nothing) Me.rksv_startdatum = cSqlDb.checkNullReturnValue(dr.Item("rksv_startdatum"), Nothing) Me.rksv_aktiv = cSqlDb.checkNullReturnValue(dr.Item("rksv_aktiv"), Nothing) @@ -232,6 +249,7 @@ Public Class cRKSV_Kasse Me.rksv_FT_AccessToken = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_AccessToken"), Nothing) Me.rksv_FT_RestServiceURL = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_RestServiceURL"), Nothing) Me.rksv_FT_Country = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_Country"), Nothing) + Me.rksv_FT_ZeroReceiptCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_ZeroReceiptCreated"), Nothing) End If dr.Close() @@ -273,6 +291,7 @@ Public Class cRKSV_Kasse list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_AccessToken", rksv_FT_AccessToken)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_RestServiceURL", rksv_FT_RestServiceURL)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_Country", rksv_FT_Country)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_ZeroReceiptCreated", rksv_FT_ZeroReceiptCreated)) Return list diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb index 067d6a67..5873bba6 100644 --- a/SDL/My Project/Resources.Designer.vb +++ b/SDL/My Project/Resources.Designer.vb @@ -1104,6 +1104,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + ''' + Friend ReadOnly Property Klipphausen_Logo() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("Klipphausen_Logo", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. ''' diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index acabd60d..83fe8fd8 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -997,4 +997,7 @@ ..\Resources\Ustveu_Rechnungsanlagen_BE.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Klipphausen_Logo.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/SDL/Resources/Klipphausen_Logo.jpg b/SDL/Resources/Klipphausen_Logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aacb80482da24892d2942d44685f35829b142eb8 GIT binary patch literal 6700 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 Mk@5eSGCcI(0M6b6M*si- literal 0 HcmV?d00001 diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj index 8587163d..a83a30e9 100644 --- a/SDL/SDL.vbproj +++ b/SDL/SDL.vbproj @@ -5528,6 +5528,7 @@ Always + Always diff --git a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb index fc4c1b3d..5fcabf14 100644 --- a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb +++ b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb @@ -139,7 +139,7 @@ Public Class usrCntlATLAS_EXGestellung For Each l In rtbMRN.Lines If l.Trim <> "" Then - If Not sendEXP_MRN(l.Trim.ToUpper, sbAbgangZollstelle._value, cnt, exg_list) Then + If Not sendEXP_MRN(l.Trim.ToUpper, sbAbgangZollstelle._value, cnt, exg_list, FIRMA_DY) Then MsgBox("Sendefehler bei " & l) err = True End If @@ -254,7 +254,7 @@ Public Class usrCntlATLAS_EXGestellung Me.Cursor = Cursors.Default End Sub - Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer)) As Boolean + Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer), Optional FIRMA_DY_TEMP As String = "") As Boolean Me.Refresh() @@ -284,8 +284,15 @@ Public Class usrCntlATLAS_EXGestellung 'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN.ToString().Substring(0, 4) & EXG.exg_MRN.ToString.Substring(14) & zusatz '---> >>> MRN KÜRZEN!!!! 'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN + + Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "EXG") + FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "EXG") ' -> hier liegt vermutlich der Fehler, die Firma wird hier nochmals gesetzt + + If FIRMA_DY_TEMP <> "" Then + FIRMA_DY = FIRMA_DY_TEMP + End If + Dim saveFile = "" If EXG.SAVE_ALL Then diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb index 22caeabb..077620ca 100644 --- a/SDL/kassenbuch/frmBelegNeu.Designer.vb +++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb @@ -1256,7 +1256,7 @@ Partial Class frmBelegNeu Me.Button4.Padding = New System.Windows.Forms.Padding(0, 0, 5, 0) Me.Button4.Size = New System.Drawing.Size(70, 21) Me.Button4.TabIndex = 49 - Me.Button4.Text = "TEST FT" + Me.Button4.Text = "Fiskaltrust" Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.Button4.UseVisualStyleBackColor = True Me.Button4.Visible = False @@ -1782,7 +1782,7 @@ Partial Class frmBelegNeu 'cm_FT ' Me.cm_FT.Name = "ContextMenuStrip1" - Me.cm_FT.Size = New System.Drawing.Size(181, 26) + Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' 'frmBelegNeu ' diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 396a5833..801876a5 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -1900,6 +1900,22 @@ Public Class frmBelegNeu Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + 'nur im Testsystem! + If Not cm_FT.Items.ContainsKey("bar") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("storno") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + End If + If Not cm_FT.Items.ContainsKey("null") Then Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cm_FT.Items.Add(plose) @@ -1924,20 +1940,8 @@ Public Class frmBelegNeu cm_FT.Items.Add(uta) End If - If Not cm_FT.Items.ContainsKey("bar") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("storno") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - If Not cm_FT.Items.ContainsKey("test") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "test", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If @@ -1986,26 +1990,27 @@ Public Class frmBelegNeu KASSE.LOAD(cboKassen._value) - 'Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) If item.Name = "null" Then - 'beide - 'Dim result As String = Await client.SignNullReceiptAsync(KASSE.rksv_id) - Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id) + If vbYes = MsgBox("Möchten Sie wirklich einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id) - If result <> "" Then + If result <> "" Then - MsgBox(client_chilkat.PrettyPrintJson(result)) + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If End If - ElseIf item.Name = "test" Then - 'beide - 'Dim result As String = Await client.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") + + ElseIf item.Name = "verbindungstest" Then + Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") If result <> "" Then @@ -2016,53 +2021,75 @@ Public Class frmBelegNeu ElseIf item.Name = "storno" Then - 'beide - 'Dim result As String = Await client.CancelReceiptAsync_test("-1", 100, "Cash", KASSE.rksv_id) - Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id) + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - If result <> "" Then + If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?", vbYesNoCancel) Then - MsgBox(client_chilkat.PrettyPrintJson(result)) + Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id) + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + + End If + + Else + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") End If + ElseIf item.Name = "bar" Then - 'beide - 'Dim result As String = Await client.SignReceiptAsync_test(KASSE.rksv_id) - Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id) - If result <> "" Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then - Dim QR_CodeString As String = "" - client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id) + + If result <> "" Then + + If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then + Dim QR_CodeString As String = "" + client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + End If + Else + Return False + End If + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If End If Else - Return False - End If - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") End If + + ElseIf item.Name = "monthly" Then - 'beide - 'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id) - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - If result <> "" Then + If vbYes = MsgBox("Möchten Sie wirklich einen Monatsbeleg an die TSE schicken, anschließend kann dieses Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then - MsgBox(client_chilkat.PrettyPrintJson(result)) + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If End If + ElseIf item.Name = "daily" Then 'Nur DE If KASSE.rksv_FT_Country = "DE" Then - 'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id) Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) If result <> "" Then @@ -2077,17 +2104,20 @@ Public Class frmBelegNeu ElseIf item.Name = "yearly" Then - ' Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id) - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - If result <> "" Then + If vbYes = MsgBox("Möchten Sie wirklich einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then - MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If End If - ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - 'Dim result As String = Await client.Journal(2) + ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then Dim result As String = "" Select Case item.Name diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb index eb297dcd..035940eb 100644 --- a/SDL/kassenbuch/frmKassenbuch.Designer.vb +++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb @@ -66,6 +66,20 @@ Partial Class frmKassenbuch Me.Label14 = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() Me.pnlMain = New System.Windows.Forms.Panel() + Me.picTSEOnline = New System.Windows.Forms.PictureBox() + Me.lblTSEOnline = New System.Windows.Forms.Label() + Me.picNULLbeleg = New System.Windows.Forms.PictureBox() + Me.lblNullBeleg = New System.Windows.Forms.Label() + Me.lblJahres = New System.Windows.Forms.Label() + Me.lblMonats = New System.Windows.Forms.Label() + Me.lblTages = New System.Windows.Forms.Label() + Me.picJahres = New System.Windows.Forms.PictureBox() + Me.picMonats = New System.Windows.Forms.PictureBox() + Me.picTages = New System.Windows.Forms.PictureBox() + Me.lblWarning = New System.Windows.Forms.Label() + Me.Button11 = New System.Windows.Forms.Button() + Me.Button17 = New System.Windows.Forms.Button() + Me.lbldailyCashboxClosing = New System.Windows.Forms.Label() Me.Button10 = New System.Windows.Forms.Button() Me.btnBelegGSKunde = New System.Windows.Forms.Button() Me.pnl = New System.Windows.Forms.Panel() @@ -79,6 +93,8 @@ Partial Class frmKassenbuch Me.btnBelegLeihgeld = New System.Windows.Forms.Button() Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem() Me.Button1 = New System.Windows.Forms.Button() + Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlTop.SuspendLayout() @@ -86,6 +102,11 @@ Partial Class frmKassenbuch Me.pnlSuche.SuspendLayout() Me.pnlSearch.SuspendLayout() Me.pnlMain.SuspendLayout() + CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() Me.SuspendLayout() ' @@ -130,7 +151,7 @@ Partial Class frmKassenbuch Me.Label5.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.ForeColor = System.Drawing.Color.White - Me.Label5.Location = New System.Drawing.Point(603, 31) + Me.Label5.Location = New System.Drawing.Point(613, 31) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(151, 20) Me.Label5.TabIndex = 1 @@ -184,7 +205,7 @@ Partial Class frmKassenbuch Me.DataGridView2.ReadOnly = True Me.DataGridView2.RowHeadersVisible = False Me.DataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.DataGridView2.Size = New System.Drawing.Size(766, 145) + Me.DataGridView2.Size = New System.Drawing.Size(776, 158) Me.DataGridView2.TabIndex = 5 ' 'datVon @@ -307,7 +328,7 @@ Partial Class frmKassenbuch Me.Label9.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label9.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label9.ForeColor = System.Drawing.Color.White - Me.Label9.Location = New System.Drawing.Point(451, 9) + Me.Label9.Location = New System.Drawing.Point(461, 9) Me.Label9.Name = "Label9" Me.Label9.Size = New System.Drawing.Size(305, 20) Me.Label9.TabIndex = 9 @@ -419,7 +440,7 @@ Partial Class frmKassenbuch Me.Button5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Button5.ForeColor = System.Drawing.Color.Black Me.Button5.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button5.Location = New System.Drawing.Point(458, 36) + Me.Button5.Location = New System.Drawing.Point(394, 36) Me.Button5.Name = "Button5" Me.Button5.Size = New System.Drawing.Size(184, 42) Me.Button5.TabIndex = 19 @@ -477,7 +498,7 @@ Partial Class frmKassenbuch Me.btnStorno.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnStorno.ForeColor = System.Drawing.Color.Black Me.btnStorno.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnStorno.Location = New System.Drawing.Point(458, 84) + Me.btnStorno.Location = New System.Drawing.Point(394, 84) Me.btnStorno.Name = "btnStorno" Me.btnStorno.Size = New System.Drawing.Size(184, 42) Me.btnStorno.TabIndex = 420 @@ -498,7 +519,7 @@ Partial Class frmKassenbuch Me.pnlTop.Dock = System.Windows.Forms.DockStyle.Top Me.pnlTop.Location = New System.Drawing.Point(0, 0) Me.pnlTop.Name = "pnlTop" - Me.pnlTop.Size = New System.Drawing.Size(768, 60) + Me.pnlTop.Size = New System.Drawing.Size(778, 60) Me.pnlTop.TabIndex = 421 ' 'Label15 @@ -526,7 +547,7 @@ Partial Class frmKassenbuch ' Me.Label7.AutoSize = True Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label7.Location = New System.Drawing.Point(455, 20) + Me.Label7.Location = New System.Drawing.Point(391, 20) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(58, 13) Me.Label7.TabIndex = 422 @@ -542,9 +563,9 @@ Partial Class frmKassenbuch Me.pnlSuche.Controls.Add(Me.Label8) Me.pnlSuche.Controls.Add(Me.DataGridView1) Me.pnlSuche.Dock = System.Windows.Forms.DockStyle.Fill - Me.pnlSuche.Location = New System.Drawing.Point(0, 470) + Me.pnlSuche.Location = New System.Drawing.Point(0, 493) Me.pnlSuche.Name = "pnlSuche" - Me.pnlSuche.Size = New System.Drawing.Size(768, 205) + Me.pnlSuche.Size = New System.Drawing.Size(778, 218) Me.pnlSuche.TabIndex = 423 ' 'pnlSearch @@ -566,7 +587,7 @@ Partial Class frmKassenbuch Me.pnlSearch.Dock = System.Windows.Forms.DockStyle.Top Me.pnlSearch.Location = New System.Drawing.Point(0, 0) Me.pnlSearch.Name = "pnlSearch" - Me.pnlSearch.Size = New System.Drawing.Size(766, 58) + Me.pnlSearch.Size = New System.Drawing.Size(776, 58) Me.pnlSearch.TabIndex = 420 ' 'btnExcel @@ -602,6 +623,21 @@ Partial Class frmKassenbuch ' 'pnlMain ' + Me.pnlMain.Controls.Add(Me.lblFiskaltrustHeader) + Me.pnlMain.Controls.Add(Me.picTSEOnline) + Me.pnlMain.Controls.Add(Me.lblTSEOnline) + Me.pnlMain.Controls.Add(Me.picNULLbeleg) + Me.pnlMain.Controls.Add(Me.lblNullBeleg) + Me.pnlMain.Controls.Add(Me.lblJahres) + Me.pnlMain.Controls.Add(Me.lblMonats) + Me.pnlMain.Controls.Add(Me.lblTages) + Me.pnlMain.Controls.Add(Me.picJahres) + Me.pnlMain.Controls.Add(Me.picMonats) + Me.pnlMain.Controls.Add(Me.picTages) + Me.pnlMain.Controls.Add(Me.lblWarning) + Me.pnlMain.Controls.Add(Me.Button11) + Me.pnlMain.Controls.Add(Me.Button17) + Me.pnlMain.Controls.Add(Me.lbldailyCashboxClosing) Me.pnlMain.Controls.Add(Me.Button10) Me.pnlMain.Controls.Add(Me.btnBelegGSKunde) Me.pnlMain.Controls.Add(Me.pnl) @@ -624,9 +660,171 @@ Partial Class frmKassenbuch Me.pnlMain.Dock = System.Windows.Forms.DockStyle.Top Me.pnlMain.Location = New System.Drawing.Point(0, 60) Me.pnlMain.Name = "pnlMain" - Me.pnlMain.Size = New System.Drawing.Size(768, 410) + Me.pnlMain.Size = New System.Drawing.Size(778, 433) Me.pnlMain.TabIndex = 425 ' + 'picTSEOnline + ' + Me.picTSEOnline.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.picTSEOnline.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picTSEOnline.Location = New System.Drawing.Point(614, 46) + Me.picTSEOnline.Name = "picTSEOnline" + Me.picTSEOnline.Size = New System.Drawing.Size(27, 20) + Me.picTSEOnline.TabIndex = 449 + Me.picTSEOnline.TabStop = False + Me.picTSEOnline.Visible = False + ' + 'lblTSEOnline + ' + Me.lblTSEOnline.AutoSize = True + Me.lblTSEOnline.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTSEOnline.ForeColor = System.Drawing.Color.Black + Me.lblTSEOnline.Location = New System.Drawing.Point(655, 50) + Me.lblTSEOnline.Name = "lblTSEOnline" + Me.lblTSEOnline.Size = New System.Drawing.Size(75, 16) + Me.lblTSEOnline.TabIndex = 448 + Me.lblTSEOnline.Text = "TSE Online" + Me.lblTSEOnline.Visible = False + ' + 'picNULLbeleg + ' + Me.picNULLbeleg.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.picNULLbeleg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picNULLbeleg.Location = New System.Drawing.Point(614, 72) + Me.picNULLbeleg.Name = "picNULLbeleg" + Me.picNULLbeleg.Size = New System.Drawing.Size(27, 20) + Me.picNULLbeleg.TabIndex = 447 + Me.picNULLbeleg.TabStop = False + Me.picNULLbeleg.Visible = False + ' + 'lblNullBeleg + ' + Me.lblNullBeleg.AutoSize = True + Me.lblNullBeleg.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblNullBeleg.ForeColor = System.Drawing.Color.Black + Me.lblNullBeleg.Location = New System.Drawing.Point(655, 76) + Me.lblNullBeleg.Name = "lblNullBeleg" + Me.lblNullBeleg.Size = New System.Drawing.Size(81, 16) + Me.lblNullBeleg.TabIndex = 446 + Me.lblNullBeleg.Text = "NULL-Beleg" + Me.lblNullBeleg.Visible = False + ' + 'lblJahres + ' + Me.lblJahres.AutoSize = True + Me.lblJahres.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblJahres.ForeColor = System.Drawing.Color.Black + Me.lblJahres.Location = New System.Drawing.Point(655, 154) + Me.lblJahres.Name = "lblJahres" + Me.lblJahres.Size = New System.Drawing.Size(109, 16) + Me.lblJahres.TabIndex = 445 + Me.lblJahres.Text = "Jahresabschluss" + Me.lblJahres.Visible = False + ' + 'lblMonats + ' + Me.lblMonats.AutoSize = True + Me.lblMonats.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblMonats.ForeColor = System.Drawing.Color.Black + Me.lblMonats.Location = New System.Drawing.Point(655, 128) + Me.lblMonats.Name = "lblMonats" + Me.lblMonats.Size = New System.Drawing.Size(112, 16) + Me.lblMonats.TabIndex = 444 + Me.lblMonats.Text = "Monatsabschluss" + Me.lblMonats.Visible = False + ' + 'lblTages + ' + Me.lblTages.AutoSize = True + Me.lblTages.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTages.ForeColor = System.Drawing.Color.Black + Me.lblTages.Location = New System.Drawing.Point(655, 102) + Me.lblTages.Name = "lblTages" + Me.lblTages.Size = New System.Drawing.Size(108, 16) + Me.lblTages.TabIndex = 443 + Me.lblTages.Text = "Tagesabschluss" + Me.lblTages.Visible = False + ' + 'picJahres + ' + Me.picJahres.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.picJahres.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picJahres.Location = New System.Drawing.Point(614, 150) + Me.picJahres.Name = "picJahres" + Me.picJahres.Size = New System.Drawing.Size(27, 20) + Me.picJahres.TabIndex = 442 + Me.picJahres.TabStop = False + Me.picJahres.Visible = False + ' + 'picMonats + ' + Me.picMonats.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.picMonats.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picMonats.Location = New System.Drawing.Point(614, 124) + Me.picMonats.Name = "picMonats" + Me.picMonats.Size = New System.Drawing.Size(27, 20) + Me.picMonats.TabIndex = 441 + Me.picMonats.TabStop = False + Me.picMonats.Visible = False + ' + 'picTages + ' + Me.picTages.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.picTages.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.picTages.Location = New System.Drawing.Point(614, 98) + Me.picTages.Name = "picTages" + Me.picTages.Size = New System.Drawing.Size(27, 20) + Me.picTages.TabIndex = 440 + Me.picTages.TabStop = False + Me.picTages.Visible = False + ' + 'lblWarning + ' + Me.lblWarning.AutoSize = True + Me.lblWarning.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblWarning.ForeColor = System.Drawing.Color.Red + Me.lblWarning.Location = New System.Drawing.Point(368, 175) + Me.lblWarning.Name = "lblWarning" + Me.lblWarning.Size = New System.Drawing.Size(0, 16) + Me.lblWarning.TabIndex = 439 + ' + 'Button11 + ' + Me.Button11.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button11.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Button11.ForeColor = System.Drawing.Color.Black + Me.Button11.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button11.Location = New System.Drawing.Point(394, 130) + Me.Button11.Name = "Button11" + Me.Button11.Size = New System.Drawing.Size(184, 42) + Me.Button11.TabIndex = 438 + Me.Button11.Text = "Fiskaltrust" + Me.Button11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button11.UseVisualStyleBackColor = True + ' + 'Button17 + ' + Me.Button17.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen + Me.Button17.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.Button17.FlatAppearance.BorderSize = 0 + Me.Button17.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button17.Location = New System.Drawing.Point(742, 24) + Me.Button17.Name = "Button17" + Me.Button17.Size = New System.Drawing.Size(25, 20) + Me.Button17.TabIndex = 437 + Me.Button17.UseVisualStyleBackColor = True + ' + 'lbldailyCashboxClosing + ' + Me.lbldailyCashboxClosing.AutoSize = True + Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red + Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(361, 5) + Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing" + Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16) + Me.lbldailyCashboxClosing.TabIndex = 436 + Me.lbldailyCashboxClosing.Text = "Täglicher Kassenabschluss dieser Kasse ist verpflichtend!" + ' 'Button10 ' Me.Button10.FlatStyle = System.Windows.Forms.FlatStyle.Flat @@ -669,7 +867,7 @@ Partial Class frmKassenbuch Me.pnl.Controls.Add(Me.Button8) Me.pnl.Controls.Add(Me.cboKassen) Me.pnl.Controls.Add(Me.Label18) - Me.pnl.Location = New System.Drawing.Point(442, 132) + Me.pnl.Location = New System.Drawing.Point(378, 201) Me.pnl.Name = "pnl" Me.pnl.Size = New System.Drawing.Size(287, 223) Me.pnl.TabIndex = 430 @@ -799,7 +997,7 @@ Partial Class frmKassenbuch Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Button1.ForeColor = System.Drawing.Color.Black Me.Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button1.Location = New System.Drawing.Point(458, 197) + Me.Button1.Location = New System.Drawing.Point(400, 197) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(260, 42) Me.Button1.TabIndex = 434 @@ -807,12 +1005,27 @@ Partial Class frmKassenbuch Me.Button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft Me.Button1.UseVisualStyleBackColor = True ' + 'cm_FT + ' + Me.cm_FT.Name = "ContextMenuStrip1" + Me.cm_FT.Size = New System.Drawing.Size(61, 4) + ' + 'lblFiskaltrustHeader + ' + Me.lblFiskaltrustHeader.AutoSize = True + Me.lblFiskaltrustHeader.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFiskaltrustHeader.Location = New System.Drawing.Point(611, 20) + Me.lblFiskaltrustHeader.Name = "lblFiskaltrustHeader" + Me.lblFiskaltrustHeader.Size = New System.Drawing.Size(65, 13) + Me.lblFiskaltrustHeader.TabIndex = 450 + Me.lblFiskaltrustHeader.Text = "Fiskaltrust" + ' 'frmKassenbuch ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White - Me.ClientSize = New System.Drawing.Size(768, 675) + Me.ClientSize = New System.Drawing.Size(778, 711) Me.Controls.Add(Me.pnlSuche) Me.Controls.Add(Me.pnlMain) Me.Controls.Add(Me.pnlTop) @@ -831,6 +1044,11 @@ Partial Class frmKassenbuch Me.pnlSearch.PerformLayout() Me.pnlMain.ResumeLayout(False) Me.pnlMain.PerformLayout() + CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.picMonats, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() Me.ResumeLayout(False) @@ -891,4 +1109,20 @@ Partial Class frmKassenbuch Friend WithEvents Button7 As System.Windows.Forms.Button Friend WithEvents Button10 As Button Friend WithEvents btnPosTerminal As Button + Friend WithEvents lbldailyCashboxClosing As Label + Friend WithEvents Button17 As Button + Friend WithEvents Button11 As Button + Friend WithEvents cm_FT As ContextMenuStrip + Friend WithEvents lblWarning As Label + Friend WithEvents lblJahres As Label + Friend WithEvents lblMonats As Label + Friend WithEvents lblTages As Label + Friend WithEvents picJahres As PictureBox + Friend WithEvents picMonats As PictureBox + Friend WithEvents picTages As PictureBox + Friend WithEvents picNULLbeleg As PictureBox + Friend WithEvents lblNullBeleg As Label + Friend WithEvents picTSEOnline As PictureBox + Friend WithEvents lblTSEOnline As Label + Friend WithEvents lblFiskaltrustHeader As Label End Class diff --git a/SDL/kassenbuch/frmKassenbuch.resx b/SDL/kassenbuch/frmKassenbuch.resx index 66ac4fbc..a293f9f1 100644 --- a/SDL/kassenbuch/frmKassenbuch.resx +++ b/SDL/kassenbuch/frmKassenbuch.resx @@ -142,6 +142,9 @@ SNw4kn9U62ALlUplLU5qtVoaZwrCC9FnbaaC0/EHAAAAAElFTkSuQmCC + + 25, 8 + AAABAAEAgIAAAAEAGAAoyAAAFgAAACgAAACAAAAAAAEAAAEAGAAAAAAAAMgAAMQOAADEDgAAAAAAAAAA diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 63020d7b..802b94c2 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -1,4 +1,5 @@ -Imports SDL.RKSVServer +Imports GrapeCity.DataVisualization.TypeScript +Imports SDL.RKSVServer Public Class frmKassenbuch Dim SQL As New SQL @@ -13,6 +14,11 @@ Public Class frmKassenbuch Dim loginAfterSeconds = 10 Public master_Kasse As Boolean = False Dim FMZOLL_SQL As New FMZOLL_SQL + Dim tagesabschlussIsSet As Boolean = False + Dim monatsabschlussIsSet As Boolean = False + Dim jahresabschlussIsSet As Boolean = False + Dim NULLBelegIsCreated As Boolean = True + Dim TSEIsOnline As Boolean = False Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal) ' Dieser Aufruf ist für den Designer erforderlich. @@ -87,10 +93,47 @@ Public Class frmKassenbuch End If + + + End Sub + + Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean) + + lblTSEOnline.Visible = True + lblTages.Visible = True + lblMonats.Visible = True + lblJahres.Visible = True + lblNullBeleg.Visible = True + + picJahres.Visible = True + picMonats.Visible = True + picTages.Visible = True + picNULLbeleg.Visible = True + picTSEOnline.Visible = True + + showPic(isOnline, picTSEOnline) + showPic(tagesabschluss, picTages) + showPic(monatsabschlussIsSet, picMonats) + showPic(Jahresabschluss, picJahres) + showPic(NULLBeleg, picNULLbeleg) + + + End Sub + + Sub showPic(ok As Boolean, pic As PictureBox) + pic.Visible = True + If ok Then + pic.BackgroundImage = My.Resources.ok + Else + pic.BackgroundImage = My.Resources.del + End If + End Sub Sub init() Dim sqlstr = "" + lblWarning.Text = "" + If master_Kasse Then Label9.Text = "ADMIN" pnlTop.BackColor = Color.Red @@ -153,6 +196,62 @@ Public Class frmKassenbuch End If + If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then + lbldailyCashboxClosing.Visible = True + Button11.Visible = True + + Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If tagesabschluss > 0 Then tagesabschlussIsSet = True + + Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If monatsabschluss > 0 Then monatsabschlussIsSet = True + + Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If jahresabschluss > 0 Then jahresabschlussIsSet = True + If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then + NULLBelegIsCreated = False + End If + + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + + If result.Contains("VERBINDUNG OK") Then + TSEIsOnline = True + End If + + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated) + + If Not NULLBelegIsCreated Then + lblWarning.Text = "" '"Es wurde noch kein NULL-Beleg über FT erstellt!" + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + btnStorno.Enabled = False + ElseIf tagesabschlussIsSet Then + lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + btnStorno.Enabled = False + Else + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + btnStorno.Enabled = True + End If + End If + Else + lbldailyCashboxClosing.Visible = False + Button11.Visible = False + End If + ' Label9.Text = PERSONAL.Name DataGridView2.ClearSelection() @@ -1391,4 +1490,275 @@ Public Class frmKassenbuch f.Show() End Sub + + Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click + + Dim webAddress As String = "https://wiki.verag.ag/e/de/software/aviso/howtos/Barverkauf" + Process.Start(webAddress) + End Sub + + Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + 'nur im Testsystem! + If Not cm_FT.Items.ContainsKey("bar") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("storno") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + End If + + If Not cm_FT.Items.ContainsKey("null") Then + Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet Then + Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(rmc) + End If + + If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet Then + Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(rmc) + End If + + If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet Then + Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(uta) + End If + + If Not cm_FT.Items.ContainsKey("verbindungstest") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("version") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("signatures") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("action") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("queueitem") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("exportJournal") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + cm_FT.Show(Cursor.Position) + + End Sub + + + Private Async Function mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) As Task(Of Object) + + cm_FT.Hide() + Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) + + If item IsNot Nothing Then + + 'PERSONAL.cRKSV_Kasse.LOAD(cboKassen._value) + + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + + If item.Name = "null" Then + + If vbYes = MsgBox("Möchten Sie einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_NULLBELEG() + init() + End If + + End If + + + + ElseIf item.Name = "verbindungstest" Then + + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + + + ElseIf item.Name = "storno" Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + + If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + + End If + + Else + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") + End If + + + ElseIf item.Name = "bar" Then + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + + If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id) + + If result <> "" Then + + If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then + Dim QR_CodeString As String = "" + client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + End If + Else + Return False + End If + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + End If + Else + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") + + End If + + + + ElseIf item.Name = "monthly" Then + + If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + + End If + + End If + + + ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then + 'Nur DE + If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then + If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + init() + End If + Else + MsgBox("nicht für AT-Kassen möglich!") + End If + End If + + + + ElseIf item.Name = "yearly" Then + + If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then + + + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + + End If + + End If + + + ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then + + Dim result As String = "" + Select Case item.Name + Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) + Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) + Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) + Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) + Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) + End Select + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + If item.Name = "exportJournal" Then + client_chilkat.exportJournal(result) + End If + + End If + + + + End If + + + End If + + + + End Function + + End Class \ No newline at end of file From c717b3278a741c77a6937151847d42fd828cdff2 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 10 Sep 2026 11:53:56 +0200 Subject: [PATCH 34/54] Datenserver, faktmail, a --- SDL/Fakturierung/cAutomailversand.vb | 2 +- SDL/Fakturierung/cFakturierung.vb | 4 +- SDL/Fakturierung/frmAbrechnungsMaske.vb | 256 +++++++++++++++++- SDL/Fakturierung/frmFaktEmail.vb | 4 +- .../DATENSERVER/cDATENSERVER.vb | 28 +- 5 files changed, 271 insertions(+), 23 deletions(-) diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 4a69234c..767c9e86 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -1414,7 +1414,7 @@ Public Class cAutomailversand End Function - Private Function setAccountToSend(FIRMA_ID As Integer) As String + Public Function setAccountToSend(FIRMA_ID As Integer) As String Dim tmpFirma = New VERAG_PROG_ALLGEMEIN.cFirmen(FIRMA_ID) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index d5592d46..63659f44 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -4466,16 +4466,18 @@ Public Class cFakturierung End Function - Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True) As Boolean + Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True, Optional dt_temp As DataTable = Nothing) As Boolean 'SB Nicht mehr benötigt, da RG-Nr und DruckdatumUhrzeit Dim dt As DataTable If SRDruckWiederholen Then dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, "3,4,5", ) ' 3,4,5-_> irgendebbs + dt_temp = dt Else 'Dim RG_NR = New VERAG_PROG_ALLGEMEIN.cRechnungsnummern(Firma_ID, Buchungsjahr) 'RG_NR.INCREASE_RGNR() 'für die nächste Rechnung dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, IIf(RechnungsdruckArt = 7, "2", "2, 3, 4"), [VorschauID]) + dt_temp = dt End If ' 3-_> Anlagen gedruckt diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index d8cd4f83..e15174be 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -1,6 +1,8 @@ Imports System.IO Imports GrapeCity.ActiveReports.PageReportModel +Imports iText.IO.Util Imports Microsoft.Office.Interop +Imports sun.net.www.protocol Imports VERAG_PROG_ALLGEMEIN Public Class frmAbrechnungsMaske @@ -62,13 +64,13 @@ Public Class frmAbrechnungsMaske txtRechnungsdatumAutomail.Visible = setDefaultAutoMailversand - dtp_RD_automail.Visible = setDefaultAutoMailversand - lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand + dtp_RD_automail.Visible = setDefaultAutoMailversand + lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand - 'FirmaTmp = "AMBAR" + 'FirmaTmp = "AMBAR" - cboSachbearbeiter.Items.Clear() + cboSachbearbeiter.Items.Clear() Select Case FirmaTmp @@ -918,15 +920,17 @@ Public Class frmAbrechnungsMaske If IsNumeric(RK_ID) Then Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID) Dim sammelrechnungskopieMDM As Boolean = False - Dim sammelrechnungMDMmitAnhang As Boolean = False + Dim sammelrechnungmitAnhang As Boolean = False If RG_TMP IsNot Nothing Then - 'id mitübergeben (1_> drucken, 2 Email, 3 PDF) + + Dim tempPDF As String = "" + Dim listOfCSV As New List(Of String) + If RG_TMP.Sammelrechnung = 6 Then If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True - Dim tempPDF As String = "" - Dim listOfCSV As New List(Of String) - sammelrechnungMDMmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNoCancel) - cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungMDMmitAnhang, sammelrechnungskopieMDM, listOfCSV, True) + + sammelrechnungmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNo) + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungmitAnhang, sammelrechnungskopieMDM, listOfCSV, True) Select Case id Case 1 @@ -957,16 +961,246 @@ Public Class frmAbrechnungsMaske Else - cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, id,, True,,,,,,,,,) + + 'sammelrechnungmitAnhang = MsgBox("Soll die Sammelrechnung mit Anhang angezeigt werden?", vbYesNo) + + + Select Case id + Case 1 + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 3, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,) + Case 2 + Try + Dim dt_temp As New DataTable + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,, listOfCSV,,,, dt_temp) + + + Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(RG_TMP.RechnungsKundenNr) + + Dim outl As New Outlook.Application + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + Dim auto As New cAutomailversand + Dim oAccount As Outlook.Account + Dim accountToSent = "" + + accountToSent = auto.setAccountToSend(RG_TMP.Firma_ID) + + If accountToSent <> "" Then + If outl.Session.Accounts.Count > 0 Then + For Each oAccount In outl.Session.Accounts + If oAccount.SmtpAddress.ToLower = accountToSent.ToLower Then + Mail.SendUsingAccount = oAccount + Exit For + End If + Next + End If + End If + + setEmailText(RG_TMP.RechnungsLandKz, RG_TMP.Firma_ID, RG_TMP.RechnungsNr, Mail.Subject, Mail.HTMLBody, RG_TMP.Sammelrechnung, RG_TMP.BelegartenNr) + setandcheckEmpfaengerMail_SR(dt_temp, AD, Mail.To, Mail.CC, Mail.BCC, RG_TMP.Firma_ID, RG_TMP.Sammelrechnung) + Dim anhangbezeichnung = getAnhangbezeichnung(AD.LandKz, RG_TMP, RG_TMP.BelegartenNr) + Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , RG_TMP.RechnungsNr & "_" & anhangbezeichnung) + If listOfCSV.Count > 0 Then + For Each r In listOfCSV + Dim file As New FileInfo(r) + Mail.Attachments.Add(r, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , file.Name) + Next + End If + Mail.Display() + + Catch ex As Exception + MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!") + Process.Start(tempPDF) + End Try + + Case 3 'PDF + öffnen + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,) + Process.Start(tempPDF) + + End Select + + + + + End If End If + Else + + MsgBox("Bei " & cboFirma.SelectedItem.Text & " existiert keine Sammelrechnung mit der Nr: " & SR_RechnungsNr & "") + End If + + + End If End Sub + + + + Private Sub setEmailText(RechnungsLandKz As String, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String, ByRef SammelrechungArt As Integer, ByRef BelegartenNr As Integer) + + Dim txtRgNr As String = IIf(RechnungsNr < 0, -1, RechnungsNr) + Dim Mailtext As String + + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID) + + Dim spracheRechnung As String = "EN" 'Defaultsprache + + Dim belegtyp As String = If(BelegartenNr = 71, "credit note", "invoice") + + + + Select Case RechnungsLandKz + Case "TR" : spracheRechnung = "TR" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "Kredi", "Fatura") + Case "RO" + If Firma_ID = 19 Then + spracheRechnung = "RO" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "nota de credit", "factura") + End If + + Case "DE", "A", "AT", "D", "CH" : spracheRechnung = "DE" : belegtyp = If(BelegartenNr = 71, "Gutschrift", "Rechnung") + + Case "SRB", "HR", "SLO", "BIH", "MNE", "MK", "MO" + If Firma_ID = 19 Then + spracheRechnung = "SRB" : belegtyp = If(BelegartenNr = 71, "credit note", "invoice") 'Belegarten auf Englisch! + End If + + End Select + + + + If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then + + + Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung) + If r IsNot Nothing Then + Subject = r.txt_betreff + Subject = Subject.Replace("%BelegNr%", txtRgNr) + Subject = Subject.Replace("%Belegtyp%", belegtyp) + TextHTML &= r.txt_text + If Mailtext <> "" Then TextHTML &= Mailtext + TextHTML &= vbNewLine & vbNewLine + + TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp) + + + + End If + End If + + TextHTML &= "
" + TextHTML &= "
" + + Select Case RechnungsLandKz + Case "TR" + TextHTML &= "Saygilarimizla
" + Case "A", "AT", "D", "DE", "CH" + TextHTML &= "Mit freundlichen Grüßen
" + Case Else + TextHTML &= "Best regards
" + End Select + + + + TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "

" + TextHTML &= cFakturierung.getSignature(RechnungsLandKz, Firma_ID, True, True,,,,,, True) + + + + + + End Sub + + Private Function getAnhangbezeichnung(sprache As String, RECHNUNG As cRechnungsausgang, BelegartenNr As Integer, Optional onlyBelegsuebersetzung As Boolean = False) + + Dim Anhangsbez = "" + If RECHNUNG IsNot Nothing Then + + Select Case sprache + Case "A", "AT", "D", "DE", "CH" + + If BelegartenNr = 71 Then + If onlyBelegsuebersetzung Then + Anhangsbez = "Gutschrift.pdf" + Else + Anhangsbez = "Gutschriftsanhaenge.pdf" + End If + Else + If onlyBelegsuebersetzung Then + Anhangsbez = "Rechnung.pdf" + Else + Anhangsbez = "Rechnungsanhaenge.pdf" + End If + End If + + Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Kredi.pdf" Else Anhangsbez = "Fatura.pdf" + Case Else : If BelegartenNr = 71 Then Anhangsbez = "Creditnote.pdf" Else Anhangsbez = "Invoice.pdf" + End Select + + Else + + + Select Case sprache + Case "A", "AT", "D", "DE", "CH" : If BelegartenNr = 71 Then Anhangsbez = "Sammelgutschrift.pdf" Else Anhangsbez = "Sammelrechnung.pdf" + Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Toplukredi.pdf" Else Anhangsbez = "Toplufatura.pdf" + Case Else : If BelegartenNr = 71 Then Anhangsbez = "Collectivecreditnote.pdf" Else Anhangsbez = "Collectiveinvoice.pdf" + End Select + + End If + + Return Anhangsbez + + + End Function + + Public Shared Function setandcheckEmpfaengerMail_SR(ByRef SR_DT As DataTable, ByRef AD As cAdressen, ByRef EMAILTMP As String, ByRef EMAILTMPCC As String, ByRef EMAILTMPBCC As String, ByRef FirmaID As Integer, ByRef SammelrechungArt As String) As String + + If SammelrechungArt <> 6 Then + + + Dim email_receipt As String = "" + + Dim allAtilla = IIf(FirmaID = 7, True, False) + If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then + For Each r In SR_DT.Rows + If "4801" <> r("FilialenNr") And "4802" <> r("FilialenNr") Then + allAtilla = False + Exit For + End If + Next + End If + + email_receipt = IIf(allAtilla, VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)"), "") + + EMAILTMP = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an"), email_receipt) 'VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an") + EMAILTMPCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an (ATILLA)")) + EMAILTMPBCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an (ATILLA)")) + + Else + + If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";" + If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";" + + + End If + + If EMAILTMP = "" And EMAILTMPCC = "" And EMAILTMPBCC = "" Then + + If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";" + If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";" + + End If + + + Return EMAILTMP & EMAILTMPCC + + End Function + Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim f As New frmFaktAufschubSuche(False) f.Show(Me) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index f3d5089f..bc8046d9 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -195,7 +195,9 @@ Public Class frmFaktEmail If RECHNUNG.FilialenNr = "4801" Or RECHNUNG.FilialenNr = "4802" Then email_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)") End If - + If Firma_ID = 24 Then + cbxMergeRg.Checked = False + End If Dim EMAILTMP = "" Dim EMAILTMPCC = "" diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 0a8d9ecd..53c4a512 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -2428,17 +2428,27 @@ Public Class DATENVERVER_OPTIONS kdnr_path = kdnr End If If kategorie <> "" Then - Dim dir = "" - dir &= rootDir - dir &= kategorie & "\" - dir &= If(ordner IsNot Nothing AndAlso ordner <> "", ordner & "\", "") - dir &= If(kdnr_path <> "", kdnr_path & "\", "") - dir &= If(da_uOrdner1 IsNot Nothing AndAlso da_uOrdner1 <> "", da_uOrdner1 & "\", "") - dir &= If(da_uOrdner2 IsNot Nothing AndAlso da_uOrdner2 <> "", da_uOrdner2 & "\", "") - dir &= If(da_uOrdner3 IsNot Nothing AndAlso da_uOrdner3 <> "", da_uOrdner3 & "\", "") + Dim dir As String = Path.Combine( + rootDir, + kategorie, + If(String.IsNullOrWhiteSpace(ordner), "", ordner), + If(String.IsNullOrWhiteSpace(kdnr_path), "", kdnr_path), + If(String.IsNullOrWhiteSpace(da_uOrdner1), "", da_uOrdner1), + If(String.IsNullOrWhiteSpace(da_uOrdner2), "", da_uOrdner2), + If(String.IsNullOrWhiteSpace(da_uOrdner3), "", da_uOrdner3)) If Not onlyordner Then If Not System.IO.Directory.Exists(dir) Then - System.IO.Directory.CreateDirectory(dir) + Try + If Not Directory.Exists(dir) Then + Directory.CreateDirectory(dir) + End If + + Catch ex As UnauthorizedAccessException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & "Keine Berechtigung für den Ordner: " & dir & Environment.NewLine & "Windows-Benutzer: " & System.Security.Principal.WindowsIdentity.GetCurrent().Name & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + + Catch ex As IOException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler beim Zugriff auf den Ordner: " & dir & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End If Dim zusatz = "" : Dim zusatzcnt = 1 While System.IO.File.Exists(dir & dateiName & zusatz & If(bezeichnung.ToString.EndsWith(endung), "", endung)) From 04aeee4f84524f917a8c406f71f7672bf808c602 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 11 Sep 2026 16:10:19 +0200 Subject: [PATCH 35/54] =?UTF-8?q?div.=20=C3=84nderungen,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Classes/cEABeleg.vb | 1 - SDL/Classes/cFiskaltrustClient.vb | 2 + SDL/Classes/cFiskaltrustClient_chilkat.vb | 136 ++++-------- SDL/Classes/cRKSV.vb | 8 +- SDL/Classes/cRKSV_Kasse.vb | 40 ++++ SDL/kassenbuch/frmBelegNeu.vb | 10 +- SDL/kassenbuch/frmFremdbeleg.vb | 8 +- SDL/kassenbuch/frmKassenbuch.Designer.vb | 69 ++++-- SDL/kassenbuch/frmKassenbuch.vb | 239 ++++++++++++++++----- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 7 +- 10 files changed, 339 insertions(+), 181 deletions(-) diff --git a/SDL/Classes/cEABeleg.vb b/SDL/Classes/cEABeleg.vb index dbf7ec60..9cc921ff 100644 --- a/SDL/Classes/cEABeleg.vb +++ b/SDL/Classes/cEABeleg.vb @@ -283,7 +283,6 @@ Public Class EABeleg Property ECTerminalreturnCode As Object = Nothing Property EC_daid As Integer = 0 Property FT_ReceiptReference As Object = Nothing - Property FT_ReceiptReference_Storno As Object = Nothing diff --git a/SDL/Classes/cFiskaltrustClient.vb b/SDL/Classes/cFiskaltrustClient.vb index a1aacac8..eb3a39a3 100644 --- a/SDL/Classes/cFiskaltrustClient.vb +++ b/SDL/Classes/cFiskaltrustClient.vb @@ -740,6 +740,7 @@ Public Class cFiskaltrustSignatures Property ftCashBoxID As Object = Nothing Property cbTerminalID As Object = Nothing Property cbReceiptReference As Object = Nothing + Property ftBeleg_ID As Object = Nothing Public hasEntry = False @@ -767,6 +768,7 @@ Public Class cFiskaltrustSignatures list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftCashBoxID", ftCashBoxID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbTerminalID", cbTerminalID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbReceiptReference", cbReceiptReference)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftBeleg_ID", ftBeleg_ID)) Return list End Function diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index e3570208..7a44006a 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -27,9 +27,11 @@ End Class Public Class FtChargeItemCase + 'DE Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % - Public Const RevenueTaxFree As Long = &H4445000000000005L ' 0 % + Public Const RevenueNotTaxable As Long = &H4445000000000005L 'nicht steuerbar + Public Const RevenueTaxFree As Long = &H4445000000000006L '0% End Class @@ -44,6 +46,8 @@ End Class Public Class FtPayItemCases + 'DE + ' Barzahlung Public Const Cash As Long = &H4445000000000001L @@ -57,7 +61,7 @@ Public Class FtPayItemCases Public Const OnlinePayment As Long = &H4445000000000006L ' Gutschein - Public Const Voucher As Long = &H444500000000000DL + Public Const Voucher As Long = &H4445000000000007L End Class @@ -75,14 +79,16 @@ Public Class cFiskaltrustClient_chilkat _country = country End Sub - Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String + Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String) As String - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "") + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, "") Return SendChilkat(GetEndpoint("payment"), payload.Emit()) End Function + + Public Function SignReceipt_test(posSystemId As String) As String Dim LIST = New List(Of EABelegPositionen) @@ -151,8 +157,15 @@ Public Class cFiskaltrustClient_chilkat Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) End Function - Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String + Public Function SignOutOfOrderReceipt(posSystemId As String) As String + Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + End Function + Public Function SignOInitialOperationReceipt(posSystemId As String) As String + Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) + End Function + + Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) End Function @@ -174,69 +187,6 @@ Public Class cFiskaltrustClient_chilkat Return SendChilkat(endpoint, "") End Function - 'Private Function old_SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String - - ' Dim retries As Integer = 3 - ' Dim lastEx As Exception = Nothing - ' VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() - ' Dim rest As New Chilkat.Rest - ' Dim failureDesc As String - ' rest.VerboseLogging = True - - - ' For i As Integer = 1 To retries - - ' Try - - ' Dim uri As New Uri(_baseUrl) - - ' If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then - - ' Throw New Exception(rest.LastErrorText) - ' failureDesc = rest.LastErrorText - ' Return failureDesc - - ' End If - - ' rest.AddHeader("cashboxid", _cashboxId) - ' rest.AddHeader("accesstoken", _accessToken) - - ' Dim response As String - - ' If isGet Then - ' response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint) - ' Else - - - ' If _country = "AT" Then - ' rest.AddHeader("Content-Type", "text/plain") - ' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) - ' Else - ' rest.AddHeader("Content-Type", "application/json") - ' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) - ' End If - - - ' End If - - ' If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then - ' Return response - ' Else - ' failureDesc = rest.LastErrorText - ' End If - - ' Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response) - - ' Catch ex As Exception - ' lastEx = ex - ' Threading.Thread.Sleep(500) - ' End Try - - ' Next - - ' Throw lastEx - - 'End Function Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String @@ -277,11 +227,7 @@ Public Class cFiskaltrustClient_chilkat rest.AddHeader("Content-Type", "application/json") End If - response = rest.FullRequestString( - "POST", - uri.AbsoluteUri & endpoint, - payload - ) + response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload) End If @@ -361,8 +307,8 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) + Dim receipCase - Dim receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction If _receiptCase = "Storno" Then @@ -381,7 +327,18 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) ' Normal sale + + 'Select Case _receiptCase + ' Case "Eingang" + ' receipCase = FtReceiptCases.CashIn Or FtReceiptCases.ImplicitTransaction + ' Case "Ausgang" + ' receipCase = FtReceiptCases.CashOut Or FtReceiptCases.ImplicitTransaction + ' Case Else receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + 'End Select + + + End If @@ -467,7 +424,7 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("ftPosSystemId", getVersion(posSystemId)) json.UpdateString("cbTerminalID", posSystemId) json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) - json.UpdateString("ftReceiptCase", (FtReceiptCases.InitialOperation).ToString()) + json.UpdateString("ftReceiptCase", (FtReceiptCases.InitialOperation Or FtReceiptCases.ImplicitTransaction).ToString()) json.UpdateString("cbReceiptReference", "INIT") json.UpdateString("cbUser", "Admin") @@ -489,7 +446,7 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("ftPosSystemId", getVersion(posSystemId)) json.UpdateString("cbTerminalID", posSystemId) json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) - json.UpdateString("ftReceiptCase", (FtReceiptCases.OutOfOperation).ToString()) + json.UpdateString("ftReceiptCase", (FtReceiptCases.OutOfOperation Or FtReceiptCases.ImplicitTransaction).ToString()) json.UpdateString("cbReceiptReference", "OutOfOperation") json.UpdateString("cbUser", "Admin") json.UpdateString("ftReceiptCaseData", "") @@ -573,7 +530,7 @@ Public Class cFiskaltrustClient_chilkat End Function Private Function getVersion(Terminal_ID As String) As String - Return Terminal_ID & "_" & Application.ProductVersion + Return Terminal_ID '& "_" & Application.ProductVersion End Function Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String, ByRef beleg_temp As EABeleg, ByRef isStorno As Boolean) As Boolean @@ -615,17 +572,19 @@ Public Class cFiskaltrustClient_chilkat .ftCashBoxIdentification = json.StringOf("ftCashBoxIdentification") .ftReceiptIdentification = json.StringOf("ftReceiptIdentification") .ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal) - .ftState = json.StringOf("ftState") - saved = .SAVE() + .ftState = json.StringOf("ftState") + .ftBeleg_ID = beleg_temp.BelegNr + saved = .SAVE() - If saved AndAlso beleg_temp IsNot Nothing Then + If saved AndAlso beleg_temp IsNot Nothing Then If isStorno Then beleg_temp.FT_ReceiptReference_Storno = .cbReceiptReference beleg_temp.SAVE() Else - beleg_temp.FT_ReceiptReference = .cbReceiptReference - End If + beleg_temp.FT_ReceiptReference = .cbReceiptReference + beleg_temp.SAVE() + End If End If @@ -634,11 +593,12 @@ Public Class cFiskaltrustClient_chilkat Dim num As Integer = json.SizeOfArray("ftSignatures") - If num = 0 Then - Return False - End If + If num = 0 Then + MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen!") + Return True + End If - Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures") + Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures") If (json.LastMethodSuccess = False) Then Return False End If @@ -657,9 +617,7 @@ Public Class cFiskaltrustClient_chilkat .ftSignatureFormat = SignObj.StringOf("ftSignatureFormat") .ftSignatureType = SignObj.StringOf("ftSignatureType") saved = .SAVE() - 'If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then - ' QR_CodeString = .ftData - 'End If + End With diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index f2fc2954..0f51914b 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -89,7 +89,7 @@ Public Class cRKSV End Function - Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String) As Boolean + Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String) As Boolean Try @@ -133,7 +133,7 @@ Public Class cRKSV 'End If Else Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id) + Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase) If result <> "" Then Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Else @@ -1015,7 +1015,7 @@ Public Class cRKSV Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id) If result <> "" Then - Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True) + client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True) Else Return False End If @@ -1325,7 +1325,7 @@ Public Class cRKSV rpt.picVERAG.Image = My.Resources.FrontOfficeSUB rpt.lblFirma_Name.Text = "Front-Office Suben eG" rpt.lblFirma_Details.Text = "A 4975 Suben | Suben 14" & vbNewLine & "UID: ATU74813856 " - Case "FT DE-KLIPPHAUSEN" + Case "FT DE-KLIPPHAUSEN", "TEST-KASSE FT DE" 'Default Werte: rpt.picVERAG.Image = My.Resources.Klipphausen_Logo rpt.lblFirma_Name.Text = "Front-Office Klipphausen GmbH" diff --git a/SDL/Classes/cRKSV_Kasse.vb b/SDL/Classes/cRKSV_Kasse.vb index 9c139262..18c17044 100644 --- a/SDL/Classes/cRKSV_Kasse.vb +++ b/SDL/Classes/cRKSV_Kasse.vb @@ -32,6 +32,10 @@ Public Class cRKSV_Kasse Property rksv_FT_ZeroReceiptCreated As Object = Nothing + Property rksv_FT_InitialStartCreated As Object = Nothing + + Property rksv_FT_OutOfOrderCreated As Object = Nothing + Dim SQL As New SQL @@ -202,6 +206,38 @@ Public Class cRKSV_Kasse Return False End Function + Public Function SET_OUTOFORDERBELEG() As Boolean + Try + Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_OutOfOrderCreated = getDate() WHERE rksv_id=@rksv_id", conn) + cmd.Parameters.AddWithValue("@rksv_id", rksv_id) + Dim dr = cmd.ExecuteReader() + dr.Close() + End Using + End Using + Return True + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + Return False + End Function + + Public Function SET_INITIALSTARTBELEG() As Boolean + Try + Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_InitialStartCreated = getDate() WHERE rksv_id=@rksv_id", conn) + cmd.Parameters.AddWithValue("@rksv_id", rksv_id) + Dim dr = cmd.ExecuteReader() + dr.Close() + End Using + End Using + Return True + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + Return False + End Function + Public Function SAVE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) = getParameterList() @@ -250,6 +286,8 @@ Public Class cRKSV_Kasse Me.rksv_FT_RestServiceURL = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_RestServiceURL"), Nothing) Me.rksv_FT_Country = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_Country"), Nothing) Me.rksv_FT_ZeroReceiptCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_ZeroReceiptCreated"), Nothing) + Me.rksv_FT_OutOfOrderCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_OutOfOrderCreated"), Nothing) + Me.rksv_FT_InitialStartCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_InitialStartCreated"), Nothing) End If dr.Close() @@ -292,6 +330,8 @@ Public Class cRKSV_Kasse list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_RestServiceURL", rksv_FT_RestServiceURL)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_Country", rksv_FT_Country)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_ZeroReceiptCreated", rksv_FT_ZeroReceiptCreated)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_InitialStartCreated", rksv_FT_InitialStartCreated)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_OutOfOrderCreated", rksv_FT_OutOfOrderCreated)) Return list diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 801876a5..52ea50ad 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -1704,15 +1704,17 @@ Public Class frmBelegNeu Dim answer = "" Dim verarbeitet As Boolean = False + Dim isFiskaltrust As Boolean = False If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS) + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") 'result.Wait() verarbeitet = result + isFiskaltrust = True Else verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service End If - If Not verarbeitet Then + If Not verarbeitet AndAlso Not isFiskaltrust Then If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) @@ -1724,7 +1726,7 @@ Public Class frmBelegNeu 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) + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) End If @@ -1894,7 +1896,7 @@ Public Class frmBelegNeu Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged KASSE.LOAD(cboKassen._value) - Button4.Visible = KASSE.rksv_FT_RestServiceURL <> "" + 'Button4.Visible = KASSE.rksv_FT_RestServiceURL <> "" End Sub diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 070900a9..57b3e6f8 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -224,11 +224,13 @@ Public Class frmFremdbeleg End If Dim answer = "" + Dim isFiskaltrust As Boolean = False If KASSE.rksv_aktiv Then Dim verarbeitet As Boolean = False + If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS) + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, "Eingang", "Ausgang")) 'result.Wait() verarbeitet = result Else @@ -236,7 +238,7 @@ Public Class frmFremdbeleg End If - If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) @@ -269,7 +271,7 @@ Public Class frmFremdbeleg End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) 'RKSV-Daten beim Beleg ergänzen: BELEG.rksv_jws = LastJWS diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb index 035940eb..297c5128 100644 --- a/SDL/kassenbuch/frmKassenbuch.Designer.vb +++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb @@ -66,6 +66,7 @@ Partial Class frmKassenbuch Me.Label14 = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() Me.pnlMain = New System.Windows.Forms.Panel() + Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() Me.picTSEOnline = New System.Windows.Forms.PictureBox() Me.lblTSEOnline = New System.Windows.Forms.Label() Me.picNULLbeleg = New System.Windows.Forms.PictureBox() @@ -94,7 +95,8 @@ Partial Class frmKassenbuch Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem() Me.Button1 = New System.Windows.Forms.Button() Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() + Me.lblInitStart = New System.Windows.Forms.Label() + Me.pbInitialStart = New System.Windows.Forms.PictureBox() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlTop.SuspendLayout() @@ -108,6 +110,7 @@ Partial Class frmKassenbuch CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Label2 @@ -623,6 +626,8 @@ Partial Class frmKassenbuch ' 'pnlMain ' + Me.pnlMain.Controls.Add(Me.pbInitialStart) + Me.pnlMain.Controls.Add(Me.lblInitStart) Me.pnlMain.Controls.Add(Me.lblFiskaltrustHeader) Me.pnlMain.Controls.Add(Me.picTSEOnline) Me.pnlMain.Controls.Add(Me.lblTSEOnline) @@ -663,11 +668,21 @@ Partial Class frmKassenbuch Me.pnlMain.Size = New System.Drawing.Size(778, 433) Me.pnlMain.TabIndex = 425 ' + 'lblFiskaltrustHeader + ' + Me.lblFiskaltrustHeader.AutoSize = True + Me.lblFiskaltrustHeader.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFiskaltrustHeader.Location = New System.Drawing.Point(611, 20) + Me.lblFiskaltrustHeader.Name = "lblFiskaltrustHeader" + Me.lblFiskaltrustHeader.Size = New System.Drawing.Size(65, 13) + Me.lblFiskaltrustHeader.TabIndex = 450 + Me.lblFiskaltrustHeader.Text = "Fiskaltrust" + ' 'picTSEOnline ' Me.picTSEOnline.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.picTSEOnline.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.picTSEOnline.Location = New System.Drawing.Point(614, 46) + Me.picTSEOnline.Location = New System.Drawing.Point(614, 42) Me.picTSEOnline.Name = "picTSEOnline" Me.picTSEOnline.Size = New System.Drawing.Size(27, 20) Me.picTSEOnline.TabIndex = 449 @@ -679,7 +694,7 @@ Partial Class frmKassenbuch Me.lblTSEOnline.AutoSize = True Me.lblTSEOnline.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblTSEOnline.ForeColor = System.Drawing.Color.Black - Me.lblTSEOnline.Location = New System.Drawing.Point(655, 50) + Me.lblTSEOnline.Location = New System.Drawing.Point(655, 46) Me.lblTSEOnline.Name = "lblTSEOnline" Me.lblTSEOnline.Size = New System.Drawing.Size(75, 16) Me.lblTSEOnline.TabIndex = 448 @@ -690,7 +705,7 @@ Partial Class frmKassenbuch ' Me.picNULLbeleg.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.picNULLbeleg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.picNULLbeleg.Location = New System.Drawing.Point(614, 72) + Me.picNULLbeleg.Location = New System.Drawing.Point(614, 93) Me.picNULLbeleg.Name = "picNULLbeleg" Me.picNULLbeleg.Size = New System.Drawing.Size(27, 20) Me.picNULLbeleg.TabIndex = 447 @@ -702,7 +717,7 @@ Partial Class frmKassenbuch Me.lblNullBeleg.AutoSize = True Me.lblNullBeleg.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblNullBeleg.ForeColor = System.Drawing.Color.Black - Me.lblNullBeleg.Location = New System.Drawing.Point(655, 76) + Me.lblNullBeleg.Location = New System.Drawing.Point(655, 97) Me.lblNullBeleg.Name = "lblNullBeleg" Me.lblNullBeleg.Size = New System.Drawing.Size(81, 16) Me.lblNullBeleg.TabIndex = 446 @@ -714,7 +729,7 @@ Partial Class frmKassenbuch Me.lblJahres.AutoSize = True Me.lblJahres.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblJahres.ForeColor = System.Drawing.Color.Black - Me.lblJahres.Location = New System.Drawing.Point(655, 154) + Me.lblJahres.Location = New System.Drawing.Point(655, 177) Me.lblJahres.Name = "lblJahres" Me.lblJahres.Size = New System.Drawing.Size(109, 16) Me.lblJahres.TabIndex = 445 @@ -726,7 +741,7 @@ Partial Class frmKassenbuch Me.lblMonats.AutoSize = True Me.lblMonats.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblMonats.ForeColor = System.Drawing.Color.Black - Me.lblMonats.Location = New System.Drawing.Point(655, 128) + Me.lblMonats.Location = New System.Drawing.Point(655, 151) Me.lblMonats.Name = "lblMonats" Me.lblMonats.Size = New System.Drawing.Size(112, 16) Me.lblMonats.TabIndex = 444 @@ -738,7 +753,7 @@ Partial Class frmKassenbuch Me.lblTages.AutoSize = True Me.lblTages.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblTages.ForeColor = System.Drawing.Color.Black - Me.lblTages.Location = New System.Drawing.Point(655, 102) + Me.lblTages.Location = New System.Drawing.Point(655, 125) Me.lblTages.Name = "lblTages" Me.lblTages.Size = New System.Drawing.Size(108, 16) Me.lblTages.TabIndex = 443 @@ -749,7 +764,7 @@ Partial Class frmKassenbuch ' Me.picJahres.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.picJahres.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.picJahres.Location = New System.Drawing.Point(614, 150) + Me.picJahres.Location = New System.Drawing.Point(614, 173) Me.picJahres.Name = "picJahres" Me.picJahres.Size = New System.Drawing.Size(27, 20) Me.picJahres.TabIndex = 442 @@ -760,7 +775,7 @@ Partial Class frmKassenbuch ' Me.picMonats.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.picMonats.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.picMonats.Location = New System.Drawing.Point(614, 124) + Me.picMonats.Location = New System.Drawing.Point(614, 147) Me.picMonats.Name = "picMonats" Me.picMonats.Size = New System.Drawing.Size(27, 20) Me.picMonats.TabIndex = 441 @@ -771,7 +786,7 @@ Partial Class frmKassenbuch ' Me.picTages.BackgroundImage = Global.SDL.My.Resources.Resources.ok Me.picTages.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.picTages.Location = New System.Drawing.Point(614, 98) + Me.picTages.Location = New System.Drawing.Point(614, 121) Me.picTages.Name = "picTages" Me.picTages.Size = New System.Drawing.Size(27, 20) Me.picTages.TabIndex = 440 @@ -1010,15 +1025,28 @@ Partial Class frmKassenbuch Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' - 'lblFiskaltrustHeader + 'lblInitStart ' - Me.lblFiskaltrustHeader.AutoSize = True - Me.lblFiskaltrustHeader.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblFiskaltrustHeader.Location = New System.Drawing.Point(611, 20) - Me.lblFiskaltrustHeader.Name = "lblFiskaltrustHeader" - Me.lblFiskaltrustHeader.Size = New System.Drawing.Size(65, 13) - Me.lblFiskaltrustHeader.TabIndex = 450 - Me.lblFiskaltrustHeader.Text = "Fiskaltrust" + Me.lblInitStart.AutoSize = True + Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblInitStart.ForeColor = System.Drawing.Color.Black + Me.lblInitStart.Location = New System.Drawing.Point(655, 71) + Me.lblInitStart.Name = "lblInitStart" + Me.lblInitStart.Size = New System.Drawing.Size(70, 16) + Me.lblInitStart.TabIndex = 451 + Me.lblInitStart.Text = "Initial Start " + Me.lblInitStart.Visible = False + ' + 'pbInitialStart + ' + Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.pbInitialStart.Location = New System.Drawing.Point(614, 67) + Me.pbInitialStart.Name = "pbInitialStart" + Me.pbInitialStart.Size = New System.Drawing.Size(27, 20) + Me.pbInitialStart.TabIndex = 452 + Me.pbInitialStart.TabStop = False + Me.pbInitialStart.Visible = False ' 'frmKassenbuch ' @@ -1051,6 +1079,7 @@ Partial Class frmKassenbuch CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub @@ -1125,4 +1154,6 @@ Partial Class frmKassenbuch Friend WithEvents picTSEOnline As PictureBox Friend WithEvents lblTSEOnline As Label Friend WithEvents lblFiskaltrustHeader As Label + Friend WithEvents pbInitialStart As PictureBox + Friend WithEvents lblInitStart As Label End Class diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 802b94c2..211841ec 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -14,12 +14,17 @@ Public Class frmKassenbuch Dim loginAfterSeconds = 10 Public master_Kasse As Boolean = False Dim FMZOLL_SQL As New FMZOLL_SQL + Dim tagesabschlussIsSet As Boolean = False Dim monatsabschlussIsSet As Boolean = False Dim jahresabschlussIsSet As Boolean = False Dim NULLBelegIsCreated As Boolean = True + Dim InitialStartIsCreated As Boolean = True + Dim OutOfOrderIsCreated As Boolean = False Dim TSEIsOnline As Boolean = False + Dim isADMIN As Boolean = False + Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() @@ -65,7 +70,8 @@ Public Class frmKassenbuch If PERSONAL.ID = 274 Then master_Kasse = True If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "SIENER" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "DANIEL" Then - Button6.Visible = True + isADMIN = True + End If KennwortTime = Now initDgv() 'nur set @@ -93,29 +99,36 @@ Public Class frmKassenbuch End If + If isADMIN Then + Button6.Visible = True + End If End Sub - Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean) + Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) lblTSEOnline.Visible = True lblTages.Visible = True lblMonats.Visible = True lblJahres.Visible = True lblNullBeleg.Visible = True + lblInitStart.Visible = True + picJahres.Visible = True picMonats.Visible = True picTages.Visible = True picNULLbeleg.Visible = True picTSEOnline.Visible = True + pbInitialStart.Visible = True showPic(isOnline, picTSEOnline) showPic(tagesabschluss, picTages) showPic(monatsabschlussIsSet, picMonats) showPic(Jahresabschluss, picJahres) showPic(NULLBeleg, picNULLbeleg) + showPic(initialStart, pbInitialStart) End Sub @@ -196,14 +209,17 @@ Public Class frmKassenbuch End If - If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then + If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then + + resetFIskaltrust() + lbldailyCashboxClosing.Visible = True Button11.Visible = True Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) If tagesabschluss > 0 Then tagesabschlussIsSet = True - Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) If monatsabschluss > 0 Then monatsabschlussIsSet = True Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) @@ -212,6 +228,17 @@ Public Class frmKassenbuch NULLBelegIsCreated = False End If + If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then + + OutOfOrderIsCreated = True + + End If + + + If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then + InitialStartIsCreated = False + End If + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") @@ -219,24 +246,14 @@ Public Class frmKassenbuch TSEIsOnline = True End If - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated) + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) If Not NULLBelegIsCreated Then - lblWarning.Text = "" '"Es wurde noch kein NULL-Beleg über FT erstellt!" - btnBelegKunde.Enabled = False - btnBelegAusgang.Enabled = False - btnBelegEingang.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - btnStorno.Enabled = False + diasableBarverkauf("NULLBELEG") ElseIf tagesabschlussIsSet Then - lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" - btnBelegKunde.Enabled = False - btnBelegAusgang.Enabled = False - btnBelegEingang.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - btnStorno.Enabled = False + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") Else If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then btnBelegKunde.Enabled = True @@ -256,6 +273,36 @@ Public Class frmKassenbuch ' Label9.Text = PERSONAL.Name DataGridView2.ClearSelection() End Sub + + Private Sub diasableBarverkauf(status) + + Select Case status + Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde noch kein 0-Beleg über FT erstellt!" + Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" + Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" + End Select + + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + btnStorno.Enabled = False + + + End Sub + + Private Sub resetFIskaltrust() + + tagesabschlussIsSet = False + monatsabschlussIsSet = False + jahresabschlussIsSet = False + NULLBelegIsCreated = True + InitialStartIsCreated = True + OutOfOrderIsCreated = False + TSEIsOnline = False + + End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click searchdate = searchdate.AddMonths(1) initDate() @@ -1501,13 +1548,13 @@ Public Class frmKassenbuch If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then 'nur im Testsystem! - If Not cm_FT.Items.ContainsKey("bar") Then + If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If - If Not cm_FT.Items.ContainsKey("storno") Then + If Not cm_FT.Items.ContainsKey("storno") AndAlso isADMIN Then Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) @@ -1515,25 +1562,37 @@ Public Class frmKassenbuch End If - If Not cm_FT.Items.ContainsKey("null") Then + If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cm_FT.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If - If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet Then + If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet AndAlso Not OutOfOrderIsCreated Then Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(rmc) End If - If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet Then + If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet AndAlso Not OutOfOrderIsCreated Then Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(rmc) End If - If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet Then + If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet AndAlso Not OutOfOrderIsCreated Then Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(uta) @@ -1551,19 +1610,19 @@ Public Class frmKassenbuch cm_FT.Items.Add(ids) End If - If Not cm_FT.Items.ContainsKey("signatures") Then + If Not cm_FT.Items.ContainsKey("signatures") AndAlso isADMIN Then Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If - If Not cm_FT.Items.ContainsKey("action") Then + If Not cm_FT.Items.ContainsKey("action") AndAlso isADMIN Then Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If - If Not cm_FT.Items.ContainsKey("queueitem") Then + If Not cm_FT.Items.ContainsKey("queueitem") AndAlso isADMIN Then Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) @@ -1593,7 +1652,13 @@ Public Class frmKassenbuch If item.Name = "null" Then - If vbYes = MsgBox("Möchten Sie einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then + Dim info As String = "Möchten Sie einen 0-Beleg an die TSE schicken?" + + If NULLBelegIsCreated Then + info = "Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein 0-Beleg erstellt, sind Sie wirklich sicher?" + End If + + If vbYes = MsgBox(info, vbYesNoCancel) Then Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id) @@ -1611,6 +1676,47 @@ Public Class frmKassenbuch + ElseIf item.Name = "outoforder" Then + + + If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_OUTOFORDERBELEG() + init() + End If + + End If + + + ElseIf item.Name = "initialstart" Then + + + If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_INITIALSTARTBELEG() + init() + End If + + End If + + + ElseIf item.Name = "verbindungstest" Then Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") @@ -1623,7 +1729,7 @@ Public Class frmKassenbuch ElseIf item.Name = "storno" Then - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then @@ -1644,7 +1750,7 @@ Public Class frmKassenbuch ElseIf item.Name = "bar" Then - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then @@ -1676,58 +1782,75 @@ Public Class frmKassenbuch ElseIf item.Name = "monthly" Then - If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then + If Not monatsabschlussIsSet Then + If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - - End If - - End If - - - ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then - 'Nur DE - If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then - If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) If result <> "" Then MsgBox(client_chilkat.PrettyPrintJson(result)) - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - init() + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + End If - Else - MsgBox("nicht für AT-Kassen möglich!") + End If + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Monatsabschluss erstellt!") End If + ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then + 'Nur DE + + If Not tagesabschlussIsSet Then + + If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then + If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + init() + End If + Else + MsgBox("nicht für AT-Kassen möglich!") + End If + End If + + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") + + End If ElseIf item.Name = "yearly" Then - If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then + If Not jahresabschlussIsSet Then + + If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - If result <> "" Then + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + If result <> "" Then - MsgBox(client_chilkat.PrettyPrintJson(result)) + MsgBox(client_chilkat.PrettyPrintJson(result)) - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + + End If End If + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Jahresabschluss erstellt!") End If + ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then Dim result As String = "" diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index b735bd89..a70a0a39 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -362,20 +362,21 @@ Public Class frmNacherfassungLeihgeld ' QR_Image = Nothing Dim QR_CodeString As String = "" Dim LastJWS As String = "" + Dim isFiskaltrust As Boolean = False If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt Dim answer = "" Dim verarbeitet As Boolean = False If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS) + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") 'result.Wait() verarbeitet = result Else verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service End If - If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not TESTBUCHUNG Then KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) @@ -403,7 +404,7 @@ Public Class frmNacherfassungLeihgeld ' MsgBox("Programmfehler bei der digitalen Signatur.") Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX If KASSE.rksv_KassaGuid = "KASSE_01" Then BELEG.rksv_jws = Nothing From d397579b4f352f5c2f42d99e7b93ffc129df6831 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 11 Sep 2026 16:13:10 +0200 Subject: [PATCH 36/54] update --- SDL/kassenbuch/frmKassenbuch.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 211841ec..57484f9c 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -1679,7 +1679,7 @@ Public Class frmKassenbuch ElseIf item.Name = "outoforder" Then - If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then + If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) From 1034b6274755bb6a0a0609aa5036c89381c4d529 Mon Sep 17 00:00:00 2001 From: "m.ilhan" Date: Mon, 14 Sep 2026 14:59:01 +0200 Subject: [PATCH 37/54] =?UTF-8?q?L=C3=A4nderausschluss=20f=C3=BCr=20Urspru?= =?UTF-8?q?ngsland=20implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cVERAG_CustomsDeclarations.vb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb index 845fc7d1..909f6554 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb +++ b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb @@ -727,6 +727,12 @@ Public Class cVERAG_CustomsDeclarations p.zaParty_Role IN ('CZ','EX','EXP','EXPORTER','CONSIGNOR'))") & " WHERE z.za_ReleaseDate BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' + AND i.zaItem_OriginCountry NOT IN ( + 'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR', + 'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL', + 'PL','PT','RO','SK','SI','ES','SE', + 'CH','NO','IS','LI','XI' + ) AND EXISTS ( SELECT 1 FROM VERAG.dbo.tblGreendeal_CBAM_Trn t @@ -788,11 +794,19 @@ Public Class cVERAG_CustomsDeclarations Dim prefixes As HashSet(Of String) = New HashSet(Of String)(cbamHsCodes) + Dim excludedCountries As New HashSet(Of String) From { + "EU", "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", + "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", + "PL", "PT", "RO", "SK", "SI", "ES", "SE", + "CH", "NO", "IS", "LI", "XI" + } + Return Me.Items. Where(Function(it) Dim hs As String = If(it.zaItem_HSCode, "").Trim() If hs = "" Then Return False - ' linksseitiger Prefix-Abgleich + Dim origin As String = If(it.zaItem_OriginCountry, "").Trim().ToUpper() + If origin <> "" AndAlso excludedCountries.Contains(origin) Then Return False For Each p In prefixes If hs.StartsWith(p) Then Return True From aa2c495147839d122ccfc33376464691a089d163 Mon Sep 17 00:00:00 2001 From: "m.ilhan" Date: Mon, 14 Sep 2026 16:09:17 +0200 Subject: [PATCH 38/54] =?UTF-8?q?Bugfix:=20CBAM=20Summenbericht=E2=80=93?= =?UTF-8?q?=20Falsche=20Massenberechnung=20bei=20gemischten=20Zollanmeldun?= =?UTF-8?q?gen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + SDL/SDL.vbproj | 5935 ------------------------------------------------ 2 files changed, 1 insertion(+), 5935 deletions(-) delete mode 100644 SDL/SDL.vbproj diff --git a/.gitignore b/.gitignore index 5028f7b4..e00c93e4 100644 --- a/.gitignore +++ b/.gitignore @@ -262,3 +262,4 @@ __pycache__/ /VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente /VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj /SDL/SDL.vbproj +/SDL/SDL.vbproj diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj deleted file mode 100644 index a83a30e9..00000000 --- a/SDL/SDL.vbproj +++ /dev/null @@ -1,5935 +0,0 @@ - - - - - Debug - AnyCPU - {289BCD77-BC00-4BA1-95ED-A79176D99525} - WinExe - SDL.My.MyApplication - SDL - SDL - 512 - WindowsForms - v4.8 - - - true - ftp://ftps.verag.ag/g/ftp/programme/VERAGAddin/ - true - Web - true - Foreground - 7 - Days - false - false - true - http://localhost/SDL/ - true - publish.htm - 3 - 1.0.0.%2a - false - true - true - - - x64 - true - full - true - true - bin\Debug\ - SDL.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - false - - - - - AnyCPU - pdbonly - false - true - true - bin\Release\ - SDL.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - false - - - - - On - - - Text - - - Off - - - On - - - Resources\sdl_ico.ico - - - My Project\app.manifest - - - 9DA3E6C8D44F11BA82886C378927AB1B3DD018FF - - - SDL_1_TemporaryKey.pfx - - - true - - - false - - - false - - - Sebastian.pfx - - - false - - - - - ..\..\..\Aviso\AVISO\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll - - - ..\..\..\Aviso\AVISO\packages\BouncyCastle.Cryptography.2.6.2\lib\net461\BouncyCastle.Cryptography.dll - - - False - ..\VERAG_PROG_ALLGEMEIN\bin\Debug\ChilkatDotNet47.dll - - - False - F:\PROGRAMMIERUNG\dll\closedxml\95\ClosedXML.dll - - - ..\..\..\AVISO\Aviso\packages\esendex-dotnet-sdk.3.8.0\lib\net35\com.esendex.sdk.dll - - - ..\..\..\Aviso\AVISO\packages\Common.Logging.3.4.1\lib\net40\Common.Logging.dll - - - ..\..\..\Aviso\AVISO\packages\Common.Logging.Core.3.4.1\lib\net40\Common.Logging.Core.dll - - - False - ..\..\..\dll\SharpSSH\DiffieHellman.dll - - - False - F:\PROGRAMMIERUNG\dll\OpenXML\v2720\DocumentFormat.OpenXml.dll - - - ..\..\..\DISPO\DISPO\packages\DS.Documents.DX.Windows.7.2.2\lib\net461\DS.Documents.DX.Windows.dll - - - ..\..\..\DISPO\DISPO\packages\DS.Documents.Imaging.7.2.2\lib\net461\DS.Documents.Imaging.dll - - - ..\..\..\DISPO\DISPO\packages\DS.Documents.Imaging.Windows.7.2.2\lib\net461\DS.Documents.Imaging.Windows.dll - - - ..\..\..\DISPO\DISPO\packages\DS.Documents.Pdf.7.2.2\lib\net461\DS.Documents.Pdf.dll - - - ..\..\..\AVISO\Aviso\packages\ExcelNumberFormat.1.0.10\lib\net20\ExcelNumberFormat.dll - - - ..\..\..\Aviso\AVISO\packages\fiskaltrust.interface.utilities.1.2.24060.71293\lib\net40\fiskaltrust.ifPOS.Utilities.dll - - - ..\..\..\Aviso\AVISO\packages\fiskaltrust.interface.1.3.45\lib\net461\fiskaltrust.interface.dll - - - ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Soap.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Common.dll - - - ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Http.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Http.dll - - - ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Soap.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Soap.dll - - - False - F:\PROGRAMMIERUNG\dll\Ghostscript.NET.dll - - - ..\..\..\..\RKSV DE\Gma.QrCodeNet.Encoding.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.AWT.WinForms.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Beans.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Charsets.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Cldrdata.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Corba.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Core.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Jdbc.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Localedata.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Management.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Media.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Misc.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Naming.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Nashorn.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Remoting.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Security.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.SwingAWT.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Text.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Tools.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Util.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.API.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Bind.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Crypto.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Parse.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Transform.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.WebServices.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.XPath.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.Runtime.dll - - - ..\packages\IKVM.8.0.5449.1\lib\IKVM.Runtime.JNI.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.barcodes.dll - - - ..\..\..\Aviso\AVISO\packages\itext.bouncy-castle-adapter.9.6.0\lib\net461\itext.bouncy-castle-adapter.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.bouncy-castle-connector.dll - - - ..\..\..\Aviso\AVISO\packages\itext.commons.9.6.0\lib\net461\itext.commons.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.forms.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.io.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.kernel.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.layout.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.pdfa.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.pdfua.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.sign.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.styledxmlparser.dll - - - ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.svg.dll - - - ..\..\..\dll\itextsharp.dll - - - ..\..\..\dll\itextsharp.pdfa.dll - - - ..\..\..\AVISO\Aviso\packages\LiveCharts.0.6.7.0\lib\net40\LiveCharts.dll - True - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.18.2.2\lib\net462\MESCIUS.ActiveReports.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Chart.18.0.4\lib\net462\MESCIUS.ActiveReports.Chart.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Chart.Win.18.0.4\lib\net462\MESCIUS.ActiveReports.Chart.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.DataProviders.3.1.2\lib\net462\MESCIUS.ActiveReports.Core.DataProviders.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.DataProviders.Excel.1.1.2\lib\net462\MESCIUS.ActiveReports.Core.DataProviders.Excel.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.Drawing.Gc.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.Drawing.Gc.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.Drawing.Gdi.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.Drawing.Gdi.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Drawing.Gc.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Drawing.Gc.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Drawing.Gdi.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Drawing.Gdi.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Excel.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Excel.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Html.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Html.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Image.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Image.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Pdf.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Pdf.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Pdf.Section.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Export.Pdf.Section.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Svg.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Svg.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Text.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Text.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Tiff.Section.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Export.Tiff.Section.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Word.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Word.Page.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Rdl.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Rdl.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Rendering.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Rendering.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Scripting.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Scripting.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Design.Win.18.2.2\lib\net462\MESCIUS.ActiveReports.Design.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Excel.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Excel.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Html.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Html.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Image.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Image.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Image.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Image.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Pdf.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Pdf.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Pdf.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Pdf.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Word.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Word.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Xml.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Xml.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.QueryDesigner.1.0.2\lib\net462\MESCIUS.ActiveReports.QueryDesigner.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Serializer.VS2022.18.2.2\lib\net472\MESCIUS.ActiveReports.Serializer.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.SpreadBuilder.2.2.0\lib\net462\MESCIUS.ActiveReports.SpreadBuilder.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Viewer.Common.18.2.2\lib\net462\MESCIUS.ActiveReports.Viewer.Common.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Viewer.Win.18.2.2\lib\net462\MESCIUS.ActiveReports.Viewer.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.18.2.2\lib\net462\MESCIUS.ActiveReports.Win.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.DataEngine.4.0.3\lib\net462\MESCIUS.Data.DataEngine.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.ExpressionInfo.4.0.3\lib\net462\MESCIUS.Data.ExpressionInfo.dll - - - ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.VBFunctionLib.4.0.3\lib\net462\MESCIUS.Data.VBFunctionLib.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll - - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.DependencyInjection.5.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.DependencyInjection.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.Abstractions.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Logging.5.0.0\lib\net461\Microsoft.Extensions.Logging.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Logging.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Options.5.0.0\lib\net461\Microsoft.Extensions.Options.dll - - - ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Primitives.5.0.0\lib\net461\Microsoft.Extensions.Primitives.dll - - - False - True - ..\..\..\..\..\..\..\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll - - - True - - - True - - - ..\..\..\Aviso\AVISO\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll - - - ..\..\..\dll\NumericBox.dll - - - False - ..\..\..\dll\SharpSSH\Org.Mentalis.Security.dll - - - - - ..\..\..\dll\QRCode.dll - - - ..\..\..\Aviso\AVISO\packages\QRCoder.1.8.0\lib\net40\QRCoder.dll - - - ..\..\..\dll\Registrierkasse.dll - - - False - ..\..\..\dll\RKAesIcm.dll - - - ..\packages\ZUGFeRD-csharp.17.4.0\lib\net48\s2industries.ZUGFeRD.dll - - - - ..\..\..\Aviso\AVISO\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - - - - - - - - ..\..\..\Aviso\AVISO\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll - - - - - - - ..\..\..\Aviso\AVISO\packages\System.Interactive.Async.4.0.0\lib\net461\System.Interactive.Async.dll - - - ..\..\..\Aviso\AVISO\packages\System.IO.4.3.0\lib\net462\System.IO.dll - True - True - - - ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll - True - True - - - ..\packages\System.IO.Packaging.4.5.0\lib\net46\System.IO.Packaging.dll - - - ..\..\..\Aviso\AVISO\packages\System.Linq.Async.4.0.0\lib\net461\System.Linq.Async.dll - - - - ..\..\..\Aviso\AVISO\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll - - - ..\..\..\Aviso\AVISO\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll - True - True - - - - ..\..\..\Aviso\AVISO\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\..\..\Aviso\AVISO\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll - True - True - - - ..\..\..\Aviso\AVISO\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll - - - - - - ..\..\..\Aviso\AVISO\packages\System.Security.AccessControl.6.0.1\lib\net461\System.Security.AccessControl.dll - - - ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll - True - True - - - ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll - True - True - - - ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll - True - True - - - ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll - True - True - - - ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Xml.6.0.2\lib\net461\System.Security.Cryptography.Xml.dll - - - ..\..\..\Aviso\AVISO\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll - - - - - ..\..\..\Aviso\AVISO\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll - - - - ..\..\..\Aviso\AVISO\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll - - - - - - - - - - - - - ..\..\..\AVISO\Aviso\packages\TAlex.WPF.Controls.2.0.1.0\lib\net40\TAlex.WPF.Controls.dll - True - - - ..\..\..\dll\SharpSSH\Tamir.SharpSSH.dll - - - - True - - - - ..\..\..\AVISO\Aviso\packages\WpfAnimatedGif.1.4.14\lib\net\WpfAnimatedGif.dll - True - - - ..\packages\ZUGFeRD.NET.1.0.1\lib\ZUGFeRD.NET.dll - - - - - - - - - - - - - - - - - - - AATEST.vb - - - Form - - - frmZollUserStat.vb - - - Form - - - frmKasseJournalNeuBerechnen.vb - - - Form - - - frmKasseAbschliessen.vb - - - Form - - - frmIDS_Stationen.vb - - - Form - - - frmZinsnachberechnung.vb - - - Form - - - frmKassenVerwaltung.vb - - - Form - - - rptKostenstellen.vb - - - Component - - - usrCntlAdministration.vb - - - UserControl - - - - - - UserControl2.vb - - - UserControl - - - frmBerufung.vb - - - Form - - - frmBerufungenSearch.vb - - - Form - - - frmBH_SollHaben.vb - - - Form - - - frmBU_Mahnlauf.vb - - - Form - - - frmBU_Mahnlauf_Ausgabe_Ladebalken.vb - - - Form - - - frmBU_Mahnlauf_Ausgabe.vb - - - Form - - - frmLeistundenFIBUKonten.vb - - - Form - - - frmMDM_BH_SollHaben.vb - - - Form - - - rptOP_Risikobericht.vb - - - Component - - - rptMahnung.vb - - - Component - - - usrCntlBH.vb - - - UserControl - - - - - - - - frmCheckliste.vb - - - Form - - - frmEoriLink.vb - - - Form - - - frmUidLink.vb - - - Form - - - rptCheckliste.vb - - - Component - - - subRptVM.vb - - - Component - - - - - - - - - - - - - - - - - - - - - - - - - - frmCreditSafeSearch.vb - - - Form - - - frmVAT_ATEZ.vb - - - Form - - - usrcntlCreditsafe.vb - - - UserControl - - - usrcntlVAT_ATEZ.vb - - - UserControl - - - - - Component - - - - - frmAbrechnungHandling.vb - - - Form - - - frmSendEmail.vb - - - Form - - - rptRechnungDruck_MDM.vb - - - Component - - - rptRechnungMDM_AnlagenDruck_Zinsennachberechnung.vb - - - Component - - - rptSammelRechnungAnlagenDruck_ProvSum.vb - - - Component - - - rptSammelRechnungAnlagenDruck_MDM.vb - - - Component - - - rptSammelRechnungAnlagenDruck_Leistungen.vb - - - Component - - - frmTIR.vb - - - Form - - - frmTIR_alt.vb - - - Form - - - rptTIR_alt.vb - - - Component - - - usrcntlTIR.vb - - - UserControl - - - rptTIR.vb - - - Component - - - usrcntlTIR_alt.vb - - - UserControl - - - frmVorauskasse_CBAM.vb - - - Form - - - frmVorauskasse_FremdwaehrungBerechnen.vb - - - Form - - - frmVorauskasse_EUSTBerechnen.vb - - - Form - - - subRptLaufzettelZollDE_Vorpapier.vb - - - Component - - - usrcntlCBAM_Checkliste.vb - - - UserControl - - - usrcntlCBAM_indirekt.vb - - - UserControl - - - usrcntlCBAM_Zertifikate.vb - - - UserControl - - - usrcntlCBAM.vb - - - UserControl - - - usrcntlEORI_Antrag.vb - - - UserControl - - - usrCntlQualitaetskontrolle.vb - - - UserControl - - - usrcntlEinfuhrverbot.vb - - - UserControl - - - usrcntLagervertrag.vb - - - UserControl - - - usrcntlVollmacht_MDM_NICHT_EU.vb - - - UserControl - - - usrcntlVollmacht_MDM_EU.vb - - - UserControl - - - usrcntlVollmacht_MDM_BHI.vb - - - UserControl - - - usrcntlVollmacht_DE_indirekt.vb - - - UserControl - - - usrcntlVollmacht_GB_indirekt.vb - - - UserControl - - - usrcntlVollmacht_GB_IE.vb - - - UserControl - - - usrcntlVollmacht_FA.vb - - - UserControl - - - usrCntlZollbeschau.vb - - - UserControl - - - frmdynMailvorlage.vb - - - Form - - - frmEssensbestellungen.vb - - - Form - - - frmEssensbestellungenAdministration.vb - - - Form - - - rptZahlungsbeleg.vb - - - Component - - - frmPOSTerminal.vb - - - Form - - - rptFrachtkostenberechnung.vb - - - Component - - - rptFiskalkunde.vb - - - Component - - - cKundenSearchVertrag.vb - - - Form - - - frmKundenSicherheiten_Details.vb - - - Form - - - frmGoMautBoxen_Bestellung.vb - - - Form - - - frmKundenlogin.vb - - - Form - - - frmKundenLinkedGruppe.vb - - - Form - - - frmKundenTOBBKdNr.vb - - - Form - - - frmKundenBesonderheiten_Add.vb - - - Form - - - frmKundenSyska_DatenÜbertragen.vb - - - Form - - - frmKundenUIDEORI_List.vb - - - Form - - - frmKundenZOLLVollmachten.vb - - - Form - - - frmKundenZOLLVollmachtenUebersicht.vb - - - Form - - - frmGoMautBoxen.vb - - - Form - - - frmNewsletter.vb - - - Form - - - frmKundeAnsprechpartnerTeams.vb - - - Form - - - usCntlCBAM_Status.vb - - - UserControl - - - usrcntlFiskaluebersicht.vb - - - UserControl - - - usrCntlKundenBesonderheiten.vb - - - UserControl - - - usrCntlKundenlogin.vb - - - UserControl - - - usrCntlKundenZollVollmachten.vb - - - UserControl - - - usrCntlCBAM.vb - - - UserControl - - - usrCntlIDSPreise.vb - - - UserControl - - - usrcntlVertraege.vb - - - UserControl - - - frmKundenSicherheiten.vb - - - Form - - - rptASFINAG_Anhang.vb - - - Component - - - frmBesuchsberichte.vb - - - Form - - - usrCntlBesuchsberichte.vb - - - UserControl - - - frmMDMLieferantenrechnungen.vb - - - Form - - - rptIDS_Anhang.vb - - - Component - - - rptPOS_ZNB.vb - - - Component - - - usrcntlFremdrechnungen.vb - - - UserControl - - - True - True - Resources.resx - - - rpt_3470.vb - - - Component - - - rptMWSTListe.vb - - - Component - - - usrCntlFakturierung.vb - - - UserControl - - - frmProvisionisverguetung.vb - - - Form - - - frmUSTVoffeneAntraege.vb - - - Form - - - frmPLOSE_ProductCodes.vb - - - Form - - - rptPLOSE_CustomerConsortio.vb - - - Component - - - rptASFINAG_TransaktionenSumary.vb - - - Component - - - usrCntlSDLLeistungenPLOSE_TRUCKMASTER.vb - - - UserControl - - - usrCntlSDLLeistungenPLOSE_MEDPASS.vb - - - UserControl - - - usrCntlSDLLeistungVERAGCardNEU.vb - - - UserControl - - - usrCntlMDMDatenverarbeitungAuswertungen_divers.vb - - - UserControl - - - frmATR.vb - - - Form - - - frmOriginalArchiv_ATR.vb - - - Form - - - subrptBriefSDL_PLOSE_truckmaster.vb - - - Component - - - subrptBriefSDL_VERAGCARD.vb - - - Component - - - subrptBriefSDL_PLOSE_MEDPASS.vb - - - Component - - - rptKontrolleLKW_TELOTEC.vb - - - Component - - - subrptKontrolleLKW_Telotec.vb - - - Component - - - rptSpeditionsberichtRg.vb - - - Component - - - UsrCntlEssensbestellungen.vb - - - UserControl - - - usrcntlGestellungsgarantien.vb - - - UserControl - - - - frmMDM_USTVAntrag.vb - - - Form - - - rptPLOSE_LaenderGesamt.vb - - - Component - - - rptPLOSE_Konsortium.vb - - - Component - - - - - usrCntlUSTV.vb - - - UserControl - - - usrCntlMSE_KonvertCSV.vb - - - UserControl - - - rptKontrolleLKW_NCTSTR.vb - - - Component - - - rptMRNDruck.vb - - - Component - - - rptAufschubabgleich.vb - - - Component - - - subrptKontrolleLKW_NCTSTR_Abrechnung.vb - - - Component - - - subrptKontrolleLKW_NCTSTR.vb - - - Component - - - frmNacherfassungEndEmpfaenger.vb - - - Form - - - ustCntlUSTV_ErstattungPosition .vb - - - UserControl - - - ustCntlUSTV_AntragPosition.vb - - - UserControl - - - True - True - Reference.map - - - True - True - Reference.map - - - usrCntlATLAS_AES.vb - - - UserControl - - - - usrCntlATLAS_EXGestellung.vb - - - UserControl - - - cATLAS_EZA_IMPORT.vb - - - Form - - - usrCntlATLAS_EZA.vb - - - UserControl - - - usrCntlATLAS_EZABestaetigungVorzeitigeAnmeldung.vb - - - UserControl - - - usrCntlATLAS_EZA_DV1.vb - - - UserControl - - - usrCntlATLAS_EZA_Adressen.vb - - - UserControl - - - usrCntlATLAS_EZA_Allg.vb - - - UserControl - - - usrCntlATLAS_EZA_Position.vb - - - UserControl - - - usrCntlATLAS_EZA_Positionen.vb - - - UserControl - - - usrCntlATLAS_AES_PassiveVeredelung.vb - - - UserControl - - - usrCntlATLAS_AES_Allg.vb - - - UserControl - - - usrCntlATLAS_AES_Adressen.vb - - - UserControl - - - usrCntlATLAS_AES_Position.vb - - - UserControl - - - usrCntlATLAS_AES_Positionen.vb - - - UserControl - - - frmDY_LogBuch.vb - - - Form - - - usrCntlATLAS_NCTS004.vb - - - UserControl - - - usrCntlATLAS_NCTS004_Allg.vb - - - UserControl - - - usrCntlATLAS_NCTS004_Adressen.vb - - - UserControl - - - usrCntlATLAS_NCTS004_Sicherheit.vb - - - UserControl - - - usrCntlATLAS_NCTS004_SicherheitPos.vb - - - UserControl - - - usrCntlATLAS_NCTS004_Position.vb - - - UserControl - - - usrCntlATLAS_NCTS004_Positionen.vb - - - UserControl - - - frmRoutenauswahl.vb - - - Form - - - frmRoutenAuswahlDetails.vb - - - Form - - - usrCntlATLAS_AnkunftsAnzeige.vb - - - UserControl - - - frmImportFromAVISOAnhaenge.vb - - - Form - - - usrCntlModaltrans_EXIM_Allg.vb - - - UserControl - - - usrCntlModaltrans_NCTS_Position.vb - - - UserControl - - - usrCntlModaltrans_NCTS_Positionen.vb - - - UserControl - - - usrCntlModaltrans_NCTS_Allg.vb - - - UserControl - - - usrCntlModaltrans_NCTS_Adressen.vb - - - UserControl - - - usrCntlATLAS_NCTS_Verschluesse.vb - - - UserControl - - - usrCntlATLAS_NCTS_Adressen.vb - - - UserControl - - - usrCntlATLAS_NCTS_Sicherheit.vb - - - UserControl - - - usrCntlATLAS_NCTS_Position.vb - - - UserControl - - - usrCntlATLAS_NCTS_Positionen.vb - - - UserControl - - - usrCntlATLAS_NCTS_Allg.vb - - - UserControl - - - usrCntlATLAS_NCTS_SicherheitPos.vb - - - UserControl - - - usrCntlATLAS_NCTS.vb - - - UserControl - - - frmDakosy_SelFirma.vb - - - Form - - - frmModaltransStammreferenz.vb - - - Form - - - frmStammreferenzPopup.vb - - - Form - - - frmDakosyStammreferenz.vb - - - Form - - - frmZollanmeldung.vb - - - Form - - - - frmDakosyStammreferenzVerwalten.vb - - - Form - - - usrCntlAdresseEZA.vb - - - UserControl - - - usrCntlAdresse.vb - - - UserControl - - - usrCntlDienstWoche.vb - - - UserControl - - - - - frmAbrechnungsMaskeEinzeln.vb - - - Form - - - frmAbrechnungsMaske.vb - - - Form - - - frmFaktAufschubHinzufügen.vb - - - Form - - - frmFaktAufschubSuche.vb - - - Form - - - frmFaktEmail.vb - - - Form - - - frmFaktSammelRgDrucken.vb - - - Form - - - frmRechnungenSuche.vb - - - Form - - - frmRechnungsdatum.vb - - - Form - - - rptSammelRechnungAnlagenDruck.vb - - - Component - - - rptSammelRechnungDruck.vb - - - Component - - - rptRechnungDruck.vb - - - Component - - - rptFaktRechnungAn.vb - - - Component - - - usrCntlFaktAdresse.vb - - - UserControl - - - usrCntlFaktAbrechnung.vb - - - UserControl - - - Form1.vb - - - Form - - - frmCMR.vb - - - Form - - - subrptLadungKurz.vb - - - Component - - - subrptLadung.vb - - - Component - - - rptCMR.vb - - - Component - - - usrcntlCMR.vb - - - UserControl - - - frmEinheitspapierVersandverfahren.vb - - - Form - - - frmEinheitspapier.vb - - - Form - - - frmSearchWT.vb - - - Form - - - rptEinheitspapier0735.vb - - - Component - - - rptEinheitspapier0736.vb - - - Component - - - rptEinheitspapier0778.vb - - - Component - - - rptEinheitspapier0777.vb - - - Component - - - usrCntlEinheitspapier0735.vb - - - UserControl - - - usrCntlEinheitspapier.vb - - - UserControl - - - usrcntlEinheitspapierPos0735.vb - - - UserControl - - - usrcntlEinheitspapierPos.vb - - - UserControl - - - frmAddFahrerdata.vb - - - Form - - - - frmVorauskasse_ZollBerechnen.vb - - - Form - - - rptLaufzettelZollDE.vb - - - Component - - - rptDispoHaftListe.vb - - - Component - - - rptVerpflichtungserklaerungNeu.vb - - - Component - - - subRptLaufzettelZollDE_ATZOLL.vb - - - Component - - - subrptPreislisten_Zoll.vb - - - Component - - - subrptPreislisten.vb - - - Component - - - rptPreislisten.vb - - - Component - - - rptVerpflichtungserklaerung.vb - - - Component - - - subRptLaufzettelZollDE_ATA.vb - - - Component - - - usrCntlSA_GestellungElemente.vb - - - UserControl - - - usrCnrlDispolisteElemente.vb - - - UserControl - - - usrCntlSA_Gestellung.vb - - - UserControl - - - usrcntlFiskalInfoschreiben.vb - - - UserControl - - - usrcntlRechnungsbestaetigung.vb - - - UserControl - - - usrcntlVerbundenheit.vb - - - UserControl - - - usrcntlVerzollungsunterlagen_Verbringsungsnachweis.vb - - - UserControl - - - usrcntlVerzollungsunterlagen_BAR.vb - - - UserControl - - - usrcntlVerzollungsunterlagen.vb - - - UserControl - - - usrcntlQS_UeDok.vb - - - UserControl - - - usrcntlImportaviso.vb - - - UserControl - - - usrcntlVUB.vb - - - UserControl - - - usrCntlVerpflichtungserklärungFahrer.vb - - - UserControl - - - usrcntlSonstigesPDF.vb - - - UserControl - - - usrcntlFormOhneFelder.vb - - - UserControl - - - usrcntlGestellungsgarantie.vb - - - UserControl - - - usrcntlVerzollungspreise.vb - - - UserControl - - - usrcntlCreditreformBoniAuskunft.vb - - - UserControl - - - usrCntlDispoliste.vb - - - UserControl - - - usrcntlVorauskasse.vb - - - UserControl - - - usrcntlVollmacht_VERAG_EXPORT.vb - - - UserControl - - - usrcntlVollmacht_ATILLA_EXPORT.vb - - - UserControl - - - usrcntlVollmacht_AT_Fiskal.vb - - - UserControl - - - usrcntlVollmacht_AT_EV.vb - - - UserControl - - - usrcntlVollmacht_AT.vb - - - UserControl - - - usrcntlVollmacht_DE_Fiskal.vb - - - UserControl - - - usrcntlVollmacht_DE.vb - - - UserControl - - - frmFormularvorlageSuche.vb - - - Form - - - frmFahrerDatenSuche.vb - - - Form - - - frmFormulare.vb - - - Form - - - frmChangePWD.vb - - - Form - - - frmDienstplan.vb - - - Form - - - frmGrayOut.vb - - - Form - - - frmNotify.vb - - - Form - - - frmSourceList.vb - - - Form - - - frmTableVorschau.vb - - - Form - - - frmVorauskasseFuellen.vb - - - Form - - - frmVerzollungspreiseFuellen.vb - - - Form - - - rptAESKey.vb - - - Component - - - rptEABeleg.vb - - - Component - - - rptKassenbuchKontenBericht.vb - - - Component - - - rptKassenbuchBuchhaltungDetails.vb - - - Component - - - rptKassenbuchBuchhaltung.vb - - - Component - - - rptKassenbuchLeihgeld2.vb - - - Component - - - rptKundenBeleg.vb - - - Component - - - rptLeihgeldBeleg.vb - - - Component - - - frmBelegNeu.vb - - - Form - - - frmFremdbeleg.vb - - - Form - - - frmKasseBerichtVonBis.vb - - - Form - - - frmBelegFinden.vb - - - Form - - - frmKassenbuchPWD.vb - - - Form - - - frmPreisText.vb - - - Form - - - frmPreis.vb - - - Form - - - frmKassenbuchSuche.vb - - - Form - - - rptKassenbuchBerichtSaldenBenutzer - Kopieren.vb - - - Component - - - rptKassenbuchBerichtSollHaben.vb - - - Component - - - rptKassenbuchBericht.vb - - - Component - - - usrcntlBelegLeistungEintrag.vb - - - UserControl - - - usrcntlBelegLeistungEintragPosition.vb - - - UserControl - - - rptKundeUebersicht.vb - - - Component - - - subRptAbfertigungen.vb - - - Component - - - subRptLeistungen.vb - - - Component - - - subRptBonitaetsverlauf.vb - - - Component - - - subRptAufschubdaten.vb - - - Component - - - subRptOfferte.vb - - - Component - - - frmAddLKW.vb - - - Form - - - frmBonitaet.vb - - - Form - - - frmBonitaetBearbeiten.vb - - - Form - - - frmBonitätsverlauf.vb - - - Form - - - frmEmailBenachrichtigung.vb - - - Form - - - frmKundenAufschubdatenBearbeiten.vb - - - Form - - - frmKundenChangeMail.vb - - - Form - - - frmKundenDatenblatt.vb - - - Form - - - frmKundenKontakteDetails.vb - - - Form - - - frmKundenUebersichtZollRgDetails.vb - - - Form - - - frmKundenUebersichtZOLLStatDetails.vb - - - Form - - - frmKundenZOLLOffertenSperre.vb - - - Form - - - frmKundenSucheUebersicht.vb - - - Form - - - frmLKW_AnhaengeDatenarchiv.vb - - - Form - - - frmNeuKundeFull.vb - - - Form - - - frmTeamsZuordnung.vb - - - Form - - - frmKundeTeamZuordnung.vb - - - Form - - - frmLKWDetails.vb - - - Form - - - frmOffertenBearbeiten.vb - - - Form - - - frmZollprogrammeDurchsuchen.vb - - - Form - - - usrCntlAufschubkonten.vb - - - UserControl - - - usrCntlKundeFiskaldaten.vb - - - UserControl - - - usrCntlKundenAvisoMailBenachrichtigung.vb - - - UserControl - - - usrCntlKundenKontakte.vb - - - UserControl - - - usrCntlKundenuebersicht.vb - - - UserControl - - - frmVorauskasse.vb - - - Form - - - frmSDLBestellungEintrag.vb - - - Form - - - frmMDMDatenverarbetiung.vb - - - Form - - - rptPLOSE_TransaktionenSumary.vb - - - Component - - - rptPLOSE_Anhang.vb - - - Component - - - frmSDLAbholung.vb - - - Form - - - frmSDLAbholungEintrag.vb - - - Form - - - rptIDS_TransaktionenSumary.vb - - - Component - - - rptIDS_Transaktionen.vb - - - Component - - - usrCntlSDLAbholung.vb - - - UserControl - - - - frmChangeLKW.vb - - - Form - - - frmFindNewVeragCard.vb - - - Form - - - usrCntlAllg.vb - - - UserControl - - - usrCntlSDLLeistungenMANAbgas.vb - - - UserControl - - - usrCntlSDLLeistungenPLOSE_CZ.vb - - - UserControl - - - usrCntlSDLLeistungenPLOSE_IT.vb - - - UserControl - - - usrCntlSDLLeistungPLOSE.vb - - - UserControl - - - usrCntlSDLLeistungHUGO.vb - - - UserControl - - - usrcntlKundeBearbeitenFull.vb - - - UserControl - - - usrCntlOfferte.vb - - - UserControl - - - frmCardDetails.vb - - - Form - - - frmNewData.vb - - - Form - - - frmVERAGCardDetails.vb - - - Form - - - frmVERAGCardNew.vb - - - Form - - - usrCntlSDLLeistungVERAGCard.vb - - - UserControl - - - usrCntlKartenDaten.vb - - - UserControl - - - usrCntlDatenDetails.vb - - - UserControl - - - usrCntlLkwListe.vb - - - UserControl - - - usrCntlMDMAuswertungen.vb - - - UserControl - - - usrcntlNewDataLKW.vb - - - UserControl - - - usrCntlVERAGCard.vb - - - UserControl - - - frmInfo.vb - - - Form - - - Form - - - frmMain.vb - Form - - - Form2.vb - - - Form - - - Form3.vb - - - Form - - - frmLogin.vb - - - Form - - - frmKundenUebersichtZollRg.vb - - - Form - - - usrCntlWoelfl_IM_CSVRg.vb - - - UserControl - - - frmPopUpInfo.vb - - - Form - - - frmPostEinschreiben.vb - - - Form - - - - - subrptBriefSDL_PLOSE.vb - - - Component - - - subrptBriefSDL_PLOSE_CZ.vb - - - Component - - - subrptBriefSDL_HUGO.vb - - - Component - - - subrptBriefSDL_PLOSE_IT.vb - - - Component - - - subrptBriefSDL_WOELFL.vb - - - Component - - - subrptBriefSDL_UTA.vb - - - Component - - - subrptBriefSDL_SI.vb - - - Component - - - subrptBriefSDL_PL.vb - - - Component - - - subrptBriefSDL_MULTIBOX.vb - - - Component - - - subrptBriefSDL_MSE.vb - - - Component - - - subrptBriefSDL_IT.vb - - - Component - - - subrptBriefSDL_FR.vb - - - Component - - - subrptBriefSDL_IDS.vb - - - Component - - - subrptBriefSDL_FREJUS.vb - - - Component - - - subrptBriefSDL_DE.vb - - - Component - - - subrptBriefSDL_CZ.vb - - - Component - - - subrptBriefSDL_AT.vb - - - Component - - - rptAuswertungUeberfaelligeBestellungen.vb - - - Component - - - rptSDLBrief.vb - - - Component - - - rptSDLAbrechnungsblatt.vb - - - Component - - - rptSDLBenachrichtigungUTA.vb - - - Component - - - rptSDLBenachrichtigungMSE.vb - - - Component - - - rptSDLBenachrichtigungIDS.vb - - - Component - - - rptSDLBenachrichtigungPL.vb - - - Component - - - rptSDLBenachrichtigungCZ.vb - - - Component - - - rptSDLBenachrichtigungDE.vb - - - Component - - - rptLeereOBU.vb - - - Component - - - subrptAuswertungUeberfaelligeBestellungen.vb - - - Component - - - rptKontrolleLKW_Dakosy.vb - - - Component - - - rptKontrolleLKW_Zolaris.vb - - - Component - - - rptTGestellungskontrolleDY.vb - - - Component - - - subrptKontrolleLKW_Dakosy.vb - - - Component - - - subrptKontrolleLKW_Zolaris.vb - - - Component - - - True - True - Reference.svcmap - - - True - True - Reference.svcmap - - - frmSMS.vb - - - Form - - - frmSendSMS.vb - - - Form - - - usrCntlSMS.vb - - - UserControl - - - frmATLAS_zbPos.vb - - - Form - - - frmNacherfassungImport.vb - - - Form - - - frmNacherfassungNEU.vb - - - Form - - - frmNacherfassungBelegNrEingabe.vb - - - Form - - - frmNacherfassungCRNEingabe.vb - - - Form - - - frmNacherfassungLeihgeld.vb - - - Form - - - frmNacherfassungVorkosten.vb - - - Form - - - frmNacherfassungZuckerMRNEingabe.vb - - - Form - - - frmQRCode.vb - - - Form - - - - frmPrintLayout.vb - - - Form - - - frmSearchKunde.vb - - - Form - - - frmBelegAddPos.vb - - - Form - - - frmKassenbuch.vb - - - Form - - - frmSecureLoginKassenbuch.vb - - - Form - - - - - frmCryptTest.vb - - - Form - - - - frmKundenblatt.vb - - - Form - - - frmKundenSuche.vb - - - Form - - - frmKundenUebersichtZOLL.vb - - - Form - - - frmNeuerKunde.vb - - - Form - - - frmSDLDetails.vb - - - Form - - - - usrCntlSDLLeistungMautAT.vb - - - UserControl - - - usrCntlSDLLeistungenCZ.vb - - - UserControl - - - usrCntlSDLLeistungenDUOBOX.vb - - - UserControl - - - usrCntlSDLLeistungenECOTAX.vb - - - UserControl - - - usrCntlSDLLeistungenFR.vb - - - UserControl - - - usrCntlSDLLeistungenFREJUS.vb - - - UserControl - - - usrCntlSDLLeistungenIT.vb - - - UserControl - - - usrCntlSDLLeistungenMotorWayMaut.vb - - - UserControl - - - usrCntlSDLLeistungenMSE.vb - - - UserControl - - - usrCntlSDLLeistungenPL.vb - - - UserControl - - - usrCntlSDLLeistungenSI.vb - - - UserControl - - - usrCntlSDLLeistungenWOELFL.vb - - - UserControl - - - usrCntlSDLLeistungMautDE.vb - - - UserControl - - - usrCntlSDLLeistungenUTA.vb - - - UserControl - - - usrCntlLKW.vb - - - UserControl - - - usrCntlSDLLeistungenIDS.vb - - - UserControl - - - - True - Application.myapp - True - - - True - Settings.settings - True - - - usrCntlKundeDetails.vb - - - UserControl - - - usrCntlKunden.vb - - - UserControl - - - rptAuswertungMWSTOffeneAntraegeMitVorauszahlung.vb - - - Component - - - rptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb - - - Component - - - subrptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb - - - Component - - - rptKontrolleLKW.vb - - - Component - - - rptGestellungskontrolleEZOLL.vb - - - Component - - - rptTGestellungskontrolle.vb - - - Component - - - subrptKontrolleLKW.vb - - - Component - - - frmShowData.vb - - - Form - - - usrCntlSeriendruck.vb - - - UserControl - - - frmSpeditionsbuchSuche.vb - - - Form - - - frmPosNr.vb - - - Form - - - rptSpeditionsbericht_HandlingAussenstellen.vb - - - Component - - - rptSpeditionsbericht_Gelangensbestaetigung.vb - - - Component - - - rptSpeditionsberichtKdSpez.vb - - - Component - - - rptSpeditionsberichtKunde.vb - - - Component - - - rptSpeditionsbericht.vb - - - Component - - - usrCntlSpeditionsBuchSuche.vb - - - UserControl - - - usrCntlWelcome.vb - - - UserControl - - - True - True - Reference.map - - - True - True - Reference.map - - - True - True - Reference.map - - - usrCntlMIC_NCTS.vb - - - UserControl - - - usrCntlModaltrans_NCTS.vb - - - UserControl - - - usrCntlSGS_NCTS.vb - - - UserControl - - - - usrCntlTCeZOLL_EZA_Allg.vb - - - UserControl - - - usrCntlTCeZOLL_EZA.vb - - - UserControl - - - frmTCZollanmeldung.vb - - - Form - - - frmAddArtikelATLAS.vb - - - Form - - - frmFiskalSchreiben.vb - - - Form - - - frmLKWEingetroffen nach.vb - - - Form - - - frmStatusFSSAtlas.vb - - - Form - - - frmZollBrgBuchungenFremd.vb - - - Form - - - frmZolltarif.vb - - - Form - - - rptAbgabenliste.vb - - - Component - - - rptFiskalvertretungVorschau.vb - - - Component - - - usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb - - - UserControl - - - usrCntlAuswertungenCBAM_DE.vb - - - UserControl - - - usrCntlAuswertungenFiskalvertretung_4200.vb - - - UserControl - - - usrCntlAuswertungenAufschub_Abgabenliste.vb - - - UserControl - - - usrCntlAuswertungenEV_Veranlagungen.vb - - - UserControl - - - usrCntlAuswertungenFiskal_IntrastatMeldung.vb - - - UserControl - - - usrCntlAuswertungenUIDPruefung.vb - - - UserControl - - - usrCntlAuswertungenKunden_Auftragsrueckgang.vb - - - UserControl - - - usrCntlBrgBuchungenVERAG.vb - - - UserControl - - - usrCntlBrgBuchungenFremd.vb - - - UserControl - - - usrCntlZollArtikel.vb - - - UserControl - - - usrCntlZOLLAuswertungen.vb - - - UserControl - - - usrCntlZollHauptmenue.vb - - - UserControl - - - - - AATEST.vb - Designer - - - frmZollUserStat.vb - - - frmKasseJournalNeuBerechnen.vb - - - frmKasseAbschliessen.vb - - - frmIDS_Stationen.vb - - - frmZinsnachberechnung.vb - - - frmKassenVerwaltung.vb - - - rptKostenstellen.vb - - - usrCntlAdministration.vb - - - UserControl2.vb - - - frmBerufung.vb - - - frmBerufungenSearch.vb - - - frmBH_SollHaben.vb - - - frmBU_Mahnlauf.vb - - - frmBU_Mahnlauf_Ausgabe_Ladebalken.vb - - - frmBU_Mahnlauf_Ausgabe.vb - - - frmLeistundenFIBUKonten.vb - - - frmMDM_BH_SollHaben.vb - - - rptOP_Risikobericht.vb - - - rptMahnung.vb - - - usrCntlBH.vb - - - frmCheckliste.vb - - - frmEoriLink.vb - - - frmUidLink.vb - - - rptCheckliste.vb - - - - subRptVM.vb - - - frmCreditSafeSearch.vb - - - frmVAT_ATEZ.vb - - - usrcntlCreditsafe.vb - - - usrcntlVAT_ATEZ.vb - - - frmAbrechnungHandling.vb - - - frmSendEmail.vb - - - rptRechnungDruck_MDM.vb - Designer - - - rptRechnungMDM_AnlagenDruck_Zinsennachberechnung.vb - - - rptSammelRechnungAnlagenDruck_ProvSum.vb - - - rptSammelRechnungAnlagenDruck_MDM.vb - - - rptSammelRechnungAnlagenDruck_Leistungen.vb - - - frmTIR.vb - - - frmTIR_alt.vb - - - rptTIR_alt.vb - - - usrcntlTIR.vb - - - rptTIR.vb - - - usrcntlTIR_alt.vb - - - frmVorauskasse_CBAM.vb - - - frmVorauskasse_FremdwaehrungBerechnen.vb - - - frmVorauskasse_EUSTBerechnen.vb - - - subRptLaufzettelZollDE_Vorpapier.vb - - - usrcntlCBAM_Checkliste.vb - - - usrcntlCBAM_indirekt.vb - - - usrcntlCBAM_Zertifikate.vb - - - usrcntlCBAM.vb - - - usrcntlEORI_Antrag.vb - - - usrCntlQualitaetskontrolle.vb - - - usrcntlEinfuhrverbot.vb - - - usrcntLagervertrag.vb - - - usrcntlVollmacht_MDM_NICHT_EU.vb - - - usrcntlVollmacht_MDM_EU.vb - - - usrcntlVollmacht_MDM_BHI.vb - - - usrcntlVollmacht_DE_indirekt.vb - - - usrcntlVollmacht_GB_indirekt.vb - - - usrcntlVollmacht_GB_IE.vb - - - usrcntlVollmacht_FA.vb - - - usrCntlZollbeschau.vb - - - frmdynMailvorlage.vb - - - frmEssensbestellungen.vb - - - frmEssensbestellungenAdministration.vb - Designer - - - rptZahlungsbeleg.vb - - - frmPOSTerminal.vb - - - rptFrachtkostenberechnung.vb - - - rptFiskalkunde.vb - - - cKundenSearchVertrag.vb - - - frmKundenSicherheiten_Details.vb - - - frmGoMautBoxen_Bestellung.vb - - - frmKundenlogin.vb - - - frmKundenLinkedGruppe.vb - - - frmKundenTOBBKdNr.vb - - - frmKundenBesonderheiten_Add.vb - - - frmKundenSyska_DatenÜbertragen.vb - - - frmKundenUIDEORI_List.vb - - - frmKundenZOLLVollmachten.vb - - - frmKundenZOLLVollmachtenUebersicht.vb - - - frmGoMautBoxen.vb - - - frmNewsletter.vb - - - frmKundeAnsprechpartnerTeams.vb - - - usCntlCBAM_Status.vb - - - usrcntlFiskaluebersicht.vb - - - usrCntlKundenBesonderheiten.vb - - - usrCntlKundenlogin.vb - - - usrCntlKundenZollVollmachten.vb - - - usrCntlCBAM.vb - - - usrCntlIDSPreise.vb - - - usrcntlVertraege.vb - - - frmKundenSicherheiten.vb - - - rptASFINAG_Anhang.vb - - - frmBesuchsberichte.vb - - - usrCntlBesuchsberichte.vb - - - frmMDMLieferantenrechnungen.vb - - - frmPLOSE_ProductCodes.vb - - - rptIDS_Anhang.vb - - - rptPOS_ZNB.vb - - - rptPLOSE_CustomerConsortio.vb - - - rptASFINAG_TransaktionenSumary.vb - - - usrCntlSDLLeistungenPLOSE_TRUCKMASTER.vb - - - usrCntlSDLLeistungenPLOSE_MEDPASS.vb - - - usrCntlSDLLeistungVERAGCardNEU.vb - - - usrcntlFremdrechnungen.vb - - - usrCntlMDMDatenverarbeitungAuswertungen_divers.vb - - - - frmATR.vb - - - frmOriginalArchiv_ATR.vb - - - subrptBriefSDL_PLOSE_truckmaster.vb - - - subrptBriefSDL_VERAGCARD.vb - - - subrptBriefSDL_PLOSE_MEDPASS.vb - - - rpt_3470.vb - - - rptMWSTListe.vb - - - rptKontrolleLKW_TELOTEC.vb - - - subrptKontrolleLKW_Telotec.vb - - - usrCntlFakturierung.vb - - - frmProvisionisverguetung.vb - - - rptSpeditionsberichtRg.vb - - - UsrCntlEssensbestellungen.vb - - - usrcntlGestellungsgarantien.vb - - - frmMDM_USTVAntrag.vb - - - rptPLOSE_LaenderGesamt.vb - - - rptPLOSE_Konsortium.vb - - - frmUSTVoffeneAntraege.vb - - - usrCntlUSTV.vb - - - usrCntlMSE_KonvertCSV.vb - - - rptKontrolleLKW_NCTSTR.vb - - - rptMRNDruck.vb - - - rptAufschubabgleich.vb - - - subrptKontrolleLKW_NCTSTR_Abrechnung.vb - - - subrptKontrolleLKW_NCTSTR.vb - - - frmNacherfassungEndEmpfaenger.vb - - - ustCntlUSTV_ErstattungPosition .vb - - - ustCntlUSTV_AntragPosition.vb - - - usrCntlATLAS_AES.vb - - - usrCntlATLAS_EXGestellung.vb - - - cATLAS_EZA_IMPORT.vb - - - usrCntlATLAS_EZA.vb - - - usrCntlATLAS_EZABestaetigungVorzeitigeAnmeldung.vb - - - usrCntlATLAS_EZA_DV1.vb - - - usrCntlATLAS_EZA_Adressen.vb - - - usrCntlATLAS_EZA_Allg.vb - - - usrCntlATLAS_EZA_Position.vb - - - usrCntlATLAS_EZA_Positionen.vb - - - usrCntlATLAS_AES_PassiveVeredelung.vb - - - usrCntlATLAS_AES_Allg.vb - - - usrCntlATLAS_AES_Adressen.vb - - - usrCntlATLAS_AES_Position.vb - - - usrCntlATLAS_AES_Positionen.vb - - - frmDY_LogBuch.vb - - - usrCntlATLAS_NCTS004.vb - - - usrCntlATLAS_NCTS004_Allg.vb - - - usrCntlATLAS_NCTS004_Adressen.vb - - - usrCntlATLAS_NCTS004_Sicherheit.vb - - - usrCntlATLAS_NCTS004_SicherheitPos.vb - - - usrCntlATLAS_NCTS004_Position.vb - - - usrCntlATLAS_NCTS004_Positionen.vb - - - frmRoutenauswahl.vb - - - frmRoutenAuswahlDetails.vb - - - usrCntlATLAS_AnkunftsAnzeige.vb - - - frmImportFromAVISOAnhaenge.vb - - - usrCntlModaltrans_EXIM_Allg.vb - - - usrCntlModaltrans_NCTS_Position.vb - - - usrCntlModaltrans_NCTS_Positionen.vb - - - usrCntlModaltrans_NCTS_Allg.vb - - - usrCntlModaltrans_NCTS_Adressen.vb - - - usrCntlATLAS_NCTS_Verschluesse.vb - - - usrCntlATLAS_NCTS_Adressen.vb - - - usrCntlATLAS_NCTS_Sicherheit.vb - - - usrCntlATLAS_NCTS_Position.vb - - - usrCntlATLAS_NCTS_Positionen.vb - - - usrCntlATLAS_NCTS_Allg.vb - - - usrCntlATLAS_NCTS_SicherheitPos.vb - - - usrCntlATLAS_NCTS.vb - - - frmDakosy_SelFirma.vb - - - frmModaltransStammreferenz.vb - - - frmStammreferenzPopup.vb - - - frmDakosyStammreferenz.vb - - - frmZollanmeldung.vb - - - frmDakosyStammreferenzVerwalten.vb - - - usrCntlAdresseEZA.vb - - - usrCntlAdresse.vb - - - usrCntlDienstWoche.vb - - - frmAbrechnungsMaskeEinzeln.vb - - - frmAbrechnungsMaske.vb - - - frmFaktAufschubHinzufügen.vb - - - frmFaktAufschubSuche.vb - - - frmFaktEmail.vb - - - frmFaktSammelRgDrucken.vb - - - frmRechnungenSuche.vb - - - frmRechnungsdatum.vb - - - rptSammelRechnungAnlagenDruck.vb - - - rptSammelRechnungDruck.vb - - - rptRechnungDruck.vb - Designer - - - rptFaktRechnungAn.vb - - - usrCntlFaktAdresse.vb - - - usrCntlFaktAbrechnung.vb - - - Form1.vb - - - frmCMR.vb - - - subrptLadungKurz.vb - - - subrptLadung.vb - - - rptCMR.vb - - - usrcntlCMR.vb - - - frmEinheitspapierVersandverfahren.vb - - - frmEinheitspapier.vb - - - frmSearchWT.vb - - - rptEinheitspapier0735.vb - - - rptEinheitspapier0736.vb - - - rptEinheitspapier0778.vb - - - rptEinheitspapier0777.vb - - - usrCntlEinheitspapier0735.vb - - - usrCntlEinheitspapier.vb - - - usrcntlEinheitspapierPos0735.vb - - - usrcntlEinheitspapierPos.vb - - - frmAddFahrerdata.vb - - - frmVorauskasse_ZollBerechnen.vb - - - rptLaufzettelZollDE.vb - - - rptDispoHaftListe.vb - - - rptVerpflichtungserklaerungNeu.vb - - - subRptLaufzettelZollDE_ATZOLL.vb - - - subrptPreislisten_Zoll.vb - - - subrptPreislisten.vb - - - rptPreislisten.vb - - - rptVerpflichtungserklaerung.vb - Designer - - - subRptLaufzettelZollDE_ATA.vb - - - usrCntlSA_GestellungElemente.vb - - - usrCnrlDispolisteElemente.vb - - - usrCntlSA_Gestellung.vb - - - usrcntlFiskalInfoschreiben.vb - - - usrcntlRechnungsbestaetigung.vb - - - usrcntlVerbundenheit.vb - - - usrcntlVerzollungsunterlagen_Verbringsungsnachweis.vb - - - usrcntlVerzollungsunterlagen_BAR.vb - - - usrcntlVerzollungsunterlagen.vb - - - usrcntlQS_UeDok.vb - - - usrcntlImportaviso.vb - - - usrcntlVUB.vb - - - usrCntlVerpflichtungserklärungFahrer.vb - - - usrcntlSonstigesPDF.vb - - - usrcntlFormOhneFelder.vb - - - usrcntlGestellungsgarantie.vb - - - usrcntlVerzollungspreise.vb - - - usrcntlCreditreformBoniAuskunft.vb - - - usrCntlDispoliste.vb - - - usrcntlVorauskasse.vb - - - usrcntlVollmacht_VERAG_EXPORT.vb - - - usrcntlVollmacht_ATILLA_EXPORT.vb - - - usrcntlVollmacht_AT_Fiskal.vb - - - usrcntlVollmacht_AT_EV.vb - - - usrcntlVollmacht_AT.vb - - - usrcntlVollmacht_DE_Fiskal.vb - - - usrcntlVollmacht_DE.vb - - - frmFormularvorlageSuche.vb - - - frmFahrerDatenSuche.vb - - - frmFormulare.vb - - - frmChangePWD.vb - - - frmDienstplan.vb - - - frmGrayOut.vb - - - frmNotify.vb - - - frmSourceList.vb - - - frmTableVorschau.vb - - - frmVorauskasseFuellen.vb - - - frmVerzollungspreiseFuellen.vb - - - rptAESKey.vb - - - rptEABeleg.vb - - - rptKassenbuchKontenBericht.vb - - - rptKassenbuchBuchhaltungDetails.vb - - - rptKassenbuchBuchhaltung.vb - - - rptKassenbuchLeihgeld2.vb - - - rptKundenBeleg.vb - - - rptLeihgeldBeleg.vb - - - frmBelegNeu.vb - - - frmFremdbeleg.vb - - - frmKasseBerichtVonBis.vb - - - frmBelegFinden.vb - - - frmKassenbuchPWD.vb - - - frmPreisText.vb - - - frmPreis.vb - - - frmKassenbuchSuche.vb - - - rptKassenbuchBerichtSaldenBenutzer - Kopieren.vb - - - rptKassenbuchBerichtSollHaben.vb - - - rptKassenbuchBericht.vb - - - usrcntlBelegLeistungEintrag.vb - - - usrcntlBelegLeistungEintragPosition.vb - - - rptKundeUebersicht.vb - - - subRptAbfertigungen.vb - - - subRptLeistungen.vb - - - subRptBonitaetsverlauf.vb - - - subRptAufschubdaten.vb - - - subRptOfferte.vb - - - frmAddLKW.vb - - - frmBonitaet.vb - - - frmBonitaetBearbeiten.vb - - - frmBonitätsverlauf.vb - - - frmEmailBenachrichtigung.vb - - - frmKundenAufschubdatenBearbeiten.vb - - - frmKundenChangeMail.vb - - - frmKundenDatenblatt.vb - - - frmKundenKontakteDetails.vb - - - frmKundenUebersichtZollRgDetails.vb - - - frmKundenUebersichtZOLLStatDetails.vb - - - frmKundenZOLLOffertenSperre.vb - - - frmKundenSucheUebersicht.vb - - - frmLKW_AnhaengeDatenarchiv.vb - - - frmNeuKundeFull.vb - - - frmTeamsZuordnung.vb - - - frmKundeTeamZuordnung.vb - - - frmLKWDetails.vb - - - frmOffertenBearbeiten.vb - - - frmZollprogrammeDurchsuchen.vb - - - usrCntlAufschubkonten.vb - - - usrCntlKundeFiskaldaten.vb - - - usrCntlKundenAvisoMailBenachrichtigung.vb - - - usrCntlKundenKontakte.vb - - - usrCntlKundenuebersicht.vb - Designer - - - frmVorauskasse.vb - - - frmSDLBestellungEintrag.vb - - - frmMDMDatenverarbetiung.vb - - - rptPLOSE_TransaktionenSumary.vb - - - rptPLOSE_Anhang.vb - - - frmSDLAbholung.vb - - - frmSDLAbholungEintrag.vb - - - rptIDS_TransaktionenSumary.vb - - - rptIDS_Transaktionen.vb - - - usrCntlSDLAbholung.vb - - - frmChangeLKW.vb - - - frmFindNewVeragCard.vb - - - usrCntlAllg.vb - - - usrCntlSDLLeistungenMANAbgas.vb - - - usrCntlSDLLeistungenPLOSE_CZ.vb - - - usrCntlSDLLeistungenPLOSE_IT.vb - - - usrCntlSDLLeistungPLOSE.vb - - - usrCntlSDLLeistungHUGO.vb - - - usrcntlKundeBearbeitenFull.vb - - - usrCntlOfferte.vb - - - frmCardDetails.vb - - - frmNewData.vb - - - frmVERAGCardDetails.vb - - - frmVERAGCardNew.vb - - - usrCntlSDLLeistungVERAGCard.vb - - - usrCntlKartenDaten.vb - - - usrCntlDatenDetails.vb - - - usrCntlLkwListe.vb - - - usrCntlMDMAuswertungen.vb - - - usrcntlNewDataLKW.vb - - - usrCntlVERAGCard.vb - - - frmInfo.vb - - - frmMain.vb - - - Form2.vb - - - Form3.vb - - - frmLogin.vb - - - frmKundenUebersichtZollRg.vb - - - usrCntlWoelfl_IM_CSVRg.vb - - - frmPopUpInfo.vb - - - frmPostEinschreiben.vb - - - subrptBriefSDL_PLOSE.vb - - - subrptBriefSDL_PLOSE_CZ.vb - - - subrptBriefSDL_HUGO.vb - - - subrptBriefSDL_PLOSE_IT.vb - - - subrptBriefSDL_WOELFL.vb - - - subrptBriefSDL_UTA.vb - - - subrptBriefSDL_SI.vb - - - subrptBriefSDL_PL.vb - - - subrptBriefSDL_MULTIBOX.vb - - - subrptBriefSDL_MSE.vb - - - subrptBriefSDL_IT.vb - - - subrptBriefSDL_FR.vb - - - subrptBriefSDL_IDS.vb - - - subrptBriefSDL_FREJUS.vb - - - subrptBriefSDL_DE.vb - - - subrptBriefSDL_CZ.vb - - - subrptBriefSDL_AT.vb - - - rptAuswertungUeberfaelligeBestellungen.vb - Designer - - - rptSDLBrief.vb - Designer - - - rptSDLAbrechnungsblatt.vb - Designer - - - rptSDLBenachrichtigungUTA.vb - Designer - - - rptSDLBenachrichtigungMSE.vb - Designer - - - rptSDLBenachrichtigungIDS.vb - Designer - - - rptSDLBenachrichtigungPL.vb - Designer - - - rptSDLBenachrichtigungCZ.vb - Designer - - - rptSDLBenachrichtigungDE.vb - Designer - - - rptLeereOBU.vb - Designer - - - subrptAuswertungUeberfaelligeBestellungen.vb - - - rptKontrolleLKW_Dakosy.vb - - - rptKontrolleLKW_Zolaris.vb - - - rptTGestellungskontrolleDY.vb - - - subrptKontrolleLKW_Dakosy.vb - - - subrptKontrolleLKW_Zolaris.vb - - - frmSMS.vb - - - frmSendSMS.vb - - - usrCntlSMS.vb - - - frmATLAS_zbPos.vb - - - frmNacherfassungImport.vb - - - frmNacherfassungNEU.vb - - - frmNacherfassungBelegNrEingabe.vb - - - frmNacherfassungCRNEingabe.vb - - - frmNacherfassungLeihgeld.vb - - - frmNacherfassungVorkosten.vb - - - frmNacherfassungZuckerMRNEingabe.vb - - - frmQRCode.vb - - - frmPrintLayout.vb - - - frmSearchKunde.vb - - - frmBelegAddPos.vb - - - frmKassenbuch.vb - - - frmSecureLoginKassenbuch.vb - - - frmCryptTest.vb - - - frmKundenblatt.vb - - - frmKundenSuche.vb - - - frmKundenUebersichtZOLL.vb - - - frmNeuerKunde.vb - - - frmSDLDetails.vb - - - usrCntlSDLLeistungMautAT.vb - - - usrCntlSDLLeistungenCZ.vb - - - usrCntlSDLLeistungenDUOBOX.vb - - - usrCntlSDLLeistungenECOTAX.vb - - - usrCntlSDLLeistungenFR.vb - - - usrCntlSDLLeistungenFREJUS.vb - - - usrCntlSDLLeistungenIT.vb - - - usrCntlSDLLeistungenMotorWayMaut.vb - - - usrCntlSDLLeistungenMSE.vb - - - usrCntlSDLLeistungenPL.vb - - - usrCntlSDLLeistungenSI.vb - - - usrCntlSDLLeistungenUTA.vb - - - usrCntlSDLLeistungenWOELFL.vb - - - usrCntlSDLLeistungMautDE.vb - - - usrCntlLKW.vb - - - usrCntlSDLLeistungenIDS.vb - - - VbMyResourcesResXFileCodeGenerator - My.Resources - Designer - Resources.Designer.vb - - - usrCntlKundeDetails.vb - - - usrCntlKunden.vb - - - rptAuswertungMWSTOffeneAntraegeMitVorauszahlung.vb - Designer - - - rptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb - Designer - - - subrptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb - - - rptKontrolleLKW.vb - - - rptGestellungskontrolleEZOLL.vb - - - rptTGestellungskontrolle.vb - - - subrptKontrolleLKW.vb - - - frmShowData.vb - - - usrCntlSeriendruck.vb - - - frmSpeditionsbuchSuche.vb - - - frmPosNr.vb - - - rptSpeditionsbericht_HandlingAussenstellen.vb - - - rptSpeditionsbericht_Gelangensbestaetigung.vb - - - rptSpeditionsberichtKdSpez.vb - - - rptSpeditionsberichtKunde.vb - - - rptSpeditionsbericht.vb - - - usrCntlSpeditionsBuchSuche.vb - - - usrCntlWelcome.vb - - - usrCntlMIC_NCTS.vb - - - usrCntlModaltrans_NCTS.vb - - - usrCntlSGS_NCTS.vb - - - usrCntlTCeZOLL_EZA_Allg.vb - - - usrCntlTCeZOLL_EZA.vb - - - frmTCZollanmeldung.vb - - - frmAddArtikelATLAS.vb - - - frmFiskalSchreiben.vb - - - frmLKWEingetroffen nach.vb - - - frmStatusFSSAtlas.vb - - - frmZollBrgBuchungenFremd.vb - - - frmZolltarif.vb - - - rptAbgabenliste.vb - - - rptFiskalvertretungVorschau.vb - - - usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb - - - usrCntlAuswertungenCBAM_DE.vb - - - usrCntlAuswertungenFiskalvertretung_4200.vb - - - usrCntlAuswertungenAufschub_Abgabenliste.vb - - - usrCntlAuswertungenEV_Veranlagungen.vb - - - usrCntlAuswertungenFiskal_IntrastatMeldung.vb - - - usrCntlAuswertungenUIDPruefung.vb - - - usrCntlAuswertungenKunden_Auftragsrueckgang.vb - - - usrCntlBrgBuchungenVERAG.vb - - - usrCntlBrgBuchungenFremd.vb - - - usrCntlZollArtikel.vb - - - usrCntlZOLLAuswertungen.vb - - - usrCntlZollHauptmenue.vb - - - - - - - - - - - - - Always - - - - - Always - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - - - - - - Always - - - - Reference.map - - - MSDiscoCodeGenerator - Reference.vb - - - - Designer - - - - Reference.map - - - MSDiscoCodeGenerator - Reference.vb - - - Designer - - - - Designer - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - Designer - - - - Always - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - Reference.svcmap - - - MSDiscoCodeGenerator - Reference.vb - - - Designer - - - - MSDiscoCodeGenerator - Reference.vb - - - Designer - - - - Reference.map - - - MSDiscoCodeGenerator - Reference.vb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} - 2 - 7 - 0 - primary - False - True - - - {00020905-0000-0000-C000-000000000046} - 8 - 6 - 0 - primary - False - True - - - {0002E157-0000-0000-C000-000000000046} - 5 - 3 - 0 - primary - False - True - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - - Always - - - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - - - Always - - - - - Always - - - Always - - - - Always - - - Always - - - Always - - - Always - - - - - - - Always - - - Always - - - - - - - - - - - - Always - - - Always - - - - Always - - - - - - - - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WCF Proxy Generator - Reference.vb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - - - - - - - Always - - - - - - Always - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - Always - - - Always - - - - Always - - - - - - - - - - WCF Proxy Generator - Reference.vb - - - - - - - - Always - - - Always - - - - - - - - - - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - Microsoft .NET Framework 4 Client Profile %28x86 und x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - - - - - - - {50e8e49b-4fd9-4dd4-b159-bdc2b7d0e94f} - DAKOSY_Worker_lib - - - {2e4dbc09-e57b-4ac5-8554-6117d71f993b} - MDM_Worker_lib - - - {5b947a66-009a-4bb6-b925-f84a01045095} - TELOTEC_Worker_lib - - - {110c923b-cb02-4fd0-af24-95e0f0eeeff5} - Gemeinsames - - - {e4190547-b222-4ae3-a0be-a44eaee70335} - Parkzeit - - - {a3b497bd-842c-4a2b-b398-ed1976849df1} - VERAG_PROG_ALLGEMEIN - - - - - - - - - - - - Dynamic - Web References\EORI\ - http://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation%3fwsdl - - - - - MySettings - SDL_EORI_validation - - - Dynamic - Web References\eu.europa.ec1\ - https://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation%3fwsdl - - - - - MySettings - SDL_eu_europa_ec1_validation - - - Dynamic - Web References\eu.europa.ec\ - https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl - - - - - MySettings - SDL_eu_europa_ec_checkVatService - - - Dynamic - Web References\at.gv.bmf.finanzonline\ - https://finanzonline.bmf.gv.at/fon/ws/uidAbfrage.wsdl - - - - - MySettings - SDL_at_gv_bmf_finanzonline_uidAbfrageService - - - Dynamic - Web References\at.gv.bmf.finanzonlineLogin\ - https://finanzonline.bmf.gv.at/fonws/ws/sessionService.wsdl - - - - - MySettings - SDL_at_gv_bmf_finanzonline1_sessionService - - - - - \\192.168.0.90\f\Zertifikate\signtool.exe sign /f \\192.168.0.90\f\Zertifikate\AL20231110.pfx /p zYGNNJRG+tzlw90Rz6NqOXnoeBycFCy07YcUsY5iD0M= "SDL.exe" - - - \ No newline at end of file From 84f9a8df55911f73b2c010fd01e90210b8f4f003 Mon Sep 17 00:00:00 2001 From: "m.ilhan" Date: Mon, 14 Sep 2026 16:09:22 +0200 Subject: [PATCH 39/54] =?UTF-8?q?CBAM=20Kunden=C3=BCbersicht=20=E2=80=93?= =?UTF-8?q?=20Falsche=20Massenberechnung=20bei=20gemischten=20Zollanmeldun?= =?UTF-8?q?gen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb index 909f6554..929e53f1 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb +++ b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb @@ -225,7 +225,13 @@ Public Class cVERAG_CustomsDeclarations ' CBAM Pattern (HSCode) ' ------------------------------------------------------------ Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode") - Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") + Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") & + " AND zaItem_OriginCountry NOT IN ( + 'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR', + 'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL', + 'PL','PT','RO','SK','SI','ES','SE', + 'CH','NO','IS','LI','XI' + )" Dim cbamWhereISOCntry As String = " i.zaItem_OriginCountry NOT IN ( /*EU-27 (ISO2)*/ From 436f5e5f7f73b2bbe2eefbfb82fd670753820feb Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 15 Sep 2026 17:07:48 +0200 Subject: [PATCH 40/54] =?UTF-8?q?div.=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Classes/cEABeleg.vb | 11 + SDL/Classes/cFiskaltrustClient_chilkat.vb | 265 +++++++++----- SDL/Classes/cRKSV.vb | 8 +- SDL/Fakturierung/cAutomailversand.vb | 6 + SDL/Fakturierung/cFakturierung.vb | 217 ++++++----- SDL/Formulare/KDFormulare/frmFormulare.vb | 185 +++++----- SDL/kassenbuch/frmBelegNeu.Designer.vb | 17 + SDL/kassenbuch/frmBelegNeu.vb | 344 ++++++------------ SDL/kassenbuch/frmFremdbeleg.vb | 32 +- SDL/kassenbuch/frmKassenbuch.Designer.vb | 58 +-- SDL/kassenbuch/frmKassenbuch.vb | 180 +++++++-- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 36 +- SDL/mdm/frmMDMDatenverarbetiung.vb | 13 +- .../Classes/cNCTSGestellungsadressen.vb | 4 + .../DATENSERVER/cDATENSERVER.vb | 77 +++- 15 files changed, 852 insertions(+), 601 deletions(-) diff --git a/SDL/Classes/cEABeleg.vb b/SDL/Classes/cEABeleg.vb index 9cc921ff..76246071 100644 --- a/SDL/Classes/cEABeleg.vb +++ b/SDL/Classes/cEABeleg.vb @@ -284,6 +284,8 @@ Public Class EABeleg Property EC_daid As Integer = 0 Property FT_ReceiptReference As Object = Nothing Property FT_ReceiptReference_Storno As Object = Nothing + Property FT_MissingSignature As Boolean = False + Property FT_setMissingSignatureFailed As Boolean = False Property POS As New List(Of EABelegPositionen) @@ -364,8 +366,13 @@ Public Class EABeleg Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing) Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing) Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing) + + 'Fiskaltrust + Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing) Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing) + Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_MissingSignature"), False) + Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_setMissingSignatureFailed"), False) If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat) ' MsgBox(POS.Count) @@ -551,8 +558,12 @@ Public Class EABeleg list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid)) + + 'FISKALTRUST list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_MissingSignature", FT_MissingSignature)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_setMissingSignatureFailed", FT_setMissingSignatureFailed)) 'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties() 'If p.CanRead Then diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 7a44006a..60153005 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -10,6 +10,7 @@ Public Class FtReceiptCases ' Test-/Nullbeleg Public Const ZeroReceipt As Long = &H4445000000000002L + ' Kassenlebenszyklus Public Const InitialOperation As Long = &H4445000000000003L Public Const OutOfOperation As Long = &H4445000000000004L @@ -22,6 +23,12 @@ Public Class FtReceiptCases Public Const ImplicitTransaction As Long = &H100000000L Public Const ReversalReceipt As Long = &H40000L Public Const TrainingReceipt As Long = &H20000L + ' aktiviert den Late-Signing-Modus + Public Const FailedReceipt As Long = &H10000L + + ' Receipt-Request: + ' bereits verarbeiteten Beleg anhand cbReceiptReference abrufen + Public Const ReceiptRequest As Long = &H800000000000L End Class @@ -44,6 +51,17 @@ Public Class FtJournalType End Class +Public Class ReceiptCaseIntern + + Public Const VERKAUF As String = "Verkauf" + Public Const EINGANG As String = "Eingang" + Public Const AUSGANG As String = "Ausgang" + Public Const WIEDERHOLUNG As String = "Retry" + +End Class + + + Public Class FtPayItemCases 'DE @@ -71,25 +89,31 @@ Public Class cFiskaltrustClient_chilkat Private ReadOnly _cashboxId As String Private ReadOnly _accessToken As String Private ReadOnly _country As String + Private ReadOnly _isFiskaltrust As Boolean = False Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String) _baseUrl = baseUrl.TrimEnd("/"c) _cashboxId = cashboxId _accessToken = accessToken _country = country + + If _cashboxId <> "" AndAlso baseUrl <> "" AndAlso _accessToken <> "" AndAlso _country <> "" Then + _isFiskaltrust = True + Else + _isFiskaltrust = False + End If + End Sub - Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String) As String - - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, "") - - Return SendChilkat(GetEndpoint("payment"), payload.Emit()) - + Public Function isFiskaltrust() As Boolean + Return _isFiskaltrust End Function - Public Function SignReceipt_test(posSystemId As String) As String + + + Public Function SignReceipt_test(posSystemId As String, TSEisOnline As Boolean) As String Dim LIST = New List(Of EABelegPositionen) Dim p = New EABelegPositionen @@ -110,81 +134,134 @@ Public Class cFiskaltrustClient_chilkat Dim vat = 0 Dim POS = LIST Dim kindOfPayment = "Cash" + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "", TSEisOnline) - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "") - - Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference) - Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Public Function ChancelReceipt_test(reference As String, posSystemId As String, TSEisOnline As Boolean) As String + + Try + Dim LIST = New List(Of EABelegPositionen) + Dim p = New EABelegPositionen + p.Mandant = "VERA" + p.Niederlassung = "SUB" + p.Benutzer = 74 + p.BelegDat = Now + p.BelegNr = 1 + p.PreislistenNr = 1 + p.PreislistenPos = 1 + p.LeistungsNr = 300 + p.LeistungsBez = "TEST" + p.Preis = 10 + p.Anzahl = 1 + LIST.Add(p) + + Dim amount = 100 + Dim vat = 0 + Dim POS = LIST + Dim kindOfPayment = "Cash" + + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline) + + Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function ChancelReceipt_test(reference As String, posSystemId As String) As String + Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String, reference As String, TESisOnline As Boolean) As String + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, reference, TESisOnline) - Dim LIST = New List(Of EABelegPositionen) - Dim p = New EABelegPositionen - p.Mandant = "VERA" - p.Niederlassung = "SUB" - p.Benutzer = 74 - p.BelegDat = Now - p.BelegNr = 1 - p.PreislistenNr = 1 - p.PreislistenPos = 1 - p.LeistungsNr = 300 - p.LeistungsBez = "TEST" - p.Preis = 10 - p.Anzahl = 1 - LIST.Add(p) + Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try - Dim amount = 100 - Dim vat = 0 - Dim POS = LIST - Dim kindOfPayment = "Cash" - - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference) - - Return SendChilkat(GetEndpoint("storno"), payload.Emit()) End Function - Public Function SignNullReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, TSEisOnline As Boolean) As String + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline) + + Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function SignOutOfOrderReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function SignOInitialOperationReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) + Public Function SignTempOutOfOrderReceipt(posSystemId As String) As String + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + Public Function SignInitialOperationReceipt(posSystemId As String) As String + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function Echo(kassenName As String) As String + Try + Dim json As New JsonObject() + json.UpdateString("Message", kassenName & " - VERBINDUNG OK") - Dim json As New JsonObject() - json.UpdateString("Message", kassenName & " - VERBINDUNG OK") - - Return SendChilkat(GetEndpoint("test"), json.Emit()) - + Return SendChilkat(GetEndpoint("test"), json.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function Journal(ftJournalType As Integer) As String + Try - Dim endpoint = GetEndpoint("journal") + Dim endpoint = GetEndpoint("journal") - endpoint &= "?type=" & ftJournalType + endpoint &= "?type=" & ftJournalType - Return SendChilkat(endpoint, "") + Return SendChilkat(endpoint, "") + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function @@ -289,9 +366,12 @@ Public Class cFiskaltrustClient_chilkat Throw lastEx + + + End Function - Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String) As JsonObject + Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String, TSEisOnline As Boolean) As JsonObject Dim json As New JsonObject() @@ -312,49 +392,64 @@ Public Class cFiskaltrustClient_chilkat If _receiptCase = "Storno" Then - ' New reference for the Storno receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) - - ' Reference to the original receipt from the database json.UpdateString("cbPreviousReceiptReference", _reference) - ' Storno = POS receipt + reversal + implicit transaction - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + If TSEisOnline Then + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + Else + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + End If + + ElseIf _receiptCase = "Retry" Then + + 'Receipt-Request nach Kommunikationsfehler + 'dieselbe cbReceiptReference verwenden + 'dieselben cbChargeItems und cbPayItems mitsenden + 'optional dieselbe cbTerminalID + + json.UpdateString("cbReceiptReference", _reference) + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest Else ' New reference for a normal receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) - - ' Normal sale - - 'Select Case _receiptCase - ' Case "Eingang" - ' receipCase = FtReceiptCases.CashIn Or FtReceiptCases.ImplicitTransaction - ' Case "Ausgang" - ' receipCase = FtReceiptCases.CashOut Or FtReceiptCases.ImplicitTransaction - ' Case Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction - 'End Select - - + If TSEisOnline Then + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + Else + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + End If End If json.UpdateString("ftReceiptCase", receipCase.ToString()) - - Dim chargeItems = json.AppendArray("cbChargeItems") For Each p In POS If chargeItems.AddObjectAt(-1) Then + + + Dim quantity As Double = p.Anzahl + Dim unitPrice As Double = p.Preis + Dim lineAmount As Double = p.Betrag + + 'bei Storno negieren (BEI DE nur einen Teil)! + 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' + 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase + + If _receiptCase = "Storno" Then + quantity = quantity * -1 + lineAmount = lineAmount * -1 + End If + Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1) - item.UpdateInt("Quantity", p.Anzahl) - item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", ".")) - item.UpdateNumber("VATRate", vat.ToString().Replace(",", ".")) + item.UpdateInt("Quantity", quantity) + item.UpdateNumber("Amount", lineAmount) + item.UpdateNumber("VATRate", vat) item.UpdateString("Description", p.LeistungsBez) Dim ChargeItemCase As Long @@ -430,8 +525,6 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbUser", "Admin") json.UpdateString("ftReceiptCaseData", "") - - Dim chargeItems = json.AppendArray("cbChargeItems") Dim payItems = json.AppendArray("cbPayItems") @@ -573,7 +666,14 @@ Public Class cFiskaltrustClient_chilkat .ftReceiptIdentification = json.StringOf("ftReceiptIdentification") .ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal) .ftState = json.StringOf("ftState") - .ftBeleg_ID = beleg_temp.BelegNr + + If beleg_temp Is Nothing Then + .ftBeleg_ID = -1 + Else + .ftBeleg_ID = beleg_temp.BelegNr + End If + + saved = .SAVE() If saved AndAlso beleg_temp IsNot Nothing Then @@ -594,8 +694,8 @@ Public Class cFiskaltrustClient_chilkat Dim num As Integer = json.SizeOfArray("ftSignatures") If num = 0 Then - MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen!") - Return True + MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen" & vbNewLine & "Beleg kann nachträglich signiert werden!") + Return False End If Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures") @@ -714,15 +814,8 @@ Public Class cFiskaltrustClient_chilkat End If - - End Function - - Private Sub Log(message As String) - Console.WriteLine(message) - End Sub - Public Function PrettyPrintJson(jsonText As String) As String Dim json As New Chilkat.JsonObject() diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index 0f51914b..9a7d3684 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -89,7 +89,7 @@ Public Class cRKSV End Function - Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String) As Boolean + Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String, Optional reference As String = "", Optional TSEisOnline As Boolean = True) As Boolean Try @@ -133,7 +133,7 @@ Public Class cRKSV 'End If Else Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase) + Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) If result <> "" Then Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Else @@ -968,7 +968,7 @@ Public Class cRKSV End Try Return False End Function - Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String) As Boolean + Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String, TSEisOnline As Boolean) As Boolean Try If beleg_temp.rksv_BelegId <= 0 Then @@ -1013,7 +1013,7 @@ Public Class cRKSV Else Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id) + Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, TSEisOnline) If result <> "" Then client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True) Else diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 767c9e86..bbc88c3f 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -404,6 +404,12 @@ Public Class cAutomailversand Subject = Subject.Replace("%Belegtyp%", belegtyp) Subject = Subject.Replace("%BelegNr%", txtRgNr) + If RECHNUNG IsNot Nothing Then + Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", RECHNUNG.FilialenNr & "-" & RECHNUNG.AbfertigungsNr & "-" & RECHNUNG.UnterNr) + Else + Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", "") + End If + TextHTML &= r.txt_text TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 63659f44..22b04357 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -3058,6 +3058,9 @@ Public Class cFakturierung Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(RECHNUNG.Firma_ID) Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(addYeartoRgNr(FIRMA.Firma_ID, RECHNUNG.Buchungsjahr) & RECHNUNG.RechnungsNr, RECHNUNG.RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR)) + + + Select Case RECHNUNG.BelegartenKz Case "AR" desc.Name = "SPEDITIONSRECHNUNG" @@ -3108,29 +3111,34 @@ Public Class cFakturierung ' Optionally, to support Peppol----------------------------- + If RECHNUNG.FilialenNr > 0 AndAlso RECHNUNG.AbfertigungsNr > 0 Then + Dim lrn = RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr + desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument) + + End If If Not IsDBNull(RECHNUNG.RechnungsUstIdNr) AndAlso RECHNUNG.RechnungsUstIdNr IsNot Nothing AndAlso Not IsDBNull(RECHNUNG.RechnungsUstIdKz) AndAlso RECHNUNG.RechnungsUstIdKz IsNot Nothing Then - desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA) - If vatBuyer Then - desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer) - desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) + desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA) + If vatBuyer Then + desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer) + desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) + End If + + End If + '----------------------------- + desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum) + + Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0) + Dim steuerProzenFaktor As Double = 0 + If steuerProzent > 0 AndAlso steuerProzent < 1 Then + steuerProzenFaktor = steuerProzent * 100 End If - End If - '----------------------------- - desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum) - Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0) - Dim steuerProzenFaktor As Double = 0 - If steuerProzent > 0 AndAlso steuerProzent < 1 Then - steuerProzenFaktor = steuerProzent * 100 - End If + Dim sumNetto As Double = 0 + For Each p In RECHNUNG.POSITIONEN - - Dim sumNetto As Double = 0 - For Each p In RECHNUNG.POSITIONEN - - Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem( + Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem( name:=p.LeistungsBez, billedQuantity:=Convert.ToDecimal(p.Anzahl), unitCode:=QuantityCodes.C62, ' immer in Stück @@ -3140,27 +3148,27 @@ Public Class cFakturierung taxPercent:=IIf(p.Steuerpflichtig, Convert.ToDecimal(RECHNUNG.Steuersatz_Proz * 100), 0), taxType:=IIf(p.Steuerpflichtig, TaxTypes.VAT, TaxTypes.VAT) ) - Dim netUnitPrice = Convert.ToDecimal(p.Preis) - Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis)) - Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl) - sumNetto += netPricePos - Next + Dim netUnitPrice = Convert.ToDecimal(p.Preis) + Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis)) + Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl) + sumNetto += netPricePos + Next - 'Summe aller Rechnungspositions-Nettobeträge der Rechnung - Dim lineTotalAmont = sumNetto - 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, - 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ?????????????????? - Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0) - ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount) - 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer - 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) - Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) - 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag - 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) - Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + 'Summe aller Rechnungspositions-Nettobeträge der Rechnung + Dim lineTotalAmont = sumNetto + 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, + 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ?????????????????? + Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0) + ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 + Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount) + 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer + 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) + Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag + 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) + Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) - desc.SetTotals( + desc.SetTotals( lineTotalAmount:=Convert.ToDecimal(lineTotalAmont), chargeTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Zuschläge der Dokumentenebene allowanceTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Abschläge der Dokumenteneben @@ -3173,96 +3181,96 @@ Public Class cFakturierung ) - desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum) + desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum) - 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then - ' desc.SetPaymentMeansSepaDirectDebit("", "") - 'Else - desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ) - 'End If + 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then + ' desc.SetPaymentMeansSepaDirectDebit("", "") + 'Else + desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ) + 'End If - Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG) - If isReverseCharge Then - Select Case RECHNUNG.RechnungSprache - Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI) - Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI) - End Select - End If + Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG) + If isReverseCharge Then + Select Case RECHNUNG.RechnungSprache + Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI) + Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI) + End Select + End If - If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z) - End If + If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z) + End If - If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) - End If + If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) + End If - Select Case FIRMA.Firma_ID - Case 21, 22, 23 '"UNISPED" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Select Case FIRMA.Firma_ID + Case 21, 22, 23 '"UNISPED" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - Case 26 'VERAG-UNISPED" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Case 26 'VERAG-UNISPED" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - Case 24 'AMBAR" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - 'Änderung Ticket_Nr.: 6983 - 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") - desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + Case 24 'AMBAR" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + 'Änderung Ticket_Nr.: 6983 + 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") - Case 20 '"IMEX" - If RECHNUNG.RechnungsLandKz = "TR" Then - desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank") - Else - If hasVK(RECHNUNG) Then - desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG") + Case 20 '"IMEX" + If RECHNUNG.RechnungsLandKz = "TR" Then + desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank") Else - If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then - desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", ) + If hasVK(RECHNUNG) Then + desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG") Else - desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG") + If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then + desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", ) + Else + desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG") + End If End If End If - End If - Case 19 - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + Case 19 + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - Case Else 'VERAG,ATILLA - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Case Else 'VERAG,ATILLA + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - End Select + End Select - Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False) + Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False) - Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None) - desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) - End Using + Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None) + desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) + End Using - Return tmpPathZugpferd + Return tmpPathZugpferd - 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) - 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) + 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) + 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) - 'stream.Flush() - 'stream.Close() - 'Return tmpPathZugpferd + 'stream.Flush() + 'stream.Close() + 'Return tmpPathZugpferd - ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then + ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then - '--------------------------------------------------------------------------------- - '--------------------------------SAMMELRECHNUNG----------------------------------- - '--------------------------------------------------------------------------------- + '--------------------------------------------------------------------------------- + '--------------------------------SAMMELRECHNUNG----------------------------------- + '--------------------------------------------------------------------------------- - Dim ROW As DataRow = SR_DT.Rows(0) + Dim ROW As DataRow = SR_DT.Rows(0) Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(ROW("Firma_ID")) Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr")) @@ -3297,6 +3305,17 @@ Public Class cFakturierung End Select + If Not IsDBNull(ROW("FilialenNr")) AndAlso Not IsDBNull(ROW("AbfertigungsNr")) Then + + Dim filialenNr As String = ROW("FilialenNr").ToString().Trim() + Dim abfertigungsNr As String = ROW("AbfertigungsNr").ToString().Trim() + + If filialenNr <> String.Empty AndAlso abfertigungsNr <> String.Empty Then + Dim lrn As String = filialenNr & "/" & abfertigungsNr + desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument) + End If + End If + 'Die „Berechnung BT-10“ bezieht sich auf das Feld BT-10 „Buyer reference“ (Käuferreferenz) in der elektronischen Rechnung, speziell im XRechnung-Standard. Dieses Feld dient zur Angabe der Leitweg-ID 'für öffentliche Auftraggeber oder anderer Referenzinformationen für interne Zuordnungsprozesse. 'Die Leitweg-ID ist in Deutschland eine Pflichtangabe für elektronische Rechnungen an die Bundesverwaltung und muss vom Rechnungssteller vom Auftraggeber erhalten werden. diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb index 2f7ad9f8..ee05eec8 100644 --- a/SDL/Formulare/KDFormulare/frmFormulare.vb +++ b/SDL/Formulare/KDFormulare/frmFormulare.vb @@ -5,7 +5,9 @@ Imports System.Reflection Imports System.Text.RegularExpressions Imports System.Windows.Documents Imports com.sun.tools.internal.ws.wsdl.document.mime +Imports DAKOSY_Worker.Abgabenbescheid_008 Imports GrapeCity.ActiveReports +Imports GrapeCity.DataVisualization.TypeScript Imports itextsharp.text.pdf Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN @@ -1171,136 +1173,136 @@ Public Class frmFormulare For Each c In MyFlowLayoutPanel1.Controls - Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) - For Each pfad In pfadList - If pfad <> "" Then list.Add(pfad) - Next + Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) + For Each pfad In pfadList + If pfad <> "" Then list.Add(pfad) Next + Next - Dim dest_path = "" - If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub + Dim dest_path = "" + If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub - If list.Count = 1 Then - dest_path = list(0) - Else - dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False) - If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then - dest_path = "" : MsgBox("Fehler PDF") - End If + If list.Count = 1 Then + dest_path = list(0) + Else + dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False) + If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then + dest_path = "" : MsgBox("Fehler PDF") End If + End If - If dest_path <> "" Then - If sender Is Button2 Then - Process.Start(dest_path) - ElseIf sender Is btn Then - 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) - Try + If dest_path <> "" Then + If sender Is Button2 Then + Process.Start(dest_path) + ElseIf sender Is btn Then + 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) + Try If listMail IsNot Nothing AndAlso listMail.Count > 0 Then - For Each l In listMail - Dim outl As New Outlook.Application - - Dim Mail As Microsoft.Office.Interop.Outlook.MailItem - Mail = outl.CreateItem(0) - - 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc - - If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText - If l.Mail_To <> "" Then Mail.To = l.Mail_To - If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC - If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC - If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject - - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then - Try - Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) - Catch ex2 As Exception - MsgBox(ex2.Message) - End Try - End If - - Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") - Mail.Display() - - Next - Else + For Each l In listMail Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) - 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'Mail.SendUsingAccount = outl.Session.DefaultAccount + 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc + If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText + If l.Mail_To <> "" Then Mail.To = l.Mail_To + If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC + If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC + If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then Try Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) Catch ex2 As Exception MsgBox(ex2.Message) End Try - - End If - If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text - If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then - Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) - Dim TextHTML = "" - TextHTML &= tX.txt_text - TextHTML &= "
" - TextHTML &= "
" - TextHTML &= "Mit freundlichen Grüßen
" - TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" - TextHTML &= "
" - TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) + Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") + Mail.Display() + + Next + Else + Dim outl As New Outlook.Application + + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + + 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) + 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) + 'Mail.SendUsingAccount = outl.Session.DefaultAccount - Mail.HTMLBody = "
" & TextHTML & "
" + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + Try + Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) + Catch ex2 As Exception + MsgBox(ex2.Message) + End Try - Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") - If AVISO IsNot Nothing Then - Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) - End If - Mail.Subject = Mail.Subject.Replace("%LKW%", "") - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") + End If + If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text + If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then + Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) + + Dim TextHTML = "" + TextHTML &= tX.txt_text + TextHTML &= "
" + TextHTML &= "
" + TextHTML &= "Mit freundlichen Grüßen
" + TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" + TextHTML &= "
" + TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) + + + Mail.HTMLBody = "
" & TextHTML & "
" + + + Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") + If AVISO IsNot Nothing Then + Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) End If + Mail.Subject = Mail.Subject.Replace("%LKW%", "") + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") + End If Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") Mail.Display() - End If - - - 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" - ' Mail.SaveAs(matilPath) - ' Process.Start(matilPath) - - Catch ex As Exception - MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) - End Try - ElseIf sender Is btnPrint Then - 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") - If dest_path.ToUpper.EndsWith("PDF") Then - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) - Else - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If + + 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" + ' Mail.SaveAs(matilPath) + ' Process.Start(matilPath) + + Catch ex As Exception + MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) + End Try + ElseIf sender Is btnPrint Then + 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") + If dest_path.ToUpper.EndsWith("PDF") Then + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) + Else + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If + End If End If + End If - printed = True + printed = True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) @@ -1316,7 +1318,10 @@ Public Class frmFormulare Dim ADR As New cAdressen(KundenNr) If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then - Bez = "_" & ADR.Name_1 + + Bez = "_" & ADR.Name_1.ToString + Bez = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Bez) + Bez = Regex.Replace(Bez, "[" & Regex.Escape(New String(System.IO.Path.GetInvalidFileNameChars())) & "]", "_") End If diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb index 077620ca..79dcd172 100644 --- a/SDL/kassenbuch/frmBelegNeu.Designer.vb +++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb @@ -147,6 +147,7 @@ Partial Class frmBelegNeu Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.lblTSEisOffline = New System.Windows.Forms.Label() CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() Me.pnlData.SuspendLayout() @@ -648,6 +649,7 @@ Partial Class frmBelegNeu 'pnlData ' Me.pnlData.BackColor = System.Drawing.Color.FromArgb(CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer)) + Me.pnlData.Controls.Add(Me.lblTSEisOffline) Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen) Me.pnlData.Controls.Add(Me.lblErr_Fahrer) Me.pnlData.Controls.Add(Me.lblErr_Pass) @@ -1784,6 +1786,20 @@ Partial Class frmBelegNeu Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' + 'lblTSEisOffline + ' + Me.lblTSEisOffline.AutoSize = True + Me.lblTSEisOffline.BackColor = System.Drawing.Color.Red + Me.lblTSEisOffline.Cursor = System.Windows.Forms.Cursors.Default + Me.lblTSEisOffline.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTSEisOffline.ForeColor = System.Drawing.Color.White + Me.lblTSEisOffline.Location = New System.Drawing.Point(154, 35) + Me.lblTSEisOffline.Name = "lblTSEisOffline" + Me.lblTSEisOffline.Size = New System.Drawing.Size(125, 20) + Me.lblTSEisOffline.TabIndex = 50 + Me.lblTSEisOffline.Text = "TSE ist Offline" + Me.lblTSEisOffline.Visible = False + ' 'frmBelegNeu ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) @@ -1935,4 +1951,5 @@ Partial Class frmBelegNeu Friend WithEvents cboBuchungsoforterzeugen As CheckBox Friend WithEvents Button4 As Button Friend WithEvents cm_FT As ContextMenuStrip + Friend WithEvents lblTSEisOffline As Label End Class diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 52ea50ad..147be3e5 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -45,6 +45,7 @@ Public Class frmBelegNeu Public aktFiliale As Integer = 0 Public aktAbfertigungsNr As Integer = 0 + Dim tseIsOnline As Boolean = False Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String) @@ -231,11 +232,11 @@ Public Class frmBelegNeu ' Case "WAI" : cboFiliale.changeItem(5103) ' End Select - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then - Button4.Visible = True - End If - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + Button4.Visible = True + + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then cboKassen.Enabled = True Else cboKassen.Enabled = False @@ -1704,49 +1705,60 @@ Public Class frmBelegNeu Dim answer = "" Dim verarbeitet As Boolean = False - Dim isFiskaltrust As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) verarbeitet = result - isFiskaltrust = True Else verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If - If Not verarbeitet AndAlso Not isFiskaltrust Then - If Not TESTBUCHUNG Then + If Not verarbeitet Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If Not isFiskaltrust Then + 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 + Else + BELEG.FT_MissingSignature = True 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 + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + + End If - If Not isFiskaltrust Then 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.") + '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) + ' 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 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 @@ -1896,84 +1908,29 @@ Public Class frmBelegNeu Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged KASSE.LOAD(cboKassen._value) - 'Button4.Visible = KASSE.rksv_FT_RestServiceURL <> "" + + If KASSE IsNot Nothing AndAlso KASSE.rksv_aktiv AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing Then + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + If client_chilkat.isFiskaltrust() Then + Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") + + If result IsNot Nothing AndAlso result.Contains("VERBINDUNG OK") Then + tseIsOnline = True + End If + + lblTSEisOffline.Visible = Not tseIsOnline + + End If + End If + End Sub Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - 'nur im Testsystem! - If Not cm_FT.Items.ContainsKey("bar") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("storno") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - End If - - If Not cm_FT.Items.ContainsKey("null") Then - Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If - - If Not cm_FT.Items.ContainsKey("monthly") Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("daily") Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("yearly") Then - Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(uta) - End If - - If Not cm_FT.Items.ContainsKey("test") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("version") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("signatures") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("action") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("queueitem") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("exportJournal") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + If Not cm_FT.Items.ContainsKey("ft_neusignierung") AndAlso BELEG IsNot Nothing AndAlso (BELEG.gebucht Or BELEG.gebuchtStorno) AndAlso BELEG.FT_setMissingSignatureFailed Then + Dim ids = New ToolStripMenuItem() With {.Text = "Beleg neu signieren", .Name = "ft_neusignierung", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If @@ -1994,154 +1951,65 @@ Public Class frmBelegNeu Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - If item.Name = "null" Then + If item.Name = "ft_neusignierung" Then - If vbYes = MsgBox("Möchten Sie wirklich einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then + If BELEG IsNot Nothing Then + If vbYes = MsgBox("Möchten den nicht signierten Beleg " & BELEG.BelegNr & " an die TSE schicken?", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id) + Dim result As Boolean = False + + If BELEG.gebucht Or BELEG.gebuchtStorno Then + + Dim summeBRUTTO As Double = BELEG.rksv_umsatz + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim EA As String = "" + Dim kindOfReceiptCase As String = "" + + Select Case BELEG.Beleg_TYP + Case "0" + Return False 'null Belege nicht senden! + Case "E" 'Eingang/Ausgang + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + Case "L" + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + + Case Else + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + End Select - If result <> "" Then + result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, "", "", tseIsOnline) 'receiptCase leer und Reference leer!!!!! - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - - - ElseIf item.Name = "verbindungstest" Then - - Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - - ElseIf item.Name = "storno" Then - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?", vbYesNoCancel) Then - - Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - End If - - - ElseIf item.Name = "bar" Then - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id) - - If result <> "" Then - - If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then - Dim QR_CodeString As String = "" - client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + If result Then + BELEG.FT_setMissingSignatureFailed = False + BELEG.SAVE() + MsgBox("Beleg erfolgreich gesendet!") End If - Else - Return False - End If - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) End If - End If - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - - End If - - ElseIf item.Name = "monthly" Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Monatsbeleg an die TSE schicken, anschließend kann dieses Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) + If result Then + init() + End If End If End If - - ElseIf item.Name = "daily" Then - 'Nur DE - If KASSE.rksv_FT_Country = "DE" Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - Else - MsgBox("nicht für AT-Kassen möglich!") - End If - - - ElseIf item.Name = "yearly" Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - - ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - - Dim result As String = "" - Select Case item.Name - Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) - Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) - Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) - Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - End Select - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - If item.Name = "exportJournal" Then - client_chilkat.exportJournal(result) - End If - - End If - - - End If diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 57b3e6f8..7d179b2c 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -224,13 +224,16 @@ Public Class frmFremdbeleg End If Dim answer = "" - Dim isFiskaltrust As Boolean = False + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() + If KASSE.rksv_aktiv Then Dim verarbeitet As Boolean = False If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, "Eingang", "Ausgang")) + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) 'result.Wait() verarbeitet = result Else @@ -238,17 +241,24 @@ Public Class frmFremdbeleg End If - If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - If Not TESTBUCHUNG Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + If Not isFiskaltrust Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + End If + MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) + ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") + 'MsgBox("Programmfehler bei der digitalen Signatur.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + Else + BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!! End If - MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") - 'MsgBox("Programmfehler bei der digitalen Signatur.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + + End If End If - End If If KASSE.rksvDE_aktiv Then If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb index 297c5128..1a54abd4 100644 --- a/SDL/kassenbuch/frmKassenbuch.Designer.vb +++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb @@ -66,6 +66,8 @@ Partial Class frmKassenbuch Me.Label14 = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() Me.pnlMain = New System.Windows.Forms.Panel() + Me.pbInitialStart = New System.Windows.Forms.PictureBox() + Me.lblInitStart = New System.Windows.Forms.Label() Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() Me.picTSEOnline = New System.Windows.Forms.PictureBox() Me.lblTSEOnline = New System.Windows.Forms.Label() @@ -95,8 +97,6 @@ Partial Class frmKassenbuch Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem() Me.Button1 = New System.Windows.Forms.Button() Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.lblInitStart = New System.Windows.Forms.Label() - Me.pbInitialStart = New System.Windows.Forms.PictureBox() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlTop.SuspendLayout() @@ -104,13 +104,13 @@ Partial Class frmKassenbuch Me.pnlSuche.SuspendLayout() Me.pnlSearch.SuspendLayout() Me.pnlMain.SuspendLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() - CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Label2 @@ -668,6 +668,29 @@ Partial Class frmKassenbuch Me.pnlMain.Size = New System.Drawing.Size(778, 433) Me.pnlMain.TabIndex = 425 ' + 'pbInitialStart + ' + Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.pbInitialStart.Location = New System.Drawing.Point(614, 67) + Me.pbInitialStart.Name = "pbInitialStart" + Me.pbInitialStart.Size = New System.Drawing.Size(27, 20) + Me.pbInitialStart.TabIndex = 452 + Me.pbInitialStart.TabStop = False + Me.pbInitialStart.Visible = False + ' + 'lblInitStart + ' + Me.lblInitStart.AutoSize = True + Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblInitStart.ForeColor = System.Drawing.Color.Black + Me.lblInitStart.Location = New System.Drawing.Point(655, 71) + Me.lblInitStart.Name = "lblInitStart" + Me.lblInitStart.Size = New System.Drawing.Size(70, 16) + Me.lblInitStart.TabIndex = 451 + Me.lblInitStart.Text = "Initial Start " + Me.lblInitStart.Visible = False + ' 'lblFiskaltrustHeader ' Me.lblFiskaltrustHeader.AutoSize = True @@ -834,7 +857,7 @@ Partial Class frmKassenbuch Me.lbldailyCashboxClosing.AutoSize = True Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red - Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(361, 5) + Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(363, 5) Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing" Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16) Me.lbldailyCashboxClosing.TabIndex = 436 @@ -972,7 +995,7 @@ Partial Class frmKassenbuch 'lblRKSV_KASSEN_Bez ' Me.lblRKSV_KASSEN_Bez.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(463, 3) + Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(542, 3) Me.lblRKSV_KASSEN_Bez.Name = "lblRKSV_KASSEN_Bez" Me.lblRKSV_KASSEN_Bez.Size = New System.Drawing.Size(231, 13) Me.lblRKSV_KASSEN_Bez.TabIndex = 426 @@ -1025,29 +1048,6 @@ Partial Class frmKassenbuch Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' - 'lblInitStart - ' - Me.lblInitStart.AutoSize = True - Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblInitStart.ForeColor = System.Drawing.Color.Black - Me.lblInitStart.Location = New System.Drawing.Point(655, 71) - Me.lblInitStart.Name = "lblInitStart" - Me.lblInitStart.Size = New System.Drawing.Size(70, 16) - Me.lblInitStart.TabIndex = 451 - Me.lblInitStart.Text = "Initial Start " - Me.lblInitStart.Visible = False - ' - 'pbInitialStart - ' - Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok - Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.pbInitialStart.Location = New System.Drawing.Point(614, 67) - Me.pbInitialStart.Name = "pbInitialStart" - Me.pbInitialStart.Size = New System.Drawing.Size(27, 20) - Me.pbInitialStart.TabIndex = 452 - Me.pbInitialStart.TabStop = False - Me.pbInitialStart.Visible = False - ' 'frmKassenbuch ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1072,6 +1072,7 @@ Partial Class frmKassenbuch Me.pnlSearch.PerformLayout() Me.pnlMain.ResumeLayout(False) Me.pnlMain.PerformLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit() @@ -1079,7 +1080,6 @@ Partial Class frmKassenbuch CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() - CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 57484f9c..948f7da4 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -1,5 +1,4 @@ -Imports GrapeCity.DataVisualization.TypeScript -Imports SDL.RKSVServer +Imports DocumentFormat.OpenXml.Drawing Public Class frmKassenbuch Dim SQL As New SQL @@ -22,6 +21,7 @@ Public Class frmKassenbuch Dim InitialStartIsCreated As Boolean = True Dim OutOfOrderIsCreated As Boolean = False Dim TSEIsOnline As Boolean = False + Dim MiddlewareIsOnline As Boolean = False Dim isADMIN As Boolean = False @@ -106,7 +106,7 @@ Public Class frmKassenbuch End Sub - Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) + Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) lblTSEOnline.Visible = True lblTages.Visible = True @@ -123,7 +123,7 @@ Public Class frmKassenbuch picTSEOnline.Visible = True pbInitialStart.Visible = True - showPic(isOnline, picTSEOnline) + showPic(TSEisOnline, picTSEOnline) showPic(tagesabschluss, picTages) showPic(monatsabschlussIsSet, picMonats) showPic(Jahresabschluss, picJahres) @@ -158,9 +158,6 @@ Public Class frmKassenbuch btnBelegAusgang.Enabled = False pnl.Visible = True - - - 'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & @@ -209,7 +206,8 @@ Public Class frmKassenbuch End If - If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + If client_chilkat.isFiskaltrust() Then resetFIskaltrust() @@ -229,9 +227,7 @@ Public Class frmKassenbuch End If If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then - OutOfOrderIsCreated = True - End If @@ -239,22 +235,39 @@ Public Class frmKassenbuch InitialStartIsCreated = False End If - Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") - If result.Contains("VERBINDUNG OK") Then - TSEIsOnline = True + If result IsNot Nothing Then + If result.Contains("VERBINDUNG OK") Then + TSEIsOnline = True + MiddlewareIsOnline = True + Else + TSEIsOnline = False + MiddlewareIsOnline = True + End If + Else + TSEIsOnline = False + MiddlewareIsOnline = False + End If + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - If Not NULLBelegIsCreated Then - diasableBarverkauf("NULLBELEG") + If Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") ElseIf tagesabschlussIsSet Then diasableBarverkauf("TAGESABSCHLUSS") ElseIf OutOfOrderIsCreated Then diasableBarverkauf("OUTOFORDER") Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then btnBelegKunde.Enabled = True btnBelegAusgang.Enabled = True @@ -277,9 +290,11 @@ Public Class frmKassenbuch Private Sub diasableBarverkauf(status) Select Case status - Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde noch kein 0-Beleg über FT erstellt!" - Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" + ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)" + Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!" + Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!" Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" + Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!" End Select btnBelegKunde.Enabled = False @@ -321,7 +336,7 @@ Public Class frmKassenbuch End Sub Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year) - Sub initDgv() + Sub initDgv(Optional isFiskaltrust As Boolean = False) With DataGridView2 .Columns.Clear() @@ -343,8 +358,9 @@ Public Class frmKassenbuch If PERSONAL.isLeihgeldkasse Then lgTxt = ",[Fahrer],[Passnummer] " End If + .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & - " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & + " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert,[FT_MissingSignature]" & " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & @@ -385,10 +401,22 @@ Public Class frmKassenbuch .Columns("Passnummer").Visible = False End If + If .Columns.Contains("FT_MissingSignature") Then + .Columns("FT_MissingSignature").HeaderText = "fehl Sig." + .Columns("FT_MissingSignature").Width = 45 + For Each r As DataGridViewRow In .Rows + If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then + r.DefaultCellStyle.ForeColor = Color.Red + End If + Next + End If + + If master_Kasse Then .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master End If + For Each r As DataGridViewRow In .Rows If r.Cells("storniert").Value = "JA" Then r.DefaultCellStyle.ForeColor = Color.Red @@ -1160,9 +1188,11 @@ Public Class frmKassenbuch If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub + Else + BELEGTmp.rksv_qr = QRQString End If Else @@ -1242,7 +1272,7 @@ Public Class frmKassenbuch If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If @@ -1363,7 +1393,7 @@ Public Class frmKassenbuch End If End Sub - + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim f As New frmKassenbuchPWD(PERSONAL) If f.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -1546,6 +1576,8 @@ Public Class frmKassenbuch Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click + cm_FT.Items.Clear() + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then 'nur im Testsystem! If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then @@ -1574,7 +1606,7 @@ Public Class frmKassenbuch AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If - If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cm_FT.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked @@ -1634,6 +1666,13 @@ Public Class frmKassenbuch cm_FT.Items.Add(ids) End If + + If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then + Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + cm_FT.Show(Cursor.Position) End Sub @@ -1674,6 +1713,93 @@ Public Class frmKassenbuch End If + ElseIf item.Name = "setMissingSignatures" Then + + Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") + + If dt.Rows.Count = 0 Then + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!") + Return False + End If + + If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then + + Dim result As Boolean = False + For Each r As DataRow In dt.Rows + + Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat")) + Dim summeBRUTTO As Double = BELEG.rksv_umsatz + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim EA As String = "" + Dim kindOfReceiptCase As String = "" + + Select Case BELEG.Beleg_TYP + Case "0" + Continue For 'null Belege nicht senden! + Case "E" 'Eingang/Ausgang + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + Case "L" + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + + Case Else + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + End Select + + kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG + + result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference) + + If result Then + BELEG.FT_MissingSignature = False + BELEG.SAVE() + Else + MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!") + BELEG.FT_MissingSignature = False + BELEG.FT_setMissingSignatureFailed = True + BELEG.SAVE() + End If + + Next + + If result Then + init() + End If + + End If + + + + ElseIf item.Name = "tempoutoforder" Then + + + If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_OUTOFORDERBELEG() + init() + End If + + End If + ElseIf item.Name = "outoforder" Then @@ -1701,7 +1827,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignOInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) If result <> "" Then @@ -1733,7 +1859,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) If result <> "" Then @@ -1754,7 +1880,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) If result <> "" Then @@ -1853,7 +1979,7 @@ Public Class frmKassenbuch ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - Dim result As String = "" + Dim result As String = "" Select Case item.Name Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index a70a0a39..6a0d8e38 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -1,5 +1,6 @@  Imports GrapeCity.ActiveReports +Imports java.security.acl Imports VERAG_PROG_ALLGEMEIN Public Class frmNacherfassungLeihgeld @@ -362,13 +363,14 @@ Public Class frmNacherfassungLeihgeld ' QR_Image = Nothing Dim QR_CodeString As String = "" Dim LastJWS As String = "" - Dim isFiskaltrust As Boolean = False + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt Dim answer = "" Dim verarbeitet As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then + If isFiskaltrust Then Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") 'result.Wait() verarbeitet = result @@ -376,18 +378,28 @@ Public Class frmNacherfassungLeihgeld verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service End If - If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - If Not TESTBUCHUNG Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + If Not isFiskaltrust Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + 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.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + + Else + BELEG.FT_MissingSignature = True + 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.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) End If diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index b148f700..919dc00e 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -3147,13 +3147,13 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END" End Select - sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription,tbl_IDS_Stationen.OutletName, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag], case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter - FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & " - GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz; + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz,tbl_IDS_Stationen.OutletName; " Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") @@ -3210,7 +3210,12 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "") rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") - rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") + Dim Station As String = SQL.isDbnullEmpty(rpt.Fields.Item("OutletName").Value, "") + If Station <> "" Then + Station = " (" & Station & ")" + End If + + rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "") rpt.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "") diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb index 826b029b..17d7e096 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb @@ -64,6 +64,10 @@ Public Class cNCTSGestellungsadressen Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + If Not VERAG_PROG_ALLGEMEIN.cProgramFunctions.ValidateSQLFieldLengths(list, "tblNCTSGestellungsadressen", "", "FMZOLL") Then + Return False + End If + Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblNCTSGestellungsadressen WITH(updlock,serializable) WHERE nga_id=@nga_id) " & " BEGIN " & getUpdateCmd() & " END " & diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 53c4a512..2a04c7c5 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -2512,7 +2512,7 @@ Public Class DATENVERVER_OPTIONS End Function - Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String) As String + Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String, Optional fixedIssuerAssignedID As Boolean = True) As String Dim tempFile As String = pdfPath & ".tmp" @@ -2522,6 +2522,12 @@ Public Class DATENVERVER_OPTIONS Dim xmlBytes = File.ReadAllBytes(xmlPath) + + If fixedIssuerAssignedID Then + fixIssuerAssignedID(xmlBytes) + End If + + Dim fileName As String = "factur-x.xml" If HasAttachment(pdf, fileName) Then @@ -2557,6 +2563,75 @@ Public Class DATENVERVER_OPTIONS End Function + + + Public Shared Sub fixIssuerAssignedID(ByRef xmlBytes As Byte()) + + + Dim xmlDoc As New System.Xml.XmlDocument() + xmlDoc.PreserveWhitespace = True + + Using ms As New MemoryStream(xmlBytes) + xmlDoc.Load(ms) + End Using + + Dim ns As New System.Xml.XmlNamespaceManager(xmlDoc.NameTable) + + ns.AddNamespace( + "ram", + "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" + ) + + Dim documents = xmlDoc.SelectNodes( + "//ram:AdditionalReferencedDocument", + ns + ) + + For Each document As XmlElement In documents + + Dim idNode As XmlNode = + document.SelectSingleNode("ram:ID", ns) + + If idNode Is Nothing Then + Continue For + End If + + ' Wert der bisherigen ID merken + Dim idValue As String = idNode.InnerText + + ' Neue IssuerAssignedID erzeugen + Dim issuerAssignedID As XmlElement = + xmlDoc.CreateElement( + "ram", + "IssuerAssignedID", + "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" + ) + + issuerAssignedID.InnerText = idValue + + ' ID entfernen + document.RemoveChild(idNode) + + ' IssuerAssignedID an ERSTE Stelle setzen + document.InsertBefore( + issuerAssignedID, + document.FirstChild + ) + + Next + + Using ms As New MemoryStream() + xmlDoc.Save(ms) + xmlBytes = ms.ToArray() + End Using + + + End Sub + + + + + Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean Dim catalog = pdf.GetCatalog().GetPdfObject() From cf13d0fcfccba34196bce7aa7002fdaefcb8bdc5 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 08:45:57 +0200 Subject: [PATCH 41/54] Fix Barverkauf --- SDL/kassenbuch/frmBelegNeu.vb | 75 ++++--- SDL/kassenbuch/frmKassenbuch.vb | 122 ++++++----- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 238 +++++++++++---------- 3 files changed, 229 insertions(+), 206 deletions(-) diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 147be3e5..b9551008 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -233,10 +233,9 @@ Public Class frmBelegNeu ' End Select - Button4.Visible = True + Button4.Visible = checkFiskaltrust() - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then cboKassen.Enabled = True Else cboKassen.Enabled = False @@ -1705,44 +1704,43 @@ Public Class frmBelegNeu Dim answer = "" Dim verarbeitet As Boolean = False + Dim isFiskaltrust = checkFiskaltrust() - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() If isFiskaltrust Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) - verarbeitet = result - Else - verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - - End If - - If Not verarbeitet Then - - If Not isFiskaltrust Then - - 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 + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) + verarbeitet = result Else - BELEG.FT_MissingSignature = True + verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If - If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + If Not verarbeitet Then + + If Not isFiskaltrust Then + + 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 + Else + BELEG.FT_MissingSignature = True + End If + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + + + End If End If - 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) @@ -1885,6 +1883,21 @@ Public Class frmBelegNeu + End Function + + Private Function checkFiskaltrust() + + If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then + + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Return client_chilkat.isFiskaltrust() + + Else + Return False + + End If + End Function Private Sub openZahlungsbeleg(daid As Integer) diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 948f7da4..f5e6a0f6 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -206,80 +206,86 @@ Public Class frmKassenbuch End If - Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) - If client_chilkat.isFiskaltrust() Then + lbldailyCashboxClosing.Text = "" - resetFIskaltrust() + If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then - lbldailyCashboxClosing.Visible = True - Button11.Visible = True + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + If client_chilkat.isFiskaltrust() Then - Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If tagesabschluss > 0 Then tagesabschlussIsSet = True + resetFIskaltrust() - Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If monatsabschluss > 0 Then monatsabschlussIsSet = True + lbldailyCashboxClosing.Visible = True + Button11.Visible = True - Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If jahresabschluss > 0 Then jahresabschlussIsSet = True - If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then - NULLBelegIsCreated = False - End If + Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If tagesabschluss > 0 Then tagesabschlussIsSet = True - If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then - OutOfOrderIsCreated = True - End If + Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If monatsabschluss > 0 Then monatsabschlussIsSet = True + + Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If jahresabschluss > 0 Then jahresabschlussIsSet = True + If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then + NULLBelegIsCreated = False + End If + + If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then + OutOfOrderIsCreated = True + End If - If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then - InitialStartIsCreated = False - End If + If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then + InitialStartIsCreated = False + End If - Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") - If result IsNot Nothing Then - If result.Contains("VERBINDUNG OK") Then - TSEIsOnline = True - MiddlewareIsOnline = True + If result IsNot Nothing Then + If result.Contains("VERBINDUNG OK") Then + TSEIsOnline = True + MiddlewareIsOnline = True + Else + TSEIsOnline = False + MiddlewareIsOnline = True + End If Else TSEIsOnline = False - MiddlewareIsOnline = True + MiddlewareIsOnline = False + + End If + + + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + + If Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") + ElseIf tagesabschlussIsSet Then + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") + Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" + End If + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + btnStorno.Enabled = True + End If End If Else - TSEIsOnline = False - MiddlewareIsOnline = False - + lbldailyCashboxClosing.Visible = False + Button11.Visible = False End If - - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - - If Not MiddlewareIsOnline Then - diasableBarverkauf("MIDDLEWARE") - ElseIf Not InitialStartIsCreated Then - diasableBarverkauf("INITIALSTART") - ElseIf tagesabschlussIsSet Then - diasableBarverkauf("TAGESABSCHLUSS") - ElseIf OutOfOrderIsCreated Then - diasableBarverkauf("OUTOFORDER") - Else - lbldailyCashboxClosing.Text = "" - If Not TSEIsOnline Then - lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" - End If - - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then - btnBelegKunde.Enabled = True - btnBelegAusgang.Enabled = True - btnBelegEingang.Enabled = True - btnBelegGSKunde.Enabled = True - btnBelegLeihgeld.Enabled = True - btnStorno.Enabled = True - End If - End If - Else - lbldailyCashboxClosing.Visible = False - Button11.Visible = False End If diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index 6a0d8e38..77148d1a 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -363,25 +363,53 @@ Public Class frmNacherfassungLeihgeld ' QR_Image = Nothing Dim QR_CodeString As String = "" Dim LastJWS As String = "" - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() + Dim isFiskaltrust As Boolean = False + If KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + isFiskaltrust = client_chilkat.isFiskaltrust() + End If + If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt - Dim answer = "" + Dim answer = "" - Dim verarbeitet As Boolean = False - If isFiskaltrust Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() - verarbeitet = result - Else - verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + Dim verarbeitet As Boolean = False + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") + 'result.Wait() + verarbeitet = result + Else + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If + + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + If Not isFiskaltrust Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + 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.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + + Else + BELEG.FT_MissingSignature = True + + End If + + End If + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) End If - If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - - If Not isFiskaltrust Then + If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt + Dim answer = "" + If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, summeBRUTTO * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) @@ -391,127 +419,103 @@ Public Class frmNacherfassungLeihgeld 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler") ' MsgBox("Programmfehler bei der digitalen Signatur.") Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - - Else - BELEG.FT_MissingSignature = True - End If - - End If - - If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - End If - - - If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt - Dim answer = "" - If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, summeBRUTTO * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + If KASSE.rksv_KassaGuid = "KASSE_01" Then + BELEG.rksv_jws = Nothing + BELEG.rksv_qr = Nothing 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.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + End If - If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - If KASSE.rksv_KassaGuid = "KASSE_01" Then - BELEG.rksv_jws = Nothing - BELEG.rksv_qr = Nothing - End If - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + '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 Or KASSE.rksvDE_aktiv) + BELEG.SAVE() - 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 Or KASSE.rksvDE_aktiv) - BELEG.SAVE() - - 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird... - Dim barbetrag As Double = 0 - Dim BelegNrProvision = 0 - If cbxProvision.Checked Then - printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked) - End If - - - 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken - cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken - - If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision) - - - 'nur bei VERAG die fragen - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse 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 + 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird... + Dim barbetrag As Double = 0 + Dim BelegNrProvision = 0 + If cbxProvision.Checked Then + printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked) End If - If Not abbruch Then - cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, , barbetrag, BelegNrProvision) - Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG) - If Not spedBuchExisting Then - MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") - Else - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG - 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 + 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken + cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken + + If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision) + + + 'nur bei VERAG die fragen + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse 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 VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then - Dim verarbOK As Boolean = True - Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr) - SPEDBUCH.BelegNr = BelegNrFIBU - Dim RK_ID As Integer = -1 - - If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False - If RK_ID > 0 Then - Dim RECHNUNG As New cRechnungsausgang(RK_ID) - RECHNUNG.KdAuftragsNr = BelegNrFIBU - If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False - If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then - RECHNUNG.[DruckDatumZeit] = Nothing - RECHNUNG.SAVE_DruckDatumZeit() - End If - End If - - If verarbOK Then - 'MsgBox("Rechnung erstellt!") + If Not abbruch Then + cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, , barbetrag, BelegNrProvision) + Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG) + If Not spedBuchExisting Then + MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") Else - MsgBox("Fehler bei Rechnungserstellung!") + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG + 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 + + + + + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then + Dim verarbOK As Boolean = True + Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr) + SPEDBUCH.BelegNr = BelegNrFIBU + Dim RK_ID As Integer = -1 + + If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False + If RK_ID > 0 Then + Dim RECHNUNG As New cRechnungsausgang(RK_ID) + RECHNUNG.KdAuftragsNr = BelegNrFIBU + If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False + If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then + RECHNUNG.[DruckDatumZeit] = Nothing + RECHNUNG.SAVE_DruckDatumZeit() + End If + End If + + If verarbOK Then + 'MsgBox("Rechnung erstellt!") + Else + MsgBox("Fehler bei Rechnungserstellung!") + + End If + End If + End If - End If + + + Me.Close() + Me.DialogResult = Windows.Forms.DialogResult.OK + Me.Cursor = Cursors.Default End If - - Me.Close() - Me.DialogResult = Windows.Forms.DialogResult.OK - Me.Cursor = Cursors.Default - End If - Catch ex As Exception Me.Cursor = Cursors.Default MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & If(BELEG.rksv_BelegId > 0, "ACHTUNG: BELEG BEREITS SIGNIERT!!!", "") & vbNewLine & vbNewLine & ex.Message & ex.StackTrace) From b4c0ed0c66567089652906259a2c1e9674abff85 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 09:01:59 +0200 Subject: [PATCH 42/54] merge --- SDL/Classes/cEABeleg.vb | 11 + SDL/Classes/cFiskaltrustClient_chilkat.vb | 265 +++++++++---- SDL/Classes/cRKSV.vb | 8 +- SDL/Fakturierung/cAutomailversand.vb | 6 + SDL/Fakturierung/cFakturierung.vb | 217 +++++----- SDL/Formulare/KDFormulare/frmFormulare.vb | 185 ++++----- SDL/kassenbuch/frmBelegNeu.Designer.vb | 17 + SDL/kassenbuch/frmBelegNeu.vb | 369 ++++++------------ SDL/kassenbuch/frmFremdbeleg.vb | 32 +- SDL/kassenbuch/frmKassenbuch.Designer.vb | 58 +-- SDL/kassenbuch/frmKassenbuch.vb | 272 +++++++++---- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 254 ++++++------ SDL/mdm/frmMDMDatenverarbetiung.vb | 13 +- .../Classes/cNCTSGestellungsadressen.vb | 4 + .../DATENSERVER/cDATENSERVER.vb | 77 +++- .../cVERAG_CustomsDeclarations.vb | 8 +- 16 files changed, 1038 insertions(+), 758 deletions(-) diff --git a/SDL/Classes/cEABeleg.vb b/SDL/Classes/cEABeleg.vb index 9cc921ff..76246071 100644 --- a/SDL/Classes/cEABeleg.vb +++ b/SDL/Classes/cEABeleg.vb @@ -284,6 +284,8 @@ Public Class EABeleg Property EC_daid As Integer = 0 Property FT_ReceiptReference As Object = Nothing Property FT_ReceiptReference_Storno As Object = Nothing + Property FT_MissingSignature As Boolean = False + Property FT_setMissingSignatureFailed As Boolean = False Property POS As New List(Of EABelegPositionen) @@ -364,8 +366,13 @@ Public Class EABeleg Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing) Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing) Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing) + + 'Fiskaltrust + Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing) Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing) + Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_MissingSignature"), False) + Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_setMissingSignatureFailed"), False) If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat) ' MsgBox(POS.Count) @@ -551,8 +558,12 @@ Public Class EABeleg list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid)) + + 'FISKALTRUST list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_MissingSignature", FT_MissingSignature)) + list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_setMissingSignatureFailed", FT_setMissingSignatureFailed)) 'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties() 'If p.CanRead Then diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 7a44006a..60153005 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -10,6 +10,7 @@ Public Class FtReceiptCases ' Test-/Nullbeleg Public Const ZeroReceipt As Long = &H4445000000000002L + ' Kassenlebenszyklus Public Const InitialOperation As Long = &H4445000000000003L Public Const OutOfOperation As Long = &H4445000000000004L @@ -22,6 +23,12 @@ Public Class FtReceiptCases Public Const ImplicitTransaction As Long = &H100000000L Public Const ReversalReceipt As Long = &H40000L Public Const TrainingReceipt As Long = &H20000L + ' aktiviert den Late-Signing-Modus + Public Const FailedReceipt As Long = &H10000L + + ' Receipt-Request: + ' bereits verarbeiteten Beleg anhand cbReceiptReference abrufen + Public Const ReceiptRequest As Long = &H800000000000L End Class @@ -44,6 +51,17 @@ Public Class FtJournalType End Class +Public Class ReceiptCaseIntern + + Public Const VERKAUF As String = "Verkauf" + Public Const EINGANG As String = "Eingang" + Public Const AUSGANG As String = "Ausgang" + Public Const WIEDERHOLUNG As String = "Retry" + +End Class + + + Public Class FtPayItemCases 'DE @@ -71,25 +89,31 @@ Public Class cFiskaltrustClient_chilkat Private ReadOnly _cashboxId As String Private ReadOnly _accessToken As String Private ReadOnly _country As String + Private ReadOnly _isFiskaltrust As Boolean = False Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String) _baseUrl = baseUrl.TrimEnd("/"c) _cashboxId = cashboxId _accessToken = accessToken _country = country + + If _cashboxId <> "" AndAlso baseUrl <> "" AndAlso _accessToken <> "" AndAlso _country <> "" Then + _isFiskaltrust = True + Else + _isFiskaltrust = False + End If + End Sub - Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String) As String - - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, "") - - Return SendChilkat(GetEndpoint("payment"), payload.Emit()) - + Public Function isFiskaltrust() As Boolean + Return _isFiskaltrust End Function - Public Function SignReceipt_test(posSystemId As String) As String + + + Public Function SignReceipt_test(posSystemId As String, TSEisOnline As Boolean) As String Dim LIST = New List(Of EABelegPositionen) Dim p = New EABelegPositionen @@ -110,81 +134,134 @@ Public Class cFiskaltrustClient_chilkat Dim vat = 0 Dim POS = LIST Dim kindOfPayment = "Cash" + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "", TSEisOnline) - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "") - - Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference) - Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Public Function ChancelReceipt_test(reference As String, posSystemId As String, TSEisOnline As Boolean) As String + + Try + Dim LIST = New List(Of EABelegPositionen) + Dim p = New EABelegPositionen + p.Mandant = "VERA" + p.Niederlassung = "SUB" + p.Benutzer = 74 + p.BelegDat = Now + p.BelegNr = 1 + p.PreislistenNr = 1 + p.PreislistenPos = 1 + p.LeistungsNr = 300 + p.LeistungsBez = "TEST" + p.Preis = 10 + p.Anzahl = 1 + LIST.Add(p) + + Dim amount = 100 + Dim vat = 0 + Dim POS = LIST + Dim kindOfPayment = "Cash" + + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline) + + Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function ChancelReceipt_test(reference As String, posSystemId As String) As String + Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String, reference As String, TESisOnline As Boolean) As String + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, reference, TESisOnline) - Dim LIST = New List(Of EABelegPositionen) - Dim p = New EABelegPositionen - p.Mandant = "VERA" - p.Niederlassung = "SUB" - p.Benutzer = 74 - p.BelegDat = Now - p.BelegNr = 1 - p.PreislistenNr = 1 - p.PreislistenPos = 1 - p.LeistungsNr = 300 - p.LeistungsBez = "TEST" - p.Preis = 10 - p.Anzahl = 1 - LIST.Add(p) + Return SendChilkat(GetEndpoint("payment"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try - Dim amount = 100 - Dim vat = 0 - Dim POS = LIST - Dim kindOfPayment = "Cash" - - Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference) - - Return SendChilkat(GetEndpoint("storno"), payload.Emit()) End Function - Public Function SignNullReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, TSEisOnline As Boolean) As String + Try + Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline) + + Return SendChilkat(GetEndpoint("storno"), payload.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function SignOutOfOrderReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function - Public Function SignOInitialOperationReceipt(posSystemId As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) + Public Function SignTempOutOfOrderReceipt(posSystemId As String) As String + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + Public Function SignInitialOperationReceipt(posSystemId As String) As String + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String - Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) + Try + Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function Echo(kassenName As String) As String + Try + Dim json As New JsonObject() + json.UpdateString("Message", kassenName & " - VERBINDUNG OK") - Dim json As New JsonObject() - json.UpdateString("Message", kassenName & " - VERBINDUNG OK") - - Return SendChilkat(GetEndpoint("test"), json.Emit()) - + Return SendChilkat(GetEndpoint("test"), json.Emit()) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function Public Function Journal(ftJournalType As Integer) As String + Try - Dim endpoint = GetEndpoint("journal") + Dim endpoint = GetEndpoint("journal") - endpoint &= "?type=" & ftJournalType + endpoint &= "?type=" & ftJournalType - Return SendChilkat(endpoint, "") + Return SendChilkat(endpoint, "") + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try End Function @@ -289,9 +366,12 @@ Public Class cFiskaltrustClient_chilkat Throw lastEx + + + End Function - Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String) As JsonObject + Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String, TSEisOnline As Boolean) As JsonObject Dim json As New JsonObject() @@ -312,49 +392,64 @@ Public Class cFiskaltrustClient_chilkat If _receiptCase = "Storno" Then - ' New reference for the Storno receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) - - ' Reference to the original receipt from the database json.UpdateString("cbPreviousReceiptReference", _reference) - ' Storno = POS receipt + reversal + implicit transaction - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + If TSEisOnline Then + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + Else + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + End If + + ElseIf _receiptCase = "Retry" Then + + 'Receipt-Request nach Kommunikationsfehler + 'dieselbe cbReceiptReference verwenden + 'dieselben cbChargeItems und cbPayItems mitsenden + 'optional dieselbe cbTerminalID + + json.UpdateString("cbReceiptReference", _reference) + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest Else ' New reference for a normal receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) - - ' Normal sale - - 'Select Case _receiptCase - ' Case "Eingang" - ' receipCase = FtReceiptCases.CashIn Or FtReceiptCases.ImplicitTransaction - ' Case "Ausgang" - ' receipCase = FtReceiptCases.CashOut Or FtReceiptCases.ImplicitTransaction - ' Case Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction - 'End Select - - + If TSEisOnline Then + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + Else + receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + End If End If json.UpdateString("ftReceiptCase", receipCase.ToString()) - - Dim chargeItems = json.AppendArray("cbChargeItems") For Each p In POS If chargeItems.AddObjectAt(-1) Then + + + Dim quantity As Double = p.Anzahl + Dim unitPrice As Double = p.Preis + Dim lineAmount As Double = p.Betrag + + 'bei Storno negieren (BEI DE nur einen Teil)! + 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' + 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase + + If _receiptCase = "Storno" Then + quantity = quantity * -1 + lineAmount = lineAmount * -1 + End If + Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1) - item.UpdateInt("Quantity", p.Anzahl) - item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", ".")) - item.UpdateNumber("VATRate", vat.ToString().Replace(",", ".")) + item.UpdateInt("Quantity", quantity) + item.UpdateNumber("Amount", lineAmount) + item.UpdateNumber("VATRate", vat) item.UpdateString("Description", p.LeistungsBez) Dim ChargeItemCase As Long @@ -430,8 +525,6 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbUser", "Admin") json.UpdateString("ftReceiptCaseData", "") - - Dim chargeItems = json.AppendArray("cbChargeItems") Dim payItems = json.AppendArray("cbPayItems") @@ -573,7 +666,14 @@ Public Class cFiskaltrustClient_chilkat .ftReceiptIdentification = json.StringOf("ftReceiptIdentification") .ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal) .ftState = json.StringOf("ftState") - .ftBeleg_ID = beleg_temp.BelegNr + + If beleg_temp Is Nothing Then + .ftBeleg_ID = -1 + Else + .ftBeleg_ID = beleg_temp.BelegNr + End If + + saved = .SAVE() If saved AndAlso beleg_temp IsNot Nothing Then @@ -594,8 +694,8 @@ Public Class cFiskaltrustClient_chilkat Dim num As Integer = json.SizeOfArray("ftSignatures") If num = 0 Then - MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen!") - Return True + MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen" & vbNewLine & "Beleg kann nachträglich signiert werden!") + Return False End If Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures") @@ -714,15 +814,8 @@ Public Class cFiskaltrustClient_chilkat End If - - End Function - - Private Sub Log(message As String) - Console.WriteLine(message) - End Sub - Public Function PrettyPrintJson(jsonText As String) As String Dim json As New Chilkat.JsonObject() diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index 0f51914b..9a7d3684 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -89,7 +89,7 @@ Public Class cRKSV End Function - Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String) As Boolean + Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String, Optional reference As String = "", Optional TSEisOnline As Boolean = True) As Boolean Try @@ -133,7 +133,7 @@ Public Class cRKSV 'End If Else Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase) + Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) If result <> "" Then Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Else @@ -968,7 +968,7 @@ Public Class cRKSV End Try Return False End Function - Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String) As Boolean + Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String, TSEisOnline As Boolean) As Boolean Try If beleg_temp.rksv_BelegId <= 0 Then @@ -1013,7 +1013,7 @@ Public Class cRKSV Else Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id) + Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, TSEisOnline) If result <> "" Then client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True) Else diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 767c9e86..bbc88c3f 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -404,6 +404,12 @@ Public Class cAutomailversand Subject = Subject.Replace("%Belegtyp%", belegtyp) Subject = Subject.Replace("%BelegNr%", txtRgNr) + If RECHNUNG IsNot Nothing Then + Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", RECHNUNG.FilialenNr & "-" & RECHNUNG.AbfertigungsNr & "-" & RECHNUNG.UnterNr) + Else + Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", "") + End If + TextHTML &= r.txt_text TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 63659f44..22b04357 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -3058,6 +3058,9 @@ Public Class cFakturierung Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(RECHNUNG.Firma_ID) Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(addYeartoRgNr(FIRMA.Firma_ID, RECHNUNG.Buchungsjahr) & RECHNUNG.RechnungsNr, RECHNUNG.RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR)) + + + Select Case RECHNUNG.BelegartenKz Case "AR" desc.Name = "SPEDITIONSRECHNUNG" @@ -3108,29 +3111,34 @@ Public Class cFakturierung ' Optionally, to support Peppol----------------------------- + If RECHNUNG.FilialenNr > 0 AndAlso RECHNUNG.AbfertigungsNr > 0 Then + Dim lrn = RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr + desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument) + + End If If Not IsDBNull(RECHNUNG.RechnungsUstIdNr) AndAlso RECHNUNG.RechnungsUstIdNr IsNot Nothing AndAlso Not IsDBNull(RECHNUNG.RechnungsUstIdKz) AndAlso RECHNUNG.RechnungsUstIdKz IsNot Nothing Then - desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA) - If vatBuyer Then - desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer) - desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) + desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA) + If vatBuyer Then + desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer) + desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) + End If + + End If + '----------------------------- + desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum) + + Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0) + Dim steuerProzenFaktor As Double = 0 + If steuerProzent > 0 AndAlso steuerProzent < 1 Then + steuerProzenFaktor = steuerProzent * 100 End If - End If - '----------------------------- - desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum) - Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0) - Dim steuerProzenFaktor As Double = 0 - If steuerProzent > 0 AndAlso steuerProzent < 1 Then - steuerProzenFaktor = steuerProzent * 100 - End If + Dim sumNetto As Double = 0 + For Each p In RECHNUNG.POSITIONEN - - Dim sumNetto As Double = 0 - For Each p In RECHNUNG.POSITIONEN - - Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem( + Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem( name:=p.LeistungsBez, billedQuantity:=Convert.ToDecimal(p.Anzahl), unitCode:=QuantityCodes.C62, ' immer in Stück @@ -3140,27 +3148,27 @@ Public Class cFakturierung taxPercent:=IIf(p.Steuerpflichtig, Convert.ToDecimal(RECHNUNG.Steuersatz_Proz * 100), 0), taxType:=IIf(p.Steuerpflichtig, TaxTypes.VAT, TaxTypes.VAT) ) - Dim netUnitPrice = Convert.ToDecimal(p.Preis) - Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis)) - Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl) - sumNetto += netPricePos - Next + Dim netUnitPrice = Convert.ToDecimal(p.Preis) + Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis)) + Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl) + sumNetto += netPricePos + Next - 'Summe aller Rechnungspositions-Nettobeträge der Rechnung - Dim lineTotalAmont = sumNetto - 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, - 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ?????????????????? - Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0) - ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount) - 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer - 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) - Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) - 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag - 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) - Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + 'Summe aller Rechnungspositions-Nettobeträge der Rechnung + Dim lineTotalAmont = sumNetto + 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, + 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ?????????????????? + Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0) + ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 + Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount) + 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer + 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) + Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag + 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) + Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) - desc.SetTotals( + desc.SetTotals( lineTotalAmount:=Convert.ToDecimal(lineTotalAmont), chargeTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Zuschläge der Dokumentenebene allowanceTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Abschläge der Dokumenteneben @@ -3173,96 +3181,96 @@ Public Class cFakturierung ) - desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum) + desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum) - 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then - ' desc.SetPaymentMeansSepaDirectDebit("", "") - 'Else - desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ) - 'End If + 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then + ' desc.SetPaymentMeansSepaDirectDebit("", "") + 'Else + desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ) + 'End If - Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG) - If isReverseCharge Then - Select Case RECHNUNG.RechnungSprache - Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI) - Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI) - End Select - End If + Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG) + If isReverseCharge Then + Select Case RECHNUNG.RechnungSprache + Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI) + Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI) + End Select + End If - If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z) - End If + If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z) + End If - If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) - End If + If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) + End If - Select Case FIRMA.Firma_ID - Case 21, 22, 23 '"UNISPED" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Select Case FIRMA.Firma_ID + Case 21, 22, 23 '"UNISPED" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - Case 26 'VERAG-UNISPED" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Case 26 'VERAG-UNISPED" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - Case 24 'AMBAR" - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - 'Änderung Ticket_Nr.: 6983 - 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") - desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + Case 24 'AMBAR" + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + 'Änderung Ticket_Nr.: 6983 + 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") - Case 20 '"IMEX" - If RECHNUNG.RechnungsLandKz = "TR" Then - desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank") - Else - If hasVK(RECHNUNG) Then - desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG") + Case 20 '"IMEX" + If RECHNUNG.RechnungsLandKz = "TR" Then + desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank") Else - If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then - desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", ) + If hasVK(RECHNUNG) Then + desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG") Else - desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG") + If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then + desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", ) + Else + desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG") + End If End If End If - End If - Case 19 - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + Case 19 + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - Case Else 'VERAG,ATILLA - If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) - If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) + Case Else 'VERAG,ATILLA + If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) + If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - End Select + End Select - Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False) + Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False) - Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None) - desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) - End Using + Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None) + desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) + End Using - Return tmpPathZugpferd + Return tmpPathZugpferd - 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) - 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) + 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) + 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) - 'stream.Flush() - 'stream.Close() - 'Return tmpPathZugpferd + 'stream.Flush() + 'stream.Close() + 'Return tmpPathZugpferd - ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then + ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then - '--------------------------------------------------------------------------------- - '--------------------------------SAMMELRECHNUNG----------------------------------- - '--------------------------------------------------------------------------------- + '--------------------------------------------------------------------------------- + '--------------------------------SAMMELRECHNUNG----------------------------------- + '--------------------------------------------------------------------------------- - Dim ROW As DataRow = SR_DT.Rows(0) + Dim ROW As DataRow = SR_DT.Rows(0) Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(ROW("Firma_ID")) Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr")) @@ -3297,6 +3305,17 @@ Public Class cFakturierung End Select + If Not IsDBNull(ROW("FilialenNr")) AndAlso Not IsDBNull(ROW("AbfertigungsNr")) Then + + Dim filialenNr As String = ROW("FilialenNr").ToString().Trim() + Dim abfertigungsNr As String = ROW("AbfertigungsNr").ToString().Trim() + + If filialenNr <> String.Empty AndAlso abfertigungsNr <> String.Empty Then + Dim lrn As String = filialenNr & "/" & abfertigungsNr + desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument) + End If + End If + 'Die „Berechnung BT-10“ bezieht sich auf das Feld BT-10 „Buyer reference“ (Käuferreferenz) in der elektronischen Rechnung, speziell im XRechnung-Standard. Dieses Feld dient zur Angabe der Leitweg-ID 'für öffentliche Auftraggeber oder anderer Referenzinformationen für interne Zuordnungsprozesse. 'Die Leitweg-ID ist in Deutschland eine Pflichtangabe für elektronische Rechnungen an die Bundesverwaltung und muss vom Rechnungssteller vom Auftraggeber erhalten werden. diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb index 2f7ad9f8..ee05eec8 100644 --- a/SDL/Formulare/KDFormulare/frmFormulare.vb +++ b/SDL/Formulare/KDFormulare/frmFormulare.vb @@ -5,7 +5,9 @@ Imports System.Reflection Imports System.Text.RegularExpressions Imports System.Windows.Documents Imports com.sun.tools.internal.ws.wsdl.document.mime +Imports DAKOSY_Worker.Abgabenbescheid_008 Imports GrapeCity.ActiveReports +Imports GrapeCity.DataVisualization.TypeScript Imports itextsharp.text.pdf Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN @@ -1171,136 +1173,136 @@ Public Class frmFormulare For Each c In MyFlowLayoutPanel1.Controls - Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) - For Each pfad In pfadList - If pfad <> "" Then list.Add(pfad) - Next + Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail) + For Each pfad In pfadList + If pfad <> "" Then list.Add(pfad) Next + Next - Dim dest_path = "" - If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub + Dim dest_path = "" + If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub - If list.Count = 1 Then - dest_path = list(0) - Else - dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False) - If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then - dest_path = "" : MsgBox("Fehler PDF") - End If + If list.Count = 1 Then + dest_path = list(0) + Else + dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False) + If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then + dest_path = "" : MsgBox("Fehler PDF") End If + End If - If dest_path <> "" Then - If sender Is Button2 Then - Process.Start(dest_path) - ElseIf sender Is btn Then - 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) - Try + If dest_path <> "" Then + If sender Is Button2 Then + Process.Start(dest_path) + ElseIf sender Is btn Then + 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path) + Try If listMail IsNot Nothing AndAlso listMail.Count > 0 Then - For Each l In listMail - Dim outl As New Outlook.Application - - Dim Mail As Microsoft.Office.Interop.Outlook.MailItem - Mail = outl.CreateItem(0) - - 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc - - If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText - If l.Mail_To <> "" Then Mail.To = l.Mail_To - If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC - If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC - If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject - - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then - Try - Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) - Catch ex2 As Exception - MsgBox(ex2.Message) - End Try - End If - - Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") - Mail.Display() - - Next - Else + For Each l In listMail Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) - 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) - 'Mail.SendUsingAccount = outl.Session.DefaultAccount + 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc + If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText + If l.Mail_To <> "" Then Mail.To = l.Mail_To + If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC + If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC + If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then Try Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") - Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True) Catch ex2 As Exception MsgBox(ex2.Message) End Try - - End If - If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text - If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then - Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) - Dim TextHTML = "" - TextHTML &= tX.txt_text - TextHTML &= "
" - TextHTML &= "
" - TextHTML &= "Mit freundlichen Grüßen
" - TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" - TextHTML &= "
" - TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) + Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") + Mail.Display() + + Next + Else + Dim outl As New Outlook.Application + + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + + 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl)) + 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl) + 'Mail.SendUsingAccount = outl.Session.DefaultAccount - Mail.HTMLBody = "
" & TextHTML & "
" + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then + Try + Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") + Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True) + Catch ex2 As Exception + MsgBox(ex2.Message) + End Try - Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") - If AVISO IsNot Nothing Then - Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) - End If - Mail.Subject = Mail.Subject.Replace("%LKW%", "") - Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") + End If + If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text + If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then + Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) + + Dim TextHTML = "" + TextHTML &= tX.txt_text + TextHTML &= "
" + TextHTML &= "
" + TextHTML &= "Mit freundlichen Grüßen
" + TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" + TextHTML &= "
" + TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True) + + + Mail.HTMLBody = "
" & TextHTML & "
" + + + Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ") + If AVISO IsNot Nothing Then + Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr) + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr) End If + Mail.Subject = Mail.Subject.Replace("%LKW%", "") + Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "") + End If Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf") Mail.Display() - End If - - - 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" - ' Mail.SaveAs(matilPath) - ' Process.Start(matilPath) - - Catch ex As Exception - MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) - End Try - ElseIf sender Is btnPrint Then - 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") - If dest_path.ToUpper.EndsWith("PDF") Then - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) - Else - VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If + + 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg" + ' Mail.SaveAs(matilPath) + ' Process.Start(matilPath) + + Catch ex As Exception + MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace) + End Try + ElseIf sender Is btnPrint Then + 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "") + If dest_path.ToUpper.EndsWith("PDF") Then + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString) + Else + VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString) End If + End If End If + End If - printed = True + printed = True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) @@ -1316,7 +1318,10 @@ Public Class frmFormulare Dim ADR As New cAdressen(KundenNr) If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then - Bez = "_" & ADR.Name_1 + + Bez = "_" & ADR.Name_1.ToString + Bez = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Bez) + Bez = Regex.Replace(Bez, "[" & Regex.Escape(New String(System.IO.Path.GetInvalidFileNameChars())) & "]", "_") End If diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb index 077620ca..79dcd172 100644 --- a/SDL/kassenbuch/frmBelegNeu.Designer.vb +++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb @@ -147,6 +147,7 @@ Partial Class frmBelegNeu Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.lblTSEisOffline = New System.Windows.Forms.Label() CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() Me.pnlData.SuspendLayout() @@ -648,6 +649,7 @@ Partial Class frmBelegNeu 'pnlData ' Me.pnlData.BackColor = System.Drawing.Color.FromArgb(CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer)) + Me.pnlData.Controls.Add(Me.lblTSEisOffline) Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen) Me.pnlData.Controls.Add(Me.lblErr_Fahrer) Me.pnlData.Controls.Add(Me.lblErr_Pass) @@ -1784,6 +1786,20 @@ Partial Class frmBelegNeu Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' + 'lblTSEisOffline + ' + Me.lblTSEisOffline.AutoSize = True + Me.lblTSEisOffline.BackColor = System.Drawing.Color.Red + Me.lblTSEisOffline.Cursor = System.Windows.Forms.Cursors.Default + Me.lblTSEisOffline.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTSEisOffline.ForeColor = System.Drawing.Color.White + Me.lblTSEisOffline.Location = New System.Drawing.Point(154, 35) + Me.lblTSEisOffline.Name = "lblTSEisOffline" + Me.lblTSEisOffline.Size = New System.Drawing.Size(125, 20) + Me.lblTSEisOffline.TabIndex = 50 + Me.lblTSEisOffline.Text = "TSE ist Offline" + Me.lblTSEisOffline.Visible = False + ' 'frmBelegNeu ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) @@ -1935,4 +1951,5 @@ Partial Class frmBelegNeu Friend WithEvents cboBuchungsoforterzeugen As CheckBox Friend WithEvents Button4 As Button Friend WithEvents cm_FT As ContextMenuStrip + Friend WithEvents lblTSEisOffline As Label End Class diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 52ea50ad..b9551008 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -45,6 +45,7 @@ Public Class frmBelegNeu Public aktFiliale As Integer = 0 Public aktAbfertigungsNr As Integer = 0 + Dim tseIsOnline As Boolean = False Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String) @@ -231,9 +232,8 @@ Public Class frmBelegNeu ' Case "WAI" : cboFiliale.changeItem(5103) ' End Select - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then - Button4.Visible = True - End If + + Button4.Visible = checkFiskaltrust() If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then cboKassen.Enabled = True @@ -1704,49 +1704,59 @@ Public Class frmBelegNeu Dim answer = "" Dim verarbeitet As Boolean = False - Dim isFiskaltrust As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() - verarbeitet = result - isFiskaltrust = True - Else - verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - End If + Dim isFiskaltrust = checkFiskaltrust() - If Not verarbeitet AndAlso Not isFiskaltrust Then - If Not TESTBUCHUNG Then - - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) + verarbeitet = result + Else + verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service 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 + + If Not verarbeitet Then + + If Not isFiskaltrust Then + + 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 + Else + BELEG.FT_MissingSignature = True + End If + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + + + End If + + End If - If Not isFiskaltrust Then 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.") + '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) + ' 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 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 @@ -1873,6 +1883,21 @@ Public Class frmBelegNeu + End Function + + Private Function checkFiskaltrust() + + If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then + + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Return client_chilkat.isFiskaltrust() + + Else + Return False + + End If + End Function Private Sub openZahlungsbeleg(daid As Integer) @@ -1896,84 +1921,29 @@ Public Class frmBelegNeu Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged KASSE.LOAD(cboKassen._value) - 'Button4.Visible = KASSE.rksv_FT_RestServiceURL <> "" + + If KASSE IsNot Nothing AndAlso KASSE.rksv_aktiv AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing Then + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + If client_chilkat.isFiskaltrust() Then + Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") + + If result IsNot Nothing AndAlso result.Contains("VERBINDUNG OK") Then + tseIsOnline = True + End If + + lblTSEisOffline.Visible = Not tseIsOnline + + End If + End If + End Sub Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - 'nur im Testsystem! - If Not cm_FT.Items.ContainsKey("bar") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("storno") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - End If - - If Not cm_FT.Items.ContainsKey("null") Then - Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If - - If Not cm_FT.Items.ContainsKey("monthly") Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("daily") Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("yearly") Then - Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(uta) - End If - - If Not cm_FT.Items.ContainsKey("test") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("version") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("signatures") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("action") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("queueitem") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("exportJournal") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + If Not cm_FT.Items.ContainsKey("ft_neusignierung") AndAlso BELEG IsNot Nothing AndAlso (BELEG.gebucht Or BELEG.gebuchtStorno) AndAlso BELEG.FT_setMissingSignatureFailed Then + Dim ids = New ToolStripMenuItem() With {.Text = "Beleg neu signieren", .Name = "ft_neusignierung", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cm_FT.Items.Add(ids) End If @@ -1994,154 +1964,65 @@ Public Class frmBelegNeu Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - If item.Name = "null" Then + If item.Name = "ft_neusignierung" Then - If vbYes = MsgBox("Möchten Sie wirklich einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then + If BELEG IsNot Nothing Then + If vbYes = MsgBox("Möchten den nicht signierten Beleg " & BELEG.BelegNr & " an die TSE schicken?", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id) + Dim result As Boolean = False + + If BELEG.gebucht Or BELEG.gebuchtStorno Then + + Dim summeBRUTTO As Double = BELEG.rksv_umsatz + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim EA As String = "" + Dim kindOfReceiptCase As String = "" + + Select Case BELEG.Beleg_TYP + Case "0" + Return False 'null Belege nicht senden! + Case "E" 'Eingang/Ausgang + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + Case "L" + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + + Case Else + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + End Select - If result <> "" Then + result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, "", "", tseIsOnline) 'receiptCase leer und Reference leer!!!!! - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - - - ElseIf item.Name = "verbindungstest" Then - - Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ") - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - - ElseIf item.Name = "storno" Then - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?", vbYesNoCancel) Then - - Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - End If - - - ElseIf item.Name = "bar" Then - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id) - - If result <> "" Then - - If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then - Dim QR_CodeString As String = "" - client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + If result Then + BELEG.FT_setMissingSignatureFailed = False + BELEG.SAVE() + MsgBox("Beleg erfolgreich gesendet!") End If - Else - Return False - End If - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) End If - End If - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - - End If - - ElseIf item.Name = "monthly" Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Monatsbeleg an die TSE schicken, anschließend kann dieses Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) + If result Then + init() + End If End If End If - - ElseIf item.Name = "daily" Then - 'Nur DE - If KASSE.rksv_FT_Country = "DE" Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - Else - MsgBox("nicht für AT-Kassen möglich!") - End If - - - ElseIf item.Name = "yearly" Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name) - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - - ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - - Dim result As String = "" - Select Case item.Name - Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) - Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) - Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) - Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - End Select - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - If item.Name = "exportJournal" Then - client_chilkat.exportJournal(result) - End If - - End If - - - End If diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 57b3e6f8..7d179b2c 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -224,13 +224,16 @@ Public Class frmFremdbeleg End If Dim answer = "" - Dim isFiskaltrust As Boolean = False + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() + If KASSE.rksv_aktiv Then Dim verarbeitet As Boolean = False If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, "Eingang", "Ausgang")) + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) 'result.Wait() verarbeitet = result Else @@ -238,17 +241,24 @@ Public Class frmFremdbeleg End If - If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - If Not TESTBUCHUNG Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + If Not isFiskaltrust Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + End If + MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) + ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") + 'MsgBox("Programmfehler bei der digitalen Signatur.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + Else + BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!! End If - MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") - 'MsgBox("Programmfehler bei der digitalen Signatur.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + + End If End If - End If If KASSE.rksvDE_aktiv Then If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb index 297c5128..1a54abd4 100644 --- a/SDL/kassenbuch/frmKassenbuch.Designer.vb +++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb @@ -66,6 +66,8 @@ Partial Class frmKassenbuch Me.Label14 = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label() Me.pnlMain = New System.Windows.Forms.Panel() + Me.pbInitialStart = New System.Windows.Forms.PictureBox() + Me.lblInitStart = New System.Windows.Forms.Label() Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() Me.picTSEOnline = New System.Windows.Forms.PictureBox() Me.lblTSEOnline = New System.Windows.Forms.Label() @@ -95,8 +97,6 @@ Partial Class frmKassenbuch Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem() Me.Button1 = New System.Windows.Forms.Button() Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.lblInitStart = New System.Windows.Forms.Label() - Me.pbInitialStart = New System.Windows.Forms.PictureBox() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlTop.SuspendLayout() @@ -104,13 +104,13 @@ Partial Class frmKassenbuch Me.pnlSuche.SuspendLayout() Me.pnlSearch.SuspendLayout() Me.pnlMain.SuspendLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() - CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Label2 @@ -668,6 +668,29 @@ Partial Class frmKassenbuch Me.pnlMain.Size = New System.Drawing.Size(778, 433) Me.pnlMain.TabIndex = 425 ' + 'pbInitialStart + ' + Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok + Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.pbInitialStart.Location = New System.Drawing.Point(614, 67) + Me.pbInitialStart.Name = "pbInitialStart" + Me.pbInitialStart.Size = New System.Drawing.Size(27, 20) + Me.pbInitialStart.TabIndex = 452 + Me.pbInitialStart.TabStop = False + Me.pbInitialStart.Visible = False + ' + 'lblInitStart + ' + Me.lblInitStart.AutoSize = True + Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblInitStart.ForeColor = System.Drawing.Color.Black + Me.lblInitStart.Location = New System.Drawing.Point(655, 71) + Me.lblInitStart.Name = "lblInitStart" + Me.lblInitStart.Size = New System.Drawing.Size(70, 16) + Me.lblInitStart.TabIndex = 451 + Me.lblInitStart.Text = "Initial Start " + Me.lblInitStart.Visible = False + ' 'lblFiskaltrustHeader ' Me.lblFiskaltrustHeader.AutoSize = True @@ -834,7 +857,7 @@ Partial Class frmKassenbuch Me.lbldailyCashboxClosing.AutoSize = True Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red - Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(361, 5) + Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(363, 5) Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing" Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16) Me.lbldailyCashboxClosing.TabIndex = 436 @@ -972,7 +995,7 @@ Partial Class frmKassenbuch 'lblRKSV_KASSEN_Bez ' Me.lblRKSV_KASSEN_Bez.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(463, 3) + Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(542, 3) Me.lblRKSV_KASSEN_Bez.Name = "lblRKSV_KASSEN_Bez" Me.lblRKSV_KASSEN_Bez.Size = New System.Drawing.Size(231, 13) Me.lblRKSV_KASSEN_Bez.TabIndex = 426 @@ -1025,29 +1048,6 @@ Partial Class frmKassenbuch Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Size = New System.Drawing.Size(61, 4) ' - 'lblInitStart - ' - Me.lblInitStart.AutoSize = True - Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblInitStart.ForeColor = System.Drawing.Color.Black - Me.lblInitStart.Location = New System.Drawing.Point(655, 71) - Me.lblInitStart.Name = "lblInitStart" - Me.lblInitStart.Size = New System.Drawing.Size(70, 16) - Me.lblInitStart.TabIndex = 451 - Me.lblInitStart.Text = "Initial Start " - Me.lblInitStart.Visible = False - ' - 'pbInitialStart - ' - Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok - Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.pbInitialStart.Location = New System.Drawing.Point(614, 67) - Me.pbInitialStart.Name = "pbInitialStart" - Me.pbInitialStart.Size = New System.Drawing.Size(27, 20) - Me.pbInitialStart.TabIndex = 452 - Me.pbInitialStart.TabStop = False - Me.pbInitialStart.Visible = False - ' 'frmKassenbuch ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1072,6 +1072,7 @@ Partial Class frmKassenbuch Me.pnlSearch.PerformLayout() Me.pnlMain.ResumeLayout(False) Me.pnlMain.PerformLayout() + CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit() @@ -1079,7 +1080,6 @@ Partial Class frmKassenbuch CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() - CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 57484f9c..599a1bfb 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -1,5 +1,4 @@ -Imports GrapeCity.DataVisualization.TypeScript -Imports SDL.RKSVServer +Imports DocumentFormat.OpenXml.Drawing Public Class frmKassenbuch Dim SQL As New SQL @@ -22,6 +21,7 @@ Public Class frmKassenbuch Dim InitialStartIsCreated As Boolean = True Dim OutOfOrderIsCreated As Boolean = False Dim TSEIsOnline As Boolean = False + Dim MiddlewareIsOnline As Boolean = False Dim isADMIN As Boolean = False @@ -106,7 +106,7 @@ Public Class frmKassenbuch End Sub - Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) + Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) lblTSEOnline.Visible = True lblTages.Visible = True @@ -123,7 +123,7 @@ Public Class frmKassenbuch picTSEOnline.Visible = True pbInitialStart.Visible = True - showPic(isOnline, picTSEOnline) + showPic(TSEisOnline, picTSEOnline) showPic(tagesabschluss, picTages) showPic(monatsabschlussIsSet, picMonats) showPic(Jahresabschluss, picJahres) @@ -158,9 +158,6 @@ Public Class frmKassenbuch btnBelegAusgang.Enabled = False pnl.Visible = True - - - 'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & @@ -209,64 +206,86 @@ Public Class frmKassenbuch End If - If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then + lbldailyCashboxClosing.Text = "" - resetFIskaltrust() - - lbldailyCashboxClosing.Visible = True - Button11.Visible = True - - Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If tagesabschluss > 0 Then tagesabschlussIsSet = True - - Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If monatsabschluss > 0 Then monatsabschlussIsSet = True - - Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If jahresabschluss > 0 Then jahresabschlussIsSet = True - If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then - NULLBelegIsCreated = False - End If - - If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then - - OutOfOrderIsCreated = True - - End If - - - If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then - InitialStartIsCreated = False - End If + If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) - Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + If client_chilkat.isFiskaltrust() Then - If result.Contains("VERBINDUNG OK") Then - TSEIsOnline = True - End If + resetFIskaltrust() - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + lbldailyCashboxClosing.Visible = True + Button11.Visible = True - If Not NULLBelegIsCreated Then - diasableBarverkauf("NULLBELEG") - ElseIf tagesabschlussIsSet Then - diasableBarverkauf("TAGESABSCHLUSS") - ElseIf OutOfOrderIsCreated Then - diasableBarverkauf("OUTOFORDER") - Else - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then - btnBelegKunde.Enabled = True - btnBelegAusgang.Enabled = True - btnBelegEingang.Enabled = True - btnBelegGSKunde.Enabled = True - btnBelegLeihgeld.Enabled = True - btnStorno.Enabled = True + Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If tagesabschluss > 0 Then tagesabschlussIsSet = True + + Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If monatsabschluss > 0 Then monatsabschlussIsSet = True + + Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If jahresabschluss > 0 Then jahresabschlussIsSet = True + If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then + NULLBelegIsCreated = False End If + + If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then + OutOfOrderIsCreated = True + End If + + + If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then + InitialStartIsCreated = False + End If + + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + + If result IsNot Nothing Then + If result.Contains("VERBINDUNG OK") Then + TSEIsOnline = True + MiddlewareIsOnline = True + Else + TSEIsOnline = False + MiddlewareIsOnline = True + End If + Else + TSEIsOnline = False + MiddlewareIsOnline = False + + End If + + + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + + If Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") + ElseIf tagesabschlussIsSet Then + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") + Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" + End If + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + btnStorno.Enabled = True + End If + End If + Else + lbldailyCashboxClosing.Visible = False + Button11.Visible = False End If - Else - lbldailyCashboxClosing.Visible = False - Button11.Visible = False + End If @@ -277,9 +296,11 @@ Public Class frmKassenbuch Private Sub diasableBarverkauf(status) Select Case status - Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde noch kein 0-Beleg über FT erstellt!" - Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" + ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)" + Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!" + Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!" Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" + Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!" End Select btnBelegKunde.Enabled = False @@ -321,7 +342,7 @@ Public Class frmKassenbuch End Sub Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year) - Sub initDgv() + Sub initDgv(Optional isFiskaltrust As Boolean = False) With DataGridView2 .Columns.Clear() @@ -343,9 +364,10 @@ Public Class frmKassenbuch If PERSONAL.isLeihgeldkasse Then lgTxt = ",[Fahrer],[Passnummer] " End If + .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & - " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & - " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & + " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert,[FT_MissingSignature]" & + " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' AND b.rksv_BelegId > -1" & " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & ' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & @@ -385,10 +407,22 @@ Public Class frmKassenbuch .Columns("Passnummer").Visible = False End If + If .Columns.Contains("FT_MissingSignature") Then + .Columns("FT_MissingSignature").HeaderText = "fehl Sig." + .Columns("FT_MissingSignature").Width = 45 + For Each r As DataGridViewRow In .Rows + If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then + r.DefaultCellStyle.ForeColor = Color.Red + End If + Next + End If + + If master_Kasse Then .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master End If + For Each r As DataGridViewRow In .Rows If r.Cells("storniert").Value = "JA" Then r.DefaultCellStyle.ForeColor = Color.Red @@ -1160,9 +1194,11 @@ Public Class frmKassenbuch If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub + Else + BELEGTmp.rksv_qr = QRQString End If Else @@ -1242,7 +1278,7 @@ Public Class frmKassenbuch If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If @@ -1363,7 +1399,7 @@ Public Class frmKassenbuch End If End Sub - + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim f As New frmKassenbuchPWD(PERSONAL) If f.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -1546,6 +1582,8 @@ Public Class frmKassenbuch Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click + cm_FT.Items.Clear() + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then 'nur im Testsystem! If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then @@ -1574,7 +1612,7 @@ Public Class frmKassenbuch AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If - If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cm_FT.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked @@ -1634,6 +1672,13 @@ Public Class frmKassenbuch cm_FT.Items.Add(ids) End If + + If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then + Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + cm_FT.Show(Cursor.Position) End Sub @@ -1674,6 +1719,93 @@ Public Class frmKassenbuch End If + ElseIf item.Name = "setMissingSignatures" Then + + Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") + + If dt.Rows.Count = 0 Then + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!") + Return False + End If + + If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then + + Dim result As Boolean = False + For Each r As DataRow In dt.Rows + + Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat")) + Dim summeBRUTTO As Double = BELEG.rksv_umsatz + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim EA As String = "" + Dim kindOfReceiptCase As String = "" + + Select Case BELEG.Beleg_TYP + Case "0" + Continue For 'null Belege nicht senden! + Case "E" 'Eingang/Ausgang + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + Case "L" + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + + Case Else + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + End Select + + kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG + + result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference) + + If result Then + BELEG.FT_MissingSignature = False + BELEG.SAVE() + Else + MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!") + BELEG.FT_MissingSignature = False + BELEG.FT_setMissingSignatureFailed = True + BELEG.SAVE() + End If + + Next + + If result Then + init() + End If + + End If + + + + ElseIf item.Name = "tempoutoforder" Then + + + If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_OUTOFORDERBELEG() + init() + End If + + End If + ElseIf item.Name = "outoforder" Then @@ -1701,7 +1833,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignOInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) If result <> "" Then @@ -1733,7 +1865,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) If result <> "" Then @@ -1754,7 +1886,7 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id) + Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) If result <> "" Then @@ -1853,7 +1985,7 @@ Public Class frmKassenbuch ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - Dim result As String = "" + Dim result As String = "" Select Case item.Name Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index a70a0a39..77148d1a 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -1,5 +1,6 @@  Imports GrapeCity.ActiveReports +Imports java.security.acl Imports VERAG_PROG_ALLGEMEIN Public Class frmNacherfassungLeihgeld @@ -363,143 +364,158 @@ Public Class frmNacherfassungLeihgeld Dim QR_CodeString As String = "" Dim LastJWS As String = "" Dim isFiskaltrust As Boolean = False + If KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + isFiskaltrust = client_chilkat.isFiskaltrust() + End If + If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt - Dim answer = "" + Dim answer = "" - Dim verarbeitet As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() - verarbeitet = result - Else - verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - End If - - If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - If Not TESTBUCHUNG Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) - 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.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - End If - - - If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt - Dim answer = "" - If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, summeBRUTTO * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) - 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.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - End If - If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - If KASSE.rksv_KassaGuid = "KASSE_01" Then - 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 Or KASSE.rksvDE_aktiv) - BELEG.SAVE() - - 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird... - Dim barbetrag As Double = 0 - Dim BelegNrProvision = 0 - If cbxProvision.Checked Then - printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked) - End If - - - 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken - cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken - - If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision) - - - 'nur bei VERAG die fragen - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse 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, , barbetrag, BelegNrProvision) - Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG) - If Not spedBuchExisting Then - MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") + Dim verarbeitet As Boolean = False + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") + 'result.Wait() + verarbeitet = result Else - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG - - 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 + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service End If + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + If Not isFiskaltrust Then - - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then - Dim verarbOK As Boolean = True - Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr) - SPEDBUCH.BelegNr = BelegNrFIBU - Dim RK_ID As Integer = -1 - - If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False - If RK_ID > 0 Then - Dim RECHNUNG As New cRechnungsausgang(RK_ID) - RECHNUNG.KdAuftragsNr = BelegNrFIBU - If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False - If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then - RECHNUNG.[DruckDatumZeit] = Nothing - RECHNUNG.SAVE_DruckDatumZeit() + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) End If - 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.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - If verarbOK Then - 'MsgBox("Rechnung erstellt!") Else - MsgBox("Fehler bei Rechnungserstellung!") + BELEG.FT_MissingSignature = True End If + End If + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + End If + + + If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt + Dim answer = "" + If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, summeBRUTTO * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + 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.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + End If + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + If KASSE.rksv_KassaGuid = "KASSE_01" Then + 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 Or KASSE.rksvDE_aktiv) + BELEG.SAVE() + + 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird... + Dim barbetrag As Double = 0 + Dim BelegNrProvision = 0 + If cbxProvision.Checked Then + printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked) + End If + + + 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken + cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken + + If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision) + + + 'nur bei VERAG die fragen + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse 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, , barbetrag, BelegNrProvision) + Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG) + If Not spedBuchExisting Then + MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") + Else + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG + + 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 + + + + + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then + Dim verarbOK As Boolean = True + Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr) + SPEDBUCH.BelegNr = BelegNrFIBU + Dim RK_ID As Integer = -1 + + If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False + If RK_ID > 0 Then + Dim RECHNUNG As New cRechnungsausgang(RK_ID) + RECHNUNG.KdAuftragsNr = BelegNrFIBU + If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False + If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then + RECHNUNG.[DruckDatumZeit] = Nothing + RECHNUNG.SAVE_DruckDatumZeit() + End If + End If + + If verarbOK Then + 'MsgBox("Rechnung erstellt!") + Else + MsgBox("Fehler bei Rechnungserstellung!") + + End If + End If + + End If + End If + + + Me.Close() + Me.DialogResult = Windows.Forms.DialogResult.OK + Me.Cursor = Cursors.Default End If - - Me.Close() - Me.DialogResult = Windows.Forms.DialogResult.OK - Me.Cursor = Cursors.Default - End If - Catch ex As Exception Me.Cursor = Cursors.Default MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & If(BELEG.rksv_BelegId > 0, "ACHTUNG: BELEG BEREITS SIGNIERT!!!", "") & vbNewLine & vbNewLine & ex.Message & ex.StackTrace) diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index b148f700..919dc00e 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -3147,13 +3147,13 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END" End Select - sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription,tbl_IDS_Stationen.OutletName, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag], case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter - FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & " - GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz; + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz,tbl_IDS_Stationen.OutletName; " Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") @@ -3210,7 +3210,12 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "") rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") - rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") + Dim Station As String = SQL.isDbnullEmpty(rpt.Fields.Item("OutletName").Value, "") + If Station <> "" Then + Station = " (" & Station & ")" + End If + + rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "") rpt.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "") diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb index 826b029b..17d7e096 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb @@ -64,6 +64,10 @@ Public Class cNCTSGestellungsadressen Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + If Not VERAG_PROG_ALLGEMEIN.cProgramFunctions.ValidateSQLFieldLengths(list, "tblNCTSGestellungsadressen", "", "FMZOLL") Then + Return False + End If + Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblNCTSGestellungsadressen WITH(updlock,serializable) WHERE nga_id=@nga_id) " & " BEGIN " & getUpdateCmd() & " END " & diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 53c4a512..2a04c7c5 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -2512,7 +2512,7 @@ Public Class DATENVERVER_OPTIONS End Function - Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String) As String + Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String, Optional fixedIssuerAssignedID As Boolean = True) As String Dim tempFile As String = pdfPath & ".tmp" @@ -2522,6 +2522,12 @@ Public Class DATENVERVER_OPTIONS Dim xmlBytes = File.ReadAllBytes(xmlPath) + + If fixedIssuerAssignedID Then + fixIssuerAssignedID(xmlBytes) + End If + + Dim fileName As String = "factur-x.xml" If HasAttachment(pdf, fileName) Then @@ -2557,6 +2563,75 @@ Public Class DATENVERVER_OPTIONS End Function + + + Public Shared Sub fixIssuerAssignedID(ByRef xmlBytes As Byte()) + + + Dim xmlDoc As New System.Xml.XmlDocument() + xmlDoc.PreserveWhitespace = True + + Using ms As New MemoryStream(xmlBytes) + xmlDoc.Load(ms) + End Using + + Dim ns As New System.Xml.XmlNamespaceManager(xmlDoc.NameTable) + + ns.AddNamespace( + "ram", + "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" + ) + + Dim documents = xmlDoc.SelectNodes( + "//ram:AdditionalReferencedDocument", + ns + ) + + For Each document As XmlElement In documents + + Dim idNode As XmlNode = + document.SelectSingleNode("ram:ID", ns) + + If idNode Is Nothing Then + Continue For + End If + + ' Wert der bisherigen ID merken + Dim idValue As String = idNode.InnerText + + ' Neue IssuerAssignedID erzeugen + Dim issuerAssignedID As XmlElement = + xmlDoc.CreateElement( + "ram", + "IssuerAssignedID", + "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" + ) + + issuerAssignedID.InnerText = idValue + + ' ID entfernen + document.RemoveChild(idNode) + + ' IssuerAssignedID an ERSTE Stelle setzen + document.InsertBefore( + issuerAssignedID, + document.FirstChild + ) + + Next + + Using ms As New MemoryStream() + xmlDoc.Save(ms) + xmlBytes = ms.ToArray() + End Using + + + End Sub + + + + + Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean Dim catalog = pdf.GetCatalog().GetPdfObject() diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb index 909f6554..929e53f1 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb +++ b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb @@ -225,7 +225,13 @@ Public Class cVERAG_CustomsDeclarations ' CBAM Pattern (HSCode) ' ------------------------------------------------------------ Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode") - Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") + Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") & + " AND zaItem_OriginCountry NOT IN ( + 'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR', + 'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL', + 'PL','PT','RO','SK','SI','ES','SE', + 'CH','NO','IS','LI','XI' + )" Dim cbamWhereISOCntry As String = " i.zaItem_OriginCountry NOT IN ( /*EU-27 (ISO2)*/ From 6fa1349b4e03059f184b259f5dacf434a60b54bb Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 09:08:39 +0200 Subject: [PATCH 43/54] fix --- .gitignore | 1 + SDL/kassenbuch/frmKassenbuch.vb | 2019 ------------------------------- 2 files changed, 1 insertion(+), 2019 deletions(-) delete mode 100644 SDL/kassenbuch/frmKassenbuch.vb diff --git a/.gitignore b/.gitignore index e00c93e4..b6c19153 100644 --- a/.gitignore +++ b/.gitignore @@ -263,3 +263,4 @@ __pycache__/ /VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj /SDL/SDL.vbproj /SDL/SDL.vbproj +/SDL/kassenbuch/frmKassenbuch.vb diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb deleted file mode 100644 index fa9552d9..00000000 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ /dev/null @@ -1,2019 +0,0 @@ -Imports DocumentFormat.OpenXml.Drawing - -Public Class frmKassenbuch - Dim SQL As New SQL - Public GESCHAEFTSJAHR As Integer = cRKSV.getGJ_FIRMA(Now, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) 'IIf(Now.Month = 1, Now.Year - 1, Now.Year) - Dim PERSONAL As cPersonal - Dim RKSV As cRKSV_Kasse - Dim PERSONAL_LG As cPersonal = Nothing - ' Dim PERSONAL_TMP_MASTER_KASSSE As cPersonal - Dim KennwortTime As DateTime = CDate("01.01.1990") - ' Dim firma = "VERAG" - Dim DGV = "B" - Dim loginAfterSeconds = 10 - Public master_Kasse As Boolean = False - Dim FMZOLL_SQL As New FMZOLL_SQL - - Dim tagesabschlussIsSet As Boolean = False - Dim monatsabschlussIsSet As Boolean = False - Dim jahresabschlussIsSet As Boolean = False - Dim NULLBelegIsCreated As Boolean = True - Dim InitialStartIsCreated As Boolean = True - Dim OutOfOrderIsCreated As Boolean = False - Dim TSEIsOnline As Boolean = False - Dim MiddlewareIsOnline As Boolean = False - - Dim isADMIN As Boolean = False - - Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal) - ' Dieser Aufruf ist für den Designer erforderlich. - InitializeComponent() - Me.PERSONAL = PERSONAL - Me.PERSONAL_LG = PERSONAL_LG - ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. - - End Sub - - Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles btnBelegKunde.Click - If KennwortOK() Then - - lblERRKennwort.Visible = False - Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "E") - frmBeleg.ShowDialog(Me) - init() - - End If - - End Sub - - Function KennwortOK() As Boolean - If DateDiff(DateInterval.Second, KennwortTime, Now) < loginAfterSeconds Then - Return True - End If - Dim frmSecureLoginKassenbuch As New frmSecureLoginKassenbuch - frmSecureLoginKassenbuch.openKB = False - frmSecureLoginKassenbuch.KassenbuchNr_tmp = PERSONAL.KassenbuchNr - frmSecureLoginKassenbuch.ShowDialog(Me) - If frmSecureLoginKassenbuch.DialogResult = Windows.Forms.DialogResult.OK Then - KennwortTime = Now - PERSONAL_LG = frmSecureLoginKassenbuch.PERSONAL_LG - Return True - Else - lblERRKennwort.Visible = True - Return False - End If - End Function - Private Sub frmKassenbuch_Load(sender As Object, e As EventArgs) Handles Me.Load - RKSV = New cRKSV_Kasse(PERSONAL.cRKSV_KasseID) - GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma) - - - If PERSONAL.ID = 274 Then master_Kasse = True - If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "SIENER" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "DANIEL" Then - isADMIN = True - - End If - KennwortTime = Now - initDgv() 'nur set - init() - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] ", False, "FMZOLL") - Else - cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_aktiv]=1 OR [rksvde_aktiv]=1 or rksv_id=4) ", False, "FMZOLL") - End If - - ' [rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND - - If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then - btnBelegKunde.Enabled = False - btnBelegAusgang.Enabled = False - btnBelegEingang.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - btnStorno.Enabled = False - End If - - If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("Kassenbuch_POS_Terminal_einrichten", Me) Then - btnPosTerminal.Enabled = False - End If - - - If isADMIN Then - Button6.Visible = True - End If - - - End Sub - - Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) - - lblTSEOnline.Visible = True - lblTages.Visible = True - lblMonats.Visible = True - lblJahres.Visible = True - lblNullBeleg.Visible = True - lblInitStart.Visible = True - - - picJahres.Visible = True - picMonats.Visible = True - picTages.Visible = True - picNULLbeleg.Visible = True - picTSEOnline.Visible = True - pbInitialStart.Visible = True - - showPic(TSEisOnline, picTSEOnline) - showPic(tagesabschluss, picTages) - showPic(monatsabschlussIsSet, picMonats) - showPic(Jahresabschluss, picJahres) - showPic(NULLBeleg, picNULLbeleg) - showPic(initialStart, pbInitialStart) - - - End Sub - - Sub showPic(ok As Boolean, pic As PictureBox) - pic.Visible = True - If ok Then - pic.BackgroundImage = My.Resources.ok - Else - pic.BackgroundImage = My.Resources.del - End If - - End Sub - Sub init() - Dim sqlstr = "" - - lblWarning.Text = "" - - If master_Kasse Then - Label9.Text = "ADMIN" - pnlTop.BackColor = Color.Red - btnBelegEingang.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - Label15.Text = "MASTER-KASSE" - btnBelegKunde.Enabled = False - btnBelegAusgang.Enabled = False - pnl.Visible = True - - 'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & - ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & - ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & - ' " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " and Personal.[KassenbuchNr]=tblKassenbuch.Konto" - ' sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & - ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & - ' " WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto" - sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & - " FROM tblKassenbuch WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND Konto in (select KassenbuchNr from Personal where Standard_RKSV_KasseId='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto" - - Else - Label9.Text = PERSONAL.Name - pnlTop.BackColor = Color.FromArgb(0, 54, 128) - btnBelegEingang.Enabled = True - btnBelegGSKunde.Enabled = True - btnBelegLeihgeld.Enabled = True - Label15.Text = PERSONAL.KassenbuchNr - btnBelegKunde.Enabled = True - btnBelegAusgang.Enabled = True - pnl.Visible = False - - sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & - " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & - " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & - " And tblKassenbuch.Benutzer=" & PERSONAL.ID & " AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto=" & PERSONAL.KassenbuchNr & "" - End If - - If PERSONAL.isLeihgeldkasse Then - ' btnBelegLeihgeld.Enabled = True - btnBelegGSKunde.Enabled = False - Button10.Visible = True - 'btnBelegKunde.Enabled = False - End If - - initDate() - ' initDgv() - initDgv() 'initDgv, weil sonst Umschaltung zu MASTER Kasse nicht funzt - 'DataGridView2.RELOAD() - - If PERSONAL.cRKSV_Kasse Is Nothing Then - Label5.Text = "Keine Standard-Kasse" - Else - - Dim dt As DataTable = SQL.loadDgvBySql(sqlstr, "FMZOLL") - Label5.Text = CDbl(If(dt.Rows.Count > 0, cSqlDb.checkNullReturnValue(dt.Rows(0)("Saldo"), 0), 0)).ToString("C") - - End If - - lbldailyCashboxClosing.Text = "" - - If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then - - Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) - If client_chilkat.isFiskaltrust() Then - - resetFIskaltrust() - - lbldailyCashboxClosing.Visible = True - Button11.Visible = True - - Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If tagesabschluss > 0 Then tagesabschlussIsSet = True - - Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If monatsabschluss > 0 Then monatsabschlussIsSet = True - - Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) - If jahresabschluss > 0 Then jahresabschlussIsSet = True - If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then - NULLBelegIsCreated = False - End If - - If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then - OutOfOrderIsCreated = True - End If - - - If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then - InitialStartIsCreated = False - End If - - Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") - - If result IsNot Nothing Then - If result.Contains("VERBINDUNG OK") Then - TSEIsOnline = True - MiddlewareIsOnline = True - Else - TSEIsOnline = False - MiddlewareIsOnline = True - End If - Else - TSEIsOnline = False - MiddlewareIsOnline = False - - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - - - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - - If Not MiddlewareIsOnline Then - diasableBarverkauf("MIDDLEWARE") - ElseIf Not InitialStartIsCreated Then - diasableBarverkauf("INITIALSTART") - ElseIf tagesabschlussIsSet Then - diasableBarverkauf("TAGESABSCHLUSS") - ElseIf OutOfOrderIsCreated Then - diasableBarverkauf("OUTOFORDER") - Else - lbldailyCashboxClosing.Text = "" - If Not TSEIsOnline Then - lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" - End If - - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then - btnBelegKunde.Enabled = True - btnBelegAusgang.Enabled = True - btnBelegEingang.Enabled = True - btnBelegGSKunde.Enabled = True - btnBelegLeihgeld.Enabled = True - btnStorno.Enabled = True - End If - End If - Else - lbldailyCashboxClosing.Visible = False - Button11.Visible = False - End If - - - - - ' Label9.Text = PERSONAL.Name - DataGridView2.ClearSelection() - End Sub - - Private Sub diasableBarverkauf(status) - - Select Case status - ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)" - Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!" - Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!" - Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" - Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!" - End Select - - btnBelegKunde.Enabled = False - btnBelegAusgang.Enabled = False - btnBelegEingang.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - btnStorno.Enabled = False - - - End Sub - - Private Sub resetFIskaltrust() - - tagesabschlussIsSet = False - monatsabschlussIsSet = False - jahresabschlussIsSet = False - NULLBelegIsCreated = True - InitialStartIsCreated = True - OutOfOrderIsCreated = False - TSEIsOnline = False - - End Sub - Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click - searchdate = searchdate.AddMonths(1) - initDate() - End Sub - Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click - searchdate = searchdate.AddMonths(-1) - initDate() - End Sub - Sub initDate() - lblMonatSuche.Text = searchdate.ToString("MMMM yyyy") - datVon.Value = searchdate - datBis.Value = searchdate.AddMonths(1).AddDays(-1) - End Sub - Private Sub datVon_ValueChanged(sender As Object, e As EventArgs) Handles datVon.ValueChanged, datBis.ValueChanged - initDgv() - End Sub - - Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year) - Sub initDgv(Optional isFiskaltrust As Boolean = False) - - With DataGridView2 - .Columns.Clear() - If DGV = "B" Then - btnDGVBelege.BackColor = Color.SteelBlue - btnDGVBelege.ForeColor = Color.White - btnDGVKassenbuch.BackColor = Color.Transparent - btnDGVKassenbuch.ForeColor = Color.DimGray - - Dim benutzerTMP = "" - Dim benutzerBezTMP = "" - Dim lgTxt = "" - If master_Kasse Then - benutzerTMP = " AND Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " - benutzerBezTMP = " , (SELECT cast(ID as varchar(3))+' '+Name FROM [Personal] WHERE [ID]=b.Benutzer) as BenutzerBez " - Else - benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" - End If - If PERSONAL.isLeihgeldkasse Then - lgTxt = ",[Fahrer],[Passnummer] " - End If - - .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & - " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & - " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & - " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") - ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & - ' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & - ' " FROM tblEABelegnummer as b WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & - ' " ORDER BY b.rksv_BelegId DESC;", "FMZOLL") - .LOAD() - - If .Rows.Count = 0 Then Exit Sub - - .Columns("Betrag").DefaultCellStyle.Format = "C" - .Columns("Betrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight - .Columns("Ordnungsbegriff").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill - - .Columns("rksv_BelegId").HeaderText = "Beleg-Nr" - .Columns("rksv_BelegId").Width = 55 - .Columns("rksv_BelegId").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("BelegDat").HeaderText = "Datum" - .Columns("BelegDat").Width = 65 - .Columns("BelegNr").HeaderText = "KB-Bel.Nr" - .Columns("BelegNr").Width = 55 - .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("Belegart").HeaderText = "Art" - .Columns("Belegart").Width = 30 - .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("Ordnungsbegriff").Width = 160 - .Columns("Frachtführer").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill - .Columns("Beleg_TYP").Visible = False - .Columns("storniert").HeaderText = "Storn." - .Columns("storniert").Width = 45 - .Columns("EC").Width = 45 - .Columns("ECNr").Width = 60 - .Columns("Benutzer").Visible = False - '.Columns("kassiert").Visible = False - - If PERSONAL.isLeihgeldkasse Then - .Columns("Fahrer").Visible = False - .Columns("Passnummer").Visible = False - End If - - If .Columns.Contains("FT_MissingSignature") Then - .Columns("FT_MissingSignature").HeaderText = "fehl Sig." - .Columns("FT_MissingSignature").Width = 45 - For Each r As DataGridViewRow In .Rows - If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then - r.DefaultCellStyle.ForeColor = Color.Red - End If - Next - End If - - If master_Kasse Then - .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master - .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master - End If - - - For Each r As DataGridViewRow In .Rows - If r.Cells("storniert").Value = "JA" Then - r.DefaultCellStyle.ForeColor = Color.Red - End If - Next - - ElseIf DGV = "KB" Then - btnDGVKassenbuch.BackColor = Color.SteelBlue - btnDGVKassenbuch.ForeColor = Color.White - btnDGVBelege.BackColor = Color.Transparent - btnDGVBelege.ForeColor = Color.DimGray - - Dim benutzerTMP = "" - If master_Kasse Then - benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " - Else - benutzerTMP = " And tblKassenbuch.Benutzer=" & PERSONAL.ID & "" - - End If - - - .SET_SQL("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],tblKassenbuch.Finanzwege as FW ,([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer, mit_username as kassiert " & - " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id" & - " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & - " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL") - - ' .DataSource = SQL.loadDgvBySql("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer " & - ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & - ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & - ' " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL") - .LOAD() - - If .Rows.Count = 0 Then Exit Sub - - .Columns("JournalNr").Width = 55 - .Columns("JournalNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("Brutto").DefaultCellStyle.Format = "C" - .Columns("Brutto").Width = 80 - .Columns("Brutto").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight - .Columns("BelegDat").HeaderText = "Datum" - .Columns("BelegDat").Width = 65 - .Columns("BelegNr").HeaderText = "KB-Bel.Nr" - .Columns("BelegNr").Width = 55 - .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("Belegart").HeaderText = "Art" - .Columns("Belegart").Width = 30 - .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter - .Columns("Buchungstext").MinimumWidth = 60 - .Columns("Buchungstext").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill - .Columns("FW").Width = 45 - .Columns("Konto").Width = 40 - .Columns("Soll").Width = 80 - .Columns("Soll").DefaultCellStyle.Format = "C" - .Columns("Haben").Width = 80 - .Columns("Haben").DefaultCellStyle.Format = "C" - .Columns("Steuer").Width = 60 - .Columns("Steuer").DefaultCellStyle.Format = "C" - .Columns("Benutzer").Visible = False - '.Columns("kassiert").Visible = False - - End If - End With - End Sub - - Private Sub DataGridView2_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellDoubleClick - Try - - If e.RowIndex >= 0 Then - Dim r As DataGridViewRow = DataGridView2.Rows(e.RowIndex) - - Dim PersonalTmp = PERSONAL - If r.Cells("Benutzer").Value <> PersonalTmp.ID Then PersonalTmp = FMZOLL_SQL.getPersonalById(r.Cells("Benutzer").Value) - - Dim B As New EABeleg("LOAD", PersonalTmp.Mandant, PersonalTmp.Niederlassung, PersonalTmp.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value) - openBELEG(B, PersonalTmp) - - End If - - Catch ex As Exception - - End Try - End Sub - - Sub openBELEG(B As EABeleg, PERSONAL As cPersonal) - If B Is Nothing Then Exit Sub - Select Case B.Beleg_TYP - Case "0" - MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.") - Case "E" - 'If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub - Dim frmBeleg As New frmFremdbeleg(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) - frmBeleg.ShowDialog(Me) - Case "L" - If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub - Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) - frmBeleg.ShowDialog(Me) - Case Else - Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) - frmBeleg.ShowDialog(Me) - End Select - - init() - - ' End If - End Sub - Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick - 'OLD!!!!!!!!!!!!!!!!!!!!!!! - If e.RowIndex >= 0 Then - Dim r As DataGridViewRow = DataGridView1.Rows(e.RowIndex) - Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value) - frmBeleg.ShowDialog(Me) - init() - End If - End Sub - - Private Sub FlatButton7_Click(sender As Object, e As EventArgs) Handles FlatButton7.Click - init() - End Sub - - Private Sub FlatButton6_Click(sender As Object, e As EventArgs) Handles FlatButton6.Click - - Dim print As New frmPrintLayout - print.Text = "Kassenbuch" - - Dim rpt As New rptKassenbuchBuchhaltung - - Dim frmVonBis As New frmKasseBerichtVonBis - If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then - Exit Sub - End If - Dim von As Date = frmVonBis.datVon.Value.ToShortDateString - Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString - - 'Dim von As Date = CDate("01.01.2016") - ' Dim bis As Date = CDate("31.01.2016") - - ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & - ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - Dim where = "" - - If frmVonBis.cbxRKSV_only.Checked Then - where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " - - End If - Dim sqlStr = "" - ' sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " & - ' "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " - - If master_Kasse Then - rpt.lblSachbearbeiter.Text = "ADMIN" - rpt.lblKassenbuchNr.Text = "-" - rpt.lblMandantNiederlassung.Text = "-" - sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Finanzwege, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " & - "FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr " - Else - rpt.lblSachbearbeiter.Text = PERSONAL.Name - rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - - sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Finanzwege, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " & - "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " - End If - rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - - rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung - - If rpt.DataSource.rows.count = 0 Then - rpt.Dispose() : print.Dispose() - MsgBox("Keine Daten vorhanden!") - Exit Sub - End If - - Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" - Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" - Case Else - End Select - - Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' iif (von.Month = 1, von.Year - 1, von.Year) - Dim sum = 0 - rpt.lblUeberschrift.Text = "Kassenbuch " & von.ToShortDateString & " bis " & bis.ToShortDateString - rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR - 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - - 'Dim cnt As Integer = 0 - rpt.lblDat.Text = Now.ToLongDateString - Dim sumSoll As Double = 0 - Dim sumHaben As Double = 0 - Dim gesSumSoll As Double = 0 - Dim gesSumHaben As Double = 0 - Dim datum = "" - AddHandler rpt.Detail.Format, Sub() - ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - - ' Dim soll = dt.Rows(0)("Soll") - ' Dim haben = dt.Rows(0)("Haben") - 'Dim konto = dt.Rows(0)("Konto") - - rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value() - Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString - rpt.lblBelegDat.Text = BuDat - Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) ''IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) - rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) - rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value() - rpt.lblFinanzwege.Text = IIf(rpt.Fields.Item("Finanzwege").Value() Is DBNull.Value, "", rpt.Fields.Item("Finanzwege").Value()) - ' rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - - Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) - Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) - - rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") - rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") - ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & - ' " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " & - ' " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") - - rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & - " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " & - " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") - sumSoll += CDbl(rpt.Fields.Item("Soll").Value()) - sumHaben += CDbl(rpt.Fields.Item("Haben").Value()) - gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value()) - gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value()) - ' rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value() - ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") - ' sum += rpt.Fields.Item("clmnBetrag").Value() - datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt - End Sub - AddHandler rpt.GroupHeader1.Format, Sub() - sumSoll = 0 - sumHaben = 0 - End Sub - AddHandler rpt.GroupFooter1.Format, Sub() - rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" - rpt.lblSollSumme.Text = sumSoll.ToString("C") - rpt.lblHabenSumme.Text = sumHaben.ToString("C") - ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") - ' sum += rpt.Fields.Item("clmnBetrag").Value() - End Sub - AddHandler rpt.ReportFooter1.Format, Sub() - rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") - rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") - End Sub - - print.Viewer.LoadDocument(rpt) - print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous - print.Show() - End Sub - - Private Sub FlatButton2_Click(sender As Object, e As EventArgs) Handles FlatButton2.Click - - Dim print As New frmPrintLayout - print.Text = "Kassenbuch" - Dim rpt As New rptKassenbuchBuchhaltungDetails - - Dim frmVonBis As New frmKasseBerichtVonBis - If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then - Exit Sub - End If - Dim von As Date = frmVonBis.datVon.Value.ToShortDateString - Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString - Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) - - ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & - ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - Dim where = "" - Dim benutzerTMP = "" - If master_Kasse Then - rpt.lblSachbearbeiter.Text = "ADMIN" - rpt.lblKassenbuchNr.Text = "-" - rpt.lblMandantNiederlassung.Text = "-" - benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " - Else - rpt.lblSachbearbeiter.Text = PERSONAL.Name - rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" - End If - If frmVonBis.cbxRKSV_only.Checked Then - where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " - - End If - rpt.DataSource = SQL.loadDgvBySql("SELECT JournalNr, BelegDat,Buchungstext,Finanzwege,Konto, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,isnull(Bez,'') as Bez,CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END as Umsatzsteuer,CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END as Vorsteuer " & - " FROM [tblKassenbuch] LEFT JOIN [tblSteuersätze] ON [Nr]=Steuer " & - " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " ORDER BY Buchungsdatum, JournalNr ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - - rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung - - If rpt.DataSource.rows.count = 0 Then - rpt.Dispose() : print.Dispose() - MsgBox("Keine Daten vorhanden!") - Exit Sub - End If - - Dim sum = 0 - rpt.lblUeberschrift.Text = "Buchungsbericht " & von.ToShortDateString & " bis " & bis.ToShortDateString - 'rpt.lblSachbearbeiter.Text = PERSONAL.Name - ' rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - ' rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR - - Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" - Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" - Case Else - End Select - - 'Dim cnt As Integer = 0 - rpt.lblDat.Text = Now.ToLongDateString - Dim sumSoll As Double = 0 - Dim sumHaben As Double = 0 - Dim gesSumSoll As Double = 0 - Dim gesSumHaben As Double = 0 - - Dim sumUSt As Double = 0 - Dim sumVorSt As Double = 0 - Dim gesSumUSt As Double = 0 - Dim gesSumVorSt As Double = 0 - Dim datum = "" - AddHandler rpt.Detail.Format, Sub() - ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - - ' Dim soll = dt.Rows(0)("Soll") - ' Dim haben = dt.Rows(0)("Haben") - 'Dim konto = dt.Rows(0)("Konto") - - rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value() - Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString - rpt.lblBelegDat.Text = BuDat - Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) - rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) - rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value() - rpt.lblFinanzwege.Text = IIf(rpt.Fields.Item("Finanzwege").Value() Is DBNull.Value, "", rpt.Fields.Item("Finanzwege").Value()) - rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value() - Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) - Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) - - rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") - rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") - rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & - " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value() & "' " & - " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") - - ' If Not rpt.Fields.Item("Bez").Value() Is DBNull.Value Then - rpt.lblSteuer.Text = rpt.Fields.Item("Bez").Value() - ' End If - - Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value()) - Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value()) - rpt.lblUSt.Text = IIf(ust <> 0, ust.ToString("C"), "") - rpt.lblVorst.Text = IIf(vorst <> 0, vorst.ToString("C"), "") - - sumSoll += soll - sumHaben += haben - gesSumSoll += soll - gesSumHaben += haben - - sumUSt += ust - sumVorSt += vorst - gesSumUSt += ust - gesSumVorSt += vorst - - datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt - End Sub - AddHandler rpt.GroupHeader1.Format, Sub() - sumSoll = 0 - sumHaben = 0 - sumUSt = 0 - sumVorSt = 0 - End Sub - AddHandler rpt.GroupFooter1.Format, Sub() - rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" - rpt.lblSollSumme.Text = sumSoll.ToString("C") - rpt.lblHabenSumme.Text = sumHaben.ToString("C") - rpt.lblUstSumme.Text = sumUSt.ToString("C") - rpt.lblVorstSumme.Text = sumVorSt.ToString("C") - - End Sub - AddHandler rpt.ReportFooter1.Format, Sub() - rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") - rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") - rpt.lblUstGesamtSumme.Text = gesSumUSt.ToString("C") - rpt.lblVorStGesamtSumme.Text = gesSumVorSt.ToString("C") - End Sub - - print.Viewer.LoadDocument(rpt) - print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous - print.Show() - End Sub - - Private Sub FlatButton5_Click(sender As Object, e As EventArgs) Handles FlatButton5.Click - - Dim print As New frmPrintLayout - print.Text = "Kassenbuch" - Dim rpt As New rptKassenbuchKontenBericht - - rpt.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4 - - Dim frmVonBis As New frmKasseBerichtVonBis - If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then - Exit Sub - End If - Dim von As Date = frmVonBis.datVon.Value.ToShortDateString - Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString - Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) - - Dim where = "" - Dim benutzerTMP = "" - If master_Kasse Then - rpt.lblSachbearbeiter.Text = "ADMIN" - rpt.lblKassenbuchNr.Text = "-" - rpt.lblMandantNiederlassung.Text = "-" - benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " - Else - rpt.lblSachbearbeiter.Text = PERSONAL.Name - rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" - End If - If frmVonBis.cbxRKSV_only.Checked Then - where = " AND tblKassenbuch.[rksv_id] IS NOT NULL AND tblKassenbuch.[rksv_BelegId] IS NOT NULL AND tblKassenbuch.rksv_aktiv=1 " - End If - - rpt.DataSource = SQL.loadDgvBySql(" SELECT MIN(tblKassenbuch.Konto) as Konto,isNull(MIN(tblKonto.Bez),'') as Bezeichnung, SUM(ISNULL(Haben,0)) AS Habenbetrag,SUM(ISNULL(Soll,0)) AS Sollbetrag, MIN(tblSteuersätze.Bez) as Steuer, SUM(CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END) as Umsatzsteuer,SUM(CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END) as Vorsteuer " & - " FROM tblKassenbuch LEFT JOIN tblKonto ON tblKassenbuch.Konto = tblKonto.KontoNr INNER JOIN tblSteuersätze ON tblKassenbuch.Steuer = tblSteuersätze.Nr INNER JOIN Personal ON tblKassenbuch.Benutzer = Personal.ID " & - " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND tblKassenbuch.Konto<>[Personal].[KassenbuchNr] AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " GROUP BY Konto ORDER BY Konto ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - - - If rpt.DataSource.rows.count = 0 Then - rpt.Dispose() : print.Dispose() - MsgBox("Keine Daten vorhanden!") - Exit Sub - End If - - Dim sum = 0 - rpt.lblUeberschrift.Text = "Summen-Bericht " & von.ToShortDateString & " bis " & bis.ToShortDateString - 'rpt.lblSachbearbeiter.Text = PERSONAL.Name - 'rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR - 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - - Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" - Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" - Case Else - End Select - - 'Dim cnt As Integer = 0 - rpt.lblDat.Text = Now.ToLongDateString - Dim gesSumSoll As Double = 0 - Dim gesSumHaben As Double = 0 - - Dim gesSumUSt As Double = 0 - Dim gesSumVorSt As Double = 0 - Dim datum = "" - AddHandler rpt.Detail.Format, Sub() - rpt.lblBuchungstext.Text = If(rpt.Fields.Item("Bezeichnung") IsNot Nothing, If(rpt.Fields.Item("Bezeichnung").Value(), ""), "") - rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value() - Dim soll = CDbl(rpt.Fields.Item("Sollbetrag").Value()) - Dim haben = CDbl(rpt.Fields.Item("Habenbetrag").Value()) - - rpt.lblSollbetrag.Text = IIf(soll <> 0, soll.ToString("C"), "") - rpt.lblHabenbetrag.Text = IIf(haben <> 0, haben.ToString("C"), "") - - rpt.lblSteuer.Text = rpt.Fields.Item("Steuer").Value() - - Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value()) - Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value()) - rpt.lblUmsatzsteuer.Text = IIf(ust <> 0, ust.ToString("C"), "") - rpt.lblVorsteuer.Text = IIf(vorst <> 0, vorst.ToString("C"), "") - - gesSumSoll += soll - gesSumHaben += haben - - gesSumUSt += ust - gesSumVorSt += vorst - End Sub - - AddHandler rpt.ReportFooter1.Format, Sub() - rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") - rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") - rpt.lblUmsatzsteuerGesamtsumme.Text = gesSumUSt.ToString("C") - rpt.lblVorsteuerGesamtsumme.Text = gesSumVorSt.ToString("C") - End Sub - - print.Viewer.LoadDocument(rpt) - print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous - print.Show() - End Sub - - - Private Sub FlatButton9_Click(sender As Object, e As EventArgs) Handles btnBelegAusgang.Click, btnBelegEingang.Click - If KennwortOK() Then - Dim frmFremdbeleg As New frmFremdbeleg - frmFremdbeleg.Art = IIf(sender Is btnBelegAusgang, 2, 1) - frmFremdbeleg.PERSONAL = PERSONAL - ' frmFremdbeleg.GESCHAEFTSJAHR = GESCHAEFTSJAHR - frmFremdbeleg.ShowDialog(Me) - init() - End If - End Sub - - - - - Private Async Function Button4_ClickAsync(sender As Object, e As EventArgs) As Task Handles Button4.Click - - - Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim client_FT As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - - 'hier noch eine Auwahlmöglichkeit bauen! - - Dim Journalid = 2 'ReceiptJournal - '4919338167972134914 -> DSFinV-K export - '4919338167972134915 -> TAR file export - '2 -> ReceiptJournal - - Dim result = Await client_FT.Journal(Journalid) - If result <> "" Then - client_FT.exportJournal(result) - End If - Else - - - - MsgBox("Leider noch nicht verfügbar") - - 'Dim client As RKSVWcfClient = New RKSVWcfClient() - 'client.Endpoint.Address = New System.ServiceModel.EndpointAddress("http://192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/?singleWsdl") - 'client.Open() - '' svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials(); - 'Dim credentials As New SDL.RKSVServer.DBUserCredentials - - 'credentials.Database = "RKSVWcfDB" - 'credentials.Server = "AVISO\SQLEXPRESS" - - 'Select Case cboKassen._value - ' Case "VERAG-SUB-KASSE-ZOLL" - ' credentials.Username = "Admin" - ' credentials.Password = "verag#2" - ' credentials.CashboxID = "VERAG-SUB-KASSE-ZOLL" - ' credentials.CompanyGUID = "9119d9ae-f549-4a0f-a50f-0500ec7ca059" - - ' Dim certificate = "" - ' Dim certificateChain = "" - ' Dim exportResult = "" - ' cRKSV.getDEP(certificate, exportResult) - - - - ' 'If (client.ExportJWS()) Then - ' ' Else - ' 'MessageBox.Show(answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - ' ' End If - ' Case "" - ' MsgBox("Keine Kasse gewählt!") - - 'End Select - - - End If - - - - - End Function - - - Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click - Dim f As New frmBelegFinden - f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id - If Not master_Kasse Then f.BenutzerId = PERSONAL.ID - - If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then - Select Case f.art - Case "NEU" - openBelegRKSVId(f.txtBelegNrNeu.Text) - Case "ALT" - Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value) - Dim B As New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value) - openBELEG(B, PERSONALTmp) - End Select - End If - End Sub - - Sub openBelegRKSVId(rksv_beleg_Id) - If rksv_beleg_Id <> "" Then - ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [Mandant]='" & PERSONAL.Mandant & "' AND Niederlassung='" & PERSONAL.Niederlassung & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL") - Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL") - If dt.Rows.Count > 0 Then - ' If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub - - Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(dt.Rows(0)("Benutzer")) - - - 'Wenn LeigeldBeleg oder Kasse Ein/Ausgang, dann nur Ersteller! - Select Case dt.Rows(0)("Beleg_TYP") - Case "E", "L" - If master_Kasse = False Then - If dt.Rows(0)("Benutzer") <> PERSONAL.ID Then - MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub - End If - End If - End Select - - - Select Case dt.Rows(0)("Beleg_TYP") - Case "0" - MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.") - Case "E" - If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub - Dim frmBeleg As New frmFremdbeleg(PERSONALTmp, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - frmBeleg.ShowDialog(Me) - Case "L" - If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub - Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONALTmp, PERSONAL_LG, PERSONAL.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - frmBeleg.ShowDialog(Me) - Case Else - Dim frmBeleg As New frmBelegNeu(PERSONALTmp, PERSONAL_LG, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - frmBeleg.ShowDialog(Me) - End Select - - init() - Else - MsgBox("Keine Daten gefunden!") - End If - End If - End Sub - - Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnDGVBelege.Click - DGV = "B" - initDgv() - End Sub - - Private Sub btnAusgabebeleg_Click(sender As Object, e As EventArgs) Handles btnDGVKassenbuch.Click - DGV = "KB" - initDgv() - End Sub - - Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click - Me.Cursor = Cursors.WaitCursor - cProgramFunctions.genExcelFromDGV_NEW(DataGridView2, True) - Me.Cursor = Cursors.Default - End Sub - - Private Sub frmKassenbuch_Shown(sender As Object, e As EventArgs) Handles Me.Shown - Me.Height = My.Computer.Screen.WorkingArea.Height - Me.Top = 0 - DataGridView2.ClearSelection() - If master_Kasse Then - btnBelegKunde.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegAusgang.Enabled = False - btnBelegEingang.Enabled = False - btnBelegLeihgeld.Enabled = False - End If - If PERSONAL.cRKSV_Kasse IsNot Nothing Then lblRKSV_KASSEN_Bez.Text = PERSONAL.cRKSV_Kasse.rksv_bez - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then - 'btnBelegLeihgeld.Visible = False - btnBelegGSKunde.Visible = False - End If - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'vorher IMEX - If Not PERSONAL.isLeihgeldkasse Then btnBelegLeihgeld.Visible = False - btnBelegGSKunde.Visible = False 'VERAG-MDM KAsse bei IMEX - If PERSONAL.cRKSV_Kasse.rksv_id = 1 Then - btnBelegGSKunde.Visible = True - btnBelegKunde.Enabled = False - End If - End If - - If PERSONAL.cRKSV_Kasse Is Nothing Then - MsgBox("Keine Kasse hinterlegt!") - Me.Close() - End If - If PERSONAL.cRKSV_Kasse.rksv_id = 5 Then - btnBelegKunde.Enabled = False - btnBelegGSKunde.Enabled = False - btnBelegLeihgeld.Enabled = False - End If - Me.BringToFront() - End Sub - - Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btnStorno.Click - Dim f As New frmBelegFinden - f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id - If Not master_Kasse Then f.BenutzerId = PERSONAL.ID - - If master_Kasse Then - f.cbxStornoErzwingenAdmin.Visible = True - f.cbxStornoRKSV.Visible = True - f.cbxStornoBELEG.Visible = True - End If - Dim BELEGTmp As EABeleg = Nothing - If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then - Select Case f.art - Case "NEU" - Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE rksv_BelegId='" & f.txtBelegNrNeu.Text & "' AND [rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' ", "FMZOLL") - If dt.Rows.Count > 0 Then - BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - End If - Case "ALT" - Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value) - BELEGTmp = New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value) - End Select - If BELEGTmp IsNot Nothing Then - - If cRKSV.getGJ_FIRMA(Now, PERSONAL.cRKSV_Kasse.rksv_firma) <> cRKSV.getGJ_FIRMA(BELEGTmp.BelegDat, PERSONAL.cRKSV_Kasse.rksv_firma) Then - MsgBox("Das Geschäftsjahr im Beleg ist '" & cRKSV.getGJ_FIRMA(BELEGTmp.BelegDat, PERSONAL.cRKSV_Kasse.rksv_firma) & "', es können nur Belege im laufenden Geschäftsjahr gebucht werden. Aktion wird abgebrochen!") - Exit Sub - End If - - Dim zahlungsmittel = cRKSV.getZahlungsmittel(BELEGTmp, PERSONAL, PERSONAL.cRKSV_Kasse.rksv_firma) - - If zahlungsmittel = "EC" Then - - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("POS_Zahlungen_stornieren", Me) Then - If Not vbYes = MsgBox("Dieser Beleg wurde mittels EC gezahlt, Zahlung muss ebenfalls manuell auf Terminal storniert werden!", vbYesNoCancel) Then - Exit Sub - End If - - Else - MsgBox("Der aktuelle Benutzer ist nicht berechtigt EC-Zahlungen zu stornieren!") - Exit Sub - End If - - End If - - - 'NUR KB - If f.cbxStornoRKSV.Checked Or f.cbxStornoBELEG.Checked Or f.cbxStornoErzwingenAdmin.Checked Then - Dim grund2 = InputBox("ADMIN-Storno (" & If(f.cbxStornoRKSV.Checked, " -RKSV-Tabelle- ", "") & If(f.cbxStornoBELEG.Checked, " -BELEG-Tabelle- ", "") & If(f.cbxStornoErzwingenAdmin.Checked, " -KASSENBUCH-Tabelle- ", "") & "):" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno") - If grund2 = "" Then - MsgBox("Kein Stornotext, Aktion wird abgebrochen") - Exit Sub - End If - - Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) - ' Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId - If BELEGTmp.BelegDat < Now.AddMonths(-2) And Not master_Kasse Then - MsgBox("Beleg älter als 2 Monate, Aktion wird abgebrochen") 'alte Belege nicht mehr storinieren - Exit Sub - End If - - 'If KASSETmp.StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll - ' Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz) - ' BELEGTmp.rksv_BelegId = RKSV_Beleg_Id - 'End If - - If f.cbxStornoErzwingenAdmin.Checked Then - BELEGTmp = cRKSV.STORNO(BELEGTmp, grund2, True, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung - End If - - If f.cbxStornoRKSV.Checked Then 'nur RKSV!!!!!!! - ' BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, Fal) 'Beleg storno und Kassenbuch Gegenbuchung - If KASSETmp IsNot Nothing Then - KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert! - Dim QRQString As String = "" - Dim LastJWS As String = "" - Dim answer = "" - If KASSETmp.rksv_aktiv Then - - If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then - MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - Else - BELEGTmp.rksv_qr = QRQString - End If - - Else - If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then - MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - End If - - End If - - - - End If - If KASSETmp.rksvDE_aktiv Then - Dim PERSONALTmp1 As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer) - If Not cRKSV.stornoRKSV_DE(PERSONALTmp1, BELEGTmp, KASSETmp, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then - MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - End If - End If - End If - End If - - If f.cbxStornoBELEG.Checked Then 'nur BELEG!!!!!!! - BELEGTmp = cRKSV.STORNO_BELEG_ONLY(BELEGTmp, grund2) 'Beleg storno - End If - - init() - Exit Sub - End If - 'End If - 'If BELEGTmp IsNot Nothing Then - - ' BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - - Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer) - If master_Kasse = False Then - If BELEGTmp.Benutzer <> PERSONAL.ID And Not zahlungsmittel = "EC" Then MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub - End If - Dim grund = InputBox("Möchten Sie den Beleg wirklich storinieren?" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno") - If grund = "" Then - MsgBox("Kein Stornotext, Aktion wird abgebrochen") - Exit Sub - End If - - - If BELEGTmp.BelegNr <= 0 Then MsgBox("Fehler beim Laden der Belegdaten") : Exit Sub - - - If Not BELEGTmp.gebuchtStorno Then 'f.cbxStornoErzwingenAdmin.Checked=stono erzwingen - - Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId - Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) - - If KASSETmp.rksv_StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll - Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz) - BELEGTmp.rksv_BelegIdStorno = RKSV_Beleg_Id - End If - - BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung - ' BELEGTmp = cRKSV.STORNO(BELEGTmp, "") 'Beleg storno und Kassenbuch Gegenbuchung - - ' Dim summe As Double = 0 - ' For Each p In BELEGTmp.POS - 'summe += p.Betrag - ' Next - ' summe = summe * -1 - ' Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) - - - If KASSETmp IsNot Nothing Then - KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert! - Dim QRQString As String = "" - Dim LastJWS As String = "" - Dim answer = "" - If KASSETmp.rksv_aktiv Then - - If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) - If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then - MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - End If - - Else - If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then - 'FEHLER!! - If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing - BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung - MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - End If - End If - End If - - If KASSETmp.rksvDE_aktiv Then - If Not cRKSV.stornoRKSV_DE(PERSONALTmp, BELEGTmp, KASSETmp, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then - 'FEHLER!! - If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing - BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung - MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - Exit Sub - End If - End If - End If - - Select Case BELEGTmp.Beleg_TYP 'dt.Rows(0)("Beleg_TYP") - Case "E" - Dim KBEntry As cKassenbuch = Nothing - Dim KBEntryGB As cKassenbuch = Nothing - If cRKSV.getKB(BELEGTmp, PERSONALTmp, KBEntry, KBEntryGB, KASSETmp.rksv_firma) Then - cRKSV.printFremdBeleg(BELEGTmp, KASSETmp, PERSONALTmp, KBEntry, KBEntryGB, "") 'Beleg drucken - End If - Case "L" - cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "LG") 'Beleg drucken - Case "A" - cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "A") 'Beleg drucken - Case Else - cRKSV.printKundenBeleg(BELEGTmp, KASSETmp, PERSONALTmp, "", False) 'Beleg drucken - End Select - MsgBox("Beleg storniert!") - 'Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) - ' frmBeleg.ShowDialog(Me) - ' init() If Not BELEGTmp.gebuchtStorno Then - Else - MsgBox("Beleg wurde bereits storniert!") - End If - init() - Else - MsgBox("Keine Daten gefunden!") - End If - init() - Else - MsgBox("Keine Daten gefunden!") - End If - - End Sub - - Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnBelegLeihgeld.Click - If KennwortOK() Then - Try - Dim frmNacherfassungLeihgeld As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG) - frmNacherfassungLeihgeld.ShowDialog(Me) - Catch ex As Exception - MsgBox(ex.Message) - End Try - init() - End If - End Sub - - Private Async Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click - Label18.ForeColor = Color.Black - If Not IsNumeric(cboKassen._value) Then - Label18.ForeColor = Color.Red - Exit Sub - End If - - - Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id) - Dim QR_CodeString As String = "" - client.saveRKSV_FT(result, QR_CodeString) - Else - cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma) - - End If - - ' End If - End Sub - - Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click - Label18.ForeColor = Color.Black - If Not IsNumeric(cboKassen._value) Then - Label18.ForeColor = Color.Red - Exit Sub - End If - Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - cRKSV.printAESKey(KASSE, "") 'Beleg drucken - - End Sub - - Private Sub Button6_Click_1(sender As Object, e As EventArgs) Handles Button6.Click - master_Kasse = Not master_Kasse - init() - End Sub - - Private Sub Button10_Click(sender As Object, e As EventArgs) Handles btnBelegGSKunde.Click - If KennwortOK() Then - - lblERRKennwort.Visible = False - Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "A") - frmBeleg.ShowDialog(Me) - init() - - End If - End Sub - - - Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click - Dim f As New frmKassenbuchPWD(PERSONAL) - If f.ShowDialog() = Windows.Forms.DialogResult.OK Then - Dim frmSecureLoginKassenbuch As New SDL.frmSecureLoginKassenbuch() - frmSecureLoginKassenbuch.openKB = True - frmSecureLoginKassenbuch.ShowDialog(Me.Parent) - Me.Close() - End If - End Sub - - Private Sub Button7_Click_1(sender As Object, e As EventArgs) Handles Button7.Click - Dim reader = InputBox("Bitte ReaderNamen angeben:") - - If reader <> "" Then - Dim serial = cRKSV.getCardSerialInReader(cboKassen._value, reader) - If serial <> "" Then MsgBox(serial) Else MsgBox("Karte nicht gefunden!") - End If - End Sub - - Private Sub Button10_Click_1(sender As Object, e As EventArgs) Handles Button10.Click - - Dim print As New frmPrintLayout - print.Text = "Kassenbuch" - - Dim rpt As New rptKassenbuchLeihgeld2 - - Dim frmVonBis As New frmKasseBerichtVonBis - If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then - Exit Sub - End If - Dim von As Date = frmVonBis.datVon.Value.ToShortDateString - Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString - - 'Dim von As Date = CDate("01.01.2016") - ' Dim bis As Date = CDate("31.01.2016") - - ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & - ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - Dim where = "" - - If frmVonBis.cbxRKSV_only.Checked Then - where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " - - End If - Dim sqlStr = "" - ' sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " & - ' "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " - - If master_Kasse Then - rpt.lblSachbearbeiter.Text = "ADMIN" - rpt.lblKassenbuchNr.Text = "-" - rpt.lblMandantNiederlassung.Text = "-" - sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto,[LKW Kennzeichen],Fahrer,FrachtführerKundenNr,Frachtführer " & - " FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer " & - " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " & - " WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr " - Else - rpt.lblSachbearbeiter.Text = PERSONAL.Name - rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr - rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - - sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto ,[LKW Kennzeichen],Fahrer ,FrachtführerKundenNr,Frachtführer " & - " FROM [tblKassenbuch] " & - " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " & - " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " - End If - - rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) - - rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung - - If rpt.DataSource.rows.count = 0 Then - rpt.Dispose() : print.Dispose() - MsgBox("Keine Daten vorhanden!") - Exit Sub - End If - - Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA - Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" - Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" - Case Else - End Select - - Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, PERSONAL.cRKSV_Kasse.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) - Dim sum = 0 - rpt.lblUeberschrift.Text = "Kassenbuch " & von.ToShortDateString & " bis " & bis.ToShortDateString - rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR - 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung - - 'Dim cnt As Integer = 0 - rpt.lblDat.Text = Now.ToLongDateString - Dim sumSoll As Double = 0 - Dim sumHaben As Double = 0 - Dim gesSumSoll As Double = 0 - Dim gesSumHaben As Double = 0 - Dim datum = "" - AddHandler rpt.Detail.Format, Sub() - ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - - ' Dim soll = dt.Rows(0)("Soll") - ' Dim haben = dt.Rows(0)("Haben") - 'Dim konto = dt.Rows(0)("Konto") - - rpt.lblLKWKz.Text = If(rpt.Fields.Item("LKW Kennzeichen").Value IsNot DBNull.Value, rpt.Fields.Item("LKW Kennzeichen").Value(), "") - rpt.lblFahrer.Text = If(rpt.Fields.Item("Fahrer").Value IsNot DBNull.Value, rpt.Fields.Item("Fahrer").Value(), "") - - Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString - rpt.lblBelegDat.Text = BuDat - Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, PERSONAL.cRKSV_Kasse.rksv_firma) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) - rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) - rpt.lblBuText.Text = rpt.Fields.Item("Buchungstext").Value() - - rpt.txtKunde.Text = If(CInt(rpt.Fields.Item("FrachtführerKundenNr").Value) > 0, rpt.Fields.Item("FrachtführerKundenNr").Value() & " ", "") & rpt.Fields.Item("Frachtführer").Value() - - ' rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & - " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") - - Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) - Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) - - rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") - rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") - ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & - ' " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " & - ' " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") - - rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & - " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " & - " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") - sumSoll += CDbl(rpt.Fields.Item("Soll").Value()) - sumHaben += CDbl(rpt.Fields.Item("Haben").Value()) - gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value()) - gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value()) - ' rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value() - ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") - ' sum += rpt.Fields.Item("clmnBetrag").Value() - datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt - End Sub - AddHandler rpt.GroupHeader1.Format, Sub() - sumSoll = 0 - sumHaben = 0 - End Sub - AddHandler rpt.GroupFooter1.Format, Sub() - rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" - rpt.lblSollSumme.Text = sumSoll.ToString("C") - rpt.lblHabenSumme.Text = sumHaben.ToString("C") - ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") - ' sum += rpt.Fields.Item("clmnBetrag").Value() - End Sub - AddHandler rpt.ReportFooter1.Format, Sub() - rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") - rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") - End Sub - - print.Viewer.LoadDocument(rpt) - print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous - print.Show() - End Sub - - Private Sub Button11_Click(sender As Object, e As EventArgs) Handles btnPosTerminal.Click - Label18.ForeColor = Color.Black - If Not IsNumeric(cboKassen._value) Then - Label18.ForeColor = Color.Red - Exit Sub - End If - - Dim f As New frmPOSTerminal(cboKassen.Text, cboKassen._value) - f.Show() - - End Sub - - Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click - - Dim webAddress As String = "https://wiki.verag.ag/e/de/software/aviso/howtos/Barverkauf" - Process.Start(webAddress) - End Sub - - Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click - - cm_FT.Items.Clear() - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - 'nur im Testsystem! - If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then - Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("storno") AndAlso isADMIN Then - Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - End If - - If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then - Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If - - If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then - Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If - - If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then - Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If - - If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet AndAlso Not OutOfOrderIsCreated Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet AndAlso Not OutOfOrderIsCreated Then - Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(rmc) - End If - - If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet AndAlso Not OutOfOrderIsCreated Then - Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(uta) - End If - - If Not cm_FT.Items.ContainsKey("verbindungstest") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("version") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("signatures") AndAlso isADMIN Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("action") AndAlso isADMIN Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("queueitem") AndAlso isADMIN Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - If Not cm_FT.Items.ContainsKey("exportJournal") Then - Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - - If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then - Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked - cm_FT.Items.Add(ids) - End If - - cm_FT.Show(Cursor.Position) - - End Sub - - - Private Async Function mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) As Task(Of Object) - - cm_FT.Hide() - Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) - - If item IsNot Nothing Then - - 'PERSONAL.cRKSV_Kasse.LOAD(cboKassen._value) - - Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) - - If item.Name = "null" Then - - Dim info As String = "Möchten Sie einen 0-Beleg an die TSE schicken?" - - If NULLBelegIsCreated Then - info = "Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein 0-Beleg erstellt, sind Sie wirklich sicher?" - End If - - If vbYes = MsgBox(info, vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_NULLBELEG() - init() - End If - - End If - - ElseIf item.Name = "setMissingSignatures" Then - - Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") - - If dt.Rows.Count = 0 Then - MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!") - Return False - End If - - If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then - - Dim result As Boolean = False - For Each r As DataRow In dt.Rows - - Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat")) - Dim summeBRUTTO As Double = BELEG.rksv_umsatz - Dim QR_CodeString As String = "" - Dim LastJWS As String = "" - Dim EA As String = "" - Dim kindOfReceiptCase As String = "" - - Select Case BELEG.Beleg_TYP - Case "0" - Continue For 'null Belege nicht senden! - Case "E" 'Eingang/Ausgang - If BELEG.Belegart = "1" Then - EA = "E" - Else - EA = "A" - End If - Case "L" - If BELEG.Belegart = "1" Then - EA = "E" - Else - EA = "A" - End If - - Case Else - If BELEG.Belegart = "1" Then - EA = "E" - Else - EA = "A" - End If - End Select - - kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG - - result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference) - - If result Then - BELEG.FT_MissingSignature = False - BELEG.SAVE() - Else - MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!") - BELEG.FT_MissingSignature = False - BELEG.FT_setMissingSignatureFailed = True - BELEG.SAVE() - End If - - Next - - If result Then - init() - End If - - End If - - - - ElseIf item.Name = "tempoutoforder" Then - - - If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_OUTOFORDERBELEG() - init() - End If - - End If - - - - ElseIf item.Name = "outoforder" Then - - - If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_OUTOFORDERBELEG() - init() - End If - - End If - - - ElseIf item.Name = "initialstart" Then - - - If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_INITIALSTARTBELEG() - init() - End If - - End If - - - - ElseIf item.Name = "verbindungstest" Then - - Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - - ElseIf item.Name = "storno" Then - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - - End If - - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - End If - - - ElseIf item.Name = "bar" Then - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then - - If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) - - If result <> "" Then - - If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then - Dim QR_CodeString As String = "" - client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) - End If - Else - Return False - End If - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - End If - End If - Else - MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") - - End If - - - - ElseIf item.Name = "monthly" Then - - If Not monatsabschlussIsSet Then - If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - - End If - - End If - Else - MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Monatsabschluss erstellt!") - End If - - - ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then - 'Nur DE - - If Not tagesabschlussIsSet Then - - If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then - If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - init() - End If - Else - MsgBox("nicht für AT-Kassen möglich!") - End If - End If - - Else - MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") - - End If - - ElseIf item.Name = "yearly" Then - - If Not jahresabschlussIsSet Then - - If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then - - - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - - End If - - End If - Else - MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Jahresabschluss erstellt!") - - End If - - - - ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then - - Dim result As String = "" - Select Case item.Name - Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) - Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) - Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) - Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) - End Select - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - If item.Name = "exportJournal" Then - client_chilkat.exportJournal(result) - End If - - End If - - - - End If - - - End If - - - - End Function - - -End Class \ No newline at end of file From 4ffc3dce9f7f8a70390892edfdf0dbb32a1dec7c Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 09:09:23 +0200 Subject: [PATCH 44/54] gitignore --- .gitignore | 3 - SDL/kassenbuch/frmKassenbuch.vb | 2028 +++++++++++++++++++++++++++++++ 2 files changed, 2028 insertions(+), 3 deletions(-) create mode 100644 SDL/kassenbuch/frmKassenbuch.vb diff --git a/.gitignore b/.gitignore index b6c19153..37414890 100644 --- a/.gitignore +++ b/.gitignore @@ -261,6 +261,3 @@ __pycache__/ *.pyc /VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente /VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj -/SDL/SDL.vbproj -/SDL/SDL.vbproj -/SDL/kassenbuch/frmKassenbuch.vb diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb new file mode 100644 index 00000000..8301520b --- /dev/null +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -0,0 +1,2028 @@ +Imports DocumentFormat.OpenXml.Drawing + +Public Class frmKassenbuch + Dim SQL As New SQL + Public GESCHAEFTSJAHR As Integer = cRKSV.getGJ_FIRMA(Now, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA) 'IIf(Now.Month = 1, Now.Year - 1, Now.Year) + Dim PERSONAL As cPersonal + Dim RKSV As cRKSV_Kasse + Dim PERSONAL_LG As cPersonal = Nothing + ' Dim PERSONAL_TMP_MASTER_KASSSE As cPersonal + Dim KennwortTime As DateTime = CDate("01.01.1990") + ' Dim firma = "VERAG" + Dim DGV = "B" + Dim loginAfterSeconds = 10 + Public master_Kasse As Boolean = False + Dim FMZOLL_SQL As New FMZOLL_SQL + + Dim tagesabschlussIsSet As Boolean = False + Dim monatsabschlussIsSet As Boolean = False + Dim jahresabschlussIsSet As Boolean = False + Dim NULLBelegIsCreated As Boolean = True + Dim InitialStartIsCreated As Boolean = True + Dim OutOfOrderIsCreated As Boolean = False + Dim TSEIsOnline As Boolean = False + Dim MiddlewareIsOnline As Boolean = False + + Dim isADMIN As Boolean = False + + Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal) + ' Dieser Aufruf ist für den Designer erforderlich. + InitializeComponent() + Me.PERSONAL = PERSONAL + Me.PERSONAL_LG = PERSONAL_LG + ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. + + End Sub + + Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles btnBelegKunde.Click + If KennwortOK() Then + + lblERRKennwort.Visible = False + Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "E") + frmBeleg.ShowDialog(Me) + init() + + End If + + End Sub + + Function KennwortOK() As Boolean + If DateDiff(DateInterval.Second, KennwortTime, Now) < loginAfterSeconds Then + Return True + End If + Dim frmSecureLoginKassenbuch As New frmSecureLoginKassenbuch + frmSecureLoginKassenbuch.openKB = False + frmSecureLoginKassenbuch.KassenbuchNr_tmp = PERSONAL.KassenbuchNr + frmSecureLoginKassenbuch.ShowDialog(Me) + If frmSecureLoginKassenbuch.DialogResult = Windows.Forms.DialogResult.OK Then + KennwortTime = Now + PERSONAL_LG = frmSecureLoginKassenbuch.PERSONAL_LG + Return True + Else + lblERRKennwort.Visible = True + Return False + End If + End Function + Private Sub frmKassenbuch_Load(sender As Object, e As EventArgs) Handles Me.Load + RKSV = New cRKSV_Kasse(PERSONAL.cRKSV_KasseID) + GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma) + + + If PERSONAL.ID = 274 Then master_Kasse = True + If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "SIENER" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "DANIEL" Then + isADMIN = True + + End If + KennwortTime = Now + initDgv() 'nur set + init() + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] ", False, "FMZOLL") + Else + cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_aktiv]=1 OR [rksvde_aktiv]=1 or rksv_id=4) ", False, "FMZOLL") + End If + + ' [rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND + + If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + btnStorno.Enabled = False + End If + + If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("Kassenbuch_POS_Terminal_einrichten", Me) Then + btnPosTerminal.Enabled = False + End If + + + If isADMIN Then + Button6.Visible = True + End If + + + End Sub + + Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) + + lblTSEOnline.Visible = True + lblTages.Visible = True + lblMonats.Visible = True + lblJahres.Visible = True + lblNullBeleg.Visible = True + lblInitStart.Visible = True + + + picJahres.Visible = True + picMonats.Visible = True + picTages.Visible = True + picNULLbeleg.Visible = True + picTSEOnline.Visible = True + pbInitialStart.Visible = True + + showPic(TSEisOnline, picTSEOnline) + showPic(tagesabschluss, picTages) + showPic(monatsabschlussIsSet, picMonats) + showPic(Jahresabschluss, picJahres) + showPic(NULLBeleg, picNULLbeleg) + showPic(initialStart, pbInitialStart) + + + End Sub + + Sub showPic(ok As Boolean, pic As PictureBox) + pic.Visible = True + If ok Then + pic.BackgroundImage = My.Resources.ok + Else + pic.BackgroundImage = My.Resources.del + End If + + End Sub + Sub init() + Dim sqlstr = "" + + lblWarning.Text = "" + + If master_Kasse Then + Label9.Text = "ADMIN" + pnlTop.BackColor = Color.Red + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + Label15.Text = "MASTER-KASSE" + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + pnl.Visible = True + + 'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & + ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & + ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & + ' " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " and Personal.[KassenbuchNr]=tblKassenbuch.Konto" + ' sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & + ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & + ' " WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto" + sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & + " FROM tblKassenbuch WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND Konto in (select KassenbuchNr from Personal where Standard_RKSV_KasseId='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto" + + Else + Label9.Text = PERSONAL.Name + pnlTop.BackColor = Color.FromArgb(0, 54, 128) + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + Label15.Text = PERSONAL.KassenbuchNr + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + pnl.Visible = False + + sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & + " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & + " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & + " And tblKassenbuch.Benutzer=" & PERSONAL.ID & " AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto=" & PERSONAL.KassenbuchNr & "" + End If + + If PERSONAL.isLeihgeldkasse Then + ' btnBelegLeihgeld.Enabled = True + btnBelegGSKunde.Enabled = False + Button10.Visible = True + 'btnBelegKunde.Enabled = False + End If + + initDate() + ' initDgv() + initDgv() 'initDgv, weil sonst Umschaltung zu MASTER Kasse nicht funzt + 'DataGridView2.RELOAD() + + If PERSONAL.cRKSV_Kasse Is Nothing Then + Label5.Text = "Keine Standard-Kasse" + Else + + Dim dt As DataTable = SQL.loadDgvBySql(sqlstr, "FMZOLL") + Label5.Text = CDbl(If(dt.Rows.Count > 0, cSqlDb.checkNullReturnValue(dt.Rows(0)("Saldo"), 0), 0)).ToString("C") + + End If + + lbldailyCashboxClosing.Text = "" + + If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then + + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + If client_chilkat.isFiskaltrust() Then + + resetFIskaltrust() + + lbldailyCashboxClosing.Visible = True + Button11.Visible = True + + Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If tagesabschluss > 0 Then tagesabschlussIsSet = True + + Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If monatsabschluss > 0 Then monatsabschlussIsSet = True + + Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL")) + If jahresabschluss > 0 Then jahresabschlussIsSet = True + If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then + NULLBelegIsCreated = False + End If + + If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then + OutOfOrderIsCreated = True + End If + + + If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then + InitialStartIsCreated = False + End If + + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + + If result IsNot Nothing Then + If result.Contains("VERBINDUNG OK") Then + TSEIsOnline = True + MiddlewareIsOnline = True + Else + TSEIsOnline = False + MiddlewareIsOnline = True + End If + Else + TSEIsOnline = False + MiddlewareIsOnline = False + + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + + + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + + If Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") + ElseIf tagesabschlussIsSet Then + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") + Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" + End If + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + btnStorno.Enabled = True + End If + + + End If + + + + lbldailyCashboxClosing.Visible = False + Button11.Visible = False + End If + + + + End If + + End If + + + + ' Label9.Text = PERSONAL.Name + DataGridView2.ClearSelection() + End Sub + + Private Sub diasableBarverkauf(status) + + Select Case status + ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)" + Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!" + Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!" + Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" + Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!" + End Select + + btnBelegKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + btnStorno.Enabled = False + + + End Sub + + Private Sub resetFIskaltrust() + + tagesabschlussIsSet = False + monatsabschlussIsSet = False + jahresabschlussIsSet = False + NULLBelegIsCreated = True + InitialStartIsCreated = True + OutOfOrderIsCreated = False + TSEIsOnline = False + + End Sub + Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click + searchdate = searchdate.AddMonths(1) + initDate() + End Sub + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + searchdate = searchdate.AddMonths(-1) + initDate() + End Sub + Sub initDate() + lblMonatSuche.Text = searchdate.ToString("MMMM yyyy") + datVon.Value = searchdate + datBis.Value = searchdate.AddMonths(1).AddDays(-1) + End Sub + Private Sub datVon_ValueChanged(sender As Object, e As EventArgs) Handles datVon.ValueChanged, datBis.ValueChanged + initDgv() + End Sub + + Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year) + Sub initDgv(Optional isFiskaltrust As Boolean = False) + + With DataGridView2 + .Columns.Clear() + If DGV = "B" Then + btnDGVBelege.BackColor = Color.SteelBlue + btnDGVBelege.ForeColor = Color.White + btnDGVKassenbuch.BackColor = Color.Transparent + btnDGVKassenbuch.ForeColor = Color.DimGray + + Dim benutzerTMP = "" + Dim benutzerBezTMP = "" + Dim lgTxt = "" + If master_Kasse Then + benutzerTMP = " AND Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " + benutzerBezTMP = " , (SELECT cast(ID as varchar(3))+' '+Name FROM [Personal] WHERE [ID]=b.Benutzer) as BenutzerBez " + Else + benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" + End If + If PERSONAL.isLeihgeldkasse Then + lgTxt = ",[Fahrer],[Passnummer] " + End If + + .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & + " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & + " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & + " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") + ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & + ' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & + ' " FROM tblEABelegnummer as b WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & + ' " ORDER BY b.rksv_BelegId DESC;", "FMZOLL") + .LOAD() + + If .Rows.Count = 0 Then Exit Sub + + .Columns("Betrag").DefaultCellStyle.Format = "C" + .Columns("Betrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight + .Columns("Ordnungsbegriff").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill + + .Columns("rksv_BelegId").HeaderText = "Beleg-Nr" + .Columns("rksv_BelegId").Width = 55 + .Columns("rksv_BelegId").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("BelegDat").HeaderText = "Datum" + .Columns("BelegDat").Width = 65 + .Columns("BelegNr").HeaderText = "KB-Bel.Nr" + .Columns("BelegNr").Width = 55 + .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("Belegart").HeaderText = "Art" + .Columns("Belegart").Width = 30 + .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("Ordnungsbegriff").Width = 160 + .Columns("Frachtführer").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill + .Columns("Beleg_TYP").Visible = False + .Columns("storniert").HeaderText = "Storn." + .Columns("storniert").Width = 45 + .Columns("EC").Width = 45 + .Columns("ECNr").Width = 60 + .Columns("Benutzer").Visible = False + '.Columns("kassiert").Visible = False + + If PERSONAL.isLeihgeldkasse Then + .Columns("Fahrer").Visible = False + .Columns("Passnummer").Visible = False + End If + + If .Columns.Contains("FT_MissingSignature") Then + .Columns("FT_MissingSignature").HeaderText = "fehl Sig." + .Columns("FT_MissingSignature").Width = 45 + For Each r As DataGridViewRow In .Rows + If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then + r.DefaultCellStyle.ForeColor = Color.Red + End If + Next + End If + + If master_Kasse Then + .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master + .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master + End If + + + For Each r As DataGridViewRow In .Rows + If r.Cells("storniert").Value = "JA" Then + r.DefaultCellStyle.ForeColor = Color.Red + End If + Next + + ElseIf DGV = "KB" Then + btnDGVKassenbuch.BackColor = Color.SteelBlue + btnDGVKassenbuch.ForeColor = Color.White + btnDGVBelege.BackColor = Color.Transparent + btnDGVBelege.ForeColor = Color.DimGray + + Dim benutzerTMP = "" + If master_Kasse Then + benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " + Else + benutzerTMP = " And tblKassenbuch.Benutzer=" & PERSONAL.ID & "" + + End If + + + .SET_SQL("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],tblKassenbuch.Finanzwege as FW ,([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer, mit_username as kassiert " & + " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id" & + " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & + " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL") + + ' .DataSource = SQL.loadDgvBySql("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer " & + ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & + ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & + ' " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL") + .LOAD() + + If .Rows.Count = 0 Then Exit Sub + + .Columns("JournalNr").Width = 55 + .Columns("JournalNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("Brutto").DefaultCellStyle.Format = "C" + .Columns("Brutto").Width = 80 + .Columns("Brutto").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight + .Columns("BelegDat").HeaderText = "Datum" + .Columns("BelegDat").Width = 65 + .Columns("BelegNr").HeaderText = "KB-Bel.Nr" + .Columns("BelegNr").Width = 55 + .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("Belegart").HeaderText = "Art" + .Columns("Belegart").Width = 30 + .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter + .Columns("Buchungstext").MinimumWidth = 60 + .Columns("Buchungstext").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill + .Columns("FW").Width = 45 + .Columns("Konto").Width = 40 + .Columns("Soll").Width = 80 + .Columns("Soll").DefaultCellStyle.Format = "C" + .Columns("Haben").Width = 80 + .Columns("Haben").DefaultCellStyle.Format = "C" + .Columns("Steuer").Width = 60 + .Columns("Steuer").DefaultCellStyle.Format = "C" + .Columns("Benutzer").Visible = False + '.Columns("kassiert").Visible = False + + End If + End With + End Sub + + Private Sub DataGridView2_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellDoubleClick + Try + + If e.RowIndex >= 0 Then + Dim r As DataGridViewRow = DataGridView2.Rows(e.RowIndex) + + Dim PersonalTmp = PERSONAL + If r.Cells("Benutzer").Value <> PersonalTmp.ID Then PersonalTmp = FMZOLL_SQL.getPersonalById(r.Cells("Benutzer").Value) + + Dim B As New EABeleg("LOAD", PersonalTmp.Mandant, PersonalTmp.Niederlassung, PersonalTmp.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value) + openBELEG(B, PersonalTmp) + + End If + + Catch ex As Exception + + End Try + End Sub + + Sub openBELEG(B As EABeleg, PERSONAL As cPersonal) + If B Is Nothing Then Exit Sub + Select Case B.Beleg_TYP + Case "0" + MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.") + Case "E" + 'If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub + Dim frmBeleg As New frmFremdbeleg(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) + frmBeleg.ShowDialog(Me) + Case "L" + If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub + Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) + frmBeleg.ShowDialog(Me) + Case Else + Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat) + frmBeleg.ShowDialog(Me) + End Select + + init() + + ' End If + End Sub + Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick + 'OLD!!!!!!!!!!!!!!!!!!!!!!! + If e.RowIndex >= 0 Then + Dim r As DataGridViewRow = DataGridView1.Rows(e.RowIndex) + Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value) + frmBeleg.ShowDialog(Me) + init() + End If + End Sub + + Private Sub FlatButton7_Click(sender As Object, e As EventArgs) Handles FlatButton7.Click + init() + End Sub + + Private Sub FlatButton6_Click(sender As Object, e As EventArgs) Handles FlatButton6.Click + + Dim print As New frmPrintLayout + print.Text = "Kassenbuch" + + Dim rpt As New rptKassenbuchBuchhaltung + + Dim frmVonBis As New frmKasseBerichtVonBis + If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then + Exit Sub + End If + Dim von As Date = frmVonBis.datVon.Value.ToShortDateString + Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString + + 'Dim von As Date = CDate("01.01.2016") + ' Dim bis As Date = CDate("31.01.2016") + + ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & + ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + Dim where = "" + + If frmVonBis.cbxRKSV_only.Checked Then + where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " + + End If + Dim sqlStr = "" + ' sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " & + ' "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " + + If master_Kasse Then + rpt.lblSachbearbeiter.Text = "ADMIN" + rpt.lblKassenbuchNr.Text = "-" + rpt.lblMandantNiederlassung.Text = "-" + sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Finanzwege, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " & + "FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr " + Else + rpt.lblSachbearbeiter.Text = PERSONAL.Name + rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + + sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Finanzwege, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " & + "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " + End If + rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + + rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung + + If rpt.DataSource.rows.count = 0 Then + rpt.Dispose() : print.Dispose() + MsgBox("Keine Daten vorhanden!") + Exit Sub + End If + + Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA + Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" + Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" + Case Else + End Select + + Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' iif (von.Month = 1, von.Year - 1, von.Year) + Dim sum = 0 + rpt.lblUeberschrift.Text = "Kassenbuch " & von.ToShortDateString & " bis " & bis.ToShortDateString + rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR + 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + + 'Dim cnt As Integer = 0 + rpt.lblDat.Text = Now.ToLongDateString + Dim sumSoll As Double = 0 + Dim sumHaben As Double = 0 + Dim gesSumSoll As Double = 0 + Dim gesSumHaben As Double = 0 + Dim datum = "" + AddHandler rpt.Detail.Format, Sub() + ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + + ' Dim soll = dt.Rows(0)("Soll") + ' Dim haben = dt.Rows(0)("Haben") + 'Dim konto = dt.Rows(0)("Konto") + + rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value() + Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString + rpt.lblBelegDat.Text = BuDat + Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) ''IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) + rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) + rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value() + rpt.lblFinanzwege.Text = IIf(rpt.Fields.Item("Finanzwege").Value() Is DBNull.Value, "", rpt.Fields.Item("Finanzwege").Value()) + ' rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + + Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) + Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) + + rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") + rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") + ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & + ' " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " & + ' " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") + + rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & + " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " & + " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") + sumSoll += CDbl(rpt.Fields.Item("Soll").Value()) + sumHaben += CDbl(rpt.Fields.Item("Haben").Value()) + gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value()) + gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value()) + ' rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value() + ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") + ' sum += rpt.Fields.Item("clmnBetrag").Value() + datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt + End Sub + AddHandler rpt.GroupHeader1.Format, Sub() + sumSoll = 0 + sumHaben = 0 + End Sub + AddHandler rpt.GroupFooter1.Format, Sub() + rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" + rpt.lblSollSumme.Text = sumSoll.ToString("C") + rpt.lblHabenSumme.Text = sumHaben.ToString("C") + ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") + ' sum += rpt.Fields.Item("clmnBetrag").Value() + End Sub + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") + rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") + End Sub + + print.Viewer.LoadDocument(rpt) + print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous + print.Show() + End Sub + + Private Sub FlatButton2_Click(sender As Object, e As EventArgs) Handles FlatButton2.Click + + Dim print As New frmPrintLayout + print.Text = "Kassenbuch" + Dim rpt As New rptKassenbuchBuchhaltungDetails + + Dim frmVonBis As New frmKasseBerichtVonBis + If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then + Exit Sub + End If + Dim von As Date = frmVonBis.datVon.Value.ToShortDateString + Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString + Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) + + ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & + ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + Dim where = "" + Dim benutzerTMP = "" + If master_Kasse Then + rpt.lblSachbearbeiter.Text = "ADMIN" + rpt.lblKassenbuchNr.Text = "-" + rpt.lblMandantNiederlassung.Text = "-" + benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " + Else + rpt.lblSachbearbeiter.Text = PERSONAL.Name + rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" + End If + If frmVonBis.cbxRKSV_only.Checked Then + where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " + + End If + rpt.DataSource = SQL.loadDgvBySql("SELECT JournalNr, BelegDat,Buchungstext,Finanzwege,Konto, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,isnull(Bez,'') as Bez,CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END as Umsatzsteuer,CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END as Vorsteuer " & + " FROM [tblKassenbuch] LEFT JOIN [tblSteuersätze] ON [Nr]=Steuer " & + " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " ORDER BY Buchungsdatum, JournalNr ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + + rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung + + If rpt.DataSource.rows.count = 0 Then + rpt.Dispose() : print.Dispose() + MsgBox("Keine Daten vorhanden!") + Exit Sub + End If + + Dim sum = 0 + rpt.lblUeberschrift.Text = "Buchungsbericht " & von.ToShortDateString & " bis " & bis.ToShortDateString + 'rpt.lblSachbearbeiter.Text = PERSONAL.Name + ' rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + ' rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR + + Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA + Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" + Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" + Case Else + End Select + + 'Dim cnt As Integer = 0 + rpt.lblDat.Text = Now.ToLongDateString + Dim sumSoll As Double = 0 + Dim sumHaben As Double = 0 + Dim gesSumSoll As Double = 0 + Dim gesSumHaben As Double = 0 + + Dim sumUSt As Double = 0 + Dim sumVorSt As Double = 0 + Dim gesSumUSt As Double = 0 + Dim gesSumVorSt As Double = 0 + Dim datum = "" + AddHandler rpt.Detail.Format, Sub() + ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + + ' Dim soll = dt.Rows(0)("Soll") + ' Dim haben = dt.Rows(0)("Haben") + 'Dim konto = dt.Rows(0)("Konto") + + rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value() + Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString + rpt.lblBelegDat.Text = BuDat + Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) + rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) + rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value() + rpt.lblFinanzwege.Text = IIf(rpt.Fields.Item("Finanzwege").Value() Is DBNull.Value, "", rpt.Fields.Item("Finanzwege").Value()) + rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value() + Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) + Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) + + rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") + rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") + rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & + " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value() & "' " & + " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") + + ' If Not rpt.Fields.Item("Bez").Value() Is DBNull.Value Then + rpt.lblSteuer.Text = rpt.Fields.Item("Bez").Value() + ' End If + + Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value()) + Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value()) + rpt.lblUSt.Text = IIf(ust <> 0, ust.ToString("C"), "") + rpt.lblVorst.Text = IIf(vorst <> 0, vorst.ToString("C"), "") + + sumSoll += soll + sumHaben += haben + gesSumSoll += soll + gesSumHaben += haben + + sumUSt += ust + sumVorSt += vorst + gesSumUSt += ust + gesSumVorSt += vorst + + datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt + End Sub + AddHandler rpt.GroupHeader1.Format, Sub() + sumSoll = 0 + sumHaben = 0 + sumUSt = 0 + sumVorSt = 0 + End Sub + AddHandler rpt.GroupFooter1.Format, Sub() + rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" + rpt.lblSollSumme.Text = sumSoll.ToString("C") + rpt.lblHabenSumme.Text = sumHaben.ToString("C") + rpt.lblUstSumme.Text = sumUSt.ToString("C") + rpt.lblVorstSumme.Text = sumVorSt.ToString("C") + + End Sub + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") + rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") + rpt.lblUstGesamtSumme.Text = gesSumUSt.ToString("C") + rpt.lblVorStGesamtSumme.Text = gesSumVorSt.ToString("C") + End Sub + + print.Viewer.LoadDocument(rpt) + print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous + print.Show() + End Sub + + Private Sub FlatButton5_Click(sender As Object, e As EventArgs) Handles FlatButton5.Click + + Dim print As New frmPrintLayout + print.Text = "Kassenbuch" + Dim rpt As New rptKassenbuchKontenBericht + + rpt.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4 + + Dim frmVonBis As New frmKasseBerichtVonBis + If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then + Exit Sub + End If + Dim von As Date = frmVonBis.datVon.Value.ToShortDateString + Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString + Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) + + Dim where = "" + Dim benutzerTMP = "" + If master_Kasse Then + rpt.lblSachbearbeiter.Text = "ADMIN" + rpt.lblKassenbuchNr.Text = "-" + rpt.lblMandantNiederlassung.Text = "-" + benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " + Else + rpt.lblSachbearbeiter.Text = PERSONAL.Name + rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + benutzerTMP = " And Benutzer=" & PERSONAL.ID & "" + End If + If frmVonBis.cbxRKSV_only.Checked Then + where = " AND tblKassenbuch.[rksv_id] IS NOT NULL AND tblKassenbuch.[rksv_BelegId] IS NOT NULL AND tblKassenbuch.rksv_aktiv=1 " + End If + + rpt.DataSource = SQL.loadDgvBySql(" SELECT MIN(tblKassenbuch.Konto) as Konto,isNull(MIN(tblKonto.Bez),'') as Bezeichnung, SUM(ISNULL(Haben,0)) AS Habenbetrag,SUM(ISNULL(Soll,0)) AS Sollbetrag, MIN(tblSteuersätze.Bez) as Steuer, SUM(CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END) as Umsatzsteuer,SUM(CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END) as Vorsteuer " & + " FROM tblKassenbuch LEFT JOIN tblKonto ON tblKassenbuch.Konto = tblKonto.KontoNr INNER JOIN tblSteuersätze ON tblKassenbuch.Steuer = tblSteuersätze.Nr INNER JOIN Personal ON tblKassenbuch.Benutzer = Personal.ID " & + " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND tblKassenbuch.Konto<>[Personal].[KassenbuchNr] AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " GROUP BY Konto ORDER BY Konto ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + + + If rpt.DataSource.rows.count = 0 Then + rpt.Dispose() : print.Dispose() + MsgBox("Keine Daten vorhanden!") + Exit Sub + End If + + Dim sum = 0 + rpt.lblUeberschrift.Text = "Summen-Bericht " & von.ToShortDateString & " bis " & bis.ToShortDateString + 'rpt.lblSachbearbeiter.Text = PERSONAL.Name + 'rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR + 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + + Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA + Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" + Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" + Case Else + End Select + + 'Dim cnt As Integer = 0 + rpt.lblDat.Text = Now.ToLongDateString + Dim gesSumSoll As Double = 0 + Dim gesSumHaben As Double = 0 + + Dim gesSumUSt As Double = 0 + Dim gesSumVorSt As Double = 0 + Dim datum = "" + AddHandler rpt.Detail.Format, Sub() + rpt.lblBuchungstext.Text = If(rpt.Fields.Item("Bezeichnung") IsNot Nothing, If(rpt.Fields.Item("Bezeichnung").Value(), ""), "") + rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value() + Dim soll = CDbl(rpt.Fields.Item("Sollbetrag").Value()) + Dim haben = CDbl(rpt.Fields.Item("Habenbetrag").Value()) + + rpt.lblSollbetrag.Text = IIf(soll <> 0, soll.ToString("C"), "") + rpt.lblHabenbetrag.Text = IIf(haben <> 0, haben.ToString("C"), "") + + rpt.lblSteuer.Text = rpt.Fields.Item("Steuer").Value() + + Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value()) + Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value()) + rpt.lblUmsatzsteuer.Text = IIf(ust <> 0, ust.ToString("C"), "") + rpt.lblVorsteuer.Text = IIf(vorst <> 0, vorst.ToString("C"), "") + + gesSumSoll += soll + gesSumHaben += haben + + gesSumUSt += ust + gesSumVorSt += vorst + End Sub + + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") + rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") + rpt.lblUmsatzsteuerGesamtsumme.Text = gesSumUSt.ToString("C") + rpt.lblVorsteuerGesamtsumme.Text = gesSumVorSt.ToString("C") + End Sub + + print.Viewer.LoadDocument(rpt) + print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous + print.Show() + End Sub + + + Private Sub FlatButton9_Click(sender As Object, e As EventArgs) Handles btnBelegAusgang.Click, btnBelegEingang.Click + If KennwortOK() Then + Dim frmFremdbeleg As New frmFremdbeleg + frmFremdbeleg.Art = IIf(sender Is btnBelegAusgang, 2, 1) + frmFremdbeleg.PERSONAL = PERSONAL + ' frmFremdbeleg.GESCHAEFTSJAHR = GESCHAEFTSJAHR + frmFremdbeleg.ShowDialog(Me) + init() + End If + End Sub + + + + + Private Async Function Button4_ClickAsync(sender As Object, e As EventArgs) As Task Handles Button4.Click + + + Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox + + If KASSE.rksv_FT_RestServiceURL <> "" Then + Dim client_FT As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + + 'hier noch eine Auwahlmöglichkeit bauen! + + Dim Journalid = 2 'ReceiptJournal + '4919338167972134914 -> DSFinV-K export + '4919338167972134915 -> TAR file export + '2 -> ReceiptJournal + + Dim result = Await client_FT.Journal(Journalid) + If result <> "" Then + client_FT.exportJournal(result) + End If + Else + + + + MsgBox("Leider noch nicht verfügbar") + + 'Dim client As RKSVWcfClient = New RKSVWcfClient() + 'client.Endpoint.Address = New System.ServiceModel.EndpointAddress("http://192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/?singleWsdl") + 'client.Open() + '' svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials(); + 'Dim credentials As New SDL.RKSVServer.DBUserCredentials + + 'credentials.Database = "RKSVWcfDB" + 'credentials.Server = "AVISO\SQLEXPRESS" + + 'Select Case cboKassen._value + ' Case "VERAG-SUB-KASSE-ZOLL" + ' credentials.Username = "Admin" + ' credentials.Password = "verag#2" + ' credentials.CashboxID = "VERAG-SUB-KASSE-ZOLL" + ' credentials.CompanyGUID = "9119d9ae-f549-4a0f-a50f-0500ec7ca059" + + ' Dim certificate = "" + ' Dim certificateChain = "" + ' Dim exportResult = "" + ' cRKSV.getDEP(certificate, exportResult) + + + + ' 'If (client.ExportJWS()) Then + ' ' Else + ' 'MessageBox.Show(answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + ' ' End If + ' Case "" + ' MsgBox("Keine Kasse gewählt!") + + 'End Select + + + End If + + + + + End Function + + + Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click + Dim f As New frmBelegFinden + f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id + If Not master_Kasse Then f.BenutzerId = PERSONAL.ID + + If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then + Select Case f.art + Case "NEU" + openBelegRKSVId(f.txtBelegNrNeu.Text) + Case "ALT" + Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value) + Dim B As New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value) + openBELEG(B, PERSONALTmp) + End Select + End If + End Sub + + Sub openBelegRKSVId(rksv_beleg_Id) + If rksv_beleg_Id <> "" Then + ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [Mandant]='" & PERSONAL.Mandant & "' AND Niederlassung='" & PERSONAL.Niederlassung & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL") + Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL") + If dt.Rows.Count > 0 Then + ' If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub + + Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(dt.Rows(0)("Benutzer")) + + + 'Wenn LeigeldBeleg oder Kasse Ein/Ausgang, dann nur Ersteller! + Select Case dt.Rows(0)("Beleg_TYP") + Case "E", "L" + If master_Kasse = False Then + If dt.Rows(0)("Benutzer") <> PERSONAL.ID Then + MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub + End If + End If + End Select + + + Select Case dt.Rows(0)("Beleg_TYP") + Case "0" + MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.") + Case "E" + If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub + Dim frmBeleg As New frmFremdbeleg(PERSONALTmp, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + frmBeleg.ShowDialog(Me) + Case "L" + If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub + Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONALTmp, PERSONAL_LG, PERSONAL.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + frmBeleg.ShowDialog(Me) + Case Else + Dim frmBeleg As New frmBelegNeu(PERSONALTmp, PERSONAL_LG, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + frmBeleg.ShowDialog(Me) + End Select + + init() + Else + MsgBox("Keine Daten gefunden!") + End If + End If + End Sub + + Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnDGVBelege.Click + DGV = "B" + initDgv() + End Sub + + Private Sub btnAusgabebeleg_Click(sender As Object, e As EventArgs) Handles btnDGVKassenbuch.Click + DGV = "KB" + initDgv() + End Sub + + Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click + Me.Cursor = Cursors.WaitCursor + cProgramFunctions.genExcelFromDGV_NEW(DataGridView2, True) + Me.Cursor = Cursors.Default + End Sub + + Private Sub frmKassenbuch_Shown(sender As Object, e As EventArgs) Handles Me.Shown + Me.Height = My.Computer.Screen.WorkingArea.Height + Me.Top = 0 + DataGridView2.ClearSelection() + If master_Kasse Then + btnBelegKunde.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegAusgang.Enabled = False + btnBelegEingang.Enabled = False + btnBelegLeihgeld.Enabled = False + End If + If PERSONAL.cRKSV_Kasse IsNot Nothing Then lblRKSV_KASSEN_Bez.Text = PERSONAL.cRKSV_Kasse.rksv_bez + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then + 'btnBelegLeihgeld.Visible = False + btnBelegGSKunde.Visible = False + End If + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'vorher IMEX + If Not PERSONAL.isLeihgeldkasse Then btnBelegLeihgeld.Visible = False + btnBelegGSKunde.Visible = False 'VERAG-MDM KAsse bei IMEX + If PERSONAL.cRKSV_Kasse.rksv_id = 1 Then + btnBelegGSKunde.Visible = True + btnBelegKunde.Enabled = False + End If + End If + + If PERSONAL.cRKSV_Kasse Is Nothing Then + MsgBox("Keine Kasse hinterlegt!") + Me.Close() + End If + If PERSONAL.cRKSV_Kasse.rksv_id = 5 Then + btnBelegKunde.Enabled = False + btnBelegGSKunde.Enabled = False + btnBelegLeihgeld.Enabled = False + End If + Me.BringToFront() + End Sub + + Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btnStorno.Click + Dim f As New frmBelegFinden + f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id + If Not master_Kasse Then f.BenutzerId = PERSONAL.ID + + If master_Kasse Then + f.cbxStornoErzwingenAdmin.Visible = True + f.cbxStornoRKSV.Visible = True + f.cbxStornoBELEG.Visible = True + End If + Dim BELEGTmp As EABeleg = Nothing + If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then + Select Case f.art + Case "NEU" + Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE rksv_BelegId='" & f.txtBelegNrNeu.Text & "' AND [rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' ", "FMZOLL") + If dt.Rows.Count > 0 Then + BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + End If + Case "ALT" + Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value) + BELEGTmp = New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value) + End Select + If BELEGTmp IsNot Nothing Then + + If cRKSV.getGJ_FIRMA(Now, PERSONAL.cRKSV_Kasse.rksv_firma) <> cRKSV.getGJ_FIRMA(BELEGTmp.BelegDat, PERSONAL.cRKSV_Kasse.rksv_firma) Then + MsgBox("Das Geschäftsjahr im Beleg ist '" & cRKSV.getGJ_FIRMA(BELEGTmp.BelegDat, PERSONAL.cRKSV_Kasse.rksv_firma) & "', es können nur Belege im laufenden Geschäftsjahr gebucht werden. Aktion wird abgebrochen!") + Exit Sub + End If + + Dim zahlungsmittel = cRKSV.getZahlungsmittel(BELEGTmp, PERSONAL, PERSONAL.cRKSV_Kasse.rksv_firma) + + If zahlungsmittel = "EC" Then + + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("POS_Zahlungen_stornieren", Me) Then + If Not vbYes = MsgBox("Dieser Beleg wurde mittels EC gezahlt, Zahlung muss ebenfalls manuell auf Terminal storniert werden!", vbYesNoCancel) Then + Exit Sub + End If + + Else + MsgBox("Der aktuelle Benutzer ist nicht berechtigt EC-Zahlungen zu stornieren!") + Exit Sub + End If + + End If + + + 'NUR KB + If f.cbxStornoRKSV.Checked Or f.cbxStornoBELEG.Checked Or f.cbxStornoErzwingenAdmin.Checked Then + Dim grund2 = InputBox("ADMIN-Storno (" & If(f.cbxStornoRKSV.Checked, " -RKSV-Tabelle- ", "") & If(f.cbxStornoBELEG.Checked, " -BELEG-Tabelle- ", "") & If(f.cbxStornoErzwingenAdmin.Checked, " -KASSENBUCH-Tabelle- ", "") & "):" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno") + If grund2 = "" Then + MsgBox("Kein Stornotext, Aktion wird abgebrochen") + Exit Sub + End If + + Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) + ' Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId + If BELEGTmp.BelegDat < Now.AddMonths(-2) And Not master_Kasse Then + MsgBox("Beleg älter als 2 Monate, Aktion wird abgebrochen") 'alte Belege nicht mehr storinieren + Exit Sub + End If + + 'If KASSETmp.StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll + ' Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz) + ' BELEGTmp.rksv_BelegId = RKSV_Beleg_Id + 'End If + + If f.cbxStornoErzwingenAdmin.Checked Then + BELEGTmp = cRKSV.STORNO(BELEGTmp, grund2, True, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung + End If + + If f.cbxStornoRKSV.Checked Then 'nur RKSV!!!!!!! + ' BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, Fal) 'Beleg storno und Kassenbuch Gegenbuchung + If KASSETmp IsNot Nothing Then + KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert! + Dim QRQString As String = "" + Dim LastJWS As String = "" + Dim answer = "" + If KASSETmp.rksv_aktiv Then + + If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then + MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + Else + BELEGTmp.rksv_qr = QRQString + End If + + Else + If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then + MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + End If + + End If + + + + End If + If KASSETmp.rksvDE_aktiv Then + Dim PERSONALTmp1 As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer) + If Not cRKSV.stornoRKSV_DE(PERSONALTmp1, BELEGTmp, KASSETmp, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then + MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + End If + End If + End If + End If + + If f.cbxStornoBELEG.Checked Then 'nur BELEG!!!!!!! + BELEGTmp = cRKSV.STORNO_BELEG_ONLY(BELEGTmp, grund2) 'Beleg storno + End If + + init() + Exit Sub + End If + 'End If + 'If BELEGTmp IsNot Nothing Then + + ' BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + + Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer) + If master_Kasse = False Then + If BELEGTmp.Benutzer <> PERSONAL.ID And Not zahlungsmittel = "EC" Then MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub + End If + Dim grund = InputBox("Möchten Sie den Beleg wirklich storinieren?" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno") + If grund = "" Then + MsgBox("Kein Stornotext, Aktion wird abgebrochen") + Exit Sub + End If + + + If BELEGTmp.BelegNr <= 0 Then MsgBox("Fehler beim Laden der Belegdaten") : Exit Sub + + + If Not BELEGTmp.gebuchtStorno Then 'f.cbxStornoErzwingenAdmin.Checked=stono erzwingen + + Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId + Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) + + If KASSETmp.rksv_StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll + Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz) + BELEGTmp.rksv_BelegIdStorno = RKSV_Beleg_Id + End If + + BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung + ' BELEGTmp = cRKSV.STORNO(BELEGTmp, "") 'Beleg storno und Kassenbuch Gegenbuchung + + ' Dim summe As Double = 0 + ' For Each p In BELEGTmp.POS + 'summe += p.Betrag + ' Next + ' summe = summe * -1 + ' Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id) + + + If KASSETmp IsNot Nothing Then + KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert! + Dim QRQString As String = "" + Dim LastJWS As String = "" + Dim answer = "" + If KASSETmp.rksv_aktiv Then + + If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) + If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then + MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + End If + + Else + If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then + 'FEHLER!! + If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing + BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung + MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + End If + End If + End If + + If KASSETmp.rksvDE_aktiv Then + If Not cRKSV.stornoRKSV_DE(PERSONALTmp, BELEGTmp, KASSETmp, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then + 'FEHLER!! + If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing + BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung + MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub + End If + End If + End If + + Select Case BELEGTmp.Beleg_TYP 'dt.Rows(0)("Beleg_TYP") + Case "E" + Dim KBEntry As cKassenbuch = Nothing + Dim KBEntryGB As cKassenbuch = Nothing + If cRKSV.getKB(BELEGTmp, PERSONALTmp, KBEntry, KBEntryGB, KASSETmp.rksv_firma) Then + cRKSV.printFremdBeleg(BELEGTmp, KASSETmp, PERSONALTmp, KBEntry, KBEntryGB, "") 'Beleg drucken + End If + Case "L" + cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "LG") 'Beleg drucken + Case "A" + cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "A") 'Beleg drucken + Case Else + cRKSV.printKundenBeleg(BELEGTmp, KASSETmp, PERSONALTmp, "", False) 'Beleg drucken + End Select + MsgBox("Beleg storniert!") + 'Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat")) + ' frmBeleg.ShowDialog(Me) + ' init() If Not BELEGTmp.gebuchtStorno Then + Else + MsgBox("Beleg wurde bereits storniert!") + End If + init() + Else + MsgBox("Keine Daten gefunden!") + End If + init() + Else + MsgBox("Keine Daten gefunden!") + End If + + End Sub + + Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnBelegLeihgeld.Click + If KennwortOK() Then + Try + Dim frmNacherfassungLeihgeld As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG) + frmNacherfassungLeihgeld.ShowDialog(Me) + Catch ex As Exception + MsgBox(ex.Message) + End Try + init() + End If + End Sub + + Private Async Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click + Label18.ForeColor = Color.Black + If Not IsNumeric(cboKassen._value) Then + Label18.ForeColor = Color.Red + Exit Sub + End If + + + Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox + + If KASSE.rksv_FT_RestServiceURL <> "" Then + Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id) + Dim QR_CodeString As String = "" + client.saveRKSV_FT(result, QR_CodeString) + Else + cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma) + + End If + + ' End If + End Sub + + Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click + Label18.ForeColor = Color.Black + If Not IsNumeric(cboKassen._value) Then + Label18.ForeColor = Color.Red + Exit Sub + End If + Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox + cRKSV.printAESKey(KASSE, "") 'Beleg drucken + + End Sub + + Private Sub Button6_Click_1(sender As Object, e As EventArgs) Handles Button6.Click + master_Kasse = Not master_Kasse + init() + End Sub + + Private Sub Button10_Click(sender As Object, e As EventArgs) Handles btnBelegGSKunde.Click + If KennwortOK() Then + + lblERRKennwort.Visible = False + Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "A") + frmBeleg.ShowDialog(Me) + init() + + End If + End Sub + + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + Dim f As New frmKassenbuchPWD(PERSONAL) + If f.ShowDialog() = Windows.Forms.DialogResult.OK Then + Dim frmSecureLoginKassenbuch As New SDL.frmSecureLoginKassenbuch() + frmSecureLoginKassenbuch.openKB = True + frmSecureLoginKassenbuch.ShowDialog(Me.Parent) + Me.Close() + End If + End Sub + + Private Sub Button7_Click_1(sender As Object, e As EventArgs) Handles Button7.Click + Dim reader = InputBox("Bitte ReaderNamen angeben:") + + If reader <> "" Then + Dim serial = cRKSV.getCardSerialInReader(cboKassen._value, reader) + If serial <> "" Then MsgBox(serial) Else MsgBox("Karte nicht gefunden!") + End If + End Sub + + Private Sub Button10_Click_1(sender As Object, e As EventArgs) Handles Button10.Click + + Dim print As New frmPrintLayout + print.Text = "Kassenbuch" + + Dim rpt As New rptKassenbuchLeihgeld2 + + Dim frmVonBis As New frmKasseBerichtVonBis + If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then + Exit Sub + End If + Dim von As Date = frmVonBis.datVon.Value.ToShortDateString + Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString + + 'Dim von As Date = CDate("01.01.2016") + ' Dim bis As Date = CDate("31.01.2016") + + ' rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " & + ' "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + Dim where = "" + + If frmVonBis.cbxRKSV_only.Checked Then + where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 " + + End If + Dim sqlStr = "" + ' sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " & + ' "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " + + If master_Kasse Then + rpt.lblSachbearbeiter.Text = "ADMIN" + rpt.lblKassenbuchNr.Text = "-" + rpt.lblMandantNiederlassung.Text = "-" + sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto,[LKW Kennzeichen],Fahrer,FrachtführerKundenNr,Frachtführer " & + " FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer " & + " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " & + " WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr " + Else + rpt.lblSachbearbeiter.Text = PERSONAL.Name + rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr + rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + + sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto ,[LKW Kennzeichen],Fahrer ,FrachtführerKundenNr,Frachtführer " & + " FROM [tblKassenbuch] " & + " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " & + " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & " " & where & " ORDER BY Buchungsdatum, JournalNr " + End If + + rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos) + + rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung + + If rpt.DataSource.rows.count = 0 Then + rpt.Dispose() : print.Dispose() + MsgBox("Keine Daten vorhanden!") + Exit Sub + End If + + Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA + Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH" + Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition" + Case Else + End Select + + Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, PERSONAL.cRKSV_Kasse.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year) + Dim sum = 0 + rpt.lblUeberschrift.Text = "Kassenbuch " & von.ToShortDateString & " bis " & bis.ToShortDateString + rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR + 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung + + 'Dim cnt As Integer = 0 + rpt.lblDat.Text = Now.ToLongDateString + Dim sumSoll As Double = 0 + Dim sumHaben As Double = 0 + Dim gesSumSoll As Double = 0 + Dim gesSumHaben As Double = 0 + Dim datum = "" + AddHandler rpt.Detail.Format, Sub() + ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + + ' Dim soll = dt.Rows(0)("Soll") + ' Dim haben = dt.Rows(0)("Haben") + 'Dim konto = dt.Rows(0)("Konto") + + rpt.lblLKWKz.Text = If(rpt.Fields.Item("LKW Kennzeichen").Value IsNot DBNull.Value, rpt.Fields.Item("LKW Kennzeichen").Value(), "") + rpt.lblFahrer.Text = If(rpt.Fields.Item("Fahrer").Value IsNot DBNull.Value, rpt.Fields.Item("Fahrer").Value(), "") + + Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString + rpt.lblBelegDat.Text = BuDat + Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, PERSONAL.cRKSV_Kasse.rksv_firma) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year) + rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value()) + rpt.lblBuText.Text = rpt.Fields.Item("Buchungstext").Value() + + rpt.txtKunde.Text = If(CInt(rpt.Fields.Item("FrachtführerKundenNr").Value) > 0, rpt.Fields.Item("FrachtführerKundenNr").Value() & " ", "") & rpt.Fields.Item("Frachtführer").Value() + + ' rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + ' " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END as Konto, SUM(soll)as Soll, SUM(haben) as Haben FROM [tblKassenbuch] " & + " WHERE Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL") + + Dim soll = CDbl(rpt.Fields.Item("Soll").Value()) + Dim haben = CDbl(rpt.Fields.Item("Haben").Value()) + + rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "") + rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "") + ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & + ' " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " & + ' " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") + + rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " & + " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " & + " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C") + sumSoll += CDbl(rpt.Fields.Item("Soll").Value()) + sumHaben += CDbl(rpt.Fields.Item("Haben").Value()) + gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value()) + gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value()) + ' rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value() + ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") + ' sum += rpt.Fields.Item("clmnBetrag").Value() + datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt + End Sub + AddHandler rpt.GroupHeader1.Format, Sub() + sumSoll = 0 + sumHaben = 0 + End Sub + AddHandler rpt.GroupFooter1.Format, Sub() + rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":" + rpt.lblSollSumme.Text = sumSoll.ToString("C") + rpt.lblHabenSumme.Text = sumHaben.ToString("C") + ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C") + ' sum += rpt.Fields.Item("clmnBetrag").Value() + End Sub + AddHandler rpt.ReportFooter1.Format, Sub() + rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C") + rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C") + End Sub + + print.Viewer.LoadDocument(rpt) + print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous + print.Show() + End Sub + + Private Sub Button11_Click(sender As Object, e As EventArgs) Handles btnPosTerminal.Click + Label18.ForeColor = Color.Black + If Not IsNumeric(cboKassen._value) Then + Label18.ForeColor = Color.Red + Exit Sub + End If + + Dim f As New frmPOSTerminal(cboKassen.Text, cboKassen._value) + f.Show() + + End Sub + + Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click + + Dim webAddress As String = "https://wiki.verag.ag/e/de/software/aviso/howtos/Barverkauf" + Process.Start(webAddress) + End Sub + + Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click + + cm_FT.Items.Clear() + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + 'nur im Testsystem! + If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then + Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("storno") AndAlso isADMIN Then + Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + End If + + If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then + Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + cm_FT.Items.Add(plose) + AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + End If + + If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet AndAlso Not OutOfOrderIsCreated Then + Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(rmc) + End If + + If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet AndAlso Not OutOfOrderIsCreated Then + Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(rmc) + End If + + If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet AndAlso Not OutOfOrderIsCreated Then + Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(uta) + End If + + If Not cm_FT.Items.ContainsKey("verbindungstest") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("version") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("signatures") AndAlso isADMIN Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("action") AndAlso isADMIN Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("queueitem") AndAlso isADMIN Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + If Not cm_FT.Items.ContainsKey("exportJournal") Then + Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + + If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then + Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked + cm_FT.Items.Add(ids) + End If + + cm_FT.Show(Cursor.Position) + + End Sub + + + Private Async Function mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) As Task(Of Object) + + cm_FT.Hide() + Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) + + If item IsNot Nothing Then + + 'PERSONAL.cRKSV_Kasse.LOAD(cboKassen._value) + + Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) + + If item.Name = "null" Then + + Dim info As String = "Möchten Sie einen 0-Beleg an die TSE schicken?" + + If NULLBelegIsCreated Then + info = "Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein 0-Beleg erstellt, sind Sie wirklich sicher?" + End If + + If vbYes = MsgBox(info, vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_NULLBELEG() + init() + End If + + End If + + ElseIf item.Name = "setMissingSignatures" Then + + Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") + + If dt.Rows.Count = 0 Then + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!") + Return False + End If + + If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then + + Dim result As Boolean = False + For Each r As DataRow In dt.Rows + + Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat")) + Dim summeBRUTTO As Double = BELEG.rksv_umsatz + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim EA As String = "" + Dim kindOfReceiptCase As String = "" + + Select Case BELEG.Beleg_TYP + Case "0" + Continue For 'null Belege nicht senden! + Case "E" 'Eingang/Ausgang + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + Case "L" + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + + Case Else + If BELEG.Belegart = "1" Then + EA = "E" + Else + EA = "A" + End If + End Select + + kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG + + result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference) + + If result Then + BELEG.FT_MissingSignature = False + BELEG.SAVE() + Else + MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!") + BELEG.FT_MissingSignature = False + BELEG.FT_setMissingSignatureFailed = True + BELEG.SAVE() + End If + + Next + + If result Then + init() + End If + + End If + + + + ElseIf item.Name = "tempoutoforder" Then + + + If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_OUTOFORDERBELEG() + init() + End If + + End If + + + + ElseIf item.Name = "outoforder" Then + + + If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_OUTOFORDERBELEG() + init() + End If + + End If + + + ElseIf item.Name = "initialstart" Then + + + If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + rksv.SET_INITIALSTARTBELEG() + init() + End If + + End If + + + + ElseIf item.Name = "verbindungstest" Then + + Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + + + ElseIf item.Name = "storno" Then + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then + + If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + + End If + + Else + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") + End If + + + ElseIf item.Name = "bar" Then + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then + + If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline) + + If result <> "" Then + + If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then + Dim QR_CodeString As String = "" + client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) + End If + Else + Return False + End If + + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + End If + End If + Else + MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") + + End If + + + + ElseIf item.Name = "monthly" Then + + If Not monatsabschlussIsSet Then + If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then + + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + + End If + + End If + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Monatsabschluss erstellt!") + End If + + + ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then + 'Nur DE + + If Not tagesabschlussIsSet Then + + If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then + If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + init() + End If + Else + MsgBox("nicht für AT-Kassen möglich!") + End If + End If + + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") + + End If + + ElseIf item.Name = "yearly" Then + + If Not jahresabschlussIsSet Then + + If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then + + + Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + + End If + + End If + Else + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Jahresabschluss erstellt!") + + End If + + + + ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then + + Dim result As String = "" + Select Case item.Name + Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation) + Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal) + Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) + Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal) + Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal) + End Select + + If result <> "" Then + + MsgBox(client_chilkat.PrettyPrintJson(result)) + + If item.Name = "exportJournal" Then + client_chilkat.exportJournal(result) + End If + + End If + + + + End If + + + End If + + + + End Function + + +End Class \ No newline at end of file From 9a0f22e07d92b60dc1f6a2f34e3716ab1ad31edd Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 09:45:24 +0200 Subject: [PATCH 45/54] fix --- SDL/SDL.vbproj | 5937 +++++++++++++++++++++++++++++++ SDL/kassenbuch/frmKassenbuch.vb | 2 +- 2 files changed, 5938 insertions(+), 1 deletion(-) create mode 100644 SDL/SDL.vbproj diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj new file mode 100644 index 00000000..337ae810 --- /dev/null +++ b/SDL/SDL.vbproj @@ -0,0 +1,5937 @@ + + + + + Debug + AnyCPU + {289BCD77-BC00-4BA1-95ED-A79176D99525} + WinExe + SDL.My.MyApplication + SDL + SDL + 512 + WindowsForms + v4.8 + + + true + ftp://ftps.verag.ag/g/ftp/programme/VERAGAddin/ + true + Web + true + Foreground + 7 + Days + false + false + true + http://localhost/SDL/ + true + publish.htm + 3 + 1.0.0.%2a + false + true + true + + + x64 + true + full + true + true + bin\Debug\ + SDL.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + SDL.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + + + On + + + Text + + + Off + + + On + + + Resources\sdl_ico.ico + + + My Project\app.manifest + + + 9DA3E6C8D44F11BA82886C378927AB1B3DD018FF + + + SDL_1_TemporaryKey.pfx + + + true + + + false + + + false + + + Sebastian.pfx + + + false + + + + + ..\..\..\Aviso\AVISO\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll + + + ..\..\..\Aviso\AVISO\packages\BouncyCastle.Cryptography.2.6.2\lib\net461\BouncyCastle.Cryptography.dll + + + False + ..\VERAG_PROG_ALLGEMEIN\bin\Debug\ChilkatDotNet47.dll + + + False + F:\PROGRAMMIERUNG\dll\closedxml\95\ClosedXML.dll + + + ..\..\..\AVISO\Aviso\packages\esendex-dotnet-sdk.3.8.0\lib\net35\com.esendex.sdk.dll + + + ..\..\..\Aviso\AVISO\packages\Common.Logging.3.4.1\lib\net40\Common.Logging.dll + + + ..\..\..\Aviso\AVISO\packages\Common.Logging.Core.3.4.1\lib\net40\Common.Logging.Core.dll + + + False + ..\..\..\dll\SharpSSH\DiffieHellman.dll + + + False + F:\PROGRAMMIERUNG\dll\OpenXML\v2720\DocumentFormat.OpenXml.dll + + + ..\..\..\DISPO\DISPO\packages\DS.Documents.DX.Windows.7.2.2\lib\net461\DS.Documents.DX.Windows.dll + + + ..\..\..\DISPO\DISPO\packages\DS.Documents.Imaging.7.2.2\lib\net461\DS.Documents.Imaging.dll + + + ..\..\..\DISPO\DISPO\packages\DS.Documents.Imaging.Windows.7.2.2\lib\net461\DS.Documents.Imaging.Windows.dll + + + ..\..\..\DISPO\DISPO\packages\DS.Documents.Pdf.7.2.2\lib\net461\DS.Documents.Pdf.dll + + + ..\..\..\AVISO\Aviso\packages\ExcelNumberFormat.1.0.10\lib\net20\ExcelNumberFormat.dll + + + ..\..\..\Aviso\AVISO\packages\fiskaltrust.interface.utilities.1.2.24060.71293\lib\net40\fiskaltrust.ifPOS.Utilities.dll + + + ..\..\..\Aviso\AVISO\packages\fiskaltrust.interface.1.3.45\lib\net461\fiskaltrust.interface.dll + + + ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Soap.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Common.dll + + + ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Http.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Http.dll + + + ..\..\..\Aviso\AVISO\packages\fiskaltrust.Middleware.Interface.Client.Soap.1.3.45\lib\net461\fiskaltrust.Middleware.Interface.Client.Soap.dll + + + False + F:\PROGRAMMIERUNG\dll\Ghostscript.NET.dll + + + ..\..\..\..\RKSV DE\Gma.QrCodeNet.Encoding.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.AWT.WinForms.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Beans.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Charsets.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Cldrdata.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Corba.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Core.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Jdbc.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Localedata.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Management.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Media.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Misc.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Naming.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Nashorn.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Remoting.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Security.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.SwingAWT.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Text.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Tools.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.Util.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.API.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Bind.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Crypto.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Parse.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.Transform.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.WebServices.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.OpenJDK.XML.XPath.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.Runtime.dll + + + ..\packages\IKVM.8.0.5449.1\lib\IKVM.Runtime.JNI.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.barcodes.dll + + + ..\..\..\Aviso\AVISO\packages\itext.bouncy-castle-adapter.9.6.0\lib\net461\itext.bouncy-castle-adapter.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.bouncy-castle-connector.dll + + + ..\..\..\Aviso\AVISO\packages\itext.commons.9.6.0\lib\net461\itext.commons.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.forms.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.io.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.kernel.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.layout.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.pdfa.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.pdfua.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.sign.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.styledxmlparser.dll + + + ..\..\..\Aviso\AVISO\packages\itext.9.6.0\lib\net461\itext.svg.dll + + + ..\..\..\dll\itextsharp.dll + + + ..\..\..\dll\itextsharp.pdfa.dll + + + ..\..\..\AVISO\Aviso\packages\LiveCharts.0.6.7.0\lib\net40\LiveCharts.dll + True + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.18.2.2\lib\net462\MESCIUS.ActiveReports.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Chart.18.0.4\lib\net462\MESCIUS.ActiveReports.Chart.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Chart.Win.18.0.4\lib\net462\MESCIUS.ActiveReports.Chart.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.DataProviders.3.1.2\lib\net462\MESCIUS.ActiveReports.Core.DataProviders.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.DataProviders.Excel.1.1.2\lib\net462\MESCIUS.ActiveReports.Core.DataProviders.Excel.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.Drawing.Gc.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.Drawing.Gc.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Document.Drawing.Gdi.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Document.Drawing.Gdi.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Drawing.Gc.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Drawing.Gc.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Drawing.Gdi.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Drawing.Gdi.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Excel.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Excel.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Html.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Html.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Image.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Image.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Pdf.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Pdf.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Pdf.Section.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Export.Pdf.Section.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Svg.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Svg.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Text.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Text.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Tiff.Section.4.7.0\lib\net462\MESCIUS.ActiveReports.Core.Export.Tiff.Section.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Export.Word.Page.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Export.Word.Page.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Rdl.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Rdl.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Rendering.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Rendering.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Core.Scripting.3.12.1\lib\net462\MESCIUS.ActiveReports.Core.Scripting.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Design.Win.18.2.2\lib\net462\MESCIUS.ActiveReports.Design.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Excel.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Excel.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Html.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Html.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Image.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Image.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Image.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Image.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Pdf.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Pdf.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Pdf.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Pdf.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Word.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Word.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Export.Xml.18.2.2\lib\net462\MESCIUS.ActiveReports.Export.Xml.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.QueryDesigner.1.0.2\lib\net462\MESCIUS.ActiveReports.QueryDesigner.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Serializer.VS2022.18.2.2\lib\net472\MESCIUS.ActiveReports.Serializer.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.SpreadBuilder.2.2.0\lib\net462\MESCIUS.ActiveReports.SpreadBuilder.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Viewer.Common.18.2.2\lib\net462\MESCIUS.ActiveReports.Viewer.Common.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.Viewer.Win.18.2.2\lib\net462\MESCIUS.ActiveReports.Viewer.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.ActiveReports.18.2.2\lib\net462\MESCIUS.ActiveReports.Win.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.DataEngine.4.0.3\lib\net462\MESCIUS.Data.DataEngine.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.ExpressionInfo.4.0.3\lib\net462\MESCIUS.Data.ExpressionInfo.dll + + + ..\..\..\DISPO\DISPO\packages\MESCIUS.Data.VBFunctionLib.4.0.3\lib\net462\MESCIUS.Data.VBFunctionLib.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll + + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.DependencyInjection.5.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.DependencyInjection.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.Abstractions.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Logging.5.0.0\lib\net461\Microsoft.Extensions.Logging.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Logging.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Options.5.0.0\lib\net461\Microsoft.Extensions.Options.dll + + + ..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.Primitives.5.0.0\lib\net461\Microsoft.Extensions.Primitives.dll + + + False + True + ..\..\..\..\..\..\..\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll + + + False + True + ..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Outlook.dll + + + True + + + ..\..\..\Aviso\AVISO\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll + + + ..\..\..\dll\NumericBox.dll + + + False + ..\..\..\dll\SharpSSH\Org.Mentalis.Security.dll + + + + + ..\..\..\dll\QRCode.dll + + + ..\..\..\Aviso\AVISO\packages\QRCoder.1.8.0\lib\net40\QRCoder.dll + + + ..\..\..\dll\Registrierkasse.dll + + + False + ..\..\..\dll\RKAesIcm.dll + + + ..\packages\ZUGFeRD-csharp.17.4.0\lib\net48\s2industries.ZUGFeRD.dll + + + + ..\..\..\Aviso\AVISO\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + + + + + + + ..\..\..\Aviso\AVISO\packages\System.Diagnostics.DiagnosticSource.5.0.0\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + + + + + ..\..\..\Aviso\AVISO\packages\System.Interactive.Async.4.0.0\lib\net461\System.Interactive.Async.dll + + + ..\..\..\Aviso\AVISO\packages\System.IO.4.3.0\lib\net462\System.IO.dll + True + True + + + ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll + True + True + + + ..\packages\System.IO.Packaging.4.5.0\lib\net46\System.IO.Packaging.dll + + + ..\..\..\Aviso\AVISO\packages\System.Linq.Async.4.0.0\lib\net461\System.Linq.Async.dll + + + + ..\..\..\Aviso\AVISO\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + ..\..\..\Aviso\AVISO\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll + True + True + + + + ..\..\..\Aviso\AVISO\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\..\..\Aviso\AVISO\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll + True + True + + + ..\..\..\Aviso\AVISO\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll + + + + + + ..\..\..\Aviso\AVISO\packages\System.Security.AccessControl.6.0.1\lib\net461\System.Security.AccessControl.dll + + + ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll + True + True + + + ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll + True + True + + + ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll + True + True + + + ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll + True + True + + + ..\..\..\Aviso\AVISO\packages\System.Security.Cryptography.Xml.6.0.2\lib\net461\System.Security.Cryptography.Xml.dll + + + ..\..\..\Aviso\AVISO\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll + + + + + ..\..\..\Aviso\AVISO\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + + + + ..\..\..\Aviso\AVISO\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll + + + + + + + + + + + + + ..\..\..\AVISO\Aviso\packages\TAlex.WPF.Controls.2.0.1.0\lib\net40\TAlex.WPF.Controls.dll + True + + + ..\..\..\dll\SharpSSH\Tamir.SharpSSH.dll + + + + True + + + + ..\..\..\AVISO\Aviso\packages\WpfAnimatedGif.1.4.14\lib\net\WpfAnimatedGif.dll + True + + + ..\packages\ZUGFeRD.NET.1.0.1\lib\ZUGFeRD.NET.dll + + + + + + + + + + + + + + + + + + + AATEST.vb + + + Form + + + frmZollUserStat.vb + + + Form + + + frmKasseJournalNeuBerechnen.vb + + + Form + + + frmKasseAbschliessen.vb + + + Form + + + frmIDS_Stationen.vb + + + Form + + + frmZinsnachberechnung.vb + + + Form + + + frmKassenVerwaltung.vb + + + Form + + + rptKostenstellen.vb + + + Component + + + usrCntlAdministration.vb + + + UserControl + + + + + + UserControl2.vb + + + UserControl + + + frmBerufung.vb + + + Form + + + frmBerufungenSearch.vb + + + Form + + + frmBH_SollHaben.vb + + + Form + + + frmBU_Mahnlauf.vb + + + Form + + + frmBU_Mahnlauf_Ausgabe_Ladebalken.vb + + + Form + + + frmBU_Mahnlauf_Ausgabe.vb + + + Form + + + frmLeistundenFIBUKonten.vb + + + Form + + + frmMDM_BH_SollHaben.vb + + + Form + + + rptOP_Risikobericht.vb + + + Component + + + rptMahnung.vb + + + Component + + + usrCntlBH.vb + + + UserControl + + + + + + + + frmCheckliste.vb + + + Form + + + frmEoriLink.vb + + + Form + + + frmUidLink.vb + + + Form + + + rptCheckliste.vb + + + Component + + + subRptVM.vb + + + Component + + + + + + + + + + + + + + + + + + + + + + + + + + frmCreditSafeSearch.vb + + + Form + + + frmVAT_ATEZ.vb + + + Form + + + usrcntlCreditsafe.vb + + + UserControl + + + usrcntlVAT_ATEZ.vb + + + UserControl + + + + + Component + + + + + frmAbrechnungHandling.vb + + + Form + + + frmSendEmail.vb + + + Form + + + rptRechnungDruck_MDM.vb + + + Component + + + rptRechnungMDM_AnlagenDruck_Zinsennachberechnung.vb + + + Component + + + rptSammelRechnungAnlagenDruck_ProvSum.vb + + + Component + + + rptSammelRechnungAnlagenDruck_MDM.vb + + + Component + + + rptSammelRechnungAnlagenDruck_Leistungen.vb + + + Component + + + frmTIR.vb + + + Form + + + frmTIR_alt.vb + + + Form + + + rptTIR_alt.vb + + + Component + + + usrcntlTIR.vb + + + UserControl + + + rptTIR.vb + + + Component + + + usrcntlTIR_alt.vb + + + UserControl + + + frmVorauskasse_CBAM.vb + + + Form + + + frmVorauskasse_FremdwaehrungBerechnen.vb + + + Form + + + frmVorauskasse_EUSTBerechnen.vb + + + Form + + + subRptLaufzettelZollDE_Vorpapier.vb + + + Component + + + usrcntlCBAM_Checkliste.vb + + + UserControl + + + usrcntlCBAM_indirekt.vb + + + UserControl + + + usrcntlCBAM_Zertifikate.vb + + + UserControl + + + usrcntlCBAM.vb + + + UserControl + + + usrcntlEORI_Antrag.vb + + + UserControl + + + usrCntlQualitaetskontrolle.vb + + + UserControl + + + usrcntlEinfuhrverbot.vb + + + UserControl + + + usrcntLagervertrag.vb + + + UserControl + + + usrcntlVollmacht_MDM_NICHT_EU.vb + + + UserControl + + + usrcntlVollmacht_MDM_EU.vb + + + UserControl + + + usrcntlVollmacht_MDM_BHI.vb + + + UserControl + + + usrcntlVollmacht_DE_indirekt.vb + + + UserControl + + + usrcntlVollmacht_GB_indirekt.vb + + + UserControl + + + usrcntlVollmacht_GB_IE.vb + + + UserControl + + + usrcntlVollmacht_FA.vb + + + UserControl + + + usrCntlZollbeschau.vb + + + UserControl + + + frmdynMailvorlage.vb + + + Form + + + frmEssensbestellungen.vb + + + Form + + + frmEssensbestellungenAdministration.vb + + + Form + + + rptZahlungsbeleg.vb + + + Component + + + frmPOSTerminal.vb + + + Form + + + rptFrachtkostenberechnung.vb + + + Component + + + rptFiskalkunde.vb + + + Component + + + cKundenSearchVertrag.vb + + + Form + + + frmKundenSicherheiten_Details.vb + + + Form + + + frmGoMautBoxen_Bestellung.vb + + + Form + + + frmKundenlogin.vb + + + Form + + + frmKundenLinkedGruppe.vb + + + Form + + + frmKundenTOBBKdNr.vb + + + Form + + + frmKundenBesonderheiten_Add.vb + + + Form + + + frmKundenSyska_DatenÜbertragen.vb + + + Form + + + frmKundenUIDEORI_List.vb + + + Form + + + frmKundenZOLLVollmachten.vb + + + Form + + + frmKundenZOLLVollmachtenUebersicht.vb + + + Form + + + frmGoMautBoxen.vb + + + Form + + + frmNewsletter.vb + + + Form + + + frmKundeAnsprechpartnerTeams.vb + + + Form + + + usCntlCBAM_Status.vb + + + UserControl + + + usrcntlFiskaluebersicht.vb + + + UserControl + + + usrCntlKundenBesonderheiten.vb + + + UserControl + + + usrCntlKundenlogin.vb + + + UserControl + + + usrCntlKundenZollVollmachten.vb + + + UserControl + + + usrCntlCBAM.vb + + + UserControl + + + usrCntlIDSPreise.vb + + + UserControl + + + usrcntlVertraege.vb + + + UserControl + + + frmKundenSicherheiten.vb + + + Form + + + rptASFINAG_Anhang.vb + + + Component + + + frmBesuchsberichte.vb + + + Form + + + usrCntlBesuchsberichte.vb + + + UserControl + + + frmMDMLieferantenrechnungen.vb + + + Form + + + rptIDS_Anhang.vb + + + Component + + + rptPOS_ZNB.vb + + + Component + + + usrcntlFremdrechnungen.vb + + + UserControl + + + True + True + Resources.resx + + + rpt_3470.vb + + + Component + + + rptMWSTListe.vb + + + Component + + + usrCntlFakturierung.vb + + + UserControl + + + frmProvisionisverguetung.vb + + + Form + + + frmUSTVoffeneAntraege.vb + + + Form + + + frmPLOSE_ProductCodes.vb + + + Form + + + rptPLOSE_CustomerConsortio.vb + + + Component + + + rptASFINAG_TransaktionenSumary.vb + + + Component + + + usrCntlSDLLeistungenPLOSE_TRUCKMASTER.vb + + + UserControl + + + usrCntlSDLLeistungenPLOSE_MEDPASS.vb + + + UserControl + + + usrCntlSDLLeistungVERAGCardNEU.vb + + + UserControl + + + usrCntlMDMDatenverarbeitungAuswertungen_divers.vb + + + UserControl + + + frmATR.vb + + + Form + + + frmOriginalArchiv_ATR.vb + + + Form + + + subrptBriefSDL_PLOSE_truckmaster.vb + + + Component + + + subrptBriefSDL_VERAGCARD.vb + + + Component + + + subrptBriefSDL_PLOSE_MEDPASS.vb + + + Component + + + rptKontrolleLKW_TELOTEC.vb + + + Component + + + subrptKontrolleLKW_Telotec.vb + + + Component + + + rptSpeditionsberichtRg.vb + + + Component + + + UsrCntlEssensbestellungen.vb + + + UserControl + + + usrcntlGestellungsgarantien.vb + + + UserControl + + + + frmMDM_USTVAntrag.vb + + + Form + + + rptPLOSE_LaenderGesamt.vb + + + Component + + + rptPLOSE_Konsortium.vb + + + Component + + + + + usrCntlUSTV.vb + + + UserControl + + + usrCntlMSE_KonvertCSV.vb + + + UserControl + + + rptKontrolleLKW_NCTSTR.vb + + + Component + + + rptMRNDruck.vb + + + Component + + + rptAufschubabgleich.vb + + + Component + + + subrptKontrolleLKW_NCTSTR_Abrechnung.vb + + + Component + + + subrptKontrolleLKW_NCTSTR.vb + + + Component + + + frmNacherfassungEndEmpfaenger.vb + + + Form + + + ustCntlUSTV_ErstattungPosition .vb + + + UserControl + + + ustCntlUSTV_AntragPosition.vb + + + UserControl + + + True + True + Reference.map + + + True + True + Reference.map + + + usrCntlATLAS_AES.vb + + + UserControl + + + + usrCntlATLAS_EXGestellung.vb + + + UserControl + + + cATLAS_EZA_IMPORT.vb + + + Form + + + usrCntlATLAS_EZA.vb + + + UserControl + + + usrCntlATLAS_EZABestaetigungVorzeitigeAnmeldung.vb + + + UserControl + + + usrCntlATLAS_EZA_DV1.vb + + + UserControl + + + usrCntlATLAS_EZA_Adressen.vb + + + UserControl + + + usrCntlATLAS_EZA_Allg.vb + + + UserControl + + + usrCntlATLAS_EZA_Position.vb + + + UserControl + + + usrCntlATLAS_EZA_Positionen.vb + + + UserControl + + + usrCntlATLAS_AES_PassiveVeredelung.vb + + + UserControl + + + usrCntlATLAS_AES_Allg.vb + + + UserControl + + + usrCntlATLAS_AES_Adressen.vb + + + UserControl + + + usrCntlATLAS_AES_Position.vb + + + UserControl + + + usrCntlATLAS_AES_Positionen.vb + + + UserControl + + + frmDY_LogBuch.vb + + + Form + + + usrCntlATLAS_NCTS004.vb + + + UserControl + + + usrCntlATLAS_NCTS004_Allg.vb + + + UserControl + + + usrCntlATLAS_NCTS004_Adressen.vb + + + UserControl + + + usrCntlATLAS_NCTS004_Sicherheit.vb + + + UserControl + + + usrCntlATLAS_NCTS004_SicherheitPos.vb + + + UserControl + + + usrCntlATLAS_NCTS004_Position.vb + + + UserControl + + + usrCntlATLAS_NCTS004_Positionen.vb + + + UserControl + + + frmRoutenauswahl.vb + + + Form + + + frmRoutenAuswahlDetails.vb + + + Form + + + usrCntlATLAS_AnkunftsAnzeige.vb + + + UserControl + + + frmImportFromAVISOAnhaenge.vb + + + Form + + + usrCntlModaltrans_EXIM_Allg.vb + + + UserControl + + + usrCntlModaltrans_NCTS_Position.vb + + + UserControl + + + usrCntlModaltrans_NCTS_Positionen.vb + + + UserControl + + + usrCntlModaltrans_NCTS_Allg.vb + + + UserControl + + + usrCntlModaltrans_NCTS_Adressen.vb + + + UserControl + + + usrCntlATLAS_NCTS_Verschluesse.vb + + + UserControl + + + usrCntlATLAS_NCTS_Adressen.vb + + + UserControl + + + usrCntlATLAS_NCTS_Sicherheit.vb + + + UserControl + + + usrCntlATLAS_NCTS_Position.vb + + + UserControl + + + usrCntlATLAS_NCTS_Positionen.vb + + + UserControl + + + usrCntlATLAS_NCTS_Allg.vb + + + UserControl + + + usrCntlATLAS_NCTS_SicherheitPos.vb + + + UserControl + + + usrCntlATLAS_NCTS.vb + + + UserControl + + + frmDakosy_SelFirma.vb + + + Form + + + frmModaltransStammreferenz.vb + + + Form + + + frmStammreferenzPopup.vb + + + Form + + + frmDakosyStammreferenz.vb + + + Form + + + frmZollanmeldung.vb + + + Form + + + + frmDakosyStammreferenzVerwalten.vb + + + Form + + + usrCntlAdresseEZA.vb + + + UserControl + + + usrCntlAdresse.vb + + + UserControl + + + usrCntlDienstWoche.vb + + + UserControl + + + + + frmAbrechnungsMaskeEinzeln.vb + + + Form + + + frmAbrechnungsMaske.vb + + + Form + + + frmFaktAufschubHinzufügen.vb + + + Form + + + frmFaktAufschubSuche.vb + + + Form + + + frmFaktEmail.vb + + + Form + + + frmFaktSammelRgDrucken.vb + + + Form + + + frmRechnungenSuche.vb + + + Form + + + frmRechnungsdatum.vb + + + Form + + + rptSammelRechnungAnlagenDruck.vb + + + Component + + + rptSammelRechnungDruck.vb + + + Component + + + rptRechnungDruck.vb + + + Component + + + rptFaktRechnungAn.vb + + + Component + + + usrCntlFaktAdresse.vb + + + UserControl + + + usrCntlFaktAbrechnung.vb + + + UserControl + + + Form1.vb + + + Form + + + frmCMR.vb + + + Form + + + subrptLadungKurz.vb + + + Component + + + subrptLadung.vb + + + Component + + + rptCMR.vb + + + Component + + + usrcntlCMR.vb + + + UserControl + + + frmEinheitspapierVersandverfahren.vb + + + Form + + + frmEinheitspapier.vb + + + Form + + + frmSearchWT.vb + + + Form + + + rptEinheitspapier0735.vb + + + Component + + + rptEinheitspapier0736.vb + + + Component + + + rptEinheitspapier0778.vb + + + Component + + + rptEinheitspapier0777.vb + + + Component + + + usrCntlEinheitspapier0735.vb + + + UserControl + + + usrCntlEinheitspapier.vb + + + UserControl + + + usrcntlEinheitspapierPos0735.vb + + + UserControl + + + usrcntlEinheitspapierPos.vb + + + UserControl + + + frmAddFahrerdata.vb + + + Form + + + + frmVorauskasse_ZollBerechnen.vb + + + Form + + + rptLaufzettelZollDE.vb + + + Component + + + rptDispoHaftListe.vb + + + Component + + + rptVerpflichtungserklaerungNeu.vb + + + Component + + + subRptLaufzettelZollDE_ATZOLL.vb + + + Component + + + subrptPreislisten_Zoll.vb + + + Component + + + subrptPreislisten.vb + + + Component + + + rptPreislisten.vb + + + Component + + + rptVerpflichtungserklaerung.vb + + + Component + + + subRptLaufzettelZollDE_ATA.vb + + + Component + + + usrCntlSA_GestellungElemente.vb + + + UserControl + + + usrCnrlDispolisteElemente.vb + + + UserControl + + + usrCntlSA_Gestellung.vb + + + UserControl + + + usrcntlFiskalInfoschreiben.vb + + + UserControl + + + usrcntlRechnungsbestaetigung.vb + + + UserControl + + + usrcntlVerbundenheit.vb + + + UserControl + + + usrcntlVerzollungsunterlagen_Verbringsungsnachweis.vb + + + UserControl + + + usrcntlVerzollungsunterlagen_BAR.vb + + + UserControl + + + usrcntlVerzollungsunterlagen.vb + + + UserControl + + + usrcntlQS_UeDok.vb + + + UserControl + + + usrcntlImportaviso.vb + + + UserControl + + + usrcntlVUB.vb + + + UserControl + + + usrCntlVerpflichtungserklärungFahrer.vb + + + UserControl + + + usrcntlSonstigesPDF.vb + + + UserControl + + + usrcntlFormOhneFelder.vb + + + UserControl + + + usrcntlGestellungsgarantie.vb + + + UserControl + + + usrcntlVerzollungspreise.vb + + + UserControl + + + usrcntlCreditreformBoniAuskunft.vb + + + UserControl + + + usrCntlDispoliste.vb + + + UserControl + + + usrcntlVorauskasse.vb + + + UserControl + + + usrcntlVollmacht_VERAG_EXPORT.vb + + + UserControl + + + usrcntlVollmacht_ATILLA_EXPORT.vb + + + UserControl + + + usrcntlVollmacht_AT_Fiskal.vb + + + UserControl + + + usrcntlVollmacht_AT_EV.vb + + + UserControl + + + usrcntlVollmacht_AT.vb + + + UserControl + + + usrcntlVollmacht_DE_Fiskal.vb + + + UserControl + + + usrcntlVollmacht_DE.vb + + + UserControl + + + frmFormularvorlageSuche.vb + + + Form + + + frmFahrerDatenSuche.vb + + + Form + + + frmFormulare.vb + + + Form + + + frmChangePWD.vb + + + Form + + + frmDienstplan.vb + + + Form + + + frmGrayOut.vb + + + Form + + + frmNotify.vb + + + Form + + + frmSourceList.vb + + + Form + + + frmTableVorschau.vb + + + Form + + + frmVorauskasseFuellen.vb + + + Form + + + frmVerzollungspreiseFuellen.vb + + + Form + + + rptAESKey.vb + + + Component + + + rptEABeleg.vb + + + Component + + + rptKassenbuchKontenBericht.vb + + + Component + + + rptKassenbuchBuchhaltungDetails.vb + + + Component + + + rptKassenbuchBuchhaltung.vb + + + Component + + + rptKassenbuchLeihgeld2.vb + + + Component + + + rptKundenBeleg.vb + + + Component + + + rptLeihgeldBeleg.vb + + + Component + + + frmBelegNeu.vb + + + Form + + + frmFremdbeleg.vb + + + Form + + + frmKasseBerichtVonBis.vb + + + Form + + + frmBelegFinden.vb + + + Form + + + frmKassenbuchPWD.vb + + + Form + + + frmPreisText.vb + + + Form + + + frmPreis.vb + + + Form + + + frmKassenbuchSuche.vb + + + Form + + + rptKassenbuchBerichtSaldenBenutzer - Kopieren.vb + + + Component + + + rptKassenbuchBerichtSollHaben.vb + + + Component + + + rptKassenbuchBericht.vb + + + Component + + + usrcntlBelegLeistungEintrag.vb + + + UserControl + + + usrcntlBelegLeistungEintragPosition.vb + + + UserControl + + + rptKundeUebersicht.vb + + + Component + + + subRptAbfertigungen.vb + + + Component + + + subRptLeistungen.vb + + + Component + + + subRptBonitaetsverlauf.vb + + + Component + + + subRptAufschubdaten.vb + + + Component + + + subRptOfferte.vb + + + Component + + + frmAddLKW.vb + + + Form + + + frmBonitaet.vb + + + Form + + + frmBonitaetBearbeiten.vb + + + Form + + + frmBonitätsverlauf.vb + + + Form + + + frmEmailBenachrichtigung.vb + + + Form + + + frmKundenAufschubdatenBearbeiten.vb + + + Form + + + frmKundenChangeMail.vb + + + Form + + + frmKundenDatenblatt.vb + + + Form + + + frmKundenKontakteDetails.vb + + + Form + + + frmKundenUebersichtZollRgDetails.vb + + + Form + + + frmKundenUebersichtZOLLStatDetails.vb + + + Form + + + frmKundenZOLLOffertenSperre.vb + + + Form + + + frmKundenSucheUebersicht.vb + + + Form + + + frmLKW_AnhaengeDatenarchiv.vb + + + Form + + + frmNeuKundeFull.vb + + + Form + + + frmTeamsZuordnung.vb + + + Form + + + frmKundeTeamZuordnung.vb + + + Form + + + frmLKWDetails.vb + + + Form + + + frmOffertenBearbeiten.vb + + + Form + + + frmZollprogrammeDurchsuchen.vb + + + Form + + + usrCntlAufschubkonten.vb + + + UserControl + + + usrCntlKundeFiskaldaten.vb + + + UserControl + + + usrCntlKundenAvisoMailBenachrichtigung.vb + + + UserControl + + + usrCntlKundenKontakte.vb + + + UserControl + + + usrCntlKundenuebersicht.vb + + + UserControl + + + frmVorauskasse.vb + + + Form + + + frmSDLBestellungEintrag.vb + + + Form + + + frmMDMDatenverarbetiung.vb + + + Form + + + rptPLOSE_TransaktionenSumary.vb + + + Component + + + rptPLOSE_Anhang.vb + + + Component + + + frmSDLAbholung.vb + + + Form + + + frmSDLAbholungEintrag.vb + + + Form + + + rptIDS_TransaktionenSumary.vb + + + Component + + + rptIDS_Transaktionen.vb + + + Component + + + usrCntlSDLAbholung.vb + + + UserControl + + + + frmChangeLKW.vb + + + Form + + + frmFindNewVeragCard.vb + + + Form + + + usrCntlAllg.vb + + + UserControl + + + usrCntlSDLLeistungenMANAbgas.vb + + + UserControl + + + usrCntlSDLLeistungenPLOSE_CZ.vb + + + UserControl + + + usrCntlSDLLeistungenPLOSE_IT.vb + + + UserControl + + + usrCntlSDLLeistungPLOSE.vb + + + UserControl + + + usrCntlSDLLeistungHUGO.vb + + + UserControl + + + usrcntlKundeBearbeitenFull.vb + + + UserControl + + + usrCntlOfferte.vb + + + UserControl + + + frmCardDetails.vb + + + Form + + + frmNewData.vb + + + Form + + + frmVERAGCardDetails.vb + + + Form + + + frmVERAGCardNew.vb + + + Form + + + usrCntlSDLLeistungVERAGCard.vb + + + UserControl + + + usrCntlKartenDaten.vb + + + UserControl + + + usrCntlDatenDetails.vb + + + UserControl + + + usrCntlLkwListe.vb + + + UserControl + + + usrCntlMDMAuswertungen.vb + + + UserControl + + + usrcntlNewDataLKW.vb + + + UserControl + + + usrCntlVERAGCard.vb + + + UserControl + + + frmInfo.vb + + + Form + + + Form + + + frmMain.vb + Form + + + Form2.vb + + + Form + + + Form3.vb + + + Form + + + frmLogin.vb + + + Form + + + frmKundenUebersichtZollRg.vb + + + Form + + + usrCntlWoelfl_IM_CSVRg.vb + + + UserControl + + + frmPopUpInfo.vb + + + Form + + + frmPostEinschreiben.vb + + + Form + + + + + subrptBriefSDL_PLOSE.vb + + + Component + + + subrptBriefSDL_PLOSE_CZ.vb + + + Component + + + subrptBriefSDL_HUGO.vb + + + Component + + + subrptBriefSDL_PLOSE_IT.vb + + + Component + + + subrptBriefSDL_WOELFL.vb + + + Component + + + subrptBriefSDL_UTA.vb + + + Component + + + subrptBriefSDL_SI.vb + + + Component + + + subrptBriefSDL_PL.vb + + + Component + + + subrptBriefSDL_MULTIBOX.vb + + + Component + + + subrptBriefSDL_MSE.vb + + + Component + + + subrptBriefSDL_IT.vb + + + Component + + + subrptBriefSDL_FR.vb + + + Component + + + subrptBriefSDL_IDS.vb + + + Component + + + subrptBriefSDL_FREJUS.vb + + + Component + + + subrptBriefSDL_DE.vb + + + Component + + + subrptBriefSDL_CZ.vb + + + Component + + + subrptBriefSDL_AT.vb + + + Component + + + rptAuswertungUeberfaelligeBestellungen.vb + + + Component + + + rptSDLBrief.vb + + + Component + + + rptSDLAbrechnungsblatt.vb + + + Component + + + rptSDLBenachrichtigungUTA.vb + + + Component + + + rptSDLBenachrichtigungMSE.vb + + + Component + + + rptSDLBenachrichtigungIDS.vb + + + Component + + + rptSDLBenachrichtigungPL.vb + + + Component + + + rptSDLBenachrichtigungCZ.vb + + + Component + + + rptSDLBenachrichtigungDE.vb + + + Component + + + rptLeereOBU.vb + + + Component + + + subrptAuswertungUeberfaelligeBestellungen.vb + + + Component + + + rptKontrolleLKW_Dakosy.vb + + + Component + + + rptKontrolleLKW_Zolaris.vb + + + Component + + + rptTGestellungskontrolleDY.vb + + + Component + + + subrptKontrolleLKW_Dakosy.vb + + + Component + + + subrptKontrolleLKW_Zolaris.vb + + + Component + + + True + True + Reference.svcmap + + + True + True + Reference.svcmap + + + frmSMS.vb + + + Form + + + frmSendSMS.vb + + + Form + + + usrCntlSMS.vb + + + UserControl + + + frmATLAS_zbPos.vb + + + Form + + + frmNacherfassungImport.vb + + + Form + + + frmNacherfassungNEU.vb + + + Form + + + frmNacherfassungBelegNrEingabe.vb + + + Form + + + frmNacherfassungCRNEingabe.vb + + + Form + + + frmNacherfassungLeihgeld.vb + + + Form + + + frmNacherfassungVorkosten.vb + + + Form + + + frmNacherfassungZuckerMRNEingabe.vb + + + Form + + + frmQRCode.vb + + + Form + + + + frmPrintLayout.vb + + + Form + + + frmSearchKunde.vb + + + Form + + + frmBelegAddPos.vb + + + Form + + + frmKassenbuch.vb + + + Form + + + frmSecureLoginKassenbuch.vb + + + Form + + + + + frmCryptTest.vb + + + Form + + + + frmKundenblatt.vb + + + Form + + + frmKundenSuche.vb + + + Form + + + frmKundenUebersichtZOLL.vb + + + Form + + + frmNeuerKunde.vb + + + Form + + + frmSDLDetails.vb + + + Form + + + + usrCntlSDLLeistungMautAT.vb + + + UserControl + + + usrCntlSDLLeistungenCZ.vb + + + UserControl + + + usrCntlSDLLeistungenDUOBOX.vb + + + UserControl + + + usrCntlSDLLeistungenECOTAX.vb + + + UserControl + + + usrCntlSDLLeistungenFR.vb + + + UserControl + + + usrCntlSDLLeistungenFREJUS.vb + + + UserControl + + + usrCntlSDLLeistungenIT.vb + + + UserControl + + + usrCntlSDLLeistungenMotorWayMaut.vb + + + UserControl + + + usrCntlSDLLeistungenMSE.vb + + + UserControl + + + usrCntlSDLLeistungenPL.vb + + + UserControl + + + usrCntlSDLLeistungenSI.vb + + + UserControl + + + usrCntlSDLLeistungenWOELFL.vb + + + UserControl + + + usrCntlSDLLeistungMautDE.vb + + + UserControl + + + usrCntlSDLLeistungenUTA.vb + + + UserControl + + + usrCntlLKW.vb + + + UserControl + + + usrCntlSDLLeistungenIDS.vb + + + UserControl + + + + True + Application.myapp + True + + + True + Settings.settings + True + + + usrCntlKundeDetails.vb + + + UserControl + + + usrCntlKunden.vb + + + UserControl + + + rptAuswertungMWSTOffeneAntraegeMitVorauszahlung.vb + + + Component + + + rptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb + + + Component + + + subrptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb + + + Component + + + rptKontrolleLKW.vb + + + Component + + + rptGestellungskontrolleEZOLL.vb + + + Component + + + rptTGestellungskontrolle.vb + + + Component + + + subrptKontrolleLKW.vb + + + Component + + + frmShowData.vb + + + Form + + + usrCntlSeriendruck.vb + + + UserControl + + + frmSpeditionsbuchSuche.vb + + + Form + + + frmPosNr.vb + + + Form + + + rptSpeditionsbericht_HandlingAussenstellen.vb + + + Component + + + rptSpeditionsbericht_Gelangensbestaetigung.vb + + + Component + + + rptSpeditionsberichtKdSpez.vb + + + Component + + + rptSpeditionsberichtKunde.vb + + + Component + + + rptSpeditionsbericht.vb + + + Component + + + usrCntlSpeditionsBuchSuche.vb + + + UserControl + + + usrCntlWelcome.vb + + + UserControl + + + True + True + Reference.map + + + True + True + Reference.map + + + True + True + Reference.map + + + usrCntlMIC_NCTS.vb + + + UserControl + + + usrCntlModaltrans_NCTS.vb + + + UserControl + + + usrCntlSGS_NCTS.vb + + + UserControl + + + + usrCntlTCeZOLL_EZA_Allg.vb + + + UserControl + + + usrCntlTCeZOLL_EZA.vb + + + UserControl + + + frmTCZollanmeldung.vb + + + Form + + + frmAddArtikelATLAS.vb + + + Form + + + frmFiskalSchreiben.vb + + + Form + + + frmLKWEingetroffen nach.vb + + + Form + + + frmStatusFSSAtlas.vb + + + Form + + + frmZollBrgBuchungenFremd.vb + + + Form + + + frmZolltarif.vb + + + Form + + + rptAbgabenliste.vb + + + Component + + + rptFiskalvertretungVorschau.vb + + + Component + + + usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb + + + UserControl + + + usrCntlAuswertungenCBAM_DE.vb + + + UserControl + + + usrCntlAuswertungenFiskalvertretung_4200.vb + + + UserControl + + + usrCntlAuswertungenAufschub_Abgabenliste.vb + + + UserControl + + + usrCntlAuswertungenEV_Veranlagungen.vb + + + UserControl + + + usrCntlAuswertungenFiskal_IntrastatMeldung.vb + + + UserControl + + + usrCntlAuswertungenUIDPruefung.vb + + + UserControl + + + usrCntlAuswertungenKunden_Auftragsrueckgang.vb + + + UserControl + + + usrCntlBrgBuchungenVERAG.vb + + + UserControl + + + usrCntlBrgBuchungenFremd.vb + + + UserControl + + + usrCntlZollArtikel.vb + + + UserControl + + + usrCntlZOLLAuswertungen.vb + + + UserControl + + + usrCntlZollHauptmenue.vb + + + UserControl + + + + + AATEST.vb + Designer + + + frmZollUserStat.vb + + + frmKasseJournalNeuBerechnen.vb + + + frmKasseAbschliessen.vb + + + frmIDS_Stationen.vb + + + frmZinsnachberechnung.vb + + + frmKassenVerwaltung.vb + + + rptKostenstellen.vb + + + usrCntlAdministration.vb + + + UserControl2.vb + + + frmBerufung.vb + + + frmBerufungenSearch.vb + + + frmBH_SollHaben.vb + + + frmBU_Mahnlauf.vb + + + frmBU_Mahnlauf_Ausgabe_Ladebalken.vb + + + frmBU_Mahnlauf_Ausgabe.vb + + + frmLeistundenFIBUKonten.vb + + + frmMDM_BH_SollHaben.vb + + + rptOP_Risikobericht.vb + + + rptMahnung.vb + + + usrCntlBH.vb + + + frmCheckliste.vb + + + frmEoriLink.vb + + + frmUidLink.vb + + + rptCheckliste.vb + + + + subRptVM.vb + + + frmCreditSafeSearch.vb + + + frmVAT_ATEZ.vb + + + usrcntlCreditsafe.vb + + + usrcntlVAT_ATEZ.vb + + + frmAbrechnungHandling.vb + + + frmSendEmail.vb + + + rptRechnungDruck_MDM.vb + Designer + + + rptRechnungMDM_AnlagenDruck_Zinsennachberechnung.vb + + + rptSammelRechnungAnlagenDruck_ProvSum.vb + + + rptSammelRechnungAnlagenDruck_MDM.vb + + + rptSammelRechnungAnlagenDruck_Leistungen.vb + + + frmTIR.vb + + + frmTIR_alt.vb + + + rptTIR_alt.vb + + + usrcntlTIR.vb + + + rptTIR.vb + + + usrcntlTIR_alt.vb + + + frmVorauskasse_CBAM.vb + + + frmVorauskasse_FremdwaehrungBerechnen.vb + + + frmVorauskasse_EUSTBerechnen.vb + + + subRptLaufzettelZollDE_Vorpapier.vb + + + usrcntlCBAM_Checkliste.vb + + + usrcntlCBAM_indirekt.vb + + + usrcntlCBAM_Zertifikate.vb + + + usrcntlCBAM.vb + + + usrcntlEORI_Antrag.vb + + + usrCntlQualitaetskontrolle.vb + + + usrcntlEinfuhrverbot.vb + + + usrcntLagervertrag.vb + + + usrcntlVollmacht_MDM_NICHT_EU.vb + + + usrcntlVollmacht_MDM_EU.vb + + + usrcntlVollmacht_MDM_BHI.vb + + + usrcntlVollmacht_DE_indirekt.vb + + + usrcntlVollmacht_GB_indirekt.vb + + + usrcntlVollmacht_GB_IE.vb + + + usrcntlVollmacht_FA.vb + + + usrCntlZollbeschau.vb + + + frmdynMailvorlage.vb + + + frmEssensbestellungen.vb + + + frmEssensbestellungenAdministration.vb + Designer + + + rptZahlungsbeleg.vb + + + frmPOSTerminal.vb + + + rptFrachtkostenberechnung.vb + + + rptFiskalkunde.vb + + + cKundenSearchVertrag.vb + + + frmKundenSicherheiten_Details.vb + + + frmGoMautBoxen_Bestellung.vb + + + frmKundenlogin.vb + + + frmKundenLinkedGruppe.vb + + + frmKundenTOBBKdNr.vb + + + frmKundenBesonderheiten_Add.vb + + + frmKundenSyska_DatenÜbertragen.vb + + + frmKundenUIDEORI_List.vb + + + frmKundenZOLLVollmachten.vb + + + frmKundenZOLLVollmachtenUebersicht.vb + + + frmGoMautBoxen.vb + + + frmNewsletter.vb + + + frmKundeAnsprechpartnerTeams.vb + + + usCntlCBAM_Status.vb + + + usrcntlFiskaluebersicht.vb + + + usrCntlKundenBesonderheiten.vb + + + usrCntlKundenlogin.vb + + + usrCntlKundenZollVollmachten.vb + + + usrCntlCBAM.vb + + + usrCntlIDSPreise.vb + + + usrcntlVertraege.vb + + + frmKundenSicherheiten.vb + + + rptASFINAG_Anhang.vb + + + frmBesuchsberichte.vb + + + usrCntlBesuchsberichte.vb + + + frmMDMLieferantenrechnungen.vb + + + frmPLOSE_ProductCodes.vb + + + rptIDS_Anhang.vb + + + rptPOS_ZNB.vb + + + rptPLOSE_CustomerConsortio.vb + + + rptASFINAG_TransaktionenSumary.vb + + + usrCntlSDLLeistungenPLOSE_TRUCKMASTER.vb + + + usrCntlSDLLeistungenPLOSE_MEDPASS.vb + + + usrCntlSDLLeistungVERAGCardNEU.vb + + + usrcntlFremdrechnungen.vb + + + usrCntlMDMDatenverarbeitungAuswertungen_divers.vb + + + + frmATR.vb + + + frmOriginalArchiv_ATR.vb + + + subrptBriefSDL_PLOSE_truckmaster.vb + + + subrptBriefSDL_VERAGCARD.vb + + + subrptBriefSDL_PLOSE_MEDPASS.vb + + + rpt_3470.vb + + + rptMWSTListe.vb + + + rptKontrolleLKW_TELOTEC.vb + + + subrptKontrolleLKW_Telotec.vb + + + usrCntlFakturierung.vb + + + frmProvisionisverguetung.vb + + + rptSpeditionsberichtRg.vb + + + UsrCntlEssensbestellungen.vb + + + usrcntlGestellungsgarantien.vb + + + frmMDM_USTVAntrag.vb + + + rptPLOSE_LaenderGesamt.vb + + + rptPLOSE_Konsortium.vb + + + frmUSTVoffeneAntraege.vb + + + usrCntlUSTV.vb + + + usrCntlMSE_KonvertCSV.vb + + + rptKontrolleLKW_NCTSTR.vb + + + rptMRNDruck.vb + + + rptAufschubabgleich.vb + + + subrptKontrolleLKW_NCTSTR_Abrechnung.vb + + + subrptKontrolleLKW_NCTSTR.vb + + + frmNacherfassungEndEmpfaenger.vb + + + ustCntlUSTV_ErstattungPosition .vb + + + ustCntlUSTV_AntragPosition.vb + + + usrCntlATLAS_AES.vb + + + usrCntlATLAS_EXGestellung.vb + + + cATLAS_EZA_IMPORT.vb + + + usrCntlATLAS_EZA.vb + + + usrCntlATLAS_EZABestaetigungVorzeitigeAnmeldung.vb + + + usrCntlATLAS_EZA_DV1.vb + + + usrCntlATLAS_EZA_Adressen.vb + + + usrCntlATLAS_EZA_Allg.vb + + + usrCntlATLAS_EZA_Position.vb + + + usrCntlATLAS_EZA_Positionen.vb + + + usrCntlATLAS_AES_PassiveVeredelung.vb + + + usrCntlATLAS_AES_Allg.vb + + + usrCntlATLAS_AES_Adressen.vb + + + usrCntlATLAS_AES_Position.vb + + + usrCntlATLAS_AES_Positionen.vb + + + frmDY_LogBuch.vb + + + usrCntlATLAS_NCTS004.vb + + + usrCntlATLAS_NCTS004_Allg.vb + + + usrCntlATLAS_NCTS004_Adressen.vb + + + usrCntlATLAS_NCTS004_Sicherheit.vb + + + usrCntlATLAS_NCTS004_SicherheitPos.vb + + + usrCntlATLAS_NCTS004_Position.vb + + + usrCntlATLAS_NCTS004_Positionen.vb + + + frmRoutenauswahl.vb + + + frmRoutenAuswahlDetails.vb + + + usrCntlATLAS_AnkunftsAnzeige.vb + + + frmImportFromAVISOAnhaenge.vb + + + usrCntlModaltrans_EXIM_Allg.vb + + + usrCntlModaltrans_NCTS_Position.vb + + + usrCntlModaltrans_NCTS_Positionen.vb + + + usrCntlModaltrans_NCTS_Allg.vb + + + usrCntlModaltrans_NCTS_Adressen.vb + + + usrCntlATLAS_NCTS_Verschluesse.vb + + + usrCntlATLAS_NCTS_Adressen.vb + + + usrCntlATLAS_NCTS_Sicherheit.vb + + + usrCntlATLAS_NCTS_Position.vb + + + usrCntlATLAS_NCTS_Positionen.vb + + + usrCntlATLAS_NCTS_Allg.vb + + + usrCntlATLAS_NCTS_SicherheitPos.vb + + + usrCntlATLAS_NCTS.vb + + + frmDakosy_SelFirma.vb + + + frmModaltransStammreferenz.vb + + + frmStammreferenzPopup.vb + + + frmDakosyStammreferenz.vb + + + frmZollanmeldung.vb + + + frmDakosyStammreferenzVerwalten.vb + + + usrCntlAdresseEZA.vb + + + usrCntlAdresse.vb + + + usrCntlDienstWoche.vb + + + frmAbrechnungsMaskeEinzeln.vb + + + frmAbrechnungsMaske.vb + + + frmFaktAufschubHinzufügen.vb + + + frmFaktAufschubSuche.vb + + + frmFaktEmail.vb + + + frmFaktSammelRgDrucken.vb + + + frmRechnungenSuche.vb + + + frmRechnungsdatum.vb + + + rptSammelRechnungAnlagenDruck.vb + + + rptSammelRechnungDruck.vb + + + rptRechnungDruck.vb + Designer + + + rptFaktRechnungAn.vb + + + usrCntlFaktAdresse.vb + + + usrCntlFaktAbrechnung.vb + + + Form1.vb + + + frmCMR.vb + + + subrptLadungKurz.vb + + + subrptLadung.vb + + + rptCMR.vb + + + usrcntlCMR.vb + + + frmEinheitspapierVersandverfahren.vb + + + frmEinheitspapier.vb + + + frmSearchWT.vb + + + rptEinheitspapier0735.vb + + + rptEinheitspapier0736.vb + + + rptEinheitspapier0778.vb + + + rptEinheitspapier0777.vb + + + usrCntlEinheitspapier0735.vb + + + usrCntlEinheitspapier.vb + + + usrcntlEinheitspapierPos0735.vb + + + usrcntlEinheitspapierPos.vb + + + frmAddFahrerdata.vb + + + frmVorauskasse_ZollBerechnen.vb + + + rptLaufzettelZollDE.vb + + + rptDispoHaftListe.vb + + + rptVerpflichtungserklaerungNeu.vb + + + subRptLaufzettelZollDE_ATZOLL.vb + + + subrptPreislisten_Zoll.vb + + + subrptPreislisten.vb + + + rptPreislisten.vb + + + rptVerpflichtungserklaerung.vb + Designer + + + subRptLaufzettelZollDE_ATA.vb + + + usrCntlSA_GestellungElemente.vb + + + usrCnrlDispolisteElemente.vb + + + usrCntlSA_Gestellung.vb + + + usrcntlFiskalInfoschreiben.vb + + + usrcntlRechnungsbestaetigung.vb + + + usrcntlVerbundenheit.vb + + + usrcntlVerzollungsunterlagen_Verbringsungsnachweis.vb + + + usrcntlVerzollungsunterlagen_BAR.vb + + + usrcntlVerzollungsunterlagen.vb + + + usrcntlQS_UeDok.vb + + + usrcntlImportaviso.vb + + + usrcntlVUB.vb + + + usrCntlVerpflichtungserklärungFahrer.vb + + + usrcntlSonstigesPDF.vb + + + usrcntlFormOhneFelder.vb + + + usrcntlGestellungsgarantie.vb + + + usrcntlVerzollungspreise.vb + + + usrcntlCreditreformBoniAuskunft.vb + + + usrCntlDispoliste.vb + + + usrcntlVorauskasse.vb + + + usrcntlVollmacht_VERAG_EXPORT.vb + + + usrcntlVollmacht_ATILLA_EXPORT.vb + + + usrcntlVollmacht_AT_Fiskal.vb + + + usrcntlVollmacht_AT_EV.vb + + + usrcntlVollmacht_AT.vb + + + usrcntlVollmacht_DE_Fiskal.vb + + + usrcntlVollmacht_DE.vb + + + frmFormularvorlageSuche.vb + + + frmFahrerDatenSuche.vb + + + frmFormulare.vb + + + frmChangePWD.vb + + + frmDienstplan.vb + + + frmGrayOut.vb + + + frmNotify.vb + + + frmSourceList.vb + + + frmTableVorschau.vb + + + frmVorauskasseFuellen.vb + + + frmVerzollungspreiseFuellen.vb + + + rptAESKey.vb + + + rptEABeleg.vb + + + rptKassenbuchKontenBericht.vb + + + rptKassenbuchBuchhaltungDetails.vb + + + rptKassenbuchBuchhaltung.vb + + + rptKassenbuchLeihgeld2.vb + + + rptKundenBeleg.vb + + + rptLeihgeldBeleg.vb + + + frmBelegNeu.vb + + + frmFremdbeleg.vb + + + frmKasseBerichtVonBis.vb + + + frmBelegFinden.vb + + + frmKassenbuchPWD.vb + + + frmPreisText.vb + + + frmPreis.vb + + + frmKassenbuchSuche.vb + + + rptKassenbuchBerichtSaldenBenutzer - Kopieren.vb + + + rptKassenbuchBerichtSollHaben.vb + + + rptKassenbuchBericht.vb + + + usrcntlBelegLeistungEintrag.vb + + + usrcntlBelegLeistungEintragPosition.vb + + + rptKundeUebersicht.vb + + + subRptAbfertigungen.vb + + + subRptLeistungen.vb + + + subRptBonitaetsverlauf.vb + + + subRptAufschubdaten.vb + + + subRptOfferte.vb + + + frmAddLKW.vb + + + frmBonitaet.vb + + + frmBonitaetBearbeiten.vb + + + frmBonitätsverlauf.vb + + + frmEmailBenachrichtigung.vb + + + frmKundenAufschubdatenBearbeiten.vb + + + frmKundenChangeMail.vb + + + frmKundenDatenblatt.vb + + + frmKundenKontakteDetails.vb + + + frmKundenUebersichtZollRgDetails.vb + + + frmKundenUebersichtZOLLStatDetails.vb + + + frmKundenZOLLOffertenSperre.vb + + + frmKundenSucheUebersicht.vb + + + frmLKW_AnhaengeDatenarchiv.vb + + + frmNeuKundeFull.vb + + + frmTeamsZuordnung.vb + + + frmKundeTeamZuordnung.vb + + + frmLKWDetails.vb + + + frmOffertenBearbeiten.vb + + + frmZollprogrammeDurchsuchen.vb + + + usrCntlAufschubkonten.vb + + + usrCntlKundeFiskaldaten.vb + + + usrCntlKundenAvisoMailBenachrichtigung.vb + + + usrCntlKundenKontakte.vb + + + usrCntlKundenuebersicht.vb + Designer + + + frmVorauskasse.vb + + + frmSDLBestellungEintrag.vb + + + frmMDMDatenverarbetiung.vb + + + rptPLOSE_TransaktionenSumary.vb + + + rptPLOSE_Anhang.vb + + + frmSDLAbholung.vb + + + frmSDLAbholungEintrag.vb + + + rptIDS_TransaktionenSumary.vb + + + rptIDS_Transaktionen.vb + + + usrCntlSDLAbholung.vb + + + frmChangeLKW.vb + + + frmFindNewVeragCard.vb + + + usrCntlAllg.vb + + + usrCntlSDLLeistungenMANAbgas.vb + + + usrCntlSDLLeistungenPLOSE_CZ.vb + + + usrCntlSDLLeistungenPLOSE_IT.vb + + + usrCntlSDLLeistungPLOSE.vb + + + usrCntlSDLLeistungHUGO.vb + + + usrcntlKundeBearbeitenFull.vb + + + usrCntlOfferte.vb + + + frmCardDetails.vb + + + frmNewData.vb + + + frmVERAGCardDetails.vb + + + frmVERAGCardNew.vb + + + usrCntlSDLLeistungVERAGCard.vb + + + usrCntlKartenDaten.vb + + + usrCntlDatenDetails.vb + + + usrCntlLkwListe.vb + + + usrCntlMDMAuswertungen.vb + + + usrcntlNewDataLKW.vb + + + usrCntlVERAGCard.vb + + + frmInfo.vb + + + frmMain.vb + + + Form2.vb + + + Form3.vb + + + frmLogin.vb + + + frmKundenUebersichtZollRg.vb + + + usrCntlWoelfl_IM_CSVRg.vb + + + frmPopUpInfo.vb + + + frmPostEinschreiben.vb + + + subrptBriefSDL_PLOSE.vb + + + subrptBriefSDL_PLOSE_CZ.vb + + + subrptBriefSDL_HUGO.vb + + + subrptBriefSDL_PLOSE_IT.vb + + + subrptBriefSDL_WOELFL.vb + + + subrptBriefSDL_UTA.vb + + + subrptBriefSDL_SI.vb + + + subrptBriefSDL_PL.vb + + + subrptBriefSDL_MULTIBOX.vb + + + subrptBriefSDL_MSE.vb + + + subrptBriefSDL_IT.vb + + + subrptBriefSDL_FR.vb + + + subrptBriefSDL_IDS.vb + + + subrptBriefSDL_FREJUS.vb + + + subrptBriefSDL_DE.vb + + + subrptBriefSDL_CZ.vb + + + subrptBriefSDL_AT.vb + + + rptAuswertungUeberfaelligeBestellungen.vb + Designer + + + rptSDLBrief.vb + Designer + + + rptSDLAbrechnungsblatt.vb + Designer + + + rptSDLBenachrichtigungUTA.vb + Designer + + + rptSDLBenachrichtigungMSE.vb + Designer + + + rptSDLBenachrichtigungIDS.vb + Designer + + + rptSDLBenachrichtigungPL.vb + Designer + + + rptSDLBenachrichtigungCZ.vb + Designer + + + rptSDLBenachrichtigungDE.vb + Designer + + + rptLeereOBU.vb + Designer + + + subrptAuswertungUeberfaelligeBestellungen.vb + + + rptKontrolleLKW_Dakosy.vb + + + rptKontrolleLKW_Zolaris.vb + + + rptTGestellungskontrolleDY.vb + + + subrptKontrolleLKW_Dakosy.vb + + + subrptKontrolleLKW_Zolaris.vb + + + frmSMS.vb + + + frmSendSMS.vb + + + usrCntlSMS.vb + + + frmATLAS_zbPos.vb + + + frmNacherfassungImport.vb + + + frmNacherfassungNEU.vb + + + frmNacherfassungBelegNrEingabe.vb + + + frmNacherfassungCRNEingabe.vb + + + frmNacherfassungLeihgeld.vb + + + frmNacherfassungVorkosten.vb + + + frmNacherfassungZuckerMRNEingabe.vb + + + frmQRCode.vb + + + frmPrintLayout.vb + + + frmSearchKunde.vb + + + frmBelegAddPos.vb + + + frmKassenbuch.vb + + + frmSecureLoginKassenbuch.vb + + + frmCryptTest.vb + + + frmKundenblatt.vb + + + frmKundenSuche.vb + + + frmKundenUebersichtZOLL.vb + + + frmNeuerKunde.vb + + + frmSDLDetails.vb + + + usrCntlSDLLeistungMautAT.vb + + + usrCntlSDLLeistungenCZ.vb + + + usrCntlSDLLeistungenDUOBOX.vb + + + usrCntlSDLLeistungenECOTAX.vb + + + usrCntlSDLLeistungenFR.vb + + + usrCntlSDLLeistungenFREJUS.vb + + + usrCntlSDLLeistungenIT.vb + + + usrCntlSDLLeistungenMotorWayMaut.vb + + + usrCntlSDLLeistungenMSE.vb + + + usrCntlSDLLeistungenPL.vb + + + usrCntlSDLLeistungenSI.vb + + + usrCntlSDLLeistungenUTA.vb + + + usrCntlSDLLeistungenWOELFL.vb + + + usrCntlSDLLeistungMautDE.vb + + + usrCntlLKW.vb + + + usrCntlSDLLeistungenIDS.vb + + + VbMyResourcesResXFileCodeGenerator + My.Resources + Designer + Resources.Designer.vb + + + usrCntlKundeDetails.vb + + + usrCntlKunden.vb + + + rptAuswertungMWSTOffeneAntraegeMitVorauszahlung.vb + Designer + + + rptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb + Designer + + + subrptAuswertungMWSTOffeneAntraegeMitVorauszahlungDetails.vb + + + rptKontrolleLKW.vb + + + rptGestellungskontrolleEZOLL.vb + + + rptTGestellungskontrolle.vb + + + subrptKontrolleLKW.vb + + + frmShowData.vb + + + usrCntlSeriendruck.vb + + + frmSpeditionsbuchSuche.vb + + + frmPosNr.vb + + + rptSpeditionsbericht_HandlingAussenstellen.vb + + + rptSpeditionsbericht_Gelangensbestaetigung.vb + + + rptSpeditionsberichtKdSpez.vb + + + rptSpeditionsberichtKunde.vb + + + rptSpeditionsbericht.vb + + + usrCntlSpeditionsBuchSuche.vb + + + usrCntlWelcome.vb + + + usrCntlMIC_NCTS.vb + + + usrCntlModaltrans_NCTS.vb + + + usrCntlSGS_NCTS.vb + + + usrCntlTCeZOLL_EZA_Allg.vb + + + usrCntlTCeZOLL_EZA.vb + + + frmTCZollanmeldung.vb + + + frmAddArtikelATLAS.vb + + + frmFiskalSchreiben.vb + + + frmLKWEingetroffen nach.vb + + + frmStatusFSSAtlas.vb + + + frmZollBrgBuchungenFremd.vb + + + frmZolltarif.vb + + + rptAbgabenliste.vb + + + rptFiskalvertretungVorschau.vb + + + usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb + + + usrCntlAuswertungenCBAM_DE.vb + + + usrCntlAuswertungenFiskalvertretung_4200.vb + + + usrCntlAuswertungenAufschub_Abgabenliste.vb + + + usrCntlAuswertungenEV_Veranlagungen.vb + + + usrCntlAuswertungenFiskal_IntrastatMeldung.vb + + + usrCntlAuswertungenUIDPruefung.vb + + + usrCntlAuswertungenKunden_Auftragsrueckgang.vb + + + usrCntlBrgBuchungenVERAG.vb + + + usrCntlBrgBuchungenFremd.vb + + + usrCntlZollArtikel.vb + + + usrCntlZOLLAuswertungen.vb + + + usrCntlZollHauptmenue.vb + + + + + + + + + + + + + Always + + + + + Always + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + + + + + + Always + + + + Reference.map + + + MSDiscoCodeGenerator + Reference.vb + + + + Designer + + + + Reference.map + + + MSDiscoCodeGenerator + Reference.vb + + + Designer + + + + Designer + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + Designer + + + + Always + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + Reference.svcmap + + + MSDiscoCodeGenerator + Reference.vb + + + Designer + + + + MSDiscoCodeGenerator + Reference.vb + + + Designer + + + + Reference.map + + + MSDiscoCodeGenerator + Reference.vb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} + 2 + 7 + 0 + primary + False + True + + + {00020905-0000-0000-C000-000000000046} + 8 + 6 + 0 + primary + False + True + + + {0002E157-0000-0000-C000-000000000046} + 5 + 3 + 0 + primary + False + True + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + Always + + + + + + Always + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + + + Always + + + + + Always + + + Always + + + + Always + + + Always + + + Always + + + Always + + + + + + + Always + + + Always + + + + + + + + + + + + Always + + + Always + + + + Always + + + + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WCF Proxy Generator + Reference.vb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + + + Always + + + + + + Always + + + Always + + + Always + + + Always + + + + + + + + + + + + + + + + + + Always + + + Always + + + + Always + + + + + + + + + + WCF Proxy Generator + Reference.vb + + + + + + + + Always + + + Always + + + + + + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4 Client Profile %28x86 und x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + + + + {50e8e49b-4fd9-4dd4-b159-bdc2b7d0e94f} + DAKOSY_Worker_lib + + + {2e4dbc09-e57b-4ac5-8554-6117d71f993b} + MDM_Worker_lib + + + {5b947a66-009a-4bb6-b925-f84a01045095} + TELOTEC_Worker_lib + + + {110c923b-cb02-4fd0-af24-95e0f0eeeff5} + Gemeinsames + + + {e4190547-b222-4ae3-a0be-a44eaee70335} + Parkzeit + + + {a3b497bd-842c-4a2b-b398-ed1976849df1} + VERAG_PROG_ALLGEMEIN + + + + + + + + + + + + Dynamic + Web References\EORI\ + http://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation%3fwsdl + + + + + MySettings + SDL_EORI_validation + + + Dynamic + Web References\eu.europa.ec1\ + https://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation%3fwsdl + + + + + MySettings + SDL_eu_europa_ec1_validation + + + Dynamic + Web References\eu.europa.ec\ + https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl + + + + + MySettings + SDL_eu_europa_ec_checkVatService + + + Dynamic + Web References\at.gv.bmf.finanzonline\ + https://finanzonline.bmf.gv.at/fon/ws/uidAbfrage.wsdl + + + + + MySettings + SDL_at_gv_bmf_finanzonline_uidAbfrageService + + + Dynamic + Web References\at.gv.bmf.finanzonlineLogin\ + https://finanzonline.bmf.gv.at/fonws/ws/sessionService.wsdl + + + + + MySettings + SDL_at_gv_bmf_finanzonline1_sessionService + + + + + \\192.168.0.90\f\Zertifikate\signtool.exe sign /f \\192.168.0.90\f\Zertifikate\AL20231110.pfx /p zYGNNJRG+tzlw90Rz6NqOXnoeBycFCy07YcUsY5iD0M= "SDL.exe" + + + \ No newline at end of file diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 8301520b..50aaa7d3 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -376,7 +376,7 @@ Public Class frmKassenbuch .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & - " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & + " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' and b.rksv_BelegId >= 0 " & " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & ' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & From 43257416fdad3a599351f17a2ac91619345e4438 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 10:49:27 +0200 Subject: [PATCH 46/54] fix --- SDL/kassenbuch/frmFremdbeleg.vb | 110 +++++++++++---------- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 2 +- 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 7d179b2c..5dc2c342 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -139,7 +139,7 @@ Public Class frmFremdbeleg Else If cRKSV.isforbiddenDate Then - MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.") + MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte versuchen Sie den Vorgang nach Mitternacht erneut.") Exit Sub End If @@ -225,26 +225,49 @@ Public Class frmFremdbeleg Dim answer = "" - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust() + Dim isFiskaltrust = False + + If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then + + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + isFiskaltrust = client_chilkat.isFiskaltrust() + End If + If KASSE.rksv_aktiv Then - Dim verarbeitet As Boolean = False + Dim verarbeitet As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) - 'result.Wait() - verarbeitet = result - Else - verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + If KASSE.rksv_FT_RestServiceURL <> "" Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) + 'result.Wait() + verarbeitet = result + Else + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If + + + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + + If Not isFiskaltrust Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + End If + MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) + ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") + 'MsgBox("Programmfehler bei der digitalen Signatur.") + Me.Cursor = Cursors.Default : Me.Close() : Exit Sub + Else + BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!! + End If + + End If End If - - If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - - If Not isFiskaltrust Then - + If KASSE.rksvDE_aktiv Then + If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, BELEG.rksv_umsatz * -1) cRKSV.DELETE(BELEG, KASSE.rksv_firma) @@ -253,49 +276,32 @@ Public Class frmFremdbeleg ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") 'MsgBox("Programmfehler bei der digitalen Signatur.") Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - Else - BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!! End If + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + If KASSE.rksv_KassaGuid = "KASSE_01" Then + BELEG.rksv_jws = Nothing + BELEG.rksv_qr = Nothing + End If + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX End If - End If - If KASSE.rksvDE_aktiv Then - If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, 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, BELEG.rksv_umsatz * -1) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) - End If - MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") - 'MsgBox("Programmfehler bei der digitalen Signatur.") - Me.Cursor = Cursors.Default : Me.Close() : Exit Sub - End If - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - If KASSE.rksv_KassaGuid = "KASSE_01" Then - BELEG.rksv_jws = Nothing - BELEG.rksv_qr = Nothing - End If - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + + '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.SAVE() + + If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString) + + Me.Cursor = Cursors.Default End If - - - If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - - '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.SAVE() - - If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString) - - Me.Cursor = Cursors.Default - - End If - Me.Close() + Me.Close() Catch ex As Exception Me.Cursor = Cursors.Default MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!") diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index 77148d1a..b48bcd32 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -364,7 +364,7 @@ Public Class frmNacherfassungLeihgeld Dim QR_CodeString As String = "" Dim LastJWS As String = "" Dim isFiskaltrust As Boolean = False - If KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then + If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) isFiskaltrust = client_chilkat.isFiskaltrust() End If From 7c0c1ea1a3a21e2d833af5dfca025d447510bcc3 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 15:48:00 +0200 Subject: [PATCH 47/54] Barverkauf, etc. --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 178 +++++++++++----- SDL/Classes/cRKSV.vb | 223 +++++++++++++++++++-- SDL/kassenbuch/frmFremdbeleg.vb | 17 +- SDL/kassenbuch/frmKassenbuch.vb | 159 +++++---------- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 6 +- 5 files changed, 395 insertions(+), 188 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 60153005..ef1de0e9 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -1,4 +1,5 @@ Imports Chilkat +Imports io.konik.zugferd.unqualified Imports QRCoder Imports VERAG_PROG_ALLGEMEIN @@ -19,6 +20,10 @@ Public Class FtReceiptCases Public Const YearlyClosing As Long = &H4445000000000006L Public Const DailyClosing As Long = &H4445000000000007L + ' Kasseneinzahlung / Kassenauszahlung / Geldtransfer + Public Const CashDepositOrWithdrawal As Long = &H4445000000000011L + + ' Flags Public Const ImplicitTransaction As Long = &H100000000L Public Const ReversalReceipt As Long = &H40000L @@ -34,11 +39,29 @@ End Class Public Class FtChargeItemCase - 'DE - Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % - Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % - Public Const RevenueNotTaxable As Long = &H4445000000000005L 'nicht steuerbar - Public Const RevenueTaxFree As Long = &H4445000000000006L '0% + ' DE – Verkaufsbelege + Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Regelsteuersatz + + Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % ermäßigter Steuersatz + + Public Const RevenueNotTaxable As Long = &H4445000000000005L ' Nicht steuerbar + + Public Const RevenueTaxFree As Long = &H4445000000000006L ' Umsatzsteuerfrei, 0 % + + ' DE – Kassenbewegungen + Public Const Anfangsbestand As Long = &H4445000000000090L ' Anfangsbestand + + Public Const Privatentnahme As Long = &H4445000000000091L ' Privatentnahme + + Public Const Privateinlage As Long = &H4445000000000092L ' Privateinlage + + Public Const Geldtransit As Long = &H4445000000000093L ' Geldtransit + + Public Const Lohnzahlung As Long = &H4445000000000094L ' Lohnzahlung + + Public Const Einzahlung As Long = &H4445000000000095L ' Einzahlung + + Public Const Auszahlung As Long = &H4445000000000096L ' Auszahlung End Class @@ -53,10 +76,26 @@ End Class Public Class ReceiptCaseIntern + Public Const STORNO As String = "Storno" Public Const VERKAUF As String = "Verkauf" Public Const EINGANG As String = "Eingang" Public Const AUSGANG As String = "Ausgang" Public Const WIEDERHOLUNG As String = "Retry" + Public Const NULLBELEG As String = "NULL-BELEG" + Public Const STARTBELEG As String = "START-BELEG" + Public Const OUTOFOPERATIONBELEG As String = "END-BELEG" + Public Const TEMP_OUTOFOPERATIONBELEG As String = "TEMP-AUSFALL" + Public Const DAILYCLOSING As String = "TAGESABSCHLUSS" + +End Class + + +Public Class PayItemCasesIntern + + Public Const Cash As String = "Cash" + Public Const DebitCard As String = "DebitCard" + Public Const Kasseneinzahlungen_Auszahlungen As String = "Kasseneinzahlungen_Auszahlungen" + End Class @@ -81,6 +120,9 @@ Public Class FtPayItemCases ' Gutschein Public Const Voucher As Long = &H4445000000000007L + 'Cash transfer from/to cash book + Public Const Kasseineinzahlung_Auszahlung As Long = &H4445000000000016L + End Class Public Class cFiskaltrustClient_chilkat @@ -387,21 +429,23 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) - Dim receipCase + Dim receiptCaseValue As Long If _receiptCase = "Storno" Then + ' Neue Referenz für den Stornobeleg json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) + ' Referenz auf den ursprünglichen Beleg json.UpdateString("cbPreviousReceiptReference", _reference) If TSEisOnline Then - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction End If - ElseIf _receiptCase = "Retry" Then + ElseIf _receiptCase = ReceiptCaseIntern.WIEDERHOLUNG Then 'Receipt-Request nach Kommunikationsfehler 'dieselbe cbReceiptReference verwenden @@ -409,87 +453,115 @@ Public Class cFiskaltrustClient_chilkat 'optional dieselbe cbTerminalID json.UpdateString("cbReceiptReference", _reference) - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest + + ' Kasseneinzahlung (ohne Positionen) / Kassenauszahlung (ohne Positionen) + ElseIf (_receiptCase = ReceiptCaseIntern.EINGANG OrElse _receiptCase = ReceiptCaseIntern.AUSGANG) AndAlso POS.Count = 0 Then + kindOfPayment = PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen + json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) + + If TSEisOnline Then + receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.ImplicitTransaction + Else + receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + End If + Else ' New reference for a normal receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) If TSEisOnline Then - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction End If End If - json.UpdateString("ftReceiptCase", receipCase.ToString()) + json.UpdateString("ftReceiptCase", receiptCaseValue.ToString()) Dim chargeItems = json.AppendArray("cbChargeItems") - For Each p In POS + If POS.Count > 0 Then - If chargeItems.AddObjectAt(-1) Then + For Each p In POS + + If chargeItems.AddObjectAt(-1) Then - Dim quantity As Double = p.Anzahl - Dim unitPrice As Double = p.Preis - Dim lineAmount As Double = p.Betrag + Dim quantity As Double = p.Anzahl + Dim unitPrice As Double = p.Preis + Dim lineAmount As Double = p.Betrag - 'bei Storno negieren (BEI DE nur einen Teil)! - 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' - 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase + 'bei Storno negieren (BEI DE nur einen Teil)! + 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' + 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase - If _receiptCase = "Storno" Then - quantity = quantity * -1 - lineAmount = lineAmount * -1 + If _receiptCase = ReceiptCaseIntern.STORNO Then + quantity = quantity * -1 + lineAmount = lineAmount * -1 + End If + + Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1) + item.UpdateInt("Quantity", quantity) + item.UpdateNumber("Amount", lineAmount) + item.UpdateNumber("VATRate", vat) + item.UpdateString("Description", p.LeistungsBez) + + Dim ChargeItemCase As Long + Select Case vat + + Case 19D + ChargeItemCase = FtChargeItemCase.RevenueNormal + + Case 7D + ChargeItemCase = FtChargeItemCase.RevenueReduced + + Case 0D + ChargeItemCase = FtChargeItemCase.RevenueTaxFree + + Case Else + Throw New Exception("Unbekannter Steuersatz") + End Select + + + item.UpdateString("ftChargeItemCase", ChargeItemCase) End If - Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1) - item.UpdateInt("Quantity", quantity) - item.UpdateNumber("Amount", lineAmount) - item.UpdateNumber("VATRate", vat) - item.UpdateString("Description", p.LeistungsBez) - Dim ChargeItemCase As Long - Select Case vat + Next - Case 19D - ChargeItemCase = FtChargeItemCase.RevenueNormal - - Case 7D - ChargeItemCase = FtChargeItemCase.RevenueReduced - - Case 0D - ChargeItemCase = FtChargeItemCase.RevenueTaxFree - - Case Else - Throw New Exception("Unbekannter Steuersatz") - End Select - - - item.UpdateString("ftChargeItemCase", ChargeItemCase) - End If - - - Next + End If Dim payItems = json.AppendArray("cbPayItems") payItems.AddObjectAt(-1) Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1) pay.UpdateInt("Quantity", 1) pay.UpdateNumber("Amount", amount.ToString().Replace(",", ".")) - pay.UpdateString("Description", kindOfPayment) + Dim Description As String = "" Select Case kindOfPayment - Case "Cash" + Case PayItemCasesIntern.Cash pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash) - Case "Card" + Description = "Bar" + Case PayItemCasesIntern.DebitCard pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard) + Description = "ECKarte" + Case PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen + pay.UpdateString("ftPayItemCase", FtPayItemCases.Kasseineinzahlung_Auszahlung) + If amount > 0 Then + Description = "Kasseneingang" + ElseIf amount < 0 Then + Description = "Kassenausgang" + End If End Select + pay.UpdateString("Description", Description) + + Return json End Function diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index 9a7d3684..7ba65c43 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -1,4 +1,5 @@ -Imports GrapeCity.ActiveReports + +Imports GrapeCity.ActiveReports Imports SDL.RKSVServer Imports VERAG_PROG_ALLGEMEIN.DSFinVKService Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService @@ -122,25 +123,37 @@ Public Class cRKSV Dim kindOfPayment As String = getKindOfPayment(beleg_temp) - If False Then - 'Dim client As New cFiskaltrustClient(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - 'Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id) - 'If result <> "" Then - ' Return client.saveRKSV_FT(result, QR_CodeString) - 'Else - ' Return False - 'End If - Else - Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) - Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) - If result <> "" Then + Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) + + Dim result As String = "" + + Select Case typOfReceiptCase + Case ReceiptCaseIntern.NULLBELEG + result = client.SignNullReceipt(kasse.rksv_id) + + Case ReceiptCaseIntern.STARTBELEG + result = client.SignInitialOperationReceipt(kasse.rksv_id) + + Case ReceiptCaseIntern.OUTOFOPERATIONBELEG + result = client.SignOutOfOrderReceipt(kasse.rksv_id) + + Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG + result = client.SignTempOutOfOrderReceipt(kasse.rksv_id) + + Case ReceiptCaseIntern.DAILYCLOSING + result = client.SignClosingReceipt("daily", kasse.rksv_id, "daily") + Case Else + result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) + End Select + + If result <> "" Then Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Else Return False End If - End If + Catch ex As Exception @@ -1826,6 +1839,188 @@ Public Class cRKSV End Function + Public Shared Function printStatusBelegFiskaltrust(KASSE As cRKSV_Kasse, PERSONAL As cPersonal, AUTODRUCK As Boolean, Firma As String, fiskaltrustReceiptCasTypIntern As String) As Boolean + Try + + If PERSONAL Is Nothing Then + Dim FMZOLL_SQL As New FMZOLL_SQL + PERSONAL = FMZOLL_SQL.getPersonalById(274) + End If + + Dim ib = "" + + Dim TESTBUCHUNG = False + Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler + Dim summe As Double = 0 + Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, summe)) + If RKSV_Beleg_Id < 0 Then + 'Exit Function + Return False + End If + + + Dim belegBez As String = fiskaltrustReceiptCasTypIntern + + + Dim BELEG As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID) + ' Dim GJ = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ(BELEG.BelegDat)) + + BELEG.Ordnungsbegriff = "*** " & belegBez & " ***" + BELEG.Beleg_TYP = "0" + BELEG.Belegart = "0" + BELEG.Name1 = "*** " & belegBez & " ***" + BELEG.Steuerschlüssel = 3510 + BELEG.BelegNr = cRKSV.getNewBelegNr(BELEG, Firma) 'GJ.INCREASE_BELEG() 'Vergabe der Belegnummer ' + ' Beleg noch nicht gespeichert.... BELEG.DEL_POS_List()' Positionen löschen, da BelegNr Neu vergeben + For Each p In BELEG.POS + p.BelegNr = BELEG.BelegNr + Next + BELEG.gebucht = True + BELEG.SAVE() + + + ' QR_Image = Nothing + Dim QR_CodeString As String = "" + Dim LastJWS As String = "" + Dim isFiskaltrust As Boolean = False + Dim verarbeitet As Boolean = False + If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt + Dim answer = "" + + If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then + Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + isFiskaltrust = client_chilkat.isFiskaltrust() + End If + + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, 0, TESTBUCHUNG, QR_CodeString, LastJWS, fiskaltrustReceiptCasTypIntern) + verarbeitet = result + End If + + + If Not verarbeitet Then + + If Not TESTBUCHUNG Then + KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1) + cRKSV.DELETE(BELEG, KASSE.rksv_firma) + 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 + ' If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) + End If + + If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die DEUTSCHLAND gilt + Dim answer = "" + + '*Nullbelg-POS* + Dim POS As New EABelegPositionen + POS.Abfertigungsart = 10 '"Sonstiges" + POS.Mandant = BELEG.Mandant + POS.Niederlassung = BELEG.Niederlassung + POS.Benutzer = BELEG.Benutzer + POS.BelegDat = BELEG.BelegDat + POS.BelegNr = BELEG.BelegNr + POS.PreislistenPos = -1 + POS.LeistungsNr = 499 + POS.LeistungsBez = belegBez + POS.Leistungsbeschreibung = belegBez + POS.PreislistenNr = -1 + POS.PreistabellenNr = -1 + POS.Preis = 0 + POS.Anzahl = 1 + POS.Anzahlmultiplikator = 1 + POS.Betrag = 0 + POS.Preisbindung = 0 + ' POS.AbfertigungsNr = 000 + BELEG.POS.Add(POS) + + 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, KASSE.rksv_firma) + 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) + + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + If KASSE.rksv_KassaGuid = "KASSE_01" Then + 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 = summe + BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv) + BELEG.SAVE() + + Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) + + Select Case fiskaltrustReceiptCasTypIntern + Case ReceiptCaseIntern.NULLBELEG + rksv.SET_NULLBELEG() + Case ReceiptCaseIntern.STARTBELEG + rksv.SET_INITIALSTARTBELEG() + Case ReceiptCaseIntern.OUTOFOPERATIONBELEG + rksv.SET_OUTOFORDERBELEG() + Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG + rksv.SET_OUTOFORDERBELEG() + Case ReceiptCaseIntern.DAILYCLOSING + SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") + End Select + + + If isFiskaltrust Then + + + End If + + 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken + + + If AUTODRUCK Then + Dim pName = "" + For Each sPrinter As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters + If sPrinter = "AUTODRUCK_MAIL" Then pName = sPrinter : Exit For + Next + If pName = "" Then + Dim oPS As New System.Drawing.Printing.PrinterSettings + pName = oPS.PrinterName + End If + cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, pName, False) 'Beleg drucken + Else + cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, "", False) 'Beleg drucken + End If + + Return True + ' End If + + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try + Return False + + End Function + + + Public Shared Function getCardSerialInReader(kasse_id As Integer, reader As String) Try diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 5dc2c342..68f2b1e7 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -228,7 +228,6 @@ Public Class frmFremdbeleg Dim isFiskaltrust = False If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then - Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) isFiskaltrust = client_chilkat.isFiskaltrust() End If @@ -238,16 +237,16 @@ Public Class frmFremdbeleg Dim verarbeitet As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) - 'result.Wait() - verarbeitet = result - Else - verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service - End If + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) + 'result.Wait() + verarbeitet = result + Else + verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + End If - If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service + If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not isFiskaltrust Then diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 50aaa7d3..f78ba888 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -206,8 +206,6 @@ Public Class frmKassenbuch End If - lbldailyCashboxClosing.Text = "" - If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) @@ -253,51 +251,47 @@ Public Class frmKassenbuch TSEIsOnline = False MiddlewareIsOnline = False - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) + End If + InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) - - If Not MiddlewareIsOnline Then - diasableBarverkauf("MIDDLEWARE") - ElseIf Not InitialStartIsCreated Then - diasableBarverkauf("INITIALSTART") - ElseIf tagesabschlussIsSet Then - diasableBarverkauf("TAGESABSCHLUSS") - ElseIf OutOfOrderIsCreated Then - diasableBarverkauf("OUTOFORDER") - Else - lbldailyCashboxClosing.Text = "" - If Not TSEIsOnline Then - lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" - End If - - If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then - btnBelegKunde.Enabled = True - btnBelegAusgang.Enabled = True - btnBelegEingang.Enabled = True - btnBelegGSKunde.Enabled = True - btnBelegLeihgeld.Enabled = True - btnStorno.Enabled = True - End If - + If Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") + ElseIf tagesabschlussIsSet Then + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") + Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then + btnBelegKunde.Enabled = True + btnBelegAusgang.Enabled = True + btnBelegEingang.Enabled = True + btnBelegGSKunde.Enabled = True + btnBelegLeihgeld.Enabled = True + btnStorno.Enabled = True End If - - lbldailyCashboxClosing.Visible = False - Button11.Visible = False End If - - End If + Else + lbldailyCashboxClosing.Text = "" + Button11.Visible = False End If + + ' Label9.Text = PERSONAL.Name DataGridView2.ClearSelection() End Sub @@ -1368,16 +1362,17 @@ Public Class frmKassenbuch Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) - Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id) - Dim QR_CodeString As String = "" - client.saveRKSV_FT(result, QR_CodeString) + If KASSE.rksv_FT_Country IsNot Nothing AndAlso KASSE.rksv_FT_Country = "DE" Then + + cRKSV.printStatusBelegFiskaltrust(KASSE, PERSONAL, True, KASSE.rksv_firma, ReceiptCaseIntern.NULLBELEG) Else cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma) - End If + + init() + + ' End If End Sub @@ -1609,11 +1604,11 @@ Public Class frmKassenbuch End If - If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then - Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If + 'If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then + ' Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} + ' cm_FT.Items.Add(plose) + ' AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + 'End If If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} @@ -1704,31 +1699,7 @@ Public Class frmKassenbuch Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) - If item.Name = "null" Then - - Dim info As String = "Möchten Sie einen 0-Beleg an die TSE schicken?" - - If NULLBelegIsCreated Then - info = "Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein 0-Beleg erstellt, sind Sie wirklich sicher?" - End If - - If vbYes = MsgBox(info, vbYesNoCancel) Then - - Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_NULLBELEG() - init() - End If - - End If - - ElseIf item.Name = "setMissingSignatures" Then + If item.Name = "setMissingSignatures" Then Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") @@ -1802,16 +1773,8 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_OUTOFORDERBELEG() - init() - End If + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG) + init() End If @@ -1821,18 +1784,9 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.OUTOFOPERATIONBELEG) + init() - Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_OUTOFORDERBELEG() - init() - End If End If @@ -1842,17 +1796,8 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then - Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) - - - If result <> "" Then - - MsgBox(client_chilkat.PrettyPrintJson(result)) - - Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id) - rksv.SET_INITIALSTARTBELEG() - init() - End If + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.STARTBELEG) + init() End If @@ -1949,22 +1894,18 @@ Public Class frmKassenbuch If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then - Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name) - If result <> "" Then + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.DAILYCLOSING) - MsgBox(client_chilkat.PrettyPrintJson(result)) + init() - SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL") - init() - End If Else MsgBox("nicht für AT-Kassen möglich!") End If End If - Else - MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") + + MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") End If diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index b48bcd32..5db23dd8 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -375,9 +375,9 @@ Public Class frmNacherfassungLeihgeld Dim verarbeitet As Boolean = False If isFiskaltrust Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() - verarbeitet = result + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) + 'result.Wait() + verarbeitet = result Else verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service End If From 6016fa4a5a1bd47323512b381ac11c360340c92c Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 17 Sep 2026 08:55:42 +0200 Subject: [PATCH 48/54] =?UTF-8?q?div.=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/kassenbuch/frmKassenbuch.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index f78ba888..c8a78c83 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -264,7 +264,7 @@ Public Class frmKassenbuch ElseIf OutOfOrderIsCreated Then diasableBarverkauf("OUTOFORDER") Else - lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!" End If @@ -286,6 +286,7 @@ Public Class frmKassenbuch Else lbldailyCashboxClosing.Text = "" Button11.Visible = False + lblFiskaltrustHeader.Visible = False End If From 09c666e239ad3f33ad01fdad45508d63b656a362 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 17 Sep 2026 16:45:02 +0200 Subject: [PATCH 49/54] Syska (MDM-Import), uta, etc. --- SDL/USTV/usrCntlUSTV.vb | 10 +- VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb | 42 +++++ .../Schnittstellen/cSyska_Interface.vb | 167 ++++++++++++++---- 3 files changed, 180 insertions(+), 39 deletions(-) diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index 352e177b..8c8f7024 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -394,7 +394,7 @@ Public Class usrCntlUSTV If Not col.ColumnName.Contains(colName) Then col.ColumnName = col.ColumnName.Replace("UStVAn_", "") Next - cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,, "", True) End If @@ -1203,7 +1203,7 @@ Public Class usrCntlUSTV If dtVorschau.Columns.Contains("LandNr") Then dtVorschau.Columns.Remove("LandNr") - cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,, "", True) @@ -1320,7 +1320,7 @@ Public Class usrCntlUSTV If dtVorschau.Columns.Contains("E-Mail") Then dtVorschau.Columns.Remove("E-Mail") If dtVorschau.Columns.Contains("E-Mail2") Then dtVorschau.Columns.Remove("E-Mail2") - cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,, "", True) ElseIf item.Name = "mail" Then @@ -1482,7 +1482,7 @@ Public Class usrCntlUSTV If item.Name = "excel" Then - cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,, "", True) ElseIf item.Name = "mail" Then @@ -1750,7 +1750,7 @@ Public Class usrCntlUSTV End If - cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,, "", True) End Sub diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb index e1318c1c..5e4e55e2 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb @@ -953,6 +953,16 @@ Public Class cUTA Sub New() End Sub + Sub New(RechnungsNr, KundenNr, Datum, DocumentTyp) + Me.RechnungsNr = RechnungsNr + Me.KundenNr = KundenNr + Me.Datum = Datum + Me.DocumentTyp = DocumentTyp + LOAD(RechnungsNr, KundenNr, Datum, DocumentTyp) + + End Sub + + Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Id", Id,, True)) @@ -978,6 +988,38 @@ Public Class cUTA Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function + Public Sub LOAD(RechnungsNr As String, KundenNr As Integer, Datum As Date, DocumentTyp As String) + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("Select * FROM tblUTADocuments WHERE Datum=@Datum AND KundenNr = @KundenNr AND RechnungsNr=@RechnungsNr AND DocumentTyp = @DocumentTyp ", conn) + cmd.Parameters.AddWithValue("@Datum", Datum) + cmd.Parameters.AddWithValue("@KundenNr", KundenNr) + cmd.Parameters.AddWithValue("@RechnungsNr", RechnungsNr) + cmd.Parameters.AddWithValue("@DocumentTyp", DocumentTyp) + + Dim dr = cmd.ExecuteReader() + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) + End Try + End Sub + Public Sub LOAD() Try hasEntry = False diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb index ff4b6184..8161d527 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb @@ -6,15 +6,44 @@ Public Class cSyska_Interface 'STAMMDATEN Shared Function getStammdaten(FiBuSchnittstelleNr) As DataTable - Dim sqlStr = " Select KundenNrZentrale As [Konto-Nr],isnull([Name 1],'') as Name,isnull([Name 2],'') as [Name2],(isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],isnull(UstIdGeprüft,'') as [UID-Datum],[Strasse],Adressen.landkz ,PLZ,LTRIM([Ort]) as Ort,isnull(BLZ,'') as [BLZ],isnull(KTO,'') as [KTO], CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],/*'' as [SPz],'' as [STg],*/isnull([E-Mail],'') as [mail],'' AS Info1,'' AS Inf2, Zahlungsziel2, Zahlungsziel3,[E-Mail],[Telefon] ,Telefax " - sqlStr &= " ,Ordnungsbegriff ,Kunden.Währungscode,Anrede,Ansprechpartner,Lastschrift,Kunden.[Eingegeben am] as EingegebenAm" - sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr " - sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr " - sqlStr &= " LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz " - sqlStr &= " LEFT JOIN Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel " - sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' " - sqlStr &= " Order by [Konto-Nr] " - Return SQL.loadDgvBySql(sqlStr, "FMZOLL") + + Dim SQLString = "Select Top(100) + KundenNrZentrale As [Konto-Nr], + isnull([Name 1],'') as Name, + isnull([Name 2],'') as [Name2], + (isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer], + isnull(UstIdGeprüft,'') as [UID-Datum], + [Strasse], + Adressen.landkz , + PLZ,LTRIM([Ort]) as Ort, + isnull(BLZ,'') as [BLZ], + isnull(KTO,'') as [KTO], + CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel], + isnull([E-Mail],'') as [mail], + '' AS Info1, + '' AS Inf2, + Zahlungsziel2, + Zahlungsziel3, + [E-Mail], + [Telefon] , + Telefax,Ordnungsbegriff, + Kunden.Währungscode, + Anrede, + Ansprechpartner, + Lastschrift, + Kunden.[Eingegeben am] as EingegebenAm, + isnull(tblKundenErweitert.kde_BezFIBU,'') as [Kürzel], + 2811 as [präf. Bank], + isnull(tblKundenErweitert.kde_Fakturierung_Sprache,'') as Sprache, + isnull(Adressen.Steuernummer,'')as [SteuerNr], + isnull(tblKundenErweitert.kde_betreuer,'') as Betreuer + FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr + Left Join tblKundenErweitert ON KundenNr=kde_KundenNr + Left Join [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz + Left Join Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel + WHERE FiBuSchnittstelle = 0 And Auswahl ='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' and KundenNr = 203152 Order by [Konto-Nr]" + + Return SQL.loadDgvBySql(SQLString, "FMZOLL") End Function ' Shared Function getStammdatenTEST(FiBuSchnittstelleNr) As DataTable @@ -80,9 +109,6 @@ Public Class cSyska_Interface Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper Dim Lastschrift = CBool(row("Lastschrift")) - 'If FormatStringSYS(row("Name2"), 50) <> "" Then - ' MsgBox(FormatStringSYS(row("Name2"), 50) & vbTab) - 'End If getPersonenKto = "" getPersonenKto &= row("Konto-Nr") & vbTab getPersonenKto &= FormatStringSYS(cleanStringName, 2) & row("Konto-Nr") & vbTab @@ -113,7 +139,73 @@ Public Class cSyska_Interface getPersonenKto &= FormatStringSYS(row("Telefax")) & vbTab getPersonenKto &= FormatStringSYS(row("E-Mail")) & vbTab getPersonenKto &= vbTab - ' getPersonenKto &= vbTab + + End Function + + + Public Shared Function getPersonenKto_MDM(row As DataRow) As String + + Dim LandKz = row("LandKz") + Dim Gegenkontonummer = "" + Dim Gegenkontonummer2 = "" + If LandKz Is DBNull.Value Or LandKz.trim = "" Or LandKz = "A" Then + Gegenkontonummer = "4000" ' Erl. 20% + Gegenkontonummer2 = "4000" ' Erl. 20% + Else + If CBool(SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & LandKz & "'", "FMZOLL", False)) Then + Gegenkontonummer = "4020" ' Erl. 0% EU + Gegenkontonummer2 = "4020" ' Erl. 0% EU + Else + Gegenkontonummer = "4021" ' Erl. 0% 3.Land + Gegenkontonummer2 = "4021" ' Erl. 0% 3.Land + End If + End If + + Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper + + Dim SteuerNr As String = "" + + If Not IsDBNull(row("SteuerNr")) Then + SteuerNr = Regex.Replace(row("SteuerNr").ToString(), "[^0-9]", "") + End If + + Dim Lastschrift = CBool(row("Lastschrift")) + getPersonenKto_MDM = "" + getPersonenKto_MDM &= row("Konto-Nr") & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Kürzel"), 24) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name2"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Strasse"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("PLZ"), 20) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Ort"), 50) & vbTab + getPersonenKto_MDM &= cProgramFunctions.getISO2Land(FormatStringSYS(LandKz, 5)) & vbTab + getPersonenKto_MDM &= CDate(row("EingegebenAm")).ToShortDateString & vbTab 'Eröffnungsdatum + 'getPersonenKto_MDM &= Gegenkontonummer & vbTab + getPersonenKto_MDM &= vbTab 'Bankname + getPersonenKto_MDM &= If(Lastschrift, row("BLZ"), "") & vbTab + getPersonenKto_MDM &= If(Lastschrift, row("KTO"), "") & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab 'Inhaber + getPersonenKto_MDM &= "00" & vbTab 'Skontotage + getPersonenKto_MDM &= If(row("ZZiel") IsNot DBNull.Value AndAlso row("ZZiel") <> String.Empty, CDbl(row("ZZiel")).ToString("00"), "") & vbTab + getPersonenKto_MDM &= "00,00" & vbTab 'Skonto + getPersonenKto_MDM &= "01" & vbTab 'Mahnkennung + getPersonenKto_MDM &= FormatStringSYS(row("UST-Id-Nummer"), 50) & vbTab + 'getPersonenKto_MDM &= vbTab + getPersonenKto_MDM &= row("Währungscode") & vbTab + 'getPersonenKto_MDM &= vbTab 'Forderungsonto + 'getPersonenKto_MDM &= vbTab + 'getPersonenKto_MDM &= Gegenkontonummer2 & vbTab 'Platzhalter?? + getPersonenKto_MDM &= FormatStringSYS(row("Anrede") & " " & row("Ansprechpartner"), 100) & vbTab + 'getPersonenKto_MDM &= vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Telefon")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Telefax")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("E-Mail")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("präf. Bank")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Sprache")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(SteuerNr) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Betreuer")) & vbTab + + getPersonenKto_MDM &= vbTab End Function @@ -146,43 +238,50 @@ Public Class cSyska_Interface If True Then 'boolKunden Then '----------------- STAMMDATEN ----------------- Dim dt_Stamm As DataTable = getStammdaten(FiBuSchnittstelleNr) + Dim postfix As String = "" If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then - + If FiBuSchnittstelleNr = 19 Then postfix = "MDM_" Dim fileKD As System.IO.StreamWriter - Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & ".txt" + Dim DateinameKD = "AVISO_DEBI_" & postfix & Now.ToString("ddMMyyyy_HHmm") & ".txt" fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15")) - 'fileKD.WriteLine(genStammdatenBeginn()) + 'fileKD.WriteLine(genStammdatenBeginn()) - initKDNr(dt_Stamm) + initKDNr(dt_Stamm) For Each r In dt_Stamm.Rows - fileKD.WriteLine(getPersonenKto(r)) + If FiBuSchnittstelleNr = 19 Then + fileKD.WriteLine(getPersonenKto_MDM(r)) + Else + fileKD.WriteLine(getPersonenKto(r)) + End If + + Next bool_DatenVorhanden = True - fileKD.Close() + fileKD.Close() + + 'In Archiv sichern + If pathArchivKD <> "" Then + If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD) + If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD) + End If + + If bool_DatenVorhanden Then + If OpenFile Then Process.Start(pathKD & DateinameKD) + Else + System.IO.File.Delete(pathKD & DateinameKD) + End If + + 'NOCH NICHT!!! + updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0 - 'In Archiv sichern - If pathArchivKD <> "" Then - If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD) - If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD) End If - - If bool_DatenVorhanden Then - If OpenFile Then Process.Start(pathKD & DateinameKD) - Else - System.IO.File.Delete(pathKD & DateinameKD) - End If - - 'NOCH NICHT!!! - updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0 - End If - End If From 118b5a17ae3da65cda3d25e1e41c2cf3d7c16846 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 21 Sep 2026 17:27:06 +0200 Subject: [PATCH 50/54] =?UTF-8?q?mdm,=20div.=20=C3=84nderungen,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 33 +- .../Newsletter/frmNewsletter.Designer.vb | 13 + SDL/kunden/Newsletter/frmNewsletter.vb | 339 +++++++++++++++++- SDL/kunden/frmKundenblatt.vb | 31 +- .../usrcntlKundeBearbeitenFull.Designer.vb | 115 +++--- SDL/kunden/usrcntlKundeBearbeitenFull.vb | 10 +- SDL/mdm/frmMDMDatenverarbetiung.Designer.vb | 48 +-- SDL/mdm/frmMDMDatenverarbetiung.vb | 96 +++-- ...erarbeitungAuswertungen_divers.Designer.vb | 38 +- ...MDMDatenverarbeitungAuswertungen_divers.vb | 91 +++-- SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb | 88 ++++- SDL/zoll/usrCntlZOLLAuswertungen.vb | 19 +- VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb | 3 +- .../Schnittstellen/MIC/cMIC.vb | 8 + .../Schnittstellen/cSyska_Interface.vb | 2 +- 15 files changed, 744 insertions(+), 190 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index ef1de0e9..a9ff87db 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -432,7 +432,7 @@ Public Class cFiskaltrustClient_chilkat Dim receiptCaseValue As Long - If _receiptCase = "Storno" Then + If _receiptCase = ReceiptCaseIntern.STORNO Then ' Neue Referenz für den Stornobeleg json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) @@ -444,6 +444,7 @@ Public Class cFiskaltrustClient_chilkat Else receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction End If + json.UpdateString("cbUser", VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) ElseIf _receiptCase = ReceiptCaseIntern.WIEDERHOLUNG Then @@ -456,7 +457,7 @@ Public Class cFiskaltrustClient_chilkat receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest ' Kasseneinzahlung (ohne Positionen) / Kassenauszahlung (ohne Positionen) - ElseIf (_receiptCase = ReceiptCaseIntern.EINGANG OrElse _receiptCase = ReceiptCaseIntern.AUSGANG) AndAlso POS.Count = 0 Then + ElseIf (_receiptCase = ReceiptCaseIntern.EINGANG OrElse _receiptCase = ReceiptCaseIntern.AUSGANG) Then kindOfPayment = PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) @@ -482,6 +483,7 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("ftReceiptCase", receiptCaseValue.ToString()) + Dim chargeItems = json.AppendArray("cbChargeItems") If POS.Count > 0 Then @@ -495,7 +497,7 @@ Public Class cFiskaltrustClient_chilkat Dim unitPrice As Double = p.Preis Dim lineAmount As Double = p.Betrag - 'bei Storno negieren (BEI DE nur einen Teil)! + 'bei Storno negieren (BEI DE nur einen Teil)! -> im V1 Beispiel sind beide negativ!!! 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase @@ -535,11 +537,32 @@ Public Class cFiskaltrustClient_chilkat End If + + Dim paidAmount As Double = amount + Dim paidQuantity As Integer = 1 + + 'bei Storno negieren (BEI DE nur einen Teil)! -> im V1 Beispiel sind beide negativ!!! + 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' + 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase + + If PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen Then + + End If + + + + If _receiptCase = ReceiptCaseIntern.STORNO Then + paidAmount = paidAmount * -1 + paidQuantity = paidQuantity * -1 + End If + + + Dim payItems = json.AppendArray("cbPayItems") payItems.AddObjectAt(-1) Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1) - pay.UpdateInt("Quantity", 1) - pay.UpdateNumber("Amount", amount.ToString().Replace(",", ".")) + pay.UpdateInt("Quantity", paidQuantity) + pay.UpdateNumber("Amount", paidAmount) Dim Description As String = "" Select Case kindOfPayment diff --git a/SDL/kunden/Newsletter/frmNewsletter.Designer.vb b/SDL/kunden/Newsletter/frmNewsletter.Designer.vb index 2a94f416..bb53f2a2 100644 --- a/SDL/kunden/Newsletter/frmNewsletter.Designer.vb +++ b/SDL/kunden/Newsletter/frmNewsletter.Designer.vb @@ -53,6 +53,7 @@ Partial Class frmNewsletter Me.EmpfängerName = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.ListBox1 = New System.Windows.Forms.ListBox() Me.Label8 = New System.Windows.Forms.Label() + Me.Button8 = New System.Windows.Forms.Button() CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -290,6 +291,7 @@ Partial Class frmNewsletter Me.MyDatagridview1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Email, Me.EmailCC, Me.EmailBCC, Me.EmpfängerTitel, Me.EmpfängerName}) Me.MyDatagridview1.Location = New System.Drawing.Point(892, 119) Me.MyDatagridview1.Name = "MyDatagridview1" + Me.MyDatagridview1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect Me.MyDatagridview1.Size = New System.Drawing.Size(537, 498) Me.MyDatagridview1.TabIndex = 0 ' @@ -338,6 +340,15 @@ Partial Class frmNewsletter Me.Label8.TabIndex = 24 Me.Label8.Text = "Anhänge:" ' + 'Button8 + ' + Me.Button8.Location = New System.Drawing.Point(1230, 90) + Me.Button8.Name = "Button8" + Me.Button8.Size = New System.Drawing.Size(105, 23) + Me.Button8.TabIndex = 25 + Me.Button8.Text = "aus Clipboard imp." + Me.Button8.UseVisualStyleBackColor = True + ' 'frmNewsletter ' Me.AllowDrop = True @@ -345,6 +356,7 @@ Partial Class frmNewsletter Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White Me.ClientSize = New System.Drawing.Size(1441, 720) + Me.Controls.Add(Me.Button8) Me.Controls.Add(Me.Label8) Me.Controls.Add(Me.ListBox1) Me.Controls.Add(Me.MyTextBox2) @@ -408,4 +420,5 @@ Partial Class frmNewsletter Friend WithEvents EmpfängerName As DataGridViewTextBoxColumn Friend WithEvents ListBox1 As ListBox Friend WithEvents Label8 As Label + Friend WithEvents Button8 As Button End Class diff --git a/SDL/kunden/Newsletter/frmNewsletter.vb b/SDL/kunden/Newsletter/frmNewsletter.vb index b951c360..364e11e8 100644 --- a/SDL/kunden/Newsletter/frmNewsletter.vb +++ b/SDL/kunden/Newsletter/frmNewsletter.vb @@ -14,12 +14,12 @@ Public Class frmNewsletter Try ProgressBar1.Minimum = 0 - ProgressBar1.Maximum = MyDatagridview1.SelectedRows.Count + ProgressBar1.Maximum = MyDataGridView1.SelectedRows.Count ProgressBar1.Value = 0 ProgressBar1.Visible = True ProgressBar1.Style = ProgressBarStyle.Continuous - If MyDatagridview1.SelectedRows.Count = 0 Then + If MyDataGridView1.SelectedRows.Count = 0 Then MsgBox("Bitte mindestens einen Eintrag auswählen.") Exit Sub End If @@ -29,10 +29,10 @@ Public Class frmNewsletter Dim Absender = getAbsender() Dim Subject = getSubject() - If MsgBox("Wirklich " & MyDatagridview1.SelectedRows.Count & " Mails senden?", vbYesNoCancel) = vbYes Then + If MsgBox("Wirklich " & MyDataGridView1.SelectedRows.Count & " Mails senden?", vbYesNoCancel) = vbYes Then VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Absender, Subject, mailText, Absender,, False, "", "", ANHAENGE) - For Each row As DataGridViewRow In MyDatagridview1.SelectedRows + For Each row As DataGridViewRow In MyDataGridView1.SelectedRows Dim mail As String = getValidEmail(If(row.Cells("Email").Value, "").ToString()) Dim mailCC As String = getValidEmail(If(row.Cells("EmailCC").Value, "").ToString()) Dim mailBCC As String = getValidEmail(If(row.Cells("EmailBCC").Value, "").ToString()) @@ -305,18 +305,343 @@ Public Class frmNewsletter End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click - MyDatagridview1.Rows.Clear() + MyDataGridView1.Rows.Clear() End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click - MyDatagridview1.SelectAll() + MyDataGridView1.SelectAll() End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click - MyDatagridview1.ClearSelection() + MyDataGridView1.ClearSelection() + End Sub + + Private Sub MyDatagridview1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyDataGridView1.KeyDown + If e.Control AndAlso e.KeyCode = Keys.C Then + CopyEntireDGV() + e.SuppressKeyPress = True + + ElseIf e.Control AndAlso e.KeyCode = Keys.V Then + PasteIntoDGV() + e.SuppressKeyPress = True + End If + End Sub + Private Sub CopyEntireDGV() + + Dim sb As New Text.StringBuilder() + + 'Headers + For col As Integer = 0 To MyDataGridView1.ColumnCount - 1 + If col > 0 Then sb.Append(vbTab) + + sb.Append(MyDataGridView1.Columns(col).HeaderText) + Next + + sb.AppendLine() + + 'All rows + For row As Integer = 0 To MyDataGridView1.Rows.Count - 1 + + 'Skip the "new row" at the bottom + If MyDataGridView1.Rows(row).IsNewRow Then Continue For + + For col As Integer = 0 To MyDataGridView1.ColumnCount - 1 + + If col > 0 Then sb.Append(vbTab) + + Dim value = MyDataGridView1.Rows(row).Cells(col).Value + + If value IsNot Nothing Then + sb.Append(value.ToString()) + End If + + Next + + sb.AppendLine() + Next + + Clipboard.SetText(sb.ToString()) + + End Sub + + + Private Sub PasteIntoDGV() + If Not Clipboard.ContainsText() Then Return + + Dim text As String = Clipboard.GetText() + + If String.IsNullOrWhiteSpace(text) Then Return + + Dim lines() As String = + text.Split({vbCrLf, vbLf}, StringSplitOptions.RemoveEmptyEntries) + + '========================================================== + ' IMMER bei Zeile 0 beginnen + '========================================================== + + Dim targetRow As Integer = 0 + Dim startCol As Integer = 0 + + + '========================================================== + ' Prüfen auf Pipe-/Markdown-Tabelle + '========================================================== + + Dim isPipeTable As Boolean = False + + If lines.Length >= 2 Then + + If lines(0).Trim().StartsWith("|") Then + isPipeTable = True + End If + + End If + + + '========================================================== + ' PIPE-TABELLE + '========================================================== + + If isPipeTable Then + + For i As Integer = 0 To lines.Length - 1 + + Dim line As String = lines(i).Trim() + + If String.IsNullOrWhiteSpace(line) Then + Continue For + End If + + + '-------------------------------------------------- + ' Header überspringen + '-------------------------------------------------- + + If i = 0 Then + Continue For + End If + + + '-------------------------------------------------- + ' Trennzeile überspringen + '-------------------------------------------------- + + If IsMarkdownSeparator(line) Then + Continue For + End If + + + '-------------------------------------------------- + ' | entfernen + '-------------------------------------------------- + + If line.StartsWith("|") Then + line = line.Substring(1) + End If + + If line.EndsWith("|") Then + line = line.Substring(0, line.Length - 1) + End If + + + '-------------------------------------------------- + ' Spalten zerlegen + '-------------------------------------------------- + + Dim values() As String = + line.Split("|"c) + + + '-------------------------------------------------- + ' Sicherstellen, dass eine beschreibbare Zeile + ' vorhanden ist + '-------------------------------------------------- + + Dim row As DataGridViewRow = + GetWritableRow(targetRow) + + If row Is Nothing Then + Exit For + End If + + + '-------------------------------------------------- + ' Werte schreiben + '-------------------------------------------------- + + For col As Integer = 0 To values.Length - 1 + + Dim targetCol As Integer = + startCol + col + + If targetCol >= MyDataGridView1.ColumnCount Then + Exit For + End If + + + Dim value As String = + values(col).Trim() + + ' \@ aus deinem Clipboard entfernen + value = value.Replace("\@", "@") + + + row.Cells(targetCol).Value = value + + Next + + + targetRow += 1 + + Next + + Return + + End If + + + '========================================================== + ' NORMALES EXCEL / TAB-SEPARATED + '========================================================== + + For Each line As String In lines + + If String.IsNullOrEmpty(line) Then + Continue For + End If + + + Dim values() As String = + line.Split(ControlChars.Tab) + + + Dim row As DataGridViewRow = + GetWritableRow(targetRow) + + If row Is Nothing Then + Exit For + End If + + + For col As Integer = 0 To values.Length - 1 + + Dim targetCol As Integer = + startCol + col + + If targetCol >= MyDataGridView1.ColumnCount Then + Exit For + End If + + + row.Cells(targetCol).Value = + values(col) + + Next + + + targetRow += 1 + + Next + + + End Sub + + Private Function GetWritableRow(rowIndex As Integer) _ + As DataGridViewRow + + '---------------------------------------------------------- + ' Gibt es die Zeile bereits? + '---------------------------------------------------------- + + If rowIndex < MyDataGridView1.Rows.Count Then + + Dim row As DataGridViewRow = + MyDataGridView1.Rows(rowIndex) + + 'Normale Zeile + If Not row.IsNewRow Then + Return row + End If + + End If + + + '---------------------------------------------------------- + ' Neue Zeile hinzufügen + '---------------------------------------------------------- + + If MyDataGridView1.AllowUserToAddRows Then + + Dim newIndex As Integer = + MyDatagridview1.Rows.Add() + + Return MyDatagridview1.Rows(newIndex) + + End If + + + Return Nothing + +End Function + + + + Private Function IsMarkdownSeparator(line As String) As Boolean + + Dim value As String = line.Trim() + + If value.StartsWith("|") Then + value = value.Substring(1) + End If + + If value.EndsWith("|") Then + value = value.Substring(0, value.Length - 1) + End If + + + Dim columns() As String = + value.Split("|"c) + + + For Each column As String In columns + + Dim cell As String = + column.Trim() + + If cell = "" Then + Continue For + End If + + + cell = cell.Replace(":", "").Trim() + + + If cell.Length = 0 Then + Continue For + End If + + + For Each ch As Char In cell + + If ch <> "-" Then + Return False + End If + + Next + + Next + + + Return True + +End Function + + Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click + PasteIntoDGV() + End Sub End Class diff --git a/SDL/kunden/frmKundenblatt.vb b/SDL/kunden/frmKundenblatt.vb index 6fefa980..ae95d5ca 100644 --- a/SDL/kunden/frmKundenblatt.vb +++ b/SDL/kunden/frmKundenblatt.vb @@ -469,23 +469,28 @@ Public Class frmKundenblatt End Sub Private Sub initFIBU() + + txtZinsbelastungTolInTagen.Enabled = False + txtZinsbelastungNew.Enabled = False + + If kdNr > 0 Then + rtbGespreachsbericht.Text = checkNullStr(KUNDE.Gesprächsbericht) + txtFIBUKuerzel.Text = checkNullStr(KUNDE_ERW.kde_BezFIBU) + txtZinsbelastungNew.Text = checkNullStr(KUNDE_ERW.kde_zinssatz) + txtZinsbelastungTolInTagen.Text = checkNullStr(KUNDE_ERW.kde_abwToleranzTage) + + initZNB() + + End If + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("BH_Hauptmenü", Me) = 0 Then - If kdNr > 0 Then - rtbGespreachsbericht.Text = checkNullStr(KUNDE.Gesprächsbericht) - txtFIBUKuerzel.Text = checkNullStr(KUNDE_ERW.kde_BezFIBU) - txtZinsbelastungNew.Text = checkNullStr(KUNDE_ERW.kde_zinssatz) - txtZinsbelastungTolInTagen.Text = checkNullStr(KUNDE_ERW.kde_abwToleranzTage) + txtZinsbelastungTolInTagen.Enabled = True + txtZinsbelastungNew.Enabled = True - initZNB() - - End If - - Else - - setInfo("info", "Sie sind für den Bereich FIBU nicht freigeschaltet.", 3) - tbcntrMain.SelectedIndex = 0 End If + + End Sub Sub initTABLKW(Optional kz As String = "") diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb index 12faa4a8..5fed6893 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb @@ -61,10 +61,8 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboFremdspedition = New System.Windows.Forms.ComboBox() Me.cbxVerzolltBei = New System.Windows.Forms.CheckBox() Me.cbxBesonderheitenNEU = New System.Windows.Forms.CheckBox() - Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() Me.tbcntrAbf = New System.Windows.Forms.TabControl() Me.TabPage4 = New System.Windows.Forms.TabPage() - Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() Me.rtbLKWFreigabeSenden = New System.Windows.Forms.RichTextBox() Me.Label18 = New System.Windows.Forms.Label() Me.TabPage3 = New System.Windows.Forms.TabPage() @@ -78,7 +76,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboAbfVerb_Abfertigungsverbot = New System.Windows.Forms.CheckBox() Me.txtAbfVerb_AbfertigungsverbotSeit = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.tbAufschub = New System.Windows.Forms.TabPage() - Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() Me.TabPage1 = New System.Windows.Forms.TabPage() Me.Label78 = New System.Windows.Forms.Label() Me.cbxAbf_ZollVM = New System.Windows.Forms.CheckBox() @@ -103,7 +100,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.rtbAbf_Besonderheiten = New System.Windows.Forms.RichTextBox() Me.Panel1 = New System.Windows.Forms.Panel() Me.tbFiskal = New System.Windows.Forms.TabPage() - Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() Me.tbVerrechnung = New System.Windows.Forms.TabPage() Me.cbxHR_autoselect = New System.Windows.Forms.CheckBox() Me.cbxPDFMerge = New System.Windows.Forms.CheckBox() @@ -291,6 +287,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.txtUSt_GVAusgestelltAm = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtUSt_GVAngefordertAm = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.tbSonstiges = New System.Windows.Forms.TabPage() + Me.cbxIDSMautberichtNachOrt = New System.Windows.Forms.CheckBox() Me.txtSonst_weitereKdNrWOELFL = New System.Windows.Forms.TextBox() Me.lblIDS_Rabatte = New System.Windows.Forms.Label() Me.PictureBox7 = New System.Windows.Forms.PictureBox() @@ -422,7 +419,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbKontakt = New System.Windows.Forms.TabControl() Me.TabPage10 = New System.Windows.Forms.TabPage() Me.TabPage11 = New System.Windows.Forms.TabPage() - Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() Me.Label50 = New System.Windows.Forms.Label() Me.Label68 = New System.Windows.Forms.Label() Me.pnlNeukunde = New System.Windows.Forms.Panel() @@ -448,6 +444,11 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboFirma = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.cboAuswahl = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.DataGridViewTextBoxColumn2 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() + Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() + Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() + Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() + Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() Me.tbcntrDetails.SuspendLayout() Me.tbAbfertigung.SuspendLayout() Me.tbcntrAbf.SuspendLayout() @@ -642,16 +643,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.cbxBesonderheitenNEU.Text = "Besonderheiten NEU" Me.cbxBesonderheitenNEU.UseVisualStyleBackColor = True ' - 'UsrCntlKundenBesonderheiten1 - ' - Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) - Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" - Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) - Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 - Me.UsrCntlKundenBesonderheiten1.Visible = False - ' 'tbcntrAbf ' Me.tbcntrAbf.Controls.Add(Me.TabPage4) @@ -678,15 +669,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage4.Text = " Aviso / E-Mail Benachrichtigung" Me.TabPage4.UseVisualStyleBackColor = True ' - 'UsrCntlKundenAvisoMailBenachrichtigung1 - ' - Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True - Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 - ' 'rtbLKWFreigabeSenden ' Me.rtbLKWFreigabeSenden.Location = New System.Drawing.Point(485, 33) @@ -855,14 +837,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbAufschub.Text = "Aufschubkonten" Me.tbAufschub.UseVisualStyleBackColor = True ' - 'usrCntlAufschubkonten - ' - Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill - Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) - Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" - Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) - Me.usrCntlAufschubkonten.TabIndex = 0 - ' 'TabPage1 ' Me.TabPage1.Controls.Add(Me.Label78) @@ -1168,15 +1142,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbFiskal.Text = "Fiskal" Me.tbFiskal.UseVisualStyleBackColor = True ' - 'UsrCntlKundeFiskaldaten1 - ' - Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) - Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" - Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) - Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 - ' 'tbVerrechnung ' Me.tbVerrechnung.Controls.Add(Me.cbxHR_autoselect) @@ -4162,6 +4127,7 @@ Partial Class usrcntlKundeBearbeitenFull ' 'tbSonstiges ' + Me.tbSonstiges.Controls.Add(Me.cbxIDSMautberichtNachOrt) Me.tbSonstiges.Controls.Add(Me.txtSonst_weitereKdNrWOELFL) Me.tbSonstiges.Controls.Add(Me.lblIDS_Rabatte) Me.tbSonstiges.Controls.Add(Me.PictureBox7) @@ -4212,6 +4178,16 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbSonstiges.Text = "Sonstiges" Me.tbSonstiges.UseVisualStyleBackColor = True ' + 'cbxIDSMautberichtNachOrt + ' + Me.cbxIDSMautberichtNachOrt.AutoSize = True + Me.cbxIDSMautberichtNachOrt.Location = New System.Drawing.Point(119, 194) + Me.cbxIDSMautberichtNachOrt.Name = "cbxIDSMautberichtNachOrt" + Me.cbxIDSMautberichtNachOrt.Size = New System.Drawing.Size(164, 17) + Me.cbxIDSMautberichtNachOrt.TabIndex = 149 + Me.cbxIDSMautberichtNachOrt.Text = "IDS-Mautbericht AT nach Ort" + Me.cbxIDSMautberichtNachOrt.UseVisualStyleBackColor = True + ' 'txtSonst_weitereKdNrWOELFL ' Me.txtSonst_weitereKdNrWOELFL.Location = New System.Drawing.Point(179, 53) @@ -4597,9 +4573,9 @@ Partial Class usrcntlKundeBearbeitenFull Me.cbxSonst_CsvMautbericht.AutoSize = True Me.cbxSonst_CsvMautbericht.Location = New System.Drawing.Point(428, 141) Me.cbxSonst_CsvMautbericht.Name = "cbxSonst_CsvMautbericht" - Me.cbxSonst_CsvMautbericht.Size = New System.Drawing.Size(82, 17) + Me.cbxSonst_CsvMautbericht.Size = New System.Drawing.Size(106, 17) Me.cbxSonst_CsvMautbericht.TabIndex = 2 - Me.cbxSonst_CsvMautbericht.Text = "Mautbericht" + Me.cbxSonst_CsvMautbericht.Text = "CSV-Mautbericht" Me.cbxSonst_CsvMautbericht.UseVisualStyleBackColor = True ' 'txtSonst_KdNrUTA @@ -5863,14 +5839,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage11.Text = "Spezifisch" Me.TabPage11.UseVisualStyleBackColor = True ' - 'ucKundenKontakte - ' - Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill - Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) - Me.ucKundenKontakte.Name = "ucKundenKontakte" - Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) - Me.ucKundenKontakte.TabIndex = 0 - ' 'Label50 ' Me.Label50.AutoSize = True @@ -6151,6 +6119,50 @@ Partial Class usrcntlKundeBearbeitenFull Me.DataGridViewTextBoxColumn2.HeaderText = "E-Mail" Me.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2" ' + 'ucKundenKontakte + ' + Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill + Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) + Me.ucKundenKontakte.Name = "ucKundenKontakte" + Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) + Me.ucKundenKontakte.TabIndex = 0 + ' + 'UsrCntlKundenBesonderheiten1 + ' + Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) + Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" + Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) + Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 + Me.UsrCntlKundenBesonderheiten1.Visible = False + ' + 'UsrCntlKundenAvisoMailBenachrichtigung1 + ' + Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True + Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 + ' + 'usrCntlAufschubkonten + ' + Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill + Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) + Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" + Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) + Me.usrCntlAufschubkonten.TabIndex = 0 + ' + 'UsrCntlKundeFiskaldaten1 + ' + Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) + Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" + Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) + Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 + ' 'usrcntlKundeBearbeitenFull ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -6661,4 +6673,5 @@ Partial Class usrcntlKundeBearbeitenFull Friend WithEvents cbxSammelrechnung_IM_EX As CheckBox Friend WithEvents cbxPDFMerge As CheckBox Friend WithEvents cbxHR_autoselect As CheckBox + Friend WithEvents cbxIDSMautberichtNachOrt As CheckBox End Class diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.vb index eeb51e8e..23de4ee1 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.vb @@ -402,6 +402,7 @@ Public Class usrcntlKundeBearbeitenFull cbxSonst_CsvMautbericht.Checked = loadValue(ADRESSE.ExportMautberichtCSV, False) cbxSonst_CsvMSE.Checked = loadValue(ADRESSE.MSEExportCSV, False) cbxSonst_CsvUTA.Checked = loadValue(ADRESSE.UTAExportCSV, False) + cbxSonst_CsvUTA.Checked = loadValue(ADRESSE.UTAExportCSV, False) cbxUIDMehrfachverwendung.Checked = KUNDE_ERW.kde_UIDMehrfachverwendung cbxkeineMWSt.Checked = loadValue(KUNDE_ERW.kde_keineMWSt, False) @@ -860,6 +861,7 @@ Public Class usrcntlKundeBearbeitenFull ADRESSE.ExportMautberichtCSV = cbxSonst_CsvMautbericht.Checked ADRESSE.MSEExportCSV = cbxSonst_CsvMSE.Checked ADRESSE.UTAExportCSV = cbxSonst_CsvUTA.Checked + ADRESSE.IDSMautbericht_nachOrt = cbxIDSMautberichtNachOrt.Checked KUNDE_ERW.kde_betreuer = isLeerNothing(cbxBetreuer.Text) @@ -2369,7 +2371,7 @@ Public Class usrcntlKundeBearbeitenFull lblIDS_Rabatte.Text = "IDS-Rabatte/Preise" & IIf(KundeOhneRabatt > 0, " - KUNDE OHNE RABATT", "") - Dim dt_IDS As DataTable = sql.loadDgvBySql("SELECT P.ProductDescription, C.OutletCountry,S.OutletCode, S.OutletName, RW.Rechenwert, Kz, RW.KategorieNr as KatNr FROM [VERAG].[dbo].[tbl_IDS_Rechenwerte] as RW + Dim dt_IDS As DataTable = sql.loadDgvBySql("SELECT P.ProductDescription, C.OutletCountry,S.OutletCode, S.OutletName,S.OutletOrt, RW.Rechenwert, Kz, RW.KategorieNr as KatNr FROM [VERAG].[dbo].[tbl_IDS_Rechenwerte] as RW left join [VERAG].[dbo].[tbl_IDS_Produkte] as P on P.ProductTypeCode = RW.ProductTypeCode left join [VERAG].[dbo].[tbl_IDS_Länder] as C on C.OutletCountryCode = RW.OutletCountryCode left join [VERAG].[dbo].[tbl_IDS_Stationen] as S on S.[OutletCode] = RW.OutletCode and S.OutletCountryCode = RW.OutletCountryCode where CustomerCode is null order by KZ", "FMZOLL") @@ -2387,8 +2389,10 @@ Public Class usrcntlKundeBearbeitenFull .Columns(2).HeaderText = "S-Nr" .Columns(2).Width = 50 .Columns(3).HeaderText = "Station" - .Columns(4).HeaderText = "Rab-/Pr." - .Columns(6).Width = 50 + .Columns(4).HeaderText = "Ort" + .Columns(4).Width = 50 + .Columns(5).HeaderText = "Rab-/Pr." + .Columns(7).Width = 50 .Columns(3).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill End With diff --git a/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb b/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb index daf4027c..e174fa5f 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb @@ -25,6 +25,7 @@ Partial Class frmMDMDatenverarbetiung Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMDMDatenverarbetiung)) Me.pnl = New System.Windows.Forms.Panel() + Me.btnImportdet = New System.Windows.Forms.Button() Me.pb_importOK = New System.Windows.Forms.PictureBox() Me.cbxIDSmitVerag = New System.Windows.Forms.CheckBox() Me.Panel5 = New System.Windows.Forms.Panel() @@ -52,7 +53,7 @@ Partial Class frmMDMDatenverarbetiung Me.pnlAsfinag = New System.Windows.Forms.Panel() Me.bntDatumzuruecksetzen = New System.Windows.Forms.Button() Me.bntDatumsetzen = New System.Windows.Forms.Button() - Me.Panel3 = New System.Windows.Forms.Panel() + Me.pnlMDMDetailberichte = New System.Windows.Forms.Panel() Me.Button6 = New System.Windows.Forms.Button() Me.pnlIDS = New System.Windows.Forms.Panel() Me.Button10 = New System.Windows.Forms.Button() @@ -85,7 +86,6 @@ Partial Class frmMDMDatenverarbetiung Me.Button2 = New System.Windows.Forms.Button() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MyDatagridview1 = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) - Me.btnImportdet = New System.Windows.Forms.Button() Me.pnl.SuspendLayout() CType(Me.pb_importOK, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel5.SuspendLayout() @@ -94,7 +94,7 @@ Partial Class frmMDMDatenverarbetiung Me.FlowLayoutPanel.SuspendLayout() Me.Panel1.SuspendLayout() Me.pnlAsfinag.SuspendLayout() - Me.Panel3.SuspendLayout() + Me.pnlMDMDetailberichte.SuspendLayout() Me.pnlIDS.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pic, System.ComponentModel.ISupportInitialize).BeginInit() @@ -124,6 +124,17 @@ Partial Class frmMDMDatenverarbetiung Me.pnl.Size = New System.Drawing.Size(1163, 100) Me.pnl.TabIndex = 1 ' + 'btnImportdet + ' + Me.btnImportdet.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnImportdet.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnImportdet.Location = New System.Drawing.Point(985, 8) + Me.btnImportdet.Name = "btnImportdet" + Me.btnImportdet.Size = New System.Drawing.Size(166, 23) + Me.btnImportdet.TabIndex = 132 + Me.btnImportdet.Text = "Einarbeitungsdetails" + Me.btnImportdet.UseVisualStyleBackColor = True + ' 'pb_importOK ' Me.pb_importOK.BackgroundImage = Global.SDL.My.Resources.Resources.ok @@ -371,7 +382,7 @@ Partial Class frmMDMDatenverarbetiung 'Panel1 ' Me.Panel1.Controls.Add(Me.pnlAsfinag) - Me.Panel1.Controls.Add(Me.Panel3) + Me.Panel1.Controls.Add(Me.pnlMDMDetailberichte) Me.Panel1.Controls.Add(Me.pnlIDS) Me.Panel1.Controls.Add(Me.lblTTRSum) Me.Panel1.Controls.Add(Me.txtTTRSum) @@ -427,14 +438,14 @@ Partial Class frmMDMDatenverarbetiung Me.bntDatumsetzen.Text = "Abr-datum setzen" Me.bntDatumsetzen.UseVisualStyleBackColor = True ' - 'Panel3 + 'pnlMDMDetailberichte ' - Me.Panel3.BackColor = System.Drawing.Color.White - Me.Panel3.Controls.Add(Me.Button6) - Me.Panel3.Location = New System.Drawing.Point(603, 9) - Me.Panel3.Name = "Panel3" - Me.Panel3.Size = New System.Drawing.Size(313, 139) - Me.Panel3.TabIndex = 48 + Me.pnlMDMDetailberichte.BackColor = System.Drawing.Color.White + Me.pnlMDMDetailberichte.Controls.Add(Me.Button6) + Me.pnlMDMDetailberichte.Location = New System.Drawing.Point(603, 9) + Me.pnlMDMDetailberichte.Name = "pnlMDMDetailberichte" + Me.pnlMDMDetailberichte.Size = New System.Drawing.Size(313, 139) + Me.pnlMDMDetailberichte.TabIndex = 48 ' 'Button6 ' @@ -826,17 +837,6 @@ Partial Class frmMDMDatenverarbetiung Me.MyDatagridview1.Size = New System.Drawing.Size(1163, 547) Me.MyDatagridview1.TabIndex = 0 ' - 'btnImportdet - ' - Me.btnImportdet.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnImportdet.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnImportdet.Location = New System.Drawing.Point(985, 8) - Me.btnImportdet.Name = "btnImportdet" - Me.btnImportdet.Size = New System.Drawing.Size(166, 23) - Me.btnImportdet.TabIndex = 132 - Me.btnImportdet.Text = "Einarbeitungsdetails" - Me.btnImportdet.UseVisualStyleBackColor = True - ' 'frmMDMDatenverarbetiung ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -862,7 +862,7 @@ Partial Class frmMDMDatenverarbetiung Me.Panel1.ResumeLayout(False) Me.Panel1.PerformLayout() Me.pnlAsfinag.ResumeLayout(False) - Me.Panel3.ResumeLayout(False) + Me.pnlMDMDetailberichte.ResumeLayout(False) Me.pnlIDS.ResumeLayout(False) CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.pic, System.ComponentModel.ISupportInitialize).EndInit() @@ -905,7 +905,7 @@ Partial Class frmMDMDatenverarbetiung Friend WithEvents btnKunde As Button Friend WithEvents Button1 As Button Friend WithEvents Button5 As Button - Friend WithEvents Panel3 As Panel + Friend WithEvents pnlMDMDetailberichte As Panel Friend WithEvents PictureBox1 As PictureBox Friend WithEvents pic As PictureBox Friend WithEvents Button6 As Button diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index 919dc00e..61fc1262 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -1239,7 +1239,7 @@ Public Class frmMDMDatenverarbetiung Sub initLieferant(l As String, btn As Button) MyDatagridview1.DataSource = Nothing Me.LIEFERANT = l - Panel3.Controls.Clear() + pnlMDMDetailberichte.Controls.Clear() For Each c As Button In FlowLayoutPanel.Controls If c Is btn Then @@ -1264,12 +1264,12 @@ Public Class frmMDMDatenverarbetiung Case "PLOSE" Panel4.Visible = True Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT) - Panel3.Controls.Add(c) + pnlMDMDetailberichte.Controls.Add(c) c.Dock = DockStyle.Fill Case "UTA" Panel5.Visible = True Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT) - Panel3.Controls.Add(c) + pnlMDMDetailberichte.Controls.Add(c) c.Dock = DockStyle.Fill Case "ASFINAG" cbxASFINAGAbgerechnet.Visible = True @@ -1280,7 +1280,7 @@ Public Class frmMDMDatenverarbetiung Case "IDS" Panel5.Visible = True Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT) - Panel3.Controls.Add(c) + pnlMDMDetailberichte.Controls.Add(c) c.Dock = DockStyle.Fill pnlIDS.Visible = True cbxKopie.Visible = True @@ -1289,7 +1289,7 @@ Public Class frmMDMDatenverarbetiung Case "MSE" Panel5.Visible = True Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT) - Panel3.Controls.Add(c) + pnlMDMDetailberichte.Controls.Add(c) c.Dock = DockStyle.Fill End Select @@ -1686,7 +1686,8 @@ Public Class frmMDMDatenverarbetiung distinct(tblIDSTransactionsNew.KdNrVERAG), tblIDSTransactionsNew.CustomerCode, Adressen.Rechnungsdruck, - isNULL(tblIDSInvoicesNew.daId,0) as InvoiceID + isNULL(tblIDSInvoicesNew.daId,0) as InvoiceID, + isnull(IDSMautbericht_nachOrt,0) as IDSMautbericht_nachOrt FROM tblIDSTransactionsNew INNER JOIN @@ -1737,7 +1738,7 @@ Public Class frmMDMDatenverarbetiung If IDS("Rechnungsdruck") = 2 Then - Dim pathfile = genIDSAttachmentByKdNr(IDS("KdNrVERAG"), IDS("CustomerCode"), dir, datPloseAnhang.Value, art) + Dim pathfile = genIDSAttachmentByKdNr(IDS("KdNrVERAG"), IDS("CustomerCode"), dir, datPloseAnhang.Value, art, IDS("IDSMautbericht_nachOrt")) If Not AddAttachementToRE(pathfile, IDS("KdNrVERAG"), RECHNUNG, "IDS") Then verarbOK = False End If @@ -3126,35 +3127,47 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land End Function - Function genIDSAttachmentByKdNr(KdNr As String, IDSKdNr As String, dir As String, von As Date, art As String) + Function genIDSAttachmentByKdNr(KdNr As String, IDSKdNr As String, dir As String, von As Date, art As String, Gruppierung_nach_Ort As Boolean) Try Dim displayFilter = False Dim sqlstr As String = "" - Dim sqlWhere As String = "" - Dim sqlSelect As String = "" - Dim sqlGroup As String = "" + + Dim sqljoin_nachOrt As String = "" + Dim sqlgroup_nachOrt = "" + Dim sqlselect_nachOrt = "" + If Gruppierung_nach_Ort Then + sqljoin_nachOrt = "INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode and tbl_IDS_Stationen.[OutletCountryCode]=740543" + sqlgroup_nachOrt = ",tbl_IDS_Stationen.OutletOrt" + sqlselect_nachOrt = "tbl_IDS_Stationen.OutletOrt," + End If + Select Case art Case "IDS" 'Offert17 - sqlWhere = " AND tblIDSTransactionsNew.[OutletCountryCode]<>740543" - sqlSelect = " tblIDSTransactionsNew.[OutletCountry]" - sqlGroup = " tblIDSTransactionsNew.[OutletCountry]" + + sqlstr = "SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, + Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag], + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter + FROM((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode ) INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.[OutletCountryCode]<>740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & " + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" + + Case "IDS_AT" 'Offert21 - sqlWhere = " AND tblIDSTransactionsNew.[OutletCountryCode]=740543" - sqlSelect = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry" - sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END" + + sqlstr = " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 And 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry, tbl_IDS_Produkte.ProductDescription," & sqlselect_nachOrt & " tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, + Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag], + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter + FROM tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode " & sqljoin_nachOrt & " INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' And tblIDSTransactionsNew.[OutletCountryCode]=740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & " + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END, tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" & sqlgroup_nachOrt + End Select - sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription,tbl_IDS_Stationen.OutletName, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, - case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, - Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag], - case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter - FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr - WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & " - GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz,tbl_IDS_Stationen.OutletName; - " Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") If dt Is DBNull.Value Then Return "" @@ -3210,11 +3223,15 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "") rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") - Dim Station As String = SQL.isDbnullEmpty(rpt.Fields.Item("OutletName").Value, "") - If Station <> "" Then - Station = " (" & Station & ")" + Dim Station As String = "" + If Gruppierung_nach_Ort Then + Station = SQL.isDbnullEmpty(rpt.Fields.Item("OutletOrt").Value, "") + If Station <> "" Then + Station = " (" & Station & ")" + End If End If + rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "") @@ -4720,6 +4737,27 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land + + Dim IDSfehlendeStationen_AUSTRIA As Integer = 0 + + IDSfehlendeStationen_AUSTRIA = CInt((New SQL).getValueTxtBySql("select COUNT(*) from ( + select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName + from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen) + group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName ) as temp", "FMZOLL")) + + If IDSfehlendeStationen_AUSTRIA >= 1 Then + pruefData_IDS = False + Dim hint As String = "" + ' If IDSfehlendeStationen_AUSTRIA <= 10 Then + ' hint &= SQL.getValueTxtBySql("select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry + 'from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen) + 'group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry ", "FMZOLL") + ' End If + MsgBox("Es befinden sich unter den Transaktionen " & IDSfehlendeStationen_AUSTRIA & " österrreichische Stationen, die nicht in der Tabelle IDS_STATIONEN angelegt wurden " & vbNewLine & "Diese STATIONEN müssen nachgetragen werden, um den AT Mautbericht korrekt zu erstellen (bitte an Administrator wenden)." & IIf(hint <> "", vbNewLine & hint, "")) + End If + + + Dim fehlendeRechnungen As Integer = 0 fehlendeRechnungen = CInt((New SQL).getValueTxtBySql("select count(*) from tblIDSInvoicesNew where DocumentName is null and cast(YearMonthDay as Date) = '" & DateTimePicker2.Text & "'", "FMZOLL")) @@ -4846,7 +4884,7 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land If Not vbYes = MsgBox("Aktuell ist der Testlauf aktiviert, wirklich fortfahren?", vbYesNoCancel) Then Exit Sub End If - If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausgeführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then + If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then If Not checkAbrechnungsdatum(datPloseAnhang.Value) Then Exit Sub diff --git a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb index aaf70db4..d957d703 100644 --- a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb +++ b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb @@ -1,9 +1,9 @@ - _ + Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers Inherits System.Windows.Forms.UserControl 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then @@ -20,9 +20,9 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ + Private Sub InitializeComponent() - Me.Button6 = New System.Windows.Forms.Button() + Me.Button4 = New System.Windows.Forms.Button() Me.Button1 = New System.Windows.Forms.Button() Me.cbxNurEULander = New System.Windows.Forms.CheckBox() Me.Button2 = New System.Windows.Forms.Button() @@ -30,19 +30,19 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers Me.Button3 = New System.Windows.Forms.Button() Me.SuspendLayout() ' - 'Button6 + 'Button4 ' - Me.Button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button6.Image = Global.SDL.My.Resources.Resources.statistik_small - Me.Button6.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button6.Location = New System.Drawing.Point(6, 3) - Me.Button6.Name = "Button6" - Me.Button6.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0) - Me.Button6.Size = New System.Drawing.Size(149, 41) - Me.Button6.TabIndex = 48 - Me.Button6.Text = "Auswertung IT Maut " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "(Konsortium)" - Me.Button6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.Button6.UseVisualStyleBackColor = True + Me.Button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button4.Image = Global.SDL.My.Resources.Resources.statistik_small + Me.Button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button4.Location = New System.Drawing.Point(6, 3) + Me.Button4.Name = "Button4" + Me.Button4.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0) + Me.Button4.Size = New System.Drawing.Size(149, 41) + Me.Button4.TabIndex = 48 + Me.Button4.Text = "Auswertung IT Maut " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "(Konsortium)" + Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Button4.UseVisualStyleBackColor = True ' 'Button1 ' @@ -120,15 +120,15 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers Me.Controls.Add(Me.Button2) Me.Controls.Add(Me.cbxNurEULander) Me.Controls.Add(Me.Button1) - Me.Controls.Add(Me.Button6) + Me.Controls.Add(Me.Button4) Me.Name = "usrCntlMDMDatenverarbeitungAuswertungen_divers" - Me.Size = New System.Drawing.Size(295, 104) + Me.Size = New System.Drawing.Size(295, 114) Me.ResumeLayout(False) Me.PerformLayout() End Sub - Friend WithEvents Button6 As Button + Friend WithEvents Button4 As Button Friend WithEvents Button1 As Button Friend WithEvents cbxNurEULander As CheckBox Friend WithEvents Button2 As Button diff --git a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb index 736f032c..9dc1ee18 100644 --- a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb +++ b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb @@ -27,41 +27,81 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers Sub init() + Button1.Visible = True + Button2.Visible = True + Button3.Visible = True + Button4.Visible = True + + Select Case Lieferant Case "PLOSE" - Button6.Text = "Auswertung IT Maut (Konsortium)" - Button2.Text = "Auswert. Kunden (Konsortium)" - Button1.Text = "Auswertung nach Länder EU Kunden" + + Button1.Text = "nach Länder EU Kunden" + Button1.Image = My.Resources.statistik_small Button1.Visible = False + + Button2.Text = "Kunden (Konsortium)" + Button2.Image = My.Resources.statistik_small + + Button3.Visible = False + + Button4.Text = "IT Maut (Konsortium)" + Button4.Image = My.Resources.statistik_small + cbxConsFakt.Visible = True cbxNurEULander.Visible = True - Case "UTA" + Case "UTA" 'alles excel + + Button4.Text = "fehl. KdNr" + Button4.Image = My.Resources.Excel_logo + + Button2.Text = "fehl. Fakt-warenart" + Button2.Image = My.Resources.Excel_logo + + + + Button1.Text = "fehl Offertenpos." + Button1.Image = My.Resources.Excel_logo + - Button6.Text = "fehlende KdNr" - Button2.Text = "fehlende Fakt.warenart" - Button1.Text = "fehlende Offertenpos." Button3.Text = "Vergleich Bericht" - Button3.Visible = True + Button3.Image = My.Resources.Excel_logo - Case "MSE" - Button6.Text = "Nach Spezifikation" - Button2.Text = "Leistungsnummern" + Case "MSE" 'alles excel + Button1.Text = "Kunden" - Button3.Text = "fehlende Transakt." - Button3.Visible = True + Button1.Image = My.Resources.Excel_logo + + Button2.Text = "Leistung-Nr." + Button2.Image = My.Resources.Excel_logo + + Button3.Text = "fehl. Transakt." + Button3.Image = My.Resources.Excel_logo + + Button4.Text = "Nach Spezifikation" + Button4.Image = My.Resources.Excel_logo + + + + + Case "IDS" 'alles excel - Case "IDS" - Button2.Visible = False - Button6.Visible = True - Button2.Text = "Nach Spezifikation" - Button6.Text = "fehl. Offerten" Button1.Text = "Kunden" + Button1.Image = My.Resources.Excel_logo + + Button2.Text = "fehl. Stationen AT" + Button2.Image = My.Resources.Excel_logo + Button3.Text = "Ländercodes" - Button3.Visible = True + Button3.Image = My.Resources.Excel_logo + + Button4.Text = "fehl. Offerten" + Button4.Image = My.Resources.Excel_logo + Case Else @@ -87,7 +127,7 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers End Function - Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click + Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button4.Click Select Case Lieferant @@ -154,6 +194,9 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers Case "MSE" genMSEBericht("LENR") + Case "IDS" + genIDSBericht("STATIONEN_AT") + End Select @@ -608,6 +651,14 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers ORDER BY tblIDSTransactionsNew.[CustomerCode];" + + Case "STATIONEN_AT" + + sqlstr = "select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName + from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & MAIN.DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen) + group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName " + + Case "OFFERTEN" Dim dtKunden = SQL.loadDgvBySql("Select distinct(tblIDSTransactionsNew.KdNrVERAG) from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & MAIN.DateTimePicker2.Text & "'", "FMZOLL") diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb index 13071916..076cf153 100644 --- a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb +++ b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb @@ -271,6 +271,10 @@ Partial Class usrCntlZOLLAuswertungen Me.Label96 = New System.Windows.Forms.Label() Me.von_CBAM = New System.Windows.Forms.DateTimePicker() Me.pnl = New System.Windows.Forms.Panel() + Me.Label101 = New System.Windows.Forms.Label() + Me.Button2 = New System.Windows.Forms.Button() + Me.Label102 = New System.Windows.Forms.Label() + Me.Label103 = New System.Windows.Forms.Label() Me.GroupBox1.SuspendLayout() Me.grpDurmaz.SuspendLayout() CType(Me.picDurmaz, System.ComponentModel.ISupportInitialize).BeginInit() @@ -1314,7 +1318,7 @@ Partial Class usrCntlZOLLAuswertungen Me.tbcntr.Location = New System.Drawing.Point(0, 57) Me.tbcntr.Name = "tbcntr" Me.tbcntr.SelectedIndex = 0 - Me.tbcntr.Size = New System.Drawing.Size(1109, 1829) + Me.tbcntr.Size = New System.Drawing.Size(1092, 1829) Me.tbcntr.TabIndex = 22 ' 'TabPage1 @@ -1357,7 +1361,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(1101, 1803) + Me.TabPage1.Size = New System.Drawing.Size(1084, 1803) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Bürgschaften" Me.TabPage1.UseVisualStyleBackColor = True @@ -2584,7 +2588,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage3.Location = New System.Drawing.Point(4, 22) Me.TabPage3.Name = "TabPage3" Me.TabPage3.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage3.Size = New System.Drawing.Size(1118, 1803) + Me.TabPage3.Size = New System.Drawing.Size(1101, 1803) Me.TabPage3.TabIndex = 2 Me.TabPage3.Text = "Fiskalvertretung / EV-Veranlagung" Me.TabPage3.UseVisualStyleBackColor = True @@ -2619,7 +2623,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage4.Controls.Add(Me.UsrCntlAuswertungenAufschub_Abgabenliste1) Me.TabPage4.Location = New System.Drawing.Point(4, 22) Me.TabPage4.Name = "TabPage4" - Me.TabPage4.Size = New System.Drawing.Size(1118, 1803) + Me.TabPage4.Size = New System.Drawing.Size(1101, 1803) Me.TabPage4.TabIndex = 3 Me.TabPage4.Text = "Aufschubdaten" Me.TabPage4.UseVisualStyleBackColor = True @@ -2648,7 +2652,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage5.Location = New System.Drawing.Point(4, 22) Me.TabPage5.Name = "TabPage5" Me.TabPage5.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage5.Size = New System.Drawing.Size(1118, 1803) + Me.TabPage5.Size = New System.Drawing.Size(1084, 1803) Me.TabPage5.TabIndex = 4 Me.TabPage5.Text = "UNISPED" Me.TabPage5.UseVisualStyleBackColor = True @@ -2852,6 +2856,10 @@ Partial Class usrCntlZOLLAuswertungen ' 'TabPage6 ' + Me.TabPage6.Controls.Add(Me.Label103) + Me.TabPage6.Controls.Add(Me.Label102) + Me.TabPage6.Controls.Add(Me.Button2) + Me.TabPage6.Controls.Add(Me.Label101) Me.TabPage6.Controls.Add(Me.cbxCBAM_Detaildaten) Me.TabPage6.Controls.Add(Me.Label100) Me.TabPage6.Controls.Add(Me.cbxcbamQuelle) @@ -2863,7 +2871,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage6.Controls.Add(Me.von_CBAM) Me.TabPage6.Location = New System.Drawing.Point(4, 22) Me.TabPage6.Name = "TabPage6" - Me.TabPage6.Size = New System.Drawing.Size(1118, 1803) + Me.TabPage6.Size = New System.Drawing.Size(1084, 1803) Me.TabPage6.TabIndex = 5 Me.TabPage6.Text = "CBAM" Me.TabPage6.UseVisualStyleBackColor = True @@ -2871,7 +2879,7 @@ Partial Class usrCntlZOLLAuswertungen 'cbxCBAM_Detaildaten ' Me.cbxCBAM_Detaildaten.AutoSize = True - Me.cbxCBAM_Detaildaten.Location = New System.Drawing.Point(13, 80) + Me.cbxCBAM_Detaildaten.Location = New System.Drawing.Point(13, 102) Me.cbxCBAM_Detaildaten.Name = "cbxCBAM_Detaildaten" Me.cbxCBAM_Detaildaten.Size = New System.Drawing.Size(126, 17) Me.cbxCBAM_Detaildaten.TabIndex = 29 @@ -2881,7 +2889,7 @@ Partial Class usrCntlZOLLAuswertungen 'Label100 ' Me.Label100.AutoSize = True - Me.Label100.Location = New System.Drawing.Point(10, 37) + Me.Label100.Location = New System.Drawing.Point(10, 59) Me.Label100.Name = "Label100" Me.Label100.Size = New System.Drawing.Size(37, 13) Me.Label100.TabIndex = 28 @@ -2897,7 +2905,7 @@ Partial Class usrCntlZOLLAuswertungen Me.cbxcbamQuelle.DropDownWidth = 100 Me.cbxcbamQuelle.FormattingEnabled = True Me.cbxcbamQuelle.IntegralHeight = False - Me.cbxcbamQuelle.Location = New System.Drawing.Point(13, 53) + Me.cbxcbamQuelle.Location = New System.Drawing.Point(13, 75) Me.cbxcbamQuelle.Name = "cbxcbamQuelle" Me.cbxcbamQuelle.Size = New System.Drawing.Size(85, 21) Me.cbxcbamQuelle.TabIndex = 27 @@ -2905,7 +2913,7 @@ Partial Class usrCntlZOLLAuswertungen 'Label99 ' Me.Label99.AutoSize = True - Me.Label99.Location = New System.Drawing.Point(224, 56) + Me.Label99.Location = New System.Drawing.Point(224, 78) Me.Label99.Name = "Label99" Me.Label99.Size = New System.Drawing.Size(23, 13) Me.Label99.TabIndex = 26 @@ -2914,7 +2922,7 @@ Partial Class usrCntlZOLLAuswertungen 'bis_CBAM ' Me.bis_CBAM.Format = System.Windows.Forms.DateTimePickerFormat.[Short] - Me.bis_CBAM.Location = New System.Drawing.Point(253, 53) + Me.bis_CBAM.Location = New System.Drawing.Point(253, 75) Me.bis_CBAM.Name = "bis_CBAM" Me.bis_CBAM.Size = New System.Drawing.Size(93, 20) Me.bis_CBAM.TabIndex = 25 @@ -2936,7 +2944,7 @@ Partial Class usrCntlZOLLAuswertungen Me.excelCbam.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) Me.excelCbam.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.excelCbam.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.excelCbam.Location = New System.Drawing.Point(13, 103) + Me.excelCbam.Location = New System.Drawing.Point(13, 125) Me.excelCbam.Name = "excelCbam" Me.excelCbam.Padding = New System.Windows.Forms.Padding(0, 0, 25, 0) Me.excelCbam.Size = New System.Drawing.Size(121, 38) @@ -2948,7 +2956,7 @@ Partial Class usrCntlZOLLAuswertungen 'Label96 ' Me.Label96.AutoSize = True - Me.Label96.Location = New System.Drawing.Point(114, 37) + Me.Label96.Location = New System.Drawing.Point(114, 59) Me.Label96.Name = "Label96" Me.Label96.Size = New System.Drawing.Size(38, 13) Me.Label96.TabIndex = 21 @@ -2957,7 +2965,7 @@ Partial Class usrCntlZOLLAuswertungen 'von_CBAM ' Me.von_CBAM.Format = System.Windows.Forms.DateTimePickerFormat.[Short] - Me.von_CBAM.Location = New System.Drawing.Point(117, 53) + Me.von_CBAM.Location = New System.Drawing.Point(117, 75) Me.von_CBAM.Name = "von_CBAM" Me.von_CBAM.Size = New System.Drawing.Size(93, 20) Me.von_CBAM.TabIndex = 20 @@ -2968,9 +2976,53 @@ Partial Class usrCntlZOLLAuswertungen Me.pnl.Dock = System.Windows.Forms.DockStyle.Top Me.pnl.Location = New System.Drawing.Point(0, 0) Me.pnl.Name = "pnl" - Me.pnl.Size = New System.Drawing.Size(1109, 57) + Me.pnl.Size = New System.Drawing.Size(1092, 57) Me.pnl.TabIndex = 23 ' + 'Label101 + ' + Me.Label101.AutoSize = True + Me.Label101.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label101.ForeColor = System.Drawing.SystemColors.ControlDarkDark + Me.Label101.Location = New System.Drawing.Point(10, 176) + Me.Label101.Name = "Label101" + Me.Label101.Size = New System.Drawing.Size(154, 17) + Me.Label101.TabIndex = 30 + Me.Label101.Text = "CBAM Kundenstatus" + ' + 'Button2 + ' + Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button2.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) + Me.Button2.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.Button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button2.Location = New System.Drawing.Point(13, 229) + Me.Button2.Name = "Button2" + Me.Button2.Padding = New System.Windows.Forms.Padding(0, 0, 25, 0) + Me.Button2.Size = New System.Drawing.Size(121, 38) + Me.Button2.TabIndex = 31 + Me.Button2.Text = "Excel" + Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Button2.UseVisualStyleBackColor = True + ' + 'Label102 + ' + Me.Label102.AutoSize = True + Me.Label102.Location = New System.Drawing.Point(10, 200) + Me.Label102.Name = "Label102" + Me.Label102.Size = New System.Drawing.Size(192, 13) + Me.Label102.TabIndex = 32 + Me.Label102.Text = "Kundenliste mit aktuellem CBAM-Status" + ' + 'Label103 + ' + Me.Label103.AutoSize = True + Me.Label103.Location = New System.Drawing.Point(10, 35) + Me.Label103.Name = "Label103" + Me.Label103.Size = New System.Drawing.Size(225, 13) + Me.Label103.TabIndex = 33 + Me.Label103.Text = "Liste der Kunden mit CBAM-pflichtigen Waren " + ' 'usrCntlZOLLAuswertungen ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -2980,7 +3032,7 @@ Partial Class usrCntlZOLLAuswertungen Me.Controls.Add(Me.tbcntr) Me.Controls.Add(Me.pnl) Me.Name = "usrCntlZOLLAuswertungen" - Me.Size = New System.Drawing.Size(1109, 1174) + Me.Size = New System.Drawing.Size(1092, 1174) Me.GroupBox1.ResumeLayout(False) Me.GroupBox1.PerformLayout() Me.grpDurmaz.ResumeLayout(False) @@ -3295,4 +3347,8 @@ Partial Class usrCntlZOLLAuswertungen Friend WithEvents Label96 As Label Friend WithEvents von_CBAM As DateTimePicker Friend WithEvents cbxCBAM_Detaildaten As CheckBox + Friend WithEvents Button2 As Button + Friend WithEvents Label101 As Label + Friend WithEvents Label102 As Label + Friend WithEvents Label103 As Label End Class diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.vb b/SDL/zoll/usrCntlZOLLAuswertungen.vb index f769b24b..52b0fbda 100644 --- a/SDL/zoll/usrCntlZOLLAuswertungen.vb +++ b/SDL/zoll/usrCntlZOLLAuswertungen.vb @@ -1,4 +1,5 @@ -Imports System.IO +Imports System.Data.SqlTypes +Imports System.IO Imports GrapeCity.DataVisualization.Chart Public Class usrCntlZOLLAuswertungen @@ -1218,6 +1219,22 @@ and End Function + Private Sub Button2_Click_2(sender As Object, e As EventArgs) Handles Button2.Click + + Dim sqlString = + "select Adressen.Auswahl as Aktiv,KundenNr, [Name 1] as Name, isnull(Adressen.[E-Mail],'') as Mail, isnull(Adressen.[E-Mail2],'') as Mail2 ,isnull(Anrede,'') as Anrede ,isnull(Ansprechpartner,'') as Ansprechpartner, isnull(Adressen.Telefon,'') as Telefon, kde_CBAM_Status as CBAM_Status from Adressen + inner join Kunden on Kunden.KundenNr = Adressen.AdressenNr + inner join tblKundenErweitert on kde_KundenNr = Adressen.AdressenNr + where isnull(kde_CBAM_Status,'') <> ''" + + Dim dt As DataTable = SQL.loadDgvBySql(SqlString, "FMZOLL", 700) + If dt IsNot Nothing Then + cProgramFunctions.genExcelFromDT_NEW(dt) + End If + + + End Sub + diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb index d3bbb16d..bffc9784 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb @@ -45,8 +45,8 @@ Public Class cAdressen 'Property SSMA_TimeStamp As Object = Nothing Property MWSTVorauszahlung As Object = Nothing Property PLOSEKundenNr As Object = Nothing - Property weitereWölflKundenNr As Object = Nothing + Property IDSMautbericht_nachOrt As Object = Nothing Public hasEntry = False @@ -143,6 +143,7 @@ Public Class cAdressen list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("MWSTVorauszahlung", MWSTVorauszahlung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PLOSEKundenNr", PLOSEKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("weitereWölflKundenNr", weitereWölflKundenNr)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("IDSMautbericht_nachOrt", IDSMautbericht_nachOrt)) Return list End Function diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb index 0d3d0d4a..901b830b 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb @@ -252,5 +252,13 @@ End Function + Public Class Paramter + + Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL + Shared Function GET_PARAM_ByName(tcParam_name, TESTSYSTEM) As String + Return SQL.getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='MIC' AND [Param_name]='" & tcParam_name & "' AND Param_testsystem = " & IIf(TESTSYSTEM, 1, 0), , , SQL.GetNewOpenConnectionFMZOLL_SYSTEM(TESTSYSTEM)) + End Function + End Class + End Class diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb index 8161d527..abae6fa0 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb @@ -242,7 +242,7 @@ Public Class cSyska_Interface If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then If FiBuSchnittstelleNr = 19 Then postfix = "MDM_" Dim fileKD As System.IO.StreamWriter - Dim DateinameKD = "AVISO_DEBI_" & postfix & Now.ToString("ddMMyyyy_HHmm") & ".txt" + Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & postfix & ".txt" fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15")) From dbd49953876be40e5de5234b16493519455c14de Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 22 Sep 2026 08:10:35 +0200 Subject: [PATCH 51/54] fix Sammelrechnung --- SDL/seriendruck/usrCntlFakturierung.vb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index 5851d7d7..2c97dc2b 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -1128,7 +1128,15 @@ Public Class usrcntlFakturierung Return False End If - Dim dtSammelRechnugen_EZB = dtSammelRechnugen.Select("FilialenNr = 8001 and OffertenNr = 95").CopyToDataTable() + Dim dtSammelRechnugen_EZB As DataTable + + Dim rows = dtSammelRechnugen.Select("FilialenNr = 8001 AND OffertenNr = 95") + + If rows.Length > 0 Then + dtSammelRechnugen_EZB = rows.CopyToDataTable() + Else + dtSammelRechnugen_EZB = dtSammelRechnugen.Clone() + End If If dtSammelRechnugen_EZB.Rows.Count = 0 Then MsgBox("Keine Rechnungen der Filiale 8001 für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.") From 251a7a93c27e01305718d58dccb0f29d7e7b6fa4 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 22 Sep 2026 08:23:55 +0200 Subject: [PATCH 52/54] version --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 03280adf..985a4f3e 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From da7dd43a0b9974f9f68f49e08e2510e196a6ae08 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 22 Sep 2026 14:30:11 +0200 Subject: [PATCH 53/54] =?UTF-8?q?div.=20=C3=84nderungen,=20Gesamtsicherhei?= =?UTF-8?q?ten,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usrCntlATLAS_AnkunftsAnzeige.vb | 2 +- .../usrcntlKundeBearbeitenFull.Designer.vb | 115 +++++---- SDL/kunden/usrcntlKundeBearbeitenFull.vb | 223 +++++++++++++++++- .../Classes/cAufschubKonten.vb | 101 ++++++++ VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb | 72 ++++++ VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb | 5 +- 6 files changed, 462 insertions(+), 56 deletions(-) diff --git a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb index cd9d4f34..b6cd762b 100644 --- a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb +++ b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb @@ -352,7 +352,7 @@ Public Class usrCntlATLAS_AnkunftsAnzeige CLOSED_DUMMY.SAVE() - GesSichRef.CalcSaldo() + GesSichRef.CalcSaldo_new() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb index 5fed6893..3b6e3ea6 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb @@ -22,7 +22,6 @@ Partial Class usrcntlKundeBearbeitenFull 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() @@ -61,8 +60,10 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboFremdspedition = New System.Windows.Forms.ComboBox() Me.cbxVerzolltBei = New System.Windows.Forms.CheckBox() Me.cbxBesonderheitenNEU = New System.Windows.Forms.CheckBox() + Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() Me.tbcntrAbf = New System.Windows.Forms.TabControl() Me.TabPage4 = New System.Windows.Forms.TabPage() + Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() Me.rtbLKWFreigabeSenden = New System.Windows.Forms.RichTextBox() Me.Label18 = New System.Windows.Forms.Label() Me.TabPage3 = New System.Windows.Forms.TabPage() @@ -76,6 +77,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboAbfVerb_Abfertigungsverbot = New System.Windows.Forms.CheckBox() Me.txtAbfVerb_AbfertigungsverbotSeit = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.tbAufschub = New System.Windows.Forms.TabPage() + Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() Me.TabPage1 = New System.Windows.Forms.TabPage() Me.Label78 = New System.Windows.Forms.Label() Me.cbxAbf_ZollVM = New System.Windows.Forms.CheckBox() @@ -100,6 +102,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.rtbAbf_Besonderheiten = New System.Windows.Forms.RichTextBox() Me.Panel1 = New System.Windows.Forms.Panel() Me.tbFiskal = New System.Windows.Forms.TabPage() + Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() Me.tbVerrechnung = New System.Windows.Forms.TabPage() Me.cbxHR_autoselect = New System.Windows.Forms.CheckBox() Me.cbxPDFMerge = New System.Windows.Forms.CheckBox() @@ -111,7 +114,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.btnAddKundeUID = New System.Windows.Forms.Button() Me.cboUSt_UstIdNrLand2 = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.txtUSt_UstIdNr2 = New VERAG_PROG_ALLGEMEIN.MyTextBox() - Me.dgvKundenUID = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) + Me.dgvKundenUID = New VERAG_PROG_ALLGEMEIN.MyDatagridview() Me.Label117 = New System.Windows.Forms.Label() Me.Panel2 = New System.Windows.Forms.Panel() Me.Label115 = New System.Windows.Forms.Label() @@ -419,6 +422,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbKontakt = New System.Windows.Forms.TabControl() Me.TabPage10 = New System.Windows.Forms.TabPage() Me.TabPage11 = New System.Windows.Forms.TabPage() + Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() Me.Label50 = New System.Windows.Forms.Label() Me.Label68 = New System.Windows.Forms.Label() Me.pnlNeukunde = New System.Windows.Forms.Panel() @@ -437,18 +441,14 @@ Partial Class usrcntlKundeBearbeitenFull Me.txtERROR = New System.Windows.Forms.TextBox() Me.btnDatevExport = New System.Windows.Forms.Button() Me.Label98 = New System.Windows.Forms.Label() - Me.cnsBankverbindungen = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.cnsBankverbindungen = New System.Windows.Forms.ContextMenuStrip() Me.ArchivierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DokumentHinzufügenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DokumentLöschenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cboFirma = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.cboAuswahl = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.DataGridViewTextBoxColumn2 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() - Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() - Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() - Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() - Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.tbcntrDetails.SuspendLayout() Me.tbAbfertigung.SuspendLayout() Me.tbcntrAbf.SuspendLayout() @@ -498,6 +498,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage11.SuspendLayout() Me.pnlNeukunde.SuspendLayout() Me.cnsBankverbindungen.SuspendLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'tbcntrDetails @@ -643,6 +644,16 @@ Partial Class usrcntlKundeBearbeitenFull Me.cbxBesonderheitenNEU.Text = "Besonderheiten NEU" Me.cbxBesonderheitenNEU.UseVisualStyleBackColor = True ' + 'UsrCntlKundenBesonderheiten1 + ' + Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) + Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" + Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) + Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 + Me.UsrCntlKundenBesonderheiten1.Visible = False + ' 'tbcntrAbf ' Me.tbcntrAbf.Controls.Add(Me.TabPage4) @@ -669,6 +680,15 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage4.Text = " Aviso / E-Mail Benachrichtigung" Me.TabPage4.UseVisualStyleBackColor = True ' + 'UsrCntlKundenAvisoMailBenachrichtigung1 + ' + Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True + Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 + ' 'rtbLKWFreigabeSenden ' Me.rtbLKWFreigabeSenden.Location = New System.Drawing.Point(485, 33) @@ -837,6 +857,14 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbAufschub.Text = "Aufschubkonten" Me.tbAufschub.UseVisualStyleBackColor = True ' + 'usrCntlAufschubkonten + ' + Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill + Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) + Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" + Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) + Me.usrCntlAufschubkonten.TabIndex = 0 + ' 'TabPage1 ' Me.TabPage1.Controls.Add(Me.Label78) @@ -1142,6 +1170,15 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbFiskal.Text = "Fiskal" Me.tbFiskal.UseVisualStyleBackColor = True ' + 'UsrCntlKundeFiskaldaten1 + ' + Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) + Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" + Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) + Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 + ' 'tbVerrechnung ' Me.tbVerrechnung.Controls.Add(Me.cbxHR_autoselect) @@ -4127,6 +4164,7 @@ Partial Class usrcntlKundeBearbeitenFull ' 'tbSonstiges ' + Me.tbSonstiges.Controls.Add(Me.PictureBox1) Me.tbSonstiges.Controls.Add(Me.cbxIDSMautberichtNachOrt) Me.tbSonstiges.Controls.Add(Me.txtSonst_weitereKdNrWOELFL) Me.tbSonstiges.Controls.Add(Me.lblIDS_Rabatte) @@ -5839,6 +5877,14 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage11.Text = "Spezifisch" Me.TabPage11.UseVisualStyleBackColor = True ' + 'ucKundenKontakte + ' + Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill + Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) + Me.ucKundenKontakte.Name = "ucKundenKontakte" + Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) + Me.ucKundenKontakte.TabIndex = 0 + ' 'Label50 ' Me.Label50.AutoSize = True @@ -6119,49 +6165,16 @@ Partial Class usrcntlKundeBearbeitenFull Me.DataGridViewTextBoxColumn2.HeaderText = "E-Mail" Me.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2" ' - 'ucKundenKontakte + 'PictureBox1 ' - Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill - Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) - Me.ucKundenKontakte.Name = "ucKundenKontakte" - Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) - Me.ucKundenKontakte.TabIndex = 0 - ' - 'UsrCntlKundenBesonderheiten1 - ' - Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) - Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" - Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) - Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 - Me.UsrCntlKundenBesonderheiten1.Visible = False - ' - 'UsrCntlKundenAvisoMailBenachrichtigung1 - ' - Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True - Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 - ' - 'usrCntlAufschubkonten - ' - Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill - Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) - Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" - Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) - Me.usrCntlAufschubkonten.TabIndex = 0 - ' - 'UsrCntlKundeFiskaldaten1 - ' - Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) - Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" - Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) - Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 + Me.PictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None + Me.PictureBox1.Image = Global.SDL.My.Resources.Resources.pdf_s + Me.PictureBox1.Location = New System.Drawing.Point(290, 191) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(20, 20) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom + Me.PictureBox1.TabIndex = 150 + Me.PictureBox1.TabStop = False ' 'usrcntlKundeBearbeitenFull ' @@ -6272,6 +6285,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.pnlNeukunde.ResumeLayout(False) Me.pnlNeukunde.PerformLayout() Me.cnsBankverbindungen.ResumeLayout(False) + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -6674,4 +6688,5 @@ Partial Class usrcntlKundeBearbeitenFull Friend WithEvents cbxPDFMerge As CheckBox Friend WithEvents cbxHR_autoselect As CheckBox Friend WithEvents cbxIDSMautberichtNachOrt As CheckBox + Friend WithEvents PictureBox1 As PictureBox End Class diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.vb index 23de4ee1..45bb9998 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.vb @@ -1,4 +1,7 @@ -Imports MDM_Worker +Imports com.sun.xml.internal.rngom +Imports DAKOSY_Worker +Imports MDM_Worker +Imports Tamir.SharpSsh.jsch Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlKundeBearbeitenFull @@ -405,6 +408,7 @@ Public Class usrcntlKundeBearbeitenFull cbxSonst_CsvUTA.Checked = loadValue(ADRESSE.UTAExportCSV, False) cbxUIDMehrfachverwendung.Checked = KUNDE_ERW.kde_UIDMehrfachverwendung cbxkeineMWSt.Checked = loadValue(KUNDE_ERW.kde_keineMWSt, False) + cbxIDSMautberichtNachOrt.Checked = loadValue(ADRESSE.IDSMautbericht_nachOrt, False) ' ----- Provision Dienstleistungen ----- cbxProvDL.Checked = KUNDE_ERW.kde_Provisionsverguetung @@ -2828,8 +2832,8 @@ Public Class usrcntlKundeBearbeitenFull End If Button6.Enabled = True - Else - Button6.Enabled = False + Else + Button6.Enabled = False End If End Sub @@ -2843,7 +2847,7 @@ Public Class usrcntlKundeBearbeitenFull For Each r As DataGridViewRow In dgvKundenUID.SelectedRows Dim UID_KUNDE As New cKundenveranlagungUID(KUNDE.KundenNr, r.Cells("UstIdKz").Value) - UID_KUNDE.DELETE + UID_KUNDE.DELETE() Next initdgvKUNDENUID(KUNDE.KundenNr) @@ -2854,5 +2858,216 @@ Public Class usrcntlKundeBearbeitenFull End If + End Sub + + Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click + Dim ids As New cIDS + Dim gruppierungNachOrt As Boolean = False + If ADRESSE.IDSMautbericht_nachOrt IsNot Nothing AndAlso Not IsDBNull(ADRESSE.IDSMautbericht_nachOrt) Then + gruppierungNachOrt = ADRESSE.IDSMautbericht_nachOrt + End If + + Dim rechnungsdatum = ids.getCurrentInvoicedate(KUNDE.KundenNr) + + If rechnungsdatum <> "" AndAlso IsDate(rechnungsdatum) Then + + Dim f As New frmDatumsabfrage("IDS-Mautbericht Datum ", True) + f.dtp_date.Value = CDate(rechnungsdatum) + f.ShowDialog() + If f.DialogResult = DialogResult.OK Then + + + Dim dt_ids = ids.genIDSMautberichtDatatByKdNr(KUNDE.KundenNr, CDate(rechnungsdatum), "IDS", False) ' + Dim dt_ids_at = ids.genIDSMautberichtDatatByKdNr(KUNDE.KundenNr, CDate(rechnungsdatum), "IDS_AT", gruppierungNachOrt) + + If dt_ids.Rows.Count = 0 AndAlso dt_ids_at.Rows.Count = 0 Then + MsgBox("Zum eingegebenen Datum existieren keine Daten!") + Exit Sub + End If + + + If dt_ids.Rows.Count > 0 Then createBericht(dt_ids, KUNDE.KundenNr, -1, CDate(rechnungsdatum), False) + If dt_ids_at.Rows.Count > 0 Then createBericht(dt_ids_at, KUNDE.KundenNr, -1, CDate(rechnungsdatum), gruppierungNachOrt) + + End If + + Else + + End If + + + + + + + + + End Sub + + Private Sub createBericht(dt As DataTable, kdnr As String, idsKdnr As String, rechnungsdatum As Date, Gruppierung_nach_Ort As Boolean) + Try + + Dim sql As New VERAG_PROG_ALLGEMEIN.SQL + + Dim rpt As New rptIDS_Anhang + + rpt.DataSource = dt + + rpt.txtKunde.Text = kdnr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(kdnr).FullName + + rpt.lblIDSKdNr.Text = idsKdnr + + rpt.lblRgDatum.Text = rechnungsdatum.ToShortDateString + + rpt.GroupHeaderKz.DataField = "OutletCountry" + + rpt.Label4.Text = rechnungsdatum.ToShortDateString + + + Dim curRabattbetragProLiter As Double = 0 + Dim curRabattbetrag As Double = 0 + Dim curGesamtbetrag As Double = 0 + + + Dim sumLiter As Double = 0 + + Dim sumBrutto As Double = 0 + + Dim sumLiterLand As Double = 0 + + Dim sumLiterKat As Double = 0 + + Dim sumBruttoLand As Double = 0 + + Dim sumBruttoKat As Double = 0 + + Dim sumLiterGes As Double = 0 + + Dim sumBruttoGes As Double = 0 + + Dim cntKat = 0 + Dim cnt = 0 + + rpt.GroupFooterKat.Visible = False + + AddHandler rpt.Detail.Format, Sub() + ' If cnt = 0 Then + curRabattbetrag = 0 - sql.isDbnullEmptyDbl(rpt.Fields.Item("SummevonRabattbetrag").Value, 2, "") '=0-[Summe von Rabattbetrag] + curRabattbetragProLiter = 0 - IIf(sql.isDbnullEmpty(rpt.Fields.Item("KZ").Value, "") = "P", sql.isDbnullEmptyDbl(rpt.Fields.Item("RabattbetragProLiter").Value, 4, 0), sql.isDbnullEmptyDbl(rpt.Fields.Item("Rechenwert").Value, 4, 0)) '=0-Wenn([Kz]="P";[RabattbetragProLiter];[Rechenwert]) + curGesamtbetrag = CDbl(sql.isDbnullEmptyDbl(rpt.Fields.Item("Nettobetrag").Value, 2, 0) + curRabattbetrag + sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuerbetrag").Value, 2, 0)) '=[Nettobetrag]+[curRabattbetrag]+[Steuerbetrag] + + rpt.txtKunde.Text = sql.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "") + rpt.txtKunde.Text &= " " & sql.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") + + Dim Station As String = "" + If Gruppierung_nach_Ort Then + Station = sql.isDbnullEmpty(rpt.Fields.Item("OutletOrt").Value, "") + If Station <> "" Then + Station = " (" & Station & ")" + End If + End If + + + rpt.txtProduktBeschreibung.Text = sql.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station + + rpt.txtLiter.Text = sql.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "") + rpt.txtPreis.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "") + rpt.txtBetrag.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Nettobetrag").Value, 2, "") + + rpt.txtRabattPreis.Text = curRabattbetragProLiter + rpt.txtRabattBetrag.Text = curRabattbetrag + + rpt.lblMWST.Text = "zuzüglich MWST " + + 'SPANIEN, POLEN : für alle Produkte gilt eine Reduzierung der MwSt. auf 10 % bzw. 8%, mit Ausnahme von AdBlue (bleibt bei 21 % MwSt.) -> Regelung der MWST-Anzeige erfolgt über IDS-Länder, allerdings wird auf Datenbasis hier kein Unterschied zw. ProductCode gemacht, daher hardcodiert -> weil es nur um Anzeige geht! + + '20.07.2026 -> Änderungen wieder deaktivert! + + 'If (SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") = "Spain" Or SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") = "Poland") And SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") <> "Ad Blue" Then + + ' Select Case SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") + ' Case "Spain" : rpt.lblMWST.Text &= "10 %" + ' Case "Poland" : rpt.lblMWST.Text &= "8 %" + ' End Select + + 'Else + + rpt.lblMWST.Text &= IIf(sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuersatz").Value, 2, "") <> "", sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuersatz").Value, 2, "") * 100 & " %", "") + + 'End If + + rpt.txtMWST.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuerbetrag").Value, 2, "") + + rpt.txtPreisProLiter.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, 0) + curRabattbetragProLiter '=[NettopreisProLiter]+[curRabattbetragProLiter] + + rpt.txtGesamtbetrag.Text = curGesamtbetrag + + sumLiter += sql.isDbnullEmptyDbl(rpt.Fields.Item("Liter").Value, 2, 0) + + sumBrutto += curGesamtbetrag + + cnt += 1 + End Sub + + + + AddHandler rpt.GroupHeaderKz.Format, Sub() + rpt.txtOutletCountry.Text = sql.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") + End Sub + + AddHandler rpt.GroupFooterKz.Format, Sub() + + sumLiterLand += sumLiter + sumBruttoLand += sumBrutto + + + rpt.txtNettoKzSum.Text = sumLiterLand.ToString("N2") + rpt.txtMWSTKzSum.Text = "" + rpt.txtBruttoKzSum.Text = sumBruttoLand.ToString("N2") + cntKat += 1 + + sumLiter = 0 + sumBrutto = 0 + + sumLiterGes += sumLiterLand + sumBruttoGes += sumBruttoLand + + sumLiterLand = 0 + sumBruttoLand = 0 + + rpt.txtOutletCountry.Text = rpt.txtOutletCountry.Text.Replace("Land", sql.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "")) + + End Sub + + + + AddHandler rpt.ReportFooter1.Format, Sub() + + rpt.txtNettoGesSum.Text = sumLiterGes.ToString("N2") + rpt.txtBruttoGesSum.Text = sumBruttoGes.ToString("N2") + + If cntKat <= 1 Then + rpt.GroupFooterKat.Visible = False + End If + End Sub + + + + Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("IDS_ " & kdnr & "_IDS_Mautbericht.pdf", ".pdf", , False) + Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport + rpt.Run(False) + p.Export(rpt.Document, tmpPath) + Process.Start(tmpPath) + rpt.Dispose() + + + + + + Catch ex As System.Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + + End Sub End Class diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb index 33179bdc..9fc84513 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb @@ -245,6 +245,107 @@ Public Class cAufschubKonten Return brgakto_gs_aktSaldo End Function + Public Function CalcSaldo_new(Optional dtDate As DataTable = Nothing, Optional Stichtag As Date? = Nothing, Optional showMessage As Boolean = False) As String + + Dim datumBis As Date = + If(Stichtag.HasValue, Stichtag.Value.Date, Today.Date) + + Dim datumBisSql As String = + datumBis.ToString("yyyy-MM-dd") + + Dim standort As String = + brgakto_gs_standort.Replace("'", "''") + + + Dim saldoSql As String = "DECLARE @Stichtag date = '" & datumBisSql & "'; Declare @Standort varchar(100) = '" & standort & "'; " & "DECLARE @Referenzbetrag decimal(18,2); + /* Referenzbetrag vor dem Stichtag */ +SELECT TOP (1) + @Referenzbetrag = r.brgarefb_refbetrag +FROM [ADMIN].[dbo].[tblBrgAufschubKonten] AS k +INNER JOIN [ADMIN].[dbo].[tblBrgAufschubReferenzberaege] AS r + ON r.brgarefb_gsid = k.brgakto_id +WHERE k.brgakto_gs_standort = @Standort + AND ISNULL(r.brgarefb_gs_aktiv, 1) = 1 + AND r.brgarefb_gueltig_ab < @Stichtag + AND ( + r.brgarefb_gueltig_bis IS NULL + OR r.brgarefb_gueltig_bis >= @Stichtag + ) +ORDER BY + r.brgarefb_gueltig_ab DESC, + r.brgarefb_id DESC; + + +/* Bewegungen vor dem Stichtag */ +SELECT + ISNULL(@Referenzbetrag, 0) + + ISNULL(SUM(Betrag), 0) AS GesamtSicherheitsSaldo +FROM +( + /* Eingänge vor dem Stichtag */ + SELECT + ISNULL(gs.gs_sicherheitsbetrag, 0) * -1 AS Betrag + FROM dbo.tblGesamtsicherheit AS gs + WHERE gs.gs_standort = @Standort + AND gs.gs_datum < @Stichtag + AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0 + + UNION ALL + + /* Ausgänge vor dem Stichtag */ + SELECT + ISNULL(gsp.gsp_sicherheitsbetrag, 0) AS Betrag + FROM dbo.tblGesamtsicherheitsPositionen AS gsp + WHERE gsp.gsp_datum < @Stichtag + AND EXISTS + ( + SELECT 1 + FROM dbo.tblGesamtsicherheit AS gs + WHERE gs.gs_gsId = gsp.gsp_gsId + AND gs.gs_standort = @Standort + AND gs.gs_datum < @Stichtag + AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0 + ) +) AS Bewegungen;" + + + Dim dt As DataTable = + SQL.loadDgvBySql(saldoSql, "AVISO", 100, True) + + Dim saldo As Decimal = 0D + + If dt IsNot Nothing AndAlso + dt.Rows.Count > 0 AndAlso + Not IsDBNull(dt.Rows(0).Item("GesamtSicherheitsSaldo")) Then + + saldo = Convert.ToDecimal( + dt.Rows(0).Item("GesamtSicherheitsSaldo") + ) + End If + + + brgakto_gs_aktSaldo = CDbl(saldo) + + + If showMessage Then + MsgBox( + "Saldo zum Stichtag " & + datumBis.ToShortDateString() & + ":" & vbNewLine & + brgakto_gs_aktSaldo.ToString("N2") + ) + End If + + + If Not Stichtag.HasValue Then + updateSaldo() + End If + + + Return brgakto_gs_aktSaldo.ToString() + + End Function + Public Function getReferenzbetrag(nowDate As Date) As Double Try diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb index 6ddd193d..110d9ea9 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb @@ -3,6 +3,7 @@ Imports System.Data.SqlClient Imports System.IO Imports System.Net Imports System.Reflection +Imports System.Windows.Forms Public Class cIDS @@ -757,6 +758,77 @@ Public Class cIDS End Function + + + Function genIDSMautberichtDatatByKdNr(KdNr As String, rechnungsdatum As Date, art As String, Gruppierung_nach_Ort As Boolean) As DataTable + + + Dim dt As New DataTable + + Dim displayFilter = False + Dim sqlstr As String = "" + + Dim sqljoin_nachOrt As String = "" + Dim sqlgroup_nachOrt = "" + Dim sqlselect_nachOrt = "" + If Gruppierung_nach_Ort Then + sqljoin_nachOrt = "INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode and tbl_IDS_Stationen.[OutletCountryCode]=740543" + sqlgroup_nachOrt = ",tbl_IDS_Stationen.OutletOrt" + sqlselect_nachOrt = "tbl_IDS_Stationen.OutletOrt," + End If + + + Select Case art + Case "IDS" 'Offert17 + + sqlstr = "SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, + Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag], + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter + FROM((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode ) INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' AND tblIDSTransactionsNew.[OutletCountryCode]<>740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & " + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" + + + + Case "IDS_AT" 'Offert21 + + sqlstr = " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 And 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry, tbl_IDS_Produkte.ProductDescription," & sqlselect_nachOrt & " tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, + Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag], + Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter + FROM tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode " & sqljoin_nachOrt & " INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr + Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' And tblIDSTransactionsNew.[OutletCountryCode]=740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & " + GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END, tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" & sqlgroup_nachOrt + + End Select + + + dt = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") + + Return dt + + + + End Function + + Public Function getCurrentInvoicedate(kdNr As String) As String + + Dim datum As String = "" + + If kdNr <> "" AndAlso IsNumeric(kdNr) Then + Dim rechnungsdatum As String = SQL.getValueTxtBySql(" select top(1) cast(tblIDSTransactionsNew.YearMonthDay As Date) from tblIDSTransactionsNew Where tblIDSTransactionsNew.KdNrVERAG = " & kdNr & " order by tblIDSTransactionsNew.YearMonthDay desc", "FMZOLL") + If rechnungsdatum <> "" AndAlso IsDate(rechnungsdatum) Then + datum = rechnungsdatum + End If + End If + + Return datum + + End Function + + + Public Class Paramter Shared apiSettingsloaded As Boolean = False diff --git a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb index 1f43963f..b8892d5c 100644 --- a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb +++ b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb @@ -71,7 +71,10 @@ Public Class frmDatumsabfrage End Sub Private Sub frmDatumsabfrage(sender As Object, e As EventArgs) Handles Me.Load - dtp_date.Value = Now.ToShortDateString + + + + 'dtp_date.Value = Now.ToShortDateString pnlKunde.Visible = panelKunde MyPanel2.Visible = panelLaender From 4439f3e6f74c2d13d69b6d1c96ac4d5769af2b5c Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 22 Sep 2026 14:44:51 +0200 Subject: [PATCH 54/54] Version --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 985a4f3e..0049ddf9 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + +