Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_getconvertfactor

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 mi_GetUnits_Ad, Rückgabespalte „TriangleConvert“), DÜRFEN in der Umrechnungstabelle „UnitConverts“ (siehe mi_ModifyUnitConverts_Ad) NUR als ZIEL-Einheit („ToUnitID“) auftauchen !

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategoriemiscellaneous
Engine-TypDaten-Ermittlung
Letzte Aktualisierung5.1.1 (2006-04-05)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
FromUnitID ID der Ausgangseinheit
tinyint3.5.0
ToUnitID ID der Zieleinheit
tinyint3.5.0
DateNULL Zeitpunkt für die korrekte Kursermittlung. Wenn „NULL“ angegeben ist, wird die AKTUELLE Umrechnung ermittelt.
datetime3.5.0

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

factor1Ausgabeparameter für den ersten Faktor
factor2Ausgabeparameter für den zweiten Faktor
divisor1Ausgabeparameter für den ersten Divisor
divisor2Ausgabeparameter für den zweiten Divisor

Mögliche Return-Codes

Code Beschreibung Quelle 4)
-530Der Wert ist nicht konvertierbarnur direkt
-503Fehlerhafte Daten in einer Tabelle - genauere Fehlermeldung auf der Standardausgabenur direkt
-500Falsche Parameternur direkt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

5.1.1 2006-04-05Neukodierung 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-23Erstmalig 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:

cURL

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 -
dStore_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();
engine/execute

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>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/mi_getconvertfactor.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)