Update Korrektur QR-Verarbeitung

This commit is contained in:
2022-12-20 23:19:28 +01:00
parent 971afb5716
commit 35df876d21
181 changed files with 20085 additions and 19423 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,115 +1,115 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmZahlung
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'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.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmZahlung))
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.tsbtnquit = New System.Windows.Forms.ToolStripButton()
Me.tsbtnSave = New System.Windows.Forms.ToolStripButton()
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.txtProtokoll = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.ToolStrip1.SuspendLayout()
Me.SuspendLayout()
'
'ToolStrip1
'
Me.ToolStrip1.AllowDrop = True
Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(20, 20)
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsbtnquit, Me.tsbtnSave})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(1267, 27)
Me.ToolStrip1.TabIndex = 16
Me.ToolStrip1.Text = "ToolStrip1"
'
'tsbtnquit
'
Me.tsbtnquit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.tsbtnquit.Image = CType(resources.GetObject("tsbtnquit.Image"), System.Drawing.Image)
Me.tsbtnquit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.tsbtnquit.Name = "tsbtnquit"
Me.tsbtnquit.Size = New System.Drawing.Size(29, 24)
Me.tsbtnquit.Text = "Schliessen"
'
'tsbtnSave
'
Me.tsbtnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.tsbtnSave.Image = CType(resources.GetObject("tsbtnSave.Image"), System.Drawing.Image)
Me.tsbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.tsbtnSave.Name = "tsbtnSave"
Me.tsbtnSave.Size = New System.Drawing.Size(29, 24)
Me.tsbtnSave.Text = "Zahlungsdatei öffnen und verarbeiten"
'
'OpenFileDialog1
'
Me.OpenFileDialog1.FileName = "OpenFileDialog1"
'
'txtProtokoll
'
Me.txtProtokoll.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtProtokoll.Location = New System.Drawing.Point(0, 44)
Me.txtProtokoll.Margin = New System.Windows.Forms.Padding(4)
Me.txtProtokoll.Multiline = True
Me.txtProtokoll.Name = "txtProtokoll"
Me.txtProtokoll.ScrollBars = System.Windows.Forms.ScrollBars.Both
Me.txtProtokoll.Size = New System.Drawing.Size(1267, 616)
Me.txtProtokoll.TabIndex = 17
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Dock = System.Windows.Forms.DockStyle.Top
Me.Label1.Location = New System.Drawing.Point(0, 27)
Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(63, 17)
Me.Label1.TabIndex = 18
Me.Label1.Text = "Protokoll"
'
'frmZahlung
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1267, 660)
Me.Controls.Add(Me.txtProtokoll)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ToolStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Margin = New System.Windows.Forms.Padding(4)
Me.Name = "frmZahlung"
Me.Text = "Zahlungen verarbeiten"
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents ToolStrip1 As ToolStrip
Friend WithEvents tsbtnquit As ToolStripButton
Friend WithEvents tsbtnSave As ToolStripButton
Friend WithEvents OpenFileDialog1 As OpenFileDialog
Friend WithEvents txtProtokoll As TextBox
Friend WithEvents Label1 As Label
End Class
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmZahlung
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'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.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmZahlung))
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.tsbtnquit = New System.Windows.Forms.ToolStripButton()
Me.tsbtnSave = New System.Windows.Forms.ToolStripButton()
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.txtProtokoll = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.ToolStrip1.SuspendLayout()
Me.SuspendLayout()
'
'ToolStrip1
'
Me.ToolStrip1.AllowDrop = True
Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(20, 20)
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsbtnquit, Me.tsbtnSave})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(1267, 27)
Me.ToolStrip1.TabIndex = 16
Me.ToolStrip1.Text = "ToolStrip1"
'
'tsbtnquit
'
Me.tsbtnquit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.tsbtnquit.Image = CType(resources.GetObject("tsbtnquit.Image"), System.Drawing.Image)
Me.tsbtnquit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.tsbtnquit.Name = "tsbtnquit"
Me.tsbtnquit.Size = New System.Drawing.Size(29, 24)
Me.tsbtnquit.Text = "Schliessen"
'
'tsbtnSave
'
Me.tsbtnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.tsbtnSave.Image = CType(resources.GetObject("tsbtnSave.Image"), System.Drawing.Image)
Me.tsbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.tsbtnSave.Name = "tsbtnSave"
Me.tsbtnSave.Size = New System.Drawing.Size(29, 24)
Me.tsbtnSave.Text = "Zahlungsdatei öffnen und verarbeiten"
'
'OpenFileDialog1
'
Me.OpenFileDialog1.FileName = "OpenFileDialog1"
'
'txtProtokoll
'
Me.txtProtokoll.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtProtokoll.Location = New System.Drawing.Point(0, 44)
Me.txtProtokoll.Margin = New System.Windows.Forms.Padding(4)
Me.txtProtokoll.Multiline = True
Me.txtProtokoll.Name = "txtProtokoll"
Me.txtProtokoll.ScrollBars = System.Windows.Forms.ScrollBars.Both
Me.txtProtokoll.Size = New System.Drawing.Size(1267, 616)
Me.txtProtokoll.TabIndex = 17
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Dock = System.Windows.Forms.DockStyle.Top
Me.Label1.Location = New System.Drawing.Point(0, 27)
Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(63, 17)
Me.Label1.TabIndex = 18
Me.Label1.Text = "Protokoll"
'
'frmZahlung
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1267, 660)
Me.Controls.Add(Me.txtProtokoll)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ToolStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Margin = New System.Windows.Forms.Padding(4)
Me.Name = "frmZahlung"
Me.Text = "Zahlungen verarbeiten"
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents ToolStrip1 As ToolStrip
Friend WithEvents tsbtnquit As ToolStripButton
Friend WithEvents tsbtnSave As ToolStripButton
Friend WithEvents OpenFileDialog1 As OpenFileDialog
Friend WithEvents txtProtokoll As TextBox
Friend WithEvents Label1 As Label
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -1,307 +1,307 @@
Imports System.IO
Imports System.IO.Compression
Public Class frmZahlung
Dim fname As String
Dim lw As String
Dim f As String
Dim s1 As String
Dim i As Integer
Dim ii As Integer
Dim jetzt As Double
Dim az As Integer
Dim xx As Double
Dim su As Integer, su1 As Integer, su2 As Integer, su3 As Integer
Dim nrkonto As String
Dim fehler As Integer = 0
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
Private Sub tsbtnquit_Click(sender As Object, e As EventArgs) Handles tsbtnquit.Click
Me.Close()
End Sub
Public Sub Insert_Protokoll(ByVal IText As String)
'If Me.txtProtokoll.Text <> "" Then Me.txtProtokoll.Text = Me.txtProtokoll.Text + vbCrLf
Me.txtProtokoll.Text = IText + vbCrLf + Me.txtProtokoll.Text
Application.DoEvents()
End Sub
Private Sub tsbtnSave_Click(sender As Object, e As EventArgs) Handles tsbtnSave.Click
'Dim ds As New DataSet
'ds.ReadXml("H:\DPM\dmp1\dmp2\08092021_sik\2021-08-30_ZE1_CH700022722726822201U_CHF_US9B4SAMKEGGCYJA.xml")
fehler = 0
Me.txtProtokoll.Text = ""
Me.OpenFileDialog1.Filter = "ZIP/V11-Dateien|*.ZIP;*.V11|ZIP-Dateien|*.zip|Zahlungsdateien (XML-Dateien|*.xml|*.v11|*.v11|Alle Dateien|*.*"
Me.OpenFileDialog1.FileName = ""
Me.OpenFileDialog1.FilterIndex = 0
Insert_Protokoll("Zahlungsdatei:" + Me.OpenFileDialog1.FileName)
If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim checkdb As New clsDB
Dim fi As New FileInfo(OpenFileDialog1.FileName)
checkdb.Get_Tabledata("CMTFile", "", "Select * from CAMT_Run where sourcefilename='" + fi.Name + "'")
If checkdb.dsDaten.Tables(0).Rows.Count > 0 Then
If MsgBox("Die ausgewählte Zahlungsdatei wurde bereits verarbeitet. Möchten Sie die Verarbeitung wiederholen?", vbYesNo + vbQuestion) = vbNo Then
Insert_Protokoll("Zahlungsverarbeitung abgebrochen.")
Exit Sub
End If
End If
Dim s As String = System.IO.Path.GetExtension(OpenFileDialog1.FileName)
s = UCase(s)
Select Case s
Case ".XML"
Try
Dim camt54 As New clscamt054
Dim i As Integer = 0
i = camt54.CheckFiles(OpenFileDialog1.FileName)
camt54.Init_Datatable()
If i > 1 Then
If MsgBox("Alle Dateine im Verzeichnis verarbeiten?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then
camt54.Insert_Camt_Run(OpenFileDialog1.FileName)
camt54.Alles_XML_Dateien(OpenFileDialog1.FileName)
Else
camt54.Insert_Camt_Run(OpenFileDialog1.FileName)
camt54.Init_Datatable()
camt54.Einzelne_XML_Datei(OpenFileDialog1.FileName)
End If
End If
If camt54.fehler <> 0 Then
MsgBox("Bei der Dateiverarbeitung ist ein Fehler aufgetretetn. Verarbeitung wird abgebrochen:")
Exit Sub
End If
Insert_Protokoll("Start Zahlungen verbudhen")
camt54.fehler = 0
camt54.Daten_Verbuchen()
If camt54.fehler <> 0 Then
MsgBox("Bei der Zahlungsverarbeitung sind Fehler aufgetreten. Bitte Protokoll prüfen.")
End If
Dim f As New frmAuswertung
f.MdiParent = Me.MdiParent
f.Show()
f.Show_CAMT_Journal()
Catch ex As Exception
MsgBox("Beim auslesen der XML-Daten ist ein Fehler aufgetreten:" + ex.Message)
Insert_Protokoll(ex.Message)
Exit Sub
End Try
Case ".ZIP"
Try
Dim camt54 As New clscamt054
camt54.Init_Datatable()
camt54.ZIP_Verarbeitung(OpenFileDialog1.FileName)
'Insert_Protokoll("Start Zahlungen verbudhen")
If camt54.fehler <> 0 Then
MsgBox("Bei der Dateiverarbeitung ist ein Fehler aufgetretetn. Verarbeitung wird abgebrochen:", vbExclamation)
Exit Sub
End If
Insert_Protokoll("Start Zahlungen verbuchen")
camt54.fehler = 0
camt54.Daten_Verbuchen()
If camt54.fehler <> 0 Then
MsgBox("Bei der Zahlungsverarbeitung sind Fehler aufgetreten. Bitte Protokoll prüfen.", vbExclamation)
End If
Dim f As New frmAuswertung
f.MdiParent = Me.MdiParent
f.Show()
f.Show_CAMT_Journal()
Catch ex As Exception
MsgBox("Bei der Verarbeitung ist ein Fehler aufgetreten." + ex.Message)
Insert_Protokoll(ex.Message)
Exit Sub
End Try
Case ".V11"
Zahlungen_Verarbeiten(OpenFileDialog1.FileName)
Case Else
End Select
MsgBox("Zahlungsverarbeitung ist abgeschlossen.", vbInformation)
Insert_Protokoll("Zahlungsverarbeitung abgeschlossen.")
End If
End Sub
Private Sub frmZahlung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Sub Zahlungen_Verarbeiten(ByVal fn As String)
Dim db As New clsDB
su = 0
su1 = 0
su2 = 0
su3 = 0
Dim b1 As Decimal
Dim b2 As Decimal
Dim s As String
Dim besrt As New DataTable
db.Get_Tabledata("Besrt", "where datum = getdate()")
Dim dr As DataRow
dr = db.dsDaten.Tables(0).NewRow
FileOpen(1, fn, OpenMode.Input)
While Not EOF(1)
Input(1, s)
'Total-Datensatz
If s.Substring(0, 3) = "999" Or s.Substring(0, 3) = "995" Then
dr.Item("Datum") = "20" + s.Substring(63, 2) + "-" + s.Substring(65, 2) + "-" + s.Substring(67, 2)
dr.Item("Transaktion") = s.Substring(0, 3)
dr.Item("svbnummer") = s.Substring(3, 9)
dr.Item("sortierung") = s.Substring(11, 27)
b1 = s.Substring(39, 12)
b1 = b1 / 100
dr.Item("Betrag") = b1
dr.Item("AnzahlTransaktionen") = s.Substring(58, 5)
dr.Item("Erstellungsdatum") = dr.Item("Datum")
b2 = s.Substring(69, 9) / 100
dr.Item("Taxen_PTT") = b2
b2 = s.Substring(78, 9) / 100
dr.Item("Taxen_Manuell") = b2
dr.Item("Reserve") = ""
dr.Item("Erstellt_am") = Now
dr.Item("Mutiert_am") = Now
dr.Item("Mutierer") = Globals.ActUser
dr.Item("Aktiv") = True
db.dsDaten.Tables(0).Rows.Add(dr)
db.Update_Data()
End If
End While
FileClose(1)
Insert_Protokoll("Anzahl Transaktionen: " + dr.Item("AnzahlTransaktionen").ToString)
Insert_Protokoll("Total-Betrag: " + dr.Item("Betrag").ToString)
db.Get_Tabledata("Besrt", "", "Select top 1 eintragnr from besrt order by eintragnr desc")
Dim besrtnr As Integer = db.dsDaten.Tables(0).Rows(0).Item(0)
db.Get_Tabledata("besri", "where datum = getdate()")
FileOpen(1, fn, OpenMode.Input)
While Not EOF(1)
Input(1, s)
If s.Substring(0, 3) <> "999" And s.Substring(0, 3) <> "995" Then
dr = db.dsDaten.Tables(0).NewRow
dr.Item("Datum") = "20" + s.Substring(59, 2) + "-" + s.Substring(61, 2) + "-" + s.Substring(63, 2)
dr.Item("Transaktion") = s.Substring(0, 3)
dr.Item("svbnr") = s.Substring(3, 9)
dr.Item("Referenz") = s.Substring(12, 27)
b1 = s.Substring(39, 10)
b1 = b1 / 100
dr.Item("Betrag") = b1
dr.Item("Aufgabereferenz") = s.Substring(49, 9)
dr.Item("Datumaufgabe") = "20" + s.Substring(59, 2) + "-" + s.Substring(61, 2) + "-" + s.Substring(63, 2)
dr.Item("Datumverarbeitung") = "20" + s.Substring(65, 2) + "-" + s.Substring(67, 2) + "-" + s.Substring(69, 2)
dr.Item("Datumgutschrift") = "20" + s.Substring(71, 2) + "-" + s.Substring(73, 2) + "-" + s.Substring(75, 2)
dr.Item("recherche") = s.Substring(77, 9)
dr.Item("rejectcode") = s.Substring(86, 1)
dr.Item("reserve") = s.Substring(87, 9)
b1 = s.Substring(96, 4) / 100
dr.Item("Taxen_PTT") = b1
dr.Item("Verbucht") = Verbuchen(dr)
dr.Item("ERSTELLT_AM") = Now
dr.Item("MUTIERT_AM") = Now
dr.Item("AKTIV") = True
dr.Item("MUTIERER") = Globals.ActUser
dr.Item("BESRTNR") = besrtnr
db.dsDaten.Tables(0).Rows.Add(dr)
End If
End While
db.Update_Data()
FileClose(1)
If fehler > 0 Then
MsgBox("Achtung, in der Zahlungsverarbeitung gab es Fehler.", vbExclamation)
End If
End Sub
Private Function Verbuchen(ByRef dr As DataRow) As Boolean
Dim db1 As New clsDB
Dim fakturanr As String
fakturanr = dr.Item("Referenz").Substring(6, 10)
If fakturanr.Substring(4, 1) = "9" Then
'Anzahlung_Verbuchen'
Else
db1.Get_Tabledata("RG", "", "Select * from faktura where nrfaktura='" + fakturanr + "' and aktiv=1 and status=0")
If db1.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Keine Rechnung mit der Nummer: " + fakturanr + " vorhanden.")
fehler = fehler + 1
Return False
Exit Function
End If
If db1.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Rechnung mit der Nummer: " + fakturanr + " wurde bereits storniert.")
fehler = fehler = fehler + 1
Return False
Exit Function
End If
Dim db2 As New clsDB
db2.Get_Tabledata("Zahlung", "", "Select * from zahlung where nrfaktura='" + fakturanr + "' and status<>9 and aktiv=1")
If db2.dsDaten.Tables(0).Rows.Count > 0 Then
Insert_Protokoll("Zahlung wurde bereits verbucht: " + fakturanr + " - " + db1.dsDaten.Tables(0).Rows(0).Item("patientzeile"))
fehler = fehler + 1
Return False
Exit Function
End If
Dim db3 As New clsDB
db3.Get_Tabledata("Debitor", "", "Select * from Debitor where nrfaktura='" + fakturanr + "' and aktiv=1 ")
If db3.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Für die Zahlung ist kein Debitor vorhanden: " + fakturanr)
fehler = fehler + 1
Return False
Exit Function
End If
'Debitor buchen
If db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = 0 Then
db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0
db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now
Else
db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0
db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now
End If
db1.Update_Data()
db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = db3.dsDaten.Tables(0).Rows(0).Item("Betrag") - dr.Item("Betrag")
db3.Update_Data()
Dim db4 As New clsDB
Dim dr1 As DataRow
dr1 = db2.dsDaten.Tables(0).NewRow
dr1.Item("nrzahlung") = db4.Get_DBKey("Zahlung")
dr1.Item("nrfaktura") = fakturanr
dr1.Item("betrag") = dr.Item("Betrag")
dr1.Item("Vorauszahlung") = False
dr1.Item("nrkonto") = db4.Get_Option(2003)
dr1.Item("Mandant") = Globals.Mandant
dr1.Item("nrdebitor") = db1.dsDaten.Tables(0).Rows(0).Item("nrdebitor")
dr1.Item("valuta") = dr.Item("DatumGutschrift")
dr1.Item("nrbehandlung") = db1.dsDaten.Tables(0).Rows(0).Item("nrbehandlung")
dr1.Item("status") = 0
dr1.Item("Statusdatum") = Now
dr1.Item("erstellt_am") = Now
dr1.Item("mutiert_am") = Now
dr1.Item("mutierer") = Globals.ActUser
dr1.Item("aktiv") = True
db2.dsDaten.Tables(0).Rows.Add(dr1)
db2.Update_Data()
db2.Dispose()
Insert_Protokoll("Zahlung verbucht: " + fakturanr + " / " + dr.Item("Betrag").ToString)
Dim db5 As New clsDB
db5.Insert_ZJournal(fakturanr, dr1.Item("nrdebitor"), db5.Get_Datavalue("Select dbo.get_name(" + dr1.Item("nrdebitor").ToString + ")"), dr1.Item("Betrag"), db5.Get_Datavalue("Select Konto from konto where nrkonto=" + dr1.Item("nrkonto").ToString), "", "")
db5.Dispose()
Return True
End If
End Function
Private Sub evh_Insert_Protokoll_entry(Entry As String) Handles evh.Insert_Protokoll_entry
Insert_Protokoll(Entry)
End Sub
Imports System.IO
Imports System.IO.Compression
Public Class frmZahlung
Dim fname As String
Dim lw As String
Dim f As String
Dim s1 As String
Dim i As Integer
Dim ii As Integer
Dim jetzt As Double
Dim az As Integer
Dim xx As Double
Dim su As Integer, su1 As Integer, su2 As Integer, su3 As Integer
Dim nrkonto As String
Dim fehler As Integer = 0
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
Private Sub tsbtnquit_Click(sender As Object, e As EventArgs) Handles tsbtnquit.Click
Me.Close()
End Sub
Public Sub Insert_Protokoll(ByVal IText As String)
'If Me.txtProtokoll.Text <> "" Then Me.txtProtokoll.Text = Me.txtProtokoll.Text + vbCrLf
Me.txtProtokoll.Text = IText + vbCrLf + Me.txtProtokoll.Text
Application.DoEvents()
End Sub
Private Sub tsbtnSave_Click(sender As Object, e As EventArgs) Handles tsbtnSave.Click
'Dim ds As New DataSet
'ds.ReadXml("H:\DPM\dmp1\dmp2\08092021_sik\2021-08-30_ZE1_CH700022722726822201U_CHF_US9B4SAMKEGGCYJA.xml")
fehler = 0
Me.txtProtokoll.Text = ""
Me.OpenFileDialog1.Filter = "ZIP/V11-Dateien|*.ZIP;*.V11|ZIP-Dateien|*.zip|Zahlungsdateien (XML-Dateien|*.xml|*.v11|*.v11|Alle Dateien|*.*"
Me.OpenFileDialog1.FileName = ""
Me.OpenFileDialog1.FilterIndex = 0
Insert_Protokoll("Zahlungsdatei:" + Me.OpenFileDialog1.FileName)
If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim checkdb As New clsDB
Dim fi As New FileInfo(OpenFileDialog1.FileName)
checkdb.Get_Tabledata("CMTFile", "", "Select * from CAMT_Run where sourcefilename='" + fi.Name + "'")
If checkdb.dsDaten.Tables(0).Rows.Count > 0 Then
If MsgBox("Die ausgewählte Zahlungsdatei wurde bereits verarbeitet. Möchten Sie die Verarbeitung wiederholen?", vbYesNo + vbQuestion) = vbNo Then
Insert_Protokoll("Zahlungsverarbeitung abgebrochen.")
Exit Sub
End If
End If
Dim s As String = System.IO.Path.GetExtension(OpenFileDialog1.FileName)
s = UCase(s)
Select Case s
Case ".XML"
Try
Dim camt54 As New clscamt054
Dim i As Integer = 0
i = camt54.CheckFiles(OpenFileDialog1.FileName)
camt54.Init_Datatable()
If i > 1 Then
If MsgBox("Alle Dateine im Verzeichnis verarbeiten?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then
camt54.Insert_Camt_Run(OpenFileDialog1.FileName)
camt54.Alles_XML_Dateien(OpenFileDialog1.FileName)
Else
camt54.Insert_Camt_Run(OpenFileDialog1.FileName)
camt54.Init_Datatable()
camt54.Einzelne_XML_Datei(OpenFileDialog1.FileName)
End If
End If
If camt54.fehler <> 0 Then
MsgBox("Bei der Dateiverarbeitung ist ein Fehler aufgetretetn. Verarbeitung wird abgebrochen:")
Exit Sub
End If
Insert_Protokoll("Start Zahlungen verbudhen")
camt54.fehler = 0
camt54.Daten_Verbuchen()
If camt54.fehler <> 0 Then
MsgBox("Bei der Zahlungsverarbeitung sind Fehler aufgetreten. Bitte Protokoll prüfen.")
End If
Dim f As New frmAuswertung
f.MdiParent = Me.MdiParent
f.Show()
f.Show_CAMT_Journal()
Catch ex As Exception
MsgBox("Beim auslesen der XML-Daten ist ein Fehler aufgetreten:" + ex.Message)
Insert_Protokoll(ex.Message)
Exit Sub
End Try
Case ".ZIP"
Try
Dim camt54 As New clscamt054
camt54.Init_Datatable()
camt54.ZIP_Verarbeitung(OpenFileDialog1.FileName)
'Insert_Protokoll("Start Zahlungen verbudhen")
If camt54.fehler <> 0 Then
MsgBox("Bei der Dateiverarbeitung ist ein Fehler aufgetretetn. Verarbeitung wird abgebrochen:", vbExclamation)
Exit Sub
End If
Insert_Protokoll("Start Zahlungen verbuchen")
camt54.fehler = 0
camt54.Daten_Verbuchen()
If camt54.fehler <> 0 Then
MsgBox("Bei der Zahlungsverarbeitung sind Fehler aufgetreten. Bitte Protokoll prüfen.", vbExclamation)
End If
Dim f As New frmAuswertung
f.MdiParent = Me.MdiParent
f.Show()
f.Show_CAMT_Journal()
Catch ex As Exception
MsgBox("Bei der Verarbeitung ist ein Fehler aufgetreten." + ex.Message)
Insert_Protokoll(ex.Message)
Exit Sub
End Try
Case ".V11"
Zahlungen_Verarbeiten(OpenFileDialog1.FileName)
Case Else
End Select
MsgBox("Zahlungsverarbeitung ist abgeschlossen.", vbInformation)
Insert_Protokoll("Zahlungsverarbeitung abgeschlossen.")
End If
End Sub
Private Sub frmZahlung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Sub Zahlungen_Verarbeiten(ByVal fn As String)
Dim db As New clsDB
su = 0
su1 = 0
su2 = 0
su3 = 0
Dim b1 As Decimal
Dim b2 As Decimal
Dim s As String
Dim besrt As New DataTable
db.Get_Tabledata("Besrt", "where datum = getdate()")
Dim dr As DataRow
dr = db.dsDaten.Tables(0).NewRow
FileOpen(1, fn, OpenMode.Input)
While Not EOF(1)
Input(1, s)
'Total-Datensatz
If s.Substring(0, 3) = "999" Or s.Substring(0, 3) = "995" Then
dr.Item("Datum") = "20" + s.Substring(63, 2) + "-" + s.Substring(65, 2) + "-" + s.Substring(67, 2)
dr.Item("Transaktion") = s.Substring(0, 3)
dr.Item("svbnummer") = s.Substring(3, 9)
dr.Item("sortierung") = s.Substring(11, 27)
b1 = s.Substring(39, 12)
b1 = b1 / 100
dr.Item("Betrag") = b1
dr.Item("AnzahlTransaktionen") = s.Substring(58, 5)
dr.Item("Erstellungsdatum") = dr.Item("Datum")
b2 = s.Substring(69, 9) / 100
dr.Item("Taxen_PTT") = b2
b2 = s.Substring(78, 9) / 100
dr.Item("Taxen_Manuell") = b2
dr.Item("Reserve") = ""
dr.Item("Erstellt_am") = Now
dr.Item("Mutiert_am") = Now
dr.Item("Mutierer") = Globals.ActUser
dr.Item("Aktiv") = True
db.dsDaten.Tables(0).Rows.Add(dr)
db.Update_Data()
End If
End While
FileClose(1)
Insert_Protokoll("Anzahl Transaktionen: " + dr.Item("AnzahlTransaktionen").ToString)
Insert_Protokoll("Total-Betrag: " + dr.Item("Betrag").ToString)
db.Get_Tabledata("Besrt", "", "Select top 1 eintragnr from besrt order by eintragnr desc")
Dim besrtnr As Integer = db.dsDaten.Tables(0).Rows(0).Item(0)
db.Get_Tabledata("besri", "where datum = getdate()")
FileOpen(1, fn, OpenMode.Input)
While Not EOF(1)
Input(1, s)
If s.Substring(0, 3) <> "999" And s.Substring(0, 3) <> "995" Then
dr = db.dsDaten.Tables(0).NewRow
dr.Item("Datum") = "20" + s.Substring(59, 2) + "-" + s.Substring(61, 2) + "-" + s.Substring(63, 2)
dr.Item("Transaktion") = s.Substring(0, 3)
dr.Item("svbnr") = s.Substring(3, 9)
dr.Item("Referenz") = s.Substring(12, 27)
b1 = s.Substring(39, 10)
b1 = b1 / 100
dr.Item("Betrag") = b1
dr.Item("Aufgabereferenz") = s.Substring(49, 9)
dr.Item("Datumaufgabe") = "20" + s.Substring(59, 2) + "-" + s.Substring(61, 2) + "-" + s.Substring(63, 2)
dr.Item("Datumverarbeitung") = "20" + s.Substring(65, 2) + "-" + s.Substring(67, 2) + "-" + s.Substring(69, 2)
dr.Item("Datumgutschrift") = "20" + s.Substring(71, 2) + "-" + s.Substring(73, 2) + "-" + s.Substring(75, 2)
dr.Item("recherche") = s.Substring(77, 9)
dr.Item("rejectcode") = s.Substring(86, 1)
dr.Item("reserve") = s.Substring(87, 9)
b1 = s.Substring(96, 4) / 100
dr.Item("Taxen_PTT") = b1
dr.Item("Verbucht") = Verbuchen(dr)
dr.Item("ERSTELLT_AM") = Now
dr.Item("MUTIERT_AM") = Now
dr.Item("AKTIV") = True
dr.Item("MUTIERER") = Globals.ActUser
dr.Item("BESRTNR") = besrtnr
db.dsDaten.Tables(0).Rows.Add(dr)
End If
End While
db.Update_Data()
FileClose(1)
If fehler > 0 Then
MsgBox("Achtung, in der Zahlungsverarbeitung gab es Fehler.", vbExclamation)
End If
End Sub
Private Function Verbuchen(ByRef dr As DataRow) As Boolean
Dim db1 As New clsDB
Dim fakturanr As String
fakturanr = dr.Item("Referenz").Substring(6, 10)
If fakturanr.Substring(4, 1) = "9" Then
'Anzahlung_Verbuchen'
Else
db1.Get_Tabledata("RG", "", "Select * from faktura where nrfaktura='" + fakturanr + "' and aktiv=1 and status=0")
If db1.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Keine Rechnung mit der Nummer: " + fakturanr + " vorhanden.")
fehler = fehler + 1
Return False
Exit Function
End If
If db1.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Rechnung mit der Nummer: " + fakturanr + " wurde bereits storniert.")
fehler = fehler = fehler + 1
Return False
Exit Function
End If
Dim db2 As New clsDB
db2.Get_Tabledata("Zahlung", "", "Select * from zahlung where nrfaktura='" + fakturanr + "' and status<>9 and aktiv=1")
If db2.dsDaten.Tables(0).Rows.Count > 0 Then
Insert_Protokoll("Zahlung wurde bereits verbucht: " + fakturanr + " - " + db1.dsDaten.Tables(0).Rows(0).Item("patientzeile"))
fehler = fehler + 1
Return False
Exit Function
End If
Dim db3 As New clsDB
db3.Get_Tabledata("Debitor", "", "Select * from Debitor where nrfaktura='" + fakturanr + "' and aktiv=1 ")
If db3.dsDaten.Tables(0).Rows.Count < 1 Then
Insert_Protokoll("Für die Zahlung ist kein Debitor vorhanden: " + fakturanr)
fehler = fehler + 1
Return False
Exit Function
End If
'Debitor buchen
If db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = 0 Then
db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0
db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now
Else
db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0
db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now
End If
db1.Update_Data()
db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = db3.dsDaten.Tables(0).Rows(0).Item("Betrag") - dr.Item("Betrag")
db3.Update_Data()
Dim db4 As New clsDB
Dim dr1 As DataRow
dr1 = db2.dsDaten.Tables(0).NewRow
dr1.Item("nrzahlung") = db4.Get_DBKey("Zahlung")
dr1.Item("nrfaktura") = fakturanr
dr1.Item("betrag") = dr.Item("Betrag")
dr1.Item("Vorauszahlung") = False
dr1.Item("nrkonto") = db4.Get_Option(2003)
dr1.Item("Mandant") = Globals.Mandant
dr1.Item("nrdebitor") = db1.dsDaten.Tables(0).Rows(0).Item("nrdebitor")
dr1.Item("valuta") = dr.Item("DatumGutschrift")
dr1.Item("nrbehandlung") = db1.dsDaten.Tables(0).Rows(0).Item("nrbehandlung")
dr1.Item("status") = 0
dr1.Item("Statusdatum") = Now
dr1.Item("erstellt_am") = Now
dr1.Item("mutiert_am") = Now
dr1.Item("mutierer") = Globals.ActUser
dr1.Item("aktiv") = True
db2.dsDaten.Tables(0).Rows.Add(dr1)
db2.Update_Data()
db2.Dispose()
Insert_Protokoll("Zahlung verbucht: " + fakturanr + " / " + dr.Item("Betrag").ToString)
Dim db5 As New clsDB
db5.Insert_ZJournal(fakturanr, dr1.Item("nrdebitor"), db5.Get_Datavalue("Select dbo.get_name(" + dr1.Item("nrdebitor").ToString + ")"), dr1.Item("Betrag"), db5.Get_Datavalue("Select Konto from konto where nrkonto=" + dr1.Item("nrkonto").ToString), "", "")
db5.Dispose()
Return True
End If
End Function
Private Sub evh_Insert_Protokoll_entry(Entry As String) Handles evh.Insert_Protokoll_entry
Insert_Protokoll(Entry)
End Sub
End Class