251 lines
16 KiB
VB.net
251 lines
16 KiB
VB.net
Imports System.Data.SqlClient
|
|
|
|
Public Class EZollAufschubEinlesen
|
|
Public Sub initEZOLL(history)
|
|
Dim d As List(Of cEZollData)
|
|
If history Then
|
|
d = loadSqlZOLARIS(Now.AddMonths(-2), Now)
|
|
Else
|
|
d = loadSqlZOLARIS(Now.AddDays(-1), Now)
|
|
End If
|
|
|
|
For Each d1 In d
|
|
setEZollData(d1)
|
|
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.SHOW
|
|
Select Case d1.Abgabenkonto
|
|
Case "3517233", "3026400", "3025365" 'Nur bei eigenen Aufschubkonto (VERAG)
|
|
Dim ABGABEN As New VERAG_PROG_ALLGEMEIN.cAbgaben(d1.CRN, d1.Abgabenart, d1.Betrag)
|
|
If Not ABGABEN.hasEntry Then
|
|
Dim LeistungsNr = ""
|
|
Dim LeistungsBez = ""
|
|
|
|
Dim saveAbgaben = True
|
|
Select Case d1.Abgabenart
|
|
Case "2EU", "2IG", "5EU" ' "2PE",
|
|
LeistungsNr = "20"
|
|
Case "B00" 'EUST
|
|
LeistungsNr = "20"
|
|
ABGABEN.Status = "A" 'AUSGEBUCHT
|
|
Case "5EV" '"5EV"--> EV-KONTO!!
|
|
saveAbgaben = False
|
|
Case "2DU", "5DU", "5ZO", "5ZZ", "A20", "A30", "A35", "A40", "A45", "C00", "C10", "A00"
|
|
LeistungsNr = "76"
|
|
Case Else '1BD,0ML, 0PB, 0PG, 0PS, 1LG, 1ZN, 2AS, 2KO, 2RB, 2SB, 2SI, 2VF, 2VS, 5SI, 5VS, 6AK, 6BE, 6MS, 6SS, 6TS, 6ZW, 9EA, D00,D10,E00
|
|
LeistungsNr = "482"
|
|
LeistungsBez = DAKOSY_Worker.cZOLL_IMPORT.getLeistungsBez(d1.Abgabenart)
|
|
End Select
|
|
If saveAbgaben Then
|
|
|
|
ABGABEN.Belegart = d1.Abgabenart
|
|
ABGABEN.Betrag = CDbl(d1.Betrag)
|
|
ABGABEN.Status = Nothing
|
|
ABGABEN.LeistungsNr = LeistungsNr
|
|
ABGABEN.Bezugsnummer = d1.LRN
|
|
ABGABEN.Registriernummer = d1.CRN
|
|
' ABGABEN.AOFD = A.KennBuchstabenAufschub
|
|
ABGABEN.AKTO = d1.Abgabenkonto
|
|
'ABGABEN.Fälligkeitsdatum = A.Faelligkeit
|
|
' ABGABEN.Mandant = "VERG"
|
|
ABGABEN.Niederlassung = d1.OperatorId
|
|
ABGABEN.Abfertigungsdatum = d1.Datum
|
|
ABGABEN.Übernahmedatum = d1.Datum
|
|
ABGABEN.Eingabedatum = Now.ToShortDateString
|
|
ABGABEN.Sachbearbeiter = "AUTO"
|
|
ABGABEN.LeistungsBez = LeistungsBez
|
|
If If(ABGABEN.Bezugsnummer, "").ToString.Length > 35 Then ABGABEN.Bezugsnummer = ABGABEN.Bezugsnummer.ToString.Substring(0, 35)
|
|
If If(ABGABEN.Registriernummer, "").ToString.Length > 21 Then ABGABEN.Registriernummer = ABGABEN.Registriernummer.ToString.Substring(0, 21)
|
|
|
|
Dim errHInweis = "ATC: " & ABGABEN.Registriernummer & " - BezugsNr: " & ABGABEN.Bezugsnummer
|
|
ABGABEN.SAVE(errHInweis)
|
|
End If
|
|
End If
|
|
End Select
|
|
Next
|
|
'MsgBox("TEST3")
|
|
End Sub
|
|
|
|
|
|
Public Function loadSqlZOLARIS(ByVal datumVon As DateTime, ByVal datumBis As DateTime, Optional where As String = "") As List(Of cEZollData)
|
|
Try
|
|
Dim sql As String =
|
|
" SELECT zsAnmGdsItem.VorgangID AS VorgangID, zsAnmHea.DecDT as Datum, zsAnmGdsItem.AnmID AS AnmeldungsID, ztIMsgGdsItemDutyCalc.Ty AS Abgabenart, " &
|
|
" sum(isnull(ztIMsgGdsItemDutyCalc.Base,0)) AS Berechnungsgrundlage, sum(isnull(ztIMsgGdsItemDutyCalc.Amnt,0)) AS Betrag, " &
|
|
" zsAnmRefs.CRN AS CRN, zsAnmRefs.LRN AS LRN, zsAnmHea.DefPayRef AS Abgabenkonto,vwAnm_First_Rechnung.DRef AS RechnungsNr, zsAnmDHFRefs.InfoText," &
|
|
" zsAnmDHFRefs.AnschreibeNr as Anschreibenummer ,zsAnmGdsItem.OperatorID as OperatorId" &
|
|
" FROM zzAktivitaet" &
|
|
" INNER JOIN ztIMsgGdsItem ON zzAktivitaet.LizenzNr = ztIMsgGdsItem.LizenzNr AND zzAktivitaet.OperatorID = ztIMsgGdsItem.OperatorID " &
|
|
" AND zzAktivitaet.IMsgID = ztIMsgGdsItem.IMsgID " &
|
|
" INNER JOIN ztIMsgGdsItemDutyCalc ON ztIMsgGdsItem.LizenzNr = ztIMsgGdsItemDutyCalc.LizenzNr " &
|
|
" AND ztIMsgGdsItem.OperatorID = ztIMsgGdsItemDutyCalc.OperatorID AND ztIMsgGdsItem.IMsgID = ztIMsgGdsItemDutyCalc.IMsgID " &
|
|
" AND ztIMsgGdsItem.GdsItemID = ztIMsgGdsItemDutyCalc.GdsItemID " &
|
|
" INNER JOIN zsAnmGdsItem ON zzAktivitaet.LizenzNr = zsAnmGdsItem.LizenzNr AND zzAktivitaet.OperatorID = zsAnmGdsItem.OperatorID " &
|
|
" AND zzAktivitaet.VorgangID = zsAnmGdsItem.VorgangID AND zzAktivitaet.AnmID = zsAnmGdsItem.AnmID " &
|
|
" AND ztIMsgGdsItem.ItNr = zsAnmGdsItem.ItNr " &
|
|
" INNER JOIN zsAnmGdsItemDHF ON zsAnmGdsItem.LizenzNr = zsAnmGdsItemDHF.LizenzNr AND zsAnmGdsItem.OperatorID = zsAnmGdsItemDHF.OperatorID " &
|
|
" AND zsAnmGdsItem.VorgangID = zsAnmGdsItemDHF.VorgangID AND zsAnmGdsItem.AnmID = zsAnmGdsItemDHF.AnmID " &
|
|
" AND zsAnmGdsItem.GdsItemID = zsAnmGdsItemDHF.GdsItemID " &
|
|
" INNER JOIN zsAnmHea ON zsAnmGdsItem.LizenzNr = zsAnmHea.LizenzNr AND zsAnmGdsItem.OperatorID = zsAnmHea.OperatorID " &
|
|
" AND zsAnmGdsItem.VorgangID = zsAnmHea.VorgangID AND zsAnmGdsItem.AnmID = zsAnmHea.AnmID " &
|
|
" INNER JOIN zsAnmRefs ON zsAnmGdsItem.LizenzNr = zsAnmRefs.LizenzNr AND zsAnmGdsItem.OperatorID = zsAnmRefs.OperatorID " &
|
|
" AND zsAnmGdsItem.VorgangID = zsAnmRefs.VorgangID AND zsAnmGdsItem.AnmID = zsAnmRefs.AnmID " &
|
|
" INNER JOIN zsAnmDHFRefs ON zsAnmRefs.LizenzNr = zsAnmDHFRefs.LizenzNr AND zsAnmRefs.OperatorID = zsAnmDHFRefs.OperatorID " &
|
|
" AND zsAnmRefs.VorgangID = zsAnmDHFRefs.VorgangID AND zsAnmRefs.AnmID = zsAnmDHFRefs.AnmID " &
|
|
" LEFT OUTER JOIN vwAnm_First_Rechnung ON zsAnmGdsItem.LizenzNr = vwAnm_First_Rechnung.LizenzNr " &
|
|
" AND zsAnmGdsItem.OperatorID = vwAnm_First_Rechnung.OperatorID AND zsAnmGdsItem.VorgangID = vwAnm_First_Rechnung.VorgangID " &
|
|
" AND zsAnmGdsItem.AnmID = vwAnm_First_Rechnung.AnmID And zsAnmGdsItem.GdsItemID = vwAnm_First_Rechnung.GdsItemID " &
|
|
" WHERE (zsAnmDHFRefs.ErledigungsTypID LIKE 'F%') AND (zzAktivitaet.MsgTyp = 'EZ922') " &
|
|
" AND (NOT EXISTS (SELECT * FROM zzAktivitaet b WHERE b.MsgTyp = 'EZ922' AND zzAktivitaet.LizenzNr = b.LizenzNr " &
|
|
" AND zzAktivitaet.OperatorID = b.OperatorID AND zzAktivitaet.VorgangID = b.VorgangID AND zzAktivitaet.AnmID = b.AnmID " &
|
|
" AND zzAktivitaet.AktivitaetID > b.AktivitaetID)) " &
|
|
" AND (NOT (ztIMsgGdsItemDutyCalc.Amnt IS NULL)) " &
|
|
" /*AND (ztIMsgGdsItemDutyCalc.Ty IN ('1BD','0ML','0PB','0PG','0PS','1LG','1ZN','2AS','2DU','2EU','2IG','2KO','2PE','2RB','2SB','2SI','2VF','2VS','5DU','5EU','5SI','5VS','5ZO','5ZZ','6AK','6BE','6MS','6SS','6TS','6ZW','9EA','A20','A30','A35','A40','A45','C00','C10','D00','D10','E00') /*like 'A%'*/)*/ " &
|
|
" AND (zsAnmGdsItem.LizenzNr = 'S01122' ) " &
|
|
" AND (zsAnmHea.DecDT >= convert(datetime, @datumVon,104)) " &
|
|
" AND (zsAnmHea.DecDT < convert(datetime, @datumBis,104)) " &
|
|
" GROUP BY ztIMsgGdsItem.IMsgID, zsAnmGdsItem.LizenzNr, zsAnmGdsItem.OperatorID, zsAnmGdsItem.VorgangID, zsAnmGdsItem.AnmID, " &
|
|
" ztIMsgGdsItemDutyCalc.Ty, zsAnmRefs.CRN, " &
|
|
" zsAnmRefs.LRN, isnull(zsAnmRefs.FRN,''), zsAnmHea.DefPayRef, " &
|
|
" zsAnmHea.DecDT, vwAnm_First_Rechnung.DRef, zsAnmDHFRefs.ErledigungsTypID, zsAnmDHFRefs.InfoText, zzAktivitaet.AnmID, " &
|
|
" zsAnmDHFRefs.AnschreibeNr " &
|
|
" HAVING sum(isnull(ztIMsgGdsItemDutyCalc.Amnt,0)) >0 " &
|
|
" ORDER BY zsAnmGdsItem.LizenzNr, zsAnmGdsItem.OperatorID, zsAnmGdsItem.VorgangID, zsAnmHea.DefPayRef, " &
|
|
" zzAktivitaet.AnmID, ztIMsgGdsItemDutyCalc.Ty "
|
|
' " AND (zsAnmHea.DefPayRef IN (@kto)) " &
|
|
' MsgBox(datumVon.ToShortDateString)
|
|
'OR ztIMsgGdsItemDutyCalc.Ty IN ('2VF', '2PE', '2KO', '2IG')) " &
|
|
Dim daten As New List(Of cEZollData)
|
|
While True 'Endlosschleife; wird verlassen durch Return oder Application.Exit()
|
|
|
|
Dim myTable = New DataTable()
|
|
Using conn As SqlConnection = GetNewOpenConnectionZOLARIS()
|
|
Using cmd As New SqlCommand(sql, conn)
|
|
cmd.Parameters.AddWithValue("@datumVon", datumVon.ToShortDateString)
|
|
cmd.Parameters.AddWithValue("@datumBis", datumBis.ToShortDateString)
|
|
cmd.CommandTimeout = 900000
|
|
Dim dr As SqlDataReader = cmd.ExecuteReader()
|
|
Try
|
|
Dim cnt As Integer = 0
|
|
While dr.Read
|
|
Dim d As New cEZollData
|
|
' MsgBox(dr.Item("Abgabenart"))
|
|
d.VorgangID = dr.Item("VorgangID")
|
|
d.Datum = dr.Item("Datum")
|
|
d.AnmeldungsID = getString(dr.Item("AnmeldungsID"))
|
|
d.Abgabenart = getString(dr.Item("Abgabenart"))
|
|
d.Berechnungsgrundlage = dr.Item("Berechnungsgrundlage")
|
|
d.Betrag = dr.Item("Betrag")
|
|
d.CRN = getString(dr.Item("CRN"))
|
|
d.LRN = getString(dr.Item("LRN"))
|
|
d.Abgabenkonto = getString(dr.Item("Abgabenkonto"))
|
|
d.RechnungsNr = getString(dr.Item("RechnungsNr"))
|
|
d.InfoText = getString(dr.Item("InfoText"))
|
|
d.Anschreibenummer = getString(dr.Item("Anschreibenummer"))
|
|
d.OperatorId = getString(dr.Item("OperatorId"))
|
|
|
|
daten.Add(d)
|
|
End While
|
|
Return daten
|
|
Catch ex As Exception
|
|
writeLog("ERROR", "Fehler beim Laden der DB aus EZOLL: " & ex.Message & ex.StackTrace)
|
|
Finally
|
|
dr.Close()
|
|
End Try
|
|
End Using
|
|
conn.Close()
|
|
End Using
|
|
Return daten
|
|
End While
|
|
Catch ex As Exception
|
|
writeLog("ERROR", "Fehler bei der Verbindung zur DB EZOLL: " & ex.Message & ex.StackTrace)
|
|
End Try
|
|
Return Nothing
|
|
End Function
|
|
|
|
|
|
Public Function setEZollData(ByVal daten As cEZollData) As Boolean
|
|
Dim sql As String = " begin tran" &
|
|
" if exists (select * from tblBrgAufschubDataAT with (updlock,serializable) where Datum = @Datum AND Datum = @Datum AND LRN = @LRN AND Betrag = CAST ( @Betrag AS float)AND AnmeldungsID=@AnmeldungsID) " &
|
|
" begin " &
|
|
" UPDATE tblBrgAufschubDataAT " &
|
|
" SET VorgangID=@VorgangID, Datum=@Datum, AnmeldungsID=@AnmeldungsID, Abgabenart=@Abgabenart, Berechnungsgrundlage=@Berechnungsgrundlage, Betrag=@Betrag, CRN=@CRN, LRN=@LRN, Abgabenkonto=@Abgabenkonto, RechnungsNr=@RechnungsNr,InfoText=@InfoText, Anschreibenummer=@Anschreibenummer, OperatorId=@OperatorId " &
|
|
" WHERE Datum = @Datum AND Datum = @Datum AND LRN = @LRN AND Betrag = @Betrag AND AnmeldungsID=@AnmeldungsID" &
|
|
" End " &
|
|
" Else " &
|
|
" begin " &
|
|
"INSERT INTO tblBrgAufschubDataAT " &
|
|
"(VorgangID, Datum, AnmeldungsID, Abgabenart, Berechnungsgrundlage, Betrag, CRN, LRN, Abgabenkonto, RechnungsNr, InfoText,Anschreibenummer,OperatorId) VALUES " &
|
|
"(@VorgangID, @Datum, @AnmeldungsID, @Abgabenart, @Berechnungsgrundlage, @Betrag, @CRN, @LRN, @Abgabenkonto, @RechnungsNr, @InfoText, @Anschreibenummer,@OperatorId)" &
|
|
" End " &
|
|
" commit tran "
|
|
|
|
Using conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionADMIN ' GetNewOpenConnectionADMIN()
|
|
Using cmd As New SqlCommand(sql, conn)
|
|
|
|
Select Case daten.Abgabenart
|
|
Case "2EU", "2IG", "2PE", "5EU"
|
|
Case Else
|
|
cmd.Parameters.AddWithValue("@VorgangID", daten.VorgangID)
|
|
cmd.Parameters.AddWithValue("@Datum", daten.Datum)
|
|
cmd.Parameters.AddWithValue("@AnmeldungsID", daten.AnmeldungsID)
|
|
cmd.Parameters.AddWithValue("@Abgabenart", daten.Abgabenart)
|
|
cmd.Parameters.AddWithValue("@Berechnungsgrundlage", daten.Berechnungsgrundlage)
|
|
cmd.Parameters.AddWithValue("@Betrag", daten.Betrag)
|
|
cmd.Parameters.AddWithValue("@CRN", daten.CRN)
|
|
cmd.Parameters.AddWithValue("@LRN", daten.LRN)
|
|
cmd.Parameters.AddWithValue("@Abgabenkonto", daten.Abgabenkonto)
|
|
cmd.Parameters.AddWithValue("@RechnungsNr", daten.RechnungsNr)
|
|
cmd.Parameters.AddWithValue("@InfoText", daten.InfoText)
|
|
cmd.Parameters.AddWithValue("@Anschreibenummer", daten.Anschreibenummer)
|
|
cmd.Parameters.AddWithValue("@OperatorId", daten.OperatorId)
|
|
Try
|
|
cmd.ExecuteNonQuery()
|
|
Return True
|
|
Catch ex As SqlException
|
|
writeLog("ERROR", "Fehler beim Einfügen in tblBrgAufschubDataAT: " & ex.Message)
|
|
End Try
|
|
End Select
|
|
End Using
|
|
conn.Close()
|
|
End Using
|
|
Return False
|
|
End Function
|
|
|
|
Public Shared Function GetNewOpenConnectionZOLARIS() As SqlConnection
|
|
Dim cn As New SqlConnection()
|
|
cn.ConnectionString = "Data Source=BUCHHALTUNG\SQLEXPRESS;Initial Catalog=ezoll;Integrated Security=false;User ID=sa;Password=BmWr501956;"
|
|
cn.Open()
|
|
Return cn
|
|
End Function
|
|
Public Shared Function GetNewOpenConnectionADMIN_OLD() As SqlConnection
|
|
Dim cn As New SqlConnection()
|
|
cn.ConnectionString = "Data Source=SQLGUIDE01.verag.ost.dmn;Initial Catalog=ADMIN;Integrated Security=false;User ID=sa;Password=BmWr501956;"
|
|
cn.Open()
|
|
Return cn
|
|
End Function
|
|
Function getString(o As Object) As String
|
|
Try
|
|
Return CStr(o)
|
|
Catch : End Try
|
|
Return ""
|
|
End Function
|
|
End Class
|
|
|
|
Public Class cEZollData
|
|
Property brgAT_id As Integer = -1
|
|
Property VorgangID As String = ""
|
|
Property Datum As Date
|
|
Property AnmeldungsID As String = ""
|
|
Property Abgabenart As String = ""
|
|
Property Berechnungsgrundlage As Double
|
|
Property Betrag As Double
|
|
Property CRN As String = ""
|
|
Property LRN As String = ""
|
|
Property Abgabenkonto As String = ""
|
|
Property RechnungsNr As String = ""
|
|
Property InfoText As String = ""
|
|
Property Anschreibenummer As String = ""
|
|
Property OperatorId As String
|
|
End Class
|
|
|
|
|