You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

307 lines
14 KiB

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