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=AppUser;Password=yp/THDd?xM+pZ$;" 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=AppUser;Password=yp/THDd?xM+pZ$;" 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