Update Exchange Rate on system start
Michael Egloff
Hallo zusammen,im Anhang befindet sich eine Regel, mit welcher beim Start von SAP Business One die Wechselkurse aktualisiert werden. Die Wechselkurse werden von der European Central Bank geholt, d.h. als Basis wird ein System mit Euro als Lokalwährung vorausgesetzt!
Kritik? Lob? Verbesserungen? -> Nur zu, einfach hier im Forum antworten.
==================
Hello together,
attached is a customize rule which updates the exchange rates in the SAP Business One system during start up. The source of the exchange rates is the European Central Bank therefore the local currency has to be Euro!
Happy? Not happy? Missing something? -> Please write us your feedback here in the forum.
==================
// updated on 16.05.2011: Numberformat changed
Heiko Merz
Diese Regel ist super ... wenn sie funktioniert.Ich habe diese Regel in eine Test-Datenbank eingebaut, auf 10 Tage eingestellt und SAP neu gestartet.
Das Ergebnis ist, dass es die Währungen schon holt, aber im falschen Format.
Für Freitag bis heute ist ein USD Kurs von 1.428 drin...alles ok. Für letzten Donnerstag steht 14.153 drin anstatt 1.4153. Für Mittwoch 14.357 anstatt 1.4357... usw.
Das ist natürlich schlecht.
Des weiteren wäre es für unsere Standorte in England, Tschechien, Polen, etc. natürlich sinnvoll, wenn die Währung auch geholt werden kann, sollte EUR nicht die Lokale Währung sein.
Wird es da eine Anpassung geben bzw. ist das realisierbar ?
Gruß
Heiko Merz
Heiko Merz
Problem mit den Zahlenformaten gelöst, so kommt das richtige heraus:Zeile, 134, 136 und 138 den Abschnitt
double.Parse(rateNode.InnerText)
ersetzen mit
double.Parse((rateNode.InnerText), System.Globalization.NumberFormatInfo.InvariantInfo)
OK.
Aber die offene Frage wäre noch: Wird das auch möglich sein, wenn man als lokale Währung CZK, GBP, etc. hat ???
Gruß
Heiko Merz
Michael Egloff
Hallo Herr Merz,vielen Dank für den Input, habe die Regel hier im Forum gleich angepasst.
Es ist durchaus möglich, diese Regel auch für andere Währungen anzupassen. Dazu wird ein Service benötigt, welcher die aktuellen Währungskurse zur Verfügung stellt. Die European Central Bank stellt nur die Kurse zur Verfügung, welche den Euro als Basiskurs haben. Für die tschechische Kronen oder das englische Pfund habe ich noch keinen Anbieter gefunden.
Natürlich wäre es auch denkbar anhand der Kurse von der ECB die Kurse für andere Basiswährungen zu berechnen (z.B. von CZK nach GBP: zuerst von CZK in EUR und dann EUR in GBP). Jedoch ist das eine Variante, welche weder schön noch genau ist.
Wenn jemand andere Anbieter von Wechselkursen kennt, welche zuverlässig, seriös und gratis sind, bitte melden!
Heiko Merz
Hallo Hr. Egloff,an diese 2. Variante habe ich auch gedacht. Berechnung der Kurse auf Basis des Euro-Kurses der EZB.
Ich werde das mit unserer Fibu abklären, ob das so akzeptabel wäre.
Gruß
Heiko Merz
Heiko Merz
Hallo Hr. Egloff,ich glaube es ist ein weiterer Fehler in der Regel.
Ich habe in einer Testdatenbank, die mit der Einstellung "Fremdwährungswertberichtigung Indirekt" läuft, das ganze ausgeführt.
D.h. 1 EUR entspricht hier z.B. 1,40 USD. Es müsste also ein Kurs von 1,40 eingetragen werden. Es wird aber 0,7142 eingetragen.
Ich habe einen Wareneingang über USD angelegt und in der Journalbuchung wird diese Position mit 1417,10 Euro angezeigt anstatt mit 714 Euro.
Das gleiche habe ich in einer anderen Testdatenbank gemacht, díe mit der Einstellung "Fremdwährungswertberichtigung Direkt" läuft, sprich hier heißt die Regel 1 USD = xxx EURO, Beispiel: 1USD = 0,7142 EUR. Führe ich hier die Regel aus, so wird 1,40 eingetragen.
Auch hier ist der Wareneingang falsch, für 1000USD erscheinen in der Jounalbuchung 1417 EUR anstatt 714 EUR.
Als Lösung habe ich in der Regel einfach die if...else Schleife vertauscht.
if(directExchangeRate)
bob.SetCurrencyRate(lookUpCurrency, sapDate, 1 / (double.Parse((rateNode.InnerText), System.Globalization.NumberFormatInfo.InvariantInfo)), false);
else
bob.SetCurrencyRate(lookUpCurrency, sapDate, (double.Parse((rateNode.InnerText), System.Globalization.NumberFormatInfo.InvariantInfo)), false);
Nun erscheinen die Werte richtig bei mir, wenn ich sie abholen lasse.
Ich hoffe ich habe da keinen Denkfehler drin, aber mein Kollege ist derselben Meinung.
Gruß
Heiko Merz
Heiko Merz
Hallo,die Regel lief jetzt 2 Wochen super, seit vorgestern kommt jeweils eine Fehlermeldung:
Could not update exchange Rate (CAD): The remote server returned an error: (407) Proxy Authentication Required.
Ich kann mir nicht vorstellen das es am Proxy liegt, ich komme auch auf die XML Seite ganz normal drauf.
Könnte jemand testen, ob das bei euch geht ? Damit ich weiss ob es an uns liegt oder evtl. an einer Umstellung der Seite der EZB ?
Vielen Dank.
Gruß
Heiko
Michael Egloff
Hallo Herr Merz,die Regel funktioniert bei mir immer noch und die Datei ist ebenfalls noch vorhanden auf dem EZB Server.
John O'Brien
Hi all,
Has anyone managed to achieve this for AUD as local / system currency?
XML feed here:
http://www.rba.gov.au/rss/rss-cb-exchange-rates.xml
Thanks,
John
0
Please sign in to leave a comment.
Comments
0 comments