Files
ADMIN/initATLASAufschubkonten/EZollAufschubEinlesen.vb
2019-08-08 12:44:50 +02:00

352 lines
19 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 = ""
Select Case d1.Abgabenart
Case "2EU", "2IG", "2PE", "5EU"
LeistungsNr = "20"
Case "5EV", "B00" 'EV-KONTO!!
LeistungsNr = "20"
ABGABEN.Status = "A" 'AUSGEBUCHT
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 = getLeistungsBez(d1.Abgabenart)
End Select
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 Select
Next
'MsgBox("TEST3")
End Sub
Function getLeistungsBez(LeistungsBez)
Select Case LeistungsBez
Case "0ML"
getLeistungsBez = "Altlastenbeitrag"
Case "0PB"
getLeistungsBez = "Punzierungskontrollgeb. Platin"
Case "0PG"
getLeistungsBez = "Punzierungskontrollgebühr Gold"
Case "0PS"
getLeistungsBez = "Punzierungskontrollgeb. Silber"
Case "1BD"
getLeistungsBez = "Bemessungsdatum"
Case "1LG"
getLeistungsBez = "Lagergeld gemäß §104 ZollR-DG"
Case "1ZK"
getLeistungsBez = "Kreditzinsen, Säumniszinsen"
Case "1ZN"
getLeistungsBez = "Nebenansprüche"
Case "2AS"
getLeistungsBez = "Agrarsicherheiten"
Case "2DU"
getLeistungsBez = "Antidumping-Sicherheit"
Case "2EU"
getLeistungsBez = "EUSt-Sicherheit"
Case "2IG"
getLeistungsBez = "Sicherheit EUSt ig. Lieferung"
Case "2KO"
getLeistungsBez = "Sicherheit für Kontingent"
Case "2PE"
getLeistungsBez = "Sicherheit bei Einfuhrwerten"
Case "2RB"
getLeistungsBez = "Sicherheit Bürgerschaft"
Case "2SB"
getLeistungsBez = "Summe der befreiten Sicherheit"
Case "2SI"
getLeistungsBez = "Sicherheit Geldbetragerlag"
Case "2VF"
getLeistungsBez = "Sicherheit bei Verifizierung"
Case "2VS"
getLeistungsBez = "Summe der vorg. Sicherheit"
Case "2ZG"
getLeistungsBez = "Zusatzzoll Geflügel"
Case "2ZZ"
getLeistungsBez = "Zusatzzoll Zucker"
Case "2ZZ"
getLeistungsBez = "Zusatzzoll 2ZZ"
Case "5DU"
getLeistungsBez = "Antidumping-und Ausgleichszoll"
Case "5EU"
getLeistungsBez = "Einfuhrumsatzsteuer"
Case "5EV"
getLeistungsBez = "EUSt gem. §26 Abs. 3Z.2UStG"
Case "5SI"
getLeistungsBez = "Agrarsicherheit"
Case "5VS"
getLeistungsBez = "Verbrauchsteuern"
Case "5ZO"
getLeistungsBez = "Zoll 5ZO"
Case "5ZZ"
getLeistungsBez = "Zusatzzoll 5ZZ"
Case "6AK"
getLeistungsBez = "Alkoholsteuer"
Case "6BE"
getLeistungsBez = "Biersteuer"
Case "6MS"
getLeistungsBez = "Mineralölsteuer"
Case "6SS"
getLeistungsBez = "Schaumweinsteuer"
Case "6TS"
getLeistungsBez = "Tabaksteuer"
Case "6ZW"
getLeistungsBez = "Zwischenerzeugnissteuer"
Case "9EA"
getLeistungsBez = "Summe Gesamtabgaben"
Case "A00"
getLeistungsBez = "Zölle auf gewerbliche Waren"
Case "A00"
getLeistungsBez = "Zollabgaben"
Case "A10"
getLeistungsBez = "Zölle landwirt. Erzeugnisse"
Case "A20"
getLeistungsBez = "Zusatzzölle"
Case "A30"
getLeistungsBez = "endgültige Antidumpingzölle"
Case "A35"
getLeistungsBez = "vorläufige Antidumpingzölle"
Case "A40"
getLeistungsBez = "endgültiger Ausgleichszoll"
Case "A45"
getLeistungsBez = "vorläufiger Ausgleichszoll"
Case "B00"
getLeistungsBez = "Einfuhrumsatzsteuer(EUSt)"
Case "B10"
getLeistungsBez = "Ausgleichszinsen(EUSt)"
Case "C00"
getLeistungsBez = "Ausfuhrabgaben"
Case "C10"
getLeistungsBez = "Ausfuhrabg. landwirt. Erzeug."
Case "D00"
getLeistungsBez = "Verzugszinsen"
Case "D10"
getLeistungsBez = "Ausgleichszinsen"
Case "E00"
getLeistungsBez = "Abgaben anderer Länder"
Case Else
getLeistungsBez = ""
End Select
End Function
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)
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)
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 = 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() As SqlConnection
Dim cn As New SqlConnection()
cn.ConnectionString = "Data Source=BUCHHALTUNG\SQLEXPRESS;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