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
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 |