Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| — | engine:procedures:mi_getconvertfactor [11.01.2016 ] (aktuell) | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ===== mi_GetConvertFactor ===== | ||
| + | |||
| + | 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 [[dstoreproc>mi_GetUnits_Ad]], Rückgabespalte "TriangleConvert"), DÜRFEN in der Umrechnungstabelle "UnitConverts" (siehe [[dstoreproc>mi_ModifyUnitConverts_Ad]]) NUR als ZIEL-Einheit ("ToUnitID") auftauchen !\\ | ||
| + | |HTTP-Method|GET | | ||
| + | |HTTP-Auth|Optional | | ||
| + | |Tags|{{tag>[mi Get Convert Factor]}}| | ||
| + | |Engine-Kategorie|miscellaneous | | ||
| + | |Engine-Typ|Daten-Ermittlung | | ||
| + | |Letzte Aktualisierung|5.1.1 (2006-04-05)| | ||
| + | |||
| + | ==== Parameter ==== | ||
| + | |||
| + | ^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:engine_parameterconventions|Parameter-Konventionen engine/<Prozedur-Name>]])) ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
| + | |__FromUnitID__| |ID der Ausgangseinheit\\ |tinyint|3.5.0| | ||
| + | |__ToUnitID__| |ID der Zieleinheit\\ |tinyint|3.5.0| | ||
| + | |Date|NULL |Zeitpunkt für die korrekte Kursermittlung. Wenn "NULL" angegeben ist, wird die AKTUELLE Umrechnung ermittelt.\\ |datetime|3.5.0| | ||
| + | ==== Rückgabe ==== | ||
| + | |||
| + | Die Prozedur hat keine Rückgaben. | ||
| + | ==== Output-Parameter ==== | ||
| + | |||
| + | |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| | ||
| + | ==== Mögliche Return-Codes ==== | ||
| + | |||
| + | ^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber" und indirekt meint "von intern aufgerufenen Unterprozeduren")) ^ | ||
| + | |-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| | ||
| + | ==== XML-Schema ==== | ||
| + | |||
| + | Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://resources.dstore.de/xsd/webservice_SmartGate/Response/EngineProcedure_v1_0.xsd|Response/EngineProcedure_v1_0.xsd]] validiert. | ||
| + | ==== Historie ==== | ||
| + | |||
| + | |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\\  | | ||
| + | |||
| + | ==== Code-Snippets ==== | ||
| + | |||
| + | == Engine Playground == | ||
| + | Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist: | ||
| + | * [[http://playground.dstore.de/index.php?proc=mi_GetConvertFactor|mi_GetConvertFactor im Engine Playground öffnen]] | ||
| + | == cURL == | ||
| + | Unformatierte Ausgabe: | ||
| + | <code bash> | ||
| + | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetConvertFactor?FromUnitID=<value>&ToUnitID=<value>'</code>Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org)) formatierte Ausgabe: | ||
| + | <code bash> | ||
| + | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetConvertFactor?FromUnitID=<value>&ToUnitID=<value>' | xmllint --format -</code>== dStore_php == | ||
| + | <code php> | ||
| + | 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();</code> | ||
| + | == engine/execute == | ||
| + | XML zur Ausführung mit der Methode [[:webservice:engine:execute|engine/execute]], z.B. per | ||
| + | curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>' | ||
| + | |||
| + | <code xml> | ||
| + | <?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></code> | ||