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