Kursabfrage der Europäischen Zentralbank

Mit Workflow+ können Sie ganz einfach automatisch den tagesaktuellen Kurz bei der EZB mit den Daten im büro+ abgleichen und ändern. Gerne stellen wir Ihnen unten ein Beispiel zur Verfügung, mit dem Sie es gleich selber versuchen können.

 

Declare lURL as String
Declare lTemp as String
Declare lXmlRoot as XmlElement
Declare lXmlDeviseCode as XmlElementList
Declare lIndex as Integer
Declare lKursFaktor as Decimal
Declare lISOCode as String
Declare lInfoText as String
Declare lTimeStamp as String

-- Statische Werte
lURL = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml?GUID"

-- Daten abrufen
lTemp = HttpRequest(lURL, "", "xml", , , "GET")
lXmlRoot = XmlElementCreate(lTemp)

lXmlDeviseCode = XmlGetElementList(lXmlRoot, "Cube")

lTimeStamp = XmlGetAttribut(lXmlDeviseCode[1], "time")

For lIndex = 0 To MaxIndex(lXmlDeviseCode)
  lTemp = XmlGetAttribut(lXmlDeviseCode[lIndex], "currency")
  If XmlGetAttribut(lXmlDeviseCode[lIndex], "currency") = "USD" Then
    lISOCode = "USD"
    lKursFaktor = XmlGetAttribut(lXmlDeviseCode[lIndex], "rate")
    lKursFaktor = Round(1 / lKursFaktor, 0.0001)
    ExitFor
  EndIf
Next

-- Eintragen
If not lKursFaktor = 0 Then
  GetTable("Mandant", "Nr", "MandNr", GetBueroPlusMandant())
  
  If GetTable("Mandant\FrW", "ISOBez", "ISOBez", lISOCode) Then
    Mandant\FrW.BaWFak = lKursFaktor
    Mandant\FrW.LtzDat = DateTimeFormat(DateTimeParse(lTimeStamp, "yyyy-MM-dd"), "dd.MM.yyyy")
    
    -- Nur im Infofeld ablegen
    lInfoText = DateTimeFormat(DateTimeParse(lTimeStamp, "yyyy-MM-dd"), "dd.MM.yyyy") + ": " +  lKursFaktor
    If not Contains(Mandant\FrW.Info, lInfoText) Then
      Mandant\FrW.Info = lInfoText + cCrLf + Mandant\FrW.Info
    EndIf
  EndIf
  
  -- Kurs auf BelegArt 119 nachtragen
  If GetTable("Vorgang", "ArtBelegNr", "Art", 119) Then
    Loop("Vorgang")
      If Vorgang.Waehr = "USD" Then
        Vorgang.FrWFak = 1
        Vorgang.BaWFak = lKursFaktor
      EndIf
    EndLoop
  EndIf
EndIf

Copyright 2023 Workflow+