Dient der Umrechnung zwischen zwei verschiedenen Einheiten (hauptsächlich Währungen). Man erhält vier Ausgaben, die über die „out“-Parameter abgefragt werden können. Die Umrechnung sollte nach dem Aufruf dieser Prozedur dann nach folgender Formel erfolgen :
<umgerechneter Wert> = <Ursprünglicher Wert> * factor1 / divisor1 * factor2 / divisor2
Hintergrund für dieses Vorgehen ist die „Dreiecks“-Umrechnung, bei der eine zu große Rechen-Ungenauigkeit entstehen könnte, wenn man nur einen Faktor und einen Divisor hätte.
Beispiel für eine „Dreiecks“-Umrechnung war die Übergangszeit vor der Euro-Umstellung : Um z.B. vom Österreichischen Schilling in die Deutsche Mark umzurechnen, mußte man über den jeweiligen Umrechnungsfaktor zum Euro der beiden Währungen gehen.
Wichtiger Hinweis :
Wir beachten nur Umrechnungen, die entweder „für immer“ gültig sind (diese haben die spezielle „DateIntervallID = 0“) oder die einen Gültigkeitszeitraum mit festem Beginn besitzen (d.h. „FromDate“ des zugehörigen Datensatzen in „DateIntervalls“ ist NICHT „NULL“) !
Weitere Anmerkungen :
1. Die Prozedur sucht zuerst immer nach einer direkten Umrechnung von der Ursprungs-Einheit (→ „FromUnitID“) in die Ziel-Einheit (→ „ToUnitID“). Ist keine aktuelle Umrechnung vorhanden, wird nach einer Umrechnung von Ziel- in Ursprungs-Einheit gesucht und dann der Kehrwert gebildet.
2. Einheiten, die für eine Dreiecks-Umrechnung gekennzeichnet sind (siehe mi_GetUnits_Ad, Rückgabespalte „TriangleConvert“), DÜRFEN in der Umrechnungstabelle „UnitConverts“ (siehe mi_ModifyUnitConverts_Ad) NUR als ZIEL-Einheit („ToUnitID“) auftauchen !
HTTP-Method | GET |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | miscellaneous |
Engine-Typ | Daten-Ermittlung |
Letzte Aktualisierung | 5.1.1 (2006-04-05) |
Die Prozedur hat keine Rückgaben.
factor1 | Ausgabeparameter für den ersten Faktor |
factor2 | Ausgabeparameter für den zweiten Faktor |
divisor1 | Ausgabeparameter für den ersten Divisor |
divisor2 | Ausgabeparameter für den zweiten Divisor |
Code | Beschreibung | Quelle 4) |
---|---|---|
-530 | Der Wert ist nicht konvertierbar | nur direkt |
-503 | Fehlerhafte Daten in einer Tabelle - genauere Fehlermeldung auf der Standardausgabe | nur direkt |
-500 | Falsche Parameter | nur direkt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
5.1.1 | 2006-04-05 | Neukodierung aufgrund zahlreicher Fehler, u.a.: - Fehler falls „ToDate“ in „UnitConverts“ „NULL“ war - Fehlende Initialisierung der Ausgabeparameter - Falsche Datentypen für „FromUnitID“ und „ToUnitID“ |
4.0.0 | 2003-04-03 | Änderung der Doku |
3.5.0 | 2000-11-23 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetConvertFactor?FromUnitID=<value>&ToUnitID=<value>'
Mit xmllint 5) formatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetConvertFactor?FromUnitID=<value>&ToUnitID=<value>' | xmllint --format -
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'mi_GetConvertFactor', array( 'FromUnitID' => <value>, 'ToUnitID' => <value>, // 'Date' => NULL ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray(); $OutputParams = $xml_result->getOutputParametersAsArray();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?> <ListOfBatches> <Batch No="0"> <Procedure Name="mi_GetConvertFactor"> <Parameters> <Parameter Name="FromUnitID"><!-- tinyint value --></Parameter> <Parameter Name="ToUnitID"><!-- tinyint value --></Parameter> <!-- <Parameter Name="Date">NULL</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>