Imports Microsoft.Web.Http
Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
Imports VERAGMonitoring
Namespace ApiController.Controllers
Public Class ATEZController
Inherits System.Web.Http.ApiController
'''
''' Delivers the sum of the guarantee for the requested GRN
'''
'''
''' sum of the guarantee
'''
''' Request OK and returns the sum sum of the guarantee
''' Returns Failure if GRN is not valid
'''
Public Function getSumOfGRN(ByVal GRN As String) As String
Dim BRG As New cBrgDb 'Monitoring
Dim DE_DIFFERENZ As Double = 1000000 ' PUFFER FÜR UK!!!
If GRN = "" Then Return -1
'ZOLARIS AT TAG
Dim AtTag_zolaris As Double = BRG.getBrgSumFromFMZOLL_Zolaris(Now.AddMonths(-1).ToShortDateString, Now.ToShortDateString, "50", "50", GRN, " AND DatumBestimmungErreicht IS NULL ")
'TELOTEC AT TAG
Dim AtTag_telotec As Double = BRG.getBrgSumFromFMZOLL_TELOTEC(Now.AddMonths(-1).ToShortDateString, Now.ToShortDateString, "50", "50", GRN)
'DE TAG
Dim tag_de2 As Double = BRG.getBrgSumFromFMZOLL_Zabis(Now.AddMonths(-3).ToShortDateString, Now.ToShortDateString, "50", "50", GRN)
'NCTS_TR AT TAG
Dim DetTag_nctsTR As Double = BRG.getBrgSumFromFMZOLL_NCTS_TR(Now.AddMonths(-3).ToShortDateString, Now.ToShortDateString, "50", "50", GRN)
Dim saldo = AtTag_zolaris + AtTag_telotec + tag_de2 + DetTag_nctsTR
If saldo = 0 Then Return saldo
Return saldo + DE_DIFFERENZ
End Function
'''
''' Delivers the CBAM-Data
''' Currently only data for DE and Q3 2024 available.
'''
''' VERAG or IMEX or UNISPED as parameter
''' AT or DE as parameter
''' Year (2024) as parameter
''' Quarter (1, 2, ,3, 4 ) as parameter
''' Direct or indirect representation
''' Base64 String with CBAM-Data
'''
''' Request OK and returns CBAM Data as Base64 String
''' Returns Parameter are not valid
Public Function getCBAM(ByVal company As String, country As String, year As Integer, quarter As Integer, directRepresenation As Boolean) As String
Dim Teilnehmner = ""
Dim von As DateTime
Dim bis As DateTime
Select Case company
Case "VERAG" : Teilnehmner = "SUB"
Case "IMEX" : Teilnehmner = "IME"
Case "UNISPED" : Teilnehmner = "UNAT"
Case Else
Return ""
End Select
Select Case quarter
Case 1 : von = New DateTime(year, 1, 1) : bis = New DateTime(year, 3, 30)
Case 2 : von = New DateTime(year, 4, 1) : bis = New DateTime(year, 6, 30)
Case 3 : von = New DateTime(year, 7, 1) : bis = New DateTime(year, 9, 30)
Case 4 : von = New DateTime(year, 10, 1) : bis = New DateTime(year, 12, 30)
End Select
'New DateTime(year, month + 1, 1)
'country aktuell nur DE -> Weil aktuell nur DAKOSY-Datensätze
'Year aktuell nur 2024 Datensätze
'Quartal aktuell nur q3 Datensätze
Dim where = "where 1 = 1 "
If Teilnehmner <> "" Then where &= "and Teilnehmer ='" & Teilnehmner & "'"
where &= " and [Vertreter_des_Anmelders] = " & IIf(directRepresenation, "1", "2")
where &= " and [Überlassungsdatum] between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'"
'Filter auf CBAM-Pflichtige Warennummern!
where &= " WHERE (
left(Warentarifnummer,4) IN (2523,2716,2808,2814,3102,3105,7201,7203,7318,7326,7601,7616)
OR left(Warentarifnummer,4) between 7301 and 7311
OR left(Warentarifnummer,4) between 7205 and 7229
OR left(Warentarifnummer,4) between 7603 and 7614
OR Warentarifnummer like '25070080%'
OR Warentarifnummer like '283421%'
OR Warentarifnummer like '260112%'
OR Warentarifnummer like '720211%'
OR Warentarifnummer like '720219%'
OR Warentarifnummer like '720241%'
OR Warentarifnummer like '720249%'
OR Warentarifnummer like '720260%'
OR Warentarifnummer like '280410%'
) and Warentarifnummer not like '310560%' "
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlString = "select * from tbl_DY_Zollmeldungen_Import " & where
Dim dt As DataTable = sql.loadDgvBySql(sqlString, "AVISO")
If dt.Rows.Count > 0 Then
Dim Bytes = System.IO.File.ReadAllBytes(VERAG_PROG_ALLGEMEIN.cProgramFunctions.genCSVFromDT(dt))
Return Convert.ToBase64String(Bytes)
Else
Return ""
End If
End Function
'''
''' Delivers the Adresse Data for a given EORI-Nr
''' If the EORI cannot be found, an empty String will be returned.
'''
''' EORI-No. as parameter
''' EORI-No. for netherland
''' VERAG or IMEX or UNISPED as parameter
''' Comma seperated string with adress-data of the given EORI-NR or EORI-NL
'''
''' Request OK and returns the Adress
''' Returns Parameter are not valid
Public Function getCBAMEORI(company As String, Optional eoriNr As String = "", Optional eoriNr_NL As String = "") As String
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Dim firma As String
Dim regexAufbauEORI As Boolean = False
Dim regexAufbauEORINL As Boolean = False
If eoriNr <> "" Then regexAufbauEORI = Regex.IsMatch(eoriNr, "^[A-Z]{2}[0-9A-Z]{7,15}$")
If eoriNr_NL <> "" Then regexAufbauEORINL = Regex.IsMatch(eoriNr_NL, "^[NL]{2}[0-9A-Z]{9}$")
If eoriNr = "" And eoriNr_NL = "" Then
Return "NO EORI NR SUBMITTED"
End If
If eoriNr <> "" And Not regexAufbauEORI Then
Return "WRONG EORI-NR"
End If
If eoriNr_NL <> "" And Not regexAufbauEORINL Then
Return "WRONG EORI-NL"
End If
Select Case company
Case "VERAG" : firma = "VERAG"
Case "IMEX" : firma = "IMEX"
Case "UNISPED" : firma = "UNISPED"
Case Else
Return "NO COMPANY/WRONG COMPANY SUBMITTED"
End Select
Dim kdNrTmp = sql.getFMZOLLKdNrFromEORI(eoriNr, eoriNr_NL, firma)
If IsNumeric(kdNrTmp) Then
Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNrTmp)
Dim returnStringAdresse = ""
If AD IsNot Nothing Then
returnStringAdresse &= AD.Name_1 & ";"
returnStringAdresse &= AD.Name_2 & ";"
returnStringAdresse &= AD.Straße & ";"
returnStringAdresse &= AD.PLZ & ";"
returnStringAdresse &= AD.Ort & ";"
returnStringAdresse &= VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2Land(AD.LandKz) & ";"
End If
Return returnStringAdresse.ToString
Else
Return "NO DATA"
End If
End Function
'''
''' Delivers the Adresse Data for a given EORI-Nr
''' If the EORI cannot be found, an empty String will be returned.
'''
''' EORI-No. as parameter
''' EORI-No. for netherland
''' VERAG or IMEX or UNISPED as parameter
''' Comma seperated string with adress-data of the given EORI-NR or EORI-NL
'''
''' Request OK and returns the Adress
''' Returns Parameter are not valid
Public Function getCBAMNEW() As String
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Dim sqlString = "SELECT [Id]
,[Teilnehmer]
,[Anmeldeart_A]
,[Verfahren]
,[Bezugsnummer_LRN]
,[Anlagedatum]
,[Zeit]
,[Zeitpunkt_der_letzten_CUSTAX]
,[Überlassungsdatum]
,[Annahmedatum]
,[Registriernummer_MRN]
,[Weitere_Reg_Nr]
,[EDIFNR]
,[Versendungsland]
,[Art_der_Vertretung]
,[Vertreter_des_Anmelders]
,[Vertreter_AE_EORI]
,[AE_Name]
,[Versender_CZ_EORI]
,Abs_Adr.[Name 1] as Versender_Name
,Abs_Adr.[Name 2] as Versender_Name2
,Abs_Adr.[LandKz] as Versender_Country
,Abs_Adr.[Strasse] as Versender_Street
,'' as Versender_Street_additional_line
,Abs_Adr.[PLZ] as Versender_Postcode
,Abs_Adr.[Ort] as Versender_City
,'' as VersenderPOBox
,Abs_Adr.[Ansprechpartner] as Versender_ContactName
,Abs_Adr.[Telefon] as Versender_Contact_Phone_number
,Abs_Adr.[E-Mail] as Versender_Contact_Email
,[CZ_Code]
,[CZ_Name]
,[CZ_Ländercode]
,[Empfänger_CN_EORI]
,Emp_Adr.[Name 1] as Empfänger_Name
,Emp_Adr.[Name 2] as Empfänger_Name2
,Emp_Adr.[LandKz] as Empfänger_Country
,Emp_Adr.[Strasse] as Empfänger_Street
,'' as Empfänger_Street_additional_line
,Emp_Adr.[PLZ] as Empfänger_Postcode
,Emp_Adr.[Ort] as Empfänger_City
,'' as EmpfängerPOBox
,Emp_Adr.[Ansprechpartner] as Empfänger_ContactName
,Emp_Adr.[Telefon] as Empfänger_Contact_Phone_number
,Emp_Adr.[E-Mail] as Empfänger_Contact_Email
,[CN_Code]
,[CN_Name]
,[CN_Ländercode]
,[Anmelder_DT_EORI]
,[DT_Code]
,[DT_Name]
,[DT_Ländercode]
,[UstID_DT]
,[Käufer_BY_Name]
,[BY_EORI]
,[Verkäufer_SL_Name]
,[SL_EORI]
,[ZollRechtlicherStatus]
,[Bewilligungsnummer]
,[Gesamtgewicht]
,[Liefercode]
,[Lieferort]
,[Lieferkey]
,[Geschäftsart]
,[Rechnungsbetrag]
,[Rechnungswährung]
,[Rechnungskurs]
,[Zollstelle]
,[Aufschubart]
,[HZAZoll]
,[KontoZoll]
,[TextZoll]
,[EORIZoll]
,[KennzeichenEigenZoll]
,[ArtEust]
,[HZAEust]
,[KontoEusT]
,[TextEust]
,[EORIEust]
,[KennzeichenEigenEust]
,[Container]
,[Unterlagenzeile]
,[Unterlagenbereich]
,[Unterlagenart]
,[Unterlagennummer]
,[Unterlagendatum]
,[PositionNo]
,[Positionen]
,[Vorausstl_Zollabgabe]
,[Vorausstl_Zollsatzabgabe]
,[Vorausstl_Eustabgabe]
,[Vorausstl_Eustsatzabgabe]
,[Zollwert]
,[AbgabeZoll]
,[AbgabeZollsatz]
,[Eustwert]
,[AbgabeEust]
,[AbgabeEustsatz]
,[AbgabeAntidumping]
,[AbgabeAntidumpingSatz]
,[Status_Steuerbescheid]
,[ArtikelCode]
,[Warentarifnummer]
,[Warenzusatz1]
,[Warenzusatz2]
,[Warenbezeichnung]
,[Verfahren2]
,[EU_Code]
,[Artikelpreis]
,[Statistischerwert]
,[Eust_manuell]
,[Ursprung]
,[Präferenzursprungsland]
,[Beguenstigung]
,[Rohmasse]
,[Rohmasseeinheit]
,[Eigenmasse]
,[Eigenmasseeinheit]
,[Positionszusatz]
,[Aussenhandelstatistische_Menge]
,[Maßeinheit]
,[AnzahlPackstücke]
,[Packstückart]
,[Packstückbezeichnung]
,[Zusätzliche_angaben]
,[SonderAbgabeZoll]
,[SonderAbgabeEust]
,[AbgabeZusatzzölle]
,[SonderAbgabeAntidumping]
,[Verbrauchssteuern]
,[Positionsunterlagenzeile]
,[Positionsunterlagenbereich]
,[Positionsunterlagenart]
,[Positionsunterlagennummer]
,[Positionsunterlagendatum]
,[DV1Rechnungsbetrag]
,[DV1Währung]
,[DV1UmgerechnerterRechnungsbetrag]
,[DV1UmgerechneteWährung]
,[DV1Versicherung]
,[DV1Versicherungswährung]
,[DV1Luftfrachtkosten]
,[DV1Luftfrachtwährung]
,[DV1Frachtkosten]
,[DV1Frachtwährung]
,[DV1Materialien]
,[DV1Materialwährung]
,[DV1Provisionen]
,[DV1Provisionwährung]
,[Abflughafen_Code]
,[Abflughafen_Text]
,[Vorpapierart]
,[Vorpapiere_Regnummer]
,[BEAnteil_SumA]
,[BEAnteil_ZL]
,[BEAnteil_AV]
,[UST_ID_Einführer]
,[UST_ID_Erwerber]
,[UST_ID_Fiskalvertreter]
,[Shipmentnummer]
,[Importstatus]
FROM [AVISO].[dbo].[tbl_DY_Zollmeldungen_Import]
left JOIN [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[Kunden] as Empfaenger on Empfaenger.[EORITIN] = [Empfänger_CN_EORI] and Empfaenger.[FilialenNr] = LEFT(Bezugsnummer_LRN,4)
left JOIN [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[Adressen] as Emp_Adr on Emp_Adr.AdressenNr = Empfaenger.KundenNr
left JOIN [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[Kunden] as Absender on Absender.[EORITIN] = [Versender_CZ_EORI] and Absender.[FilialenNr] = LEFT(Bezugsnummer_LRN,4)
left JOIN [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[Adressen] as Abs_Adr on Abs_Adr.AdressenNr = Absender.KundenNr
WHERE (
left(Warentarifnummer,4) IN (2523,2716,2808,2814,3102,3105,7201,7203,7318,7326,7601,7616)
OR left(Warentarifnummer,4) between 7301 and 7311
OR left(Warentarifnummer,4) between 7205 and 7229
OR left(Warentarifnummer,4) between 7603 and 7614
OR Warentarifnummer like '25070080%'
OR Warentarifnummer like '283421%'
OR Warentarifnummer like '260112%'
OR Warentarifnummer like '720211%'
OR Warentarifnummer like '720219%'
OR Warentarifnummer like '720241%'
OR Warentarifnummer like '720249%'
OR Warentarifnummer like '720260%'
OR Warentarifnummer like '280410%'
) and Warentarifnummer not like '310560%'"
Dim dt As DataTable = sql.loadDgvBySql(sqlString, "AVISO")
If dt.Rows.Count > 0 Then
Dim Bytes = System.IO.File.ReadAllBytes(VERAG_PROG_ALLGEMEIN.cProgramFunctions.genCSVFromDT(dt))
Return Convert.ToBase64String(Bytes)
Else
Return ""
End If
End Function
End Class
End Namespace