Files
REST_SERVER/VERAG_REST_SERVER/Controllers/ATEZ/ATEZController.vb
2024-11-05 08:28:42 +01:00

421 lines
19 KiB
VB.net

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
''' <summary>
''' Delivers the sum of the guarantee for the requested GRN
''' </summary>
'''
''' <returns>sum of the guarantee</returns>
'''
''' <response code="200">Request OK and returns the sum sum of the guarantee</response>
''' <response code="400">Returns Failure if GRN is not valid</response>
'''
<ApiVersion("001")>
<System.Web.Http.Route("api/v{version:apiVersion}/sumOfGRN")>
<BasicAuthentication>
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
''' <summary>
''' Delivers the CBAM-Data
''' Currently only data for DE and Q3 2024 available.
''' </summary>
''' <param name="company">VERAG or IMEX or UNISPED as parameter</param>
''' <param name="country">AT or DE as parameter </param>
''' <param name="year">Year (2024) as parameter</param>
''' <param name="quarter">Quarter (1, 2, ,3, 4 ) as parameter</param>
''' <param name="directRepresenation">Direct or indirect representation</param>
''' <returns>Base64 String with CBAM-Data</returns>
'''
''' <response code="200">Request OK and returns CBAM Data as Base64 String</response>
''' <response code="400">Returns Parameter are not valid</response>
<ApiVersion("001")>
<System.Web.Http.Route("api/v{version:apiVersion}/cbam")>
<BasicAuthentication>
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
''' <summary>
''' Delivers the Adresse Data for a given EORI-Nr
''' If the EORI cannot be found, an empty String will be returned.
''' </summary>
''' <param name="eoriNr">EORI-No. as parameter</param>
''' <param name="eoriNr_NL">EORI-No. for netherland</param>
''' <param name="company">VERAG or IMEX or UNISPED as parameter</param>
''' <returns>Comma seperated string with adress-data of the given EORI-NR or EORI-NL </returns>
'''
''' <response code="200">Request OK and returns the Adress</response>
''' <response code="400">Returns Parameter are not valid</response>
<ApiVersion("001")>
<System.Web.Http.Route("api/v{version:apiVersion}/eorino")>
<BasicAuthentication>
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
''' <summary>
''' Delivers the Adresse Data for a given EORI-Nr
''' If the EORI cannot be found, an empty String will be returned.
''' </summary>
''' <param name="eoriNr">EORI-No. as parameter</param>
''' <param name="eoriNr_NL">EORI-No. for netherland</param>
''' <param name="company">VERAG or IMEX or UNISPED as parameter</param>
''' <returns>Comma seperated string with adress-data of the given EORI-NR or EORI-NL </returns>
'''
''' <response code="200">Request OK and returns the Adress</response>
''' <response code="400">Returns Parameter are not valid</response>
<ApiVersion("001")>
<System.Web.Http.Route("api/v{version:apiVersion}/cbamnew")>
<BasicAuthentication>
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