zurück...
OTA_HotelRateAmountNotif
Der OTA_HotelRateAmountNotif Service dient zum aktualisieren der Preise sowie zum setzen der Saisonzeiten eines Betriebes. Im Idealfall sollte der Service
jedes mal benutzt werden wenn sich in einem der beiden Änderungen ergeben haben (also wenn möglich nicht bei jeder Freimeldung). Es handelt sich um einen
Webservice der nach dem REST (Representational State Transfer) Prinzip aufgebaut ist.
Methodik
- HTTP POST
- URL: https://mainframe.capcorn.net/OTA/OTA_HotelRateAmountNotif?hotelId={Vermieternummer}&pin={CapCorn-PIN}
- HEADER: Content-Type: application/xml
- BODY: <OTA_HotelRateAmountNotifRQ ...> ... </OTA_HotelRateAmountNotifRQ >
Als Antwort liefert das System ein XML Element vom Typ "OTA_HotelRateAmountNotifRS" (siehe unten).
Authentifizierung
Die Authentifizierung erfolgt über die URL. Dazu ist die Hotel-Id (CapCorn Vermieternummer) und der PIN (CapCorn Master PIN) zu verwenden.
Ein Beispiel für eine URL sehen sie in der folgenden Abbildung. Sollten Sie Ihren PIN nicht mehr wissen,
gibt Ihnen Ihr Verband gerne Auskunft darüber.
Der Request
Im Body der Nachricht werden die Daten im OTA_HotelRateAmountRQ Element übermittelt. Sämtliche Daten beziehen sich natürlich
immer auf den Betrieb der in der URL zur Authentifizierung verwendet wurde. Zentrales Element des "OTA_HotelRateAmountRQ" Elements ist der
"RateAmountMessages" Container. Dieser beinhaltet sämtliche Preisinformationen und Saisonzeiten, welche jeweils als "RateAmountMessage" Element dargestellt
werden. Grundsätzlich ist es möglich nur Preisinformationen bzw. nur Saisonzeiten zu melden. Es können aber auch ohne weiteres beide Informationen
kombiniert in einer Meldung an CapCorn übertragen werden. Als Beispiel sehen Sie im folgenden Bild eine Meldung von einer Saisonzeit (3 verschiedene
Zeiträume für "Winter A") und die Meldung des Preises für Zimmer 101 in Saison "Winter A". Details dazu unten.
Saisonzeiten setzen
Ein Beispiel für die Saisonzeitenmeldung sehen Sie in der folgenden Abbildung. Die Erklärung zu den diversen Elementen finden Sie
unterhalb der Abbildung. Es gibt dabei eine Unterteilung in Attribute bzw. Elemente die zwingend notwendig sind und jene die optional sind. Wichtig:
Die Saisonzeitenmeldung ist im Vergleich zur Preismeldung nicht inkrementell! Das bedeutet, dass sie immer alle Saisonzeiten melden müssen.
Also sobald sich Saisonzeitenmeldungen in Ihrem Import befinden löscht das System alle bisherigen Zeiten und trägt die neuen Saisonzeiten bei Ihrem
Betrieb ein. Sollten sich in Ihrer Meldung nur Preisinformationen befinden (siehe unten) so werden die Saisonzeiten nicht verändert.
Zwingend notwendige Elemente
-
„RateAmountMessage“:
Ist das zentrale Element, welches 1...n mal angeführt werden muss und jeweils die Preisinformation bzw. die Saisonzeitinformation
enthält. Das Attribut LocatorID ist dabei optional (siehe unten).
-
„StatusApplicationControl“:
Dieses Element gibt nun an auf welche Saison sich die nachstehenden Zeiträume beziehen. Dazu muss das Attribut RatePlanID
angeführt werden. Führen Sie hier nun die ID (Integer Wert zwischen 1 und 20) der entsprechenden Saisonzeit an. Die IDs der
Saisonzeiten finden Sie im Webinterface unter "Zimmer- und Saisonplan" -> "Saisonzeiten verwalten".
-
„Rates“:
Das Rates Element ist nun Container für 1...n Rate Elemente. Jedes Rate Element steht für einen Zeitraum
der im StatusApplicationControl unter RatePlanID angeführten Saisonzeit.
Der Zeitraum wird anhand der Elemente "Start" und "End" definiert. Das Enddatum wird
miteinbezogen. Liegt das Startdatum in der Vergangenheit wird es automatisch auf das aktuelle Tagesdatum gesetzt. Das Enddatum darf maximal 749 Tage
in der Zukunft liegen. Sollte das Enddatum darüber hinaus ragen wird es automatisch zurückgesetzt auf diesen Maximalwert.
Zum Beispiel End="2014-12-15" bedeutet, dass die Saisonzeit bis inklusive der Übernachtung von 15.Dezember 2014
auf den 16.Dezember 2014 gilt. Das Datum muss in folgendem Format angegeben werden: "yyyy-MM-dd" (siehe Abbildung). Maximal 749 Tage
in die Zukunft. Ein Start-Datum in der Vergangenheit ist ebenfalls nicht erlaubt und wird wie oben beschrieben behandelt. Ein End-Datum in der
Vergangenheit erzeugt automatisch eine Warnung und die Zeile wird ignoriert.
In der folgenden Abbildung sehen Sie ein Beispiel. Hier wird für die Zeiträume von 01.12.2014 bis 23.12.2014, von 07.01.2015 bis 31.01.2015 und
von 01.03.2015 bis 14.04.2015 die Saisonzeit "Winter A" gesetzt. Achtung: Wie bereits oben erwähnt, würden hier alle anderen Saisonzeiten
restlos gelöscht werden. Also führen Sie bitte immer alle Saisonzeiten an wenn Sie Änderungen melden möchten.
Optionale Elemente
-
„LocatorID“:
Die LocatorID ist ein optionales Attribut der RateAmountMessage. Es stellt eine aufsteigende Nummerierung der "RateAmountMessage"
Elemente dar. Wir empfehlen dieses Element zu verwenden, denn es dient dazu, bei Ergebnissen mit Fehlern bzw. Warnungen den Bereich
anhand dieser ID genau definieren zu können. Sie finden dann die LocatorID im Result des Webservices wieder und können so Ihre Fehler
bzw. Warnungen leichter lokalisieren.
Preismeldung nach Zimmernummer
Ein Beispiel für eine Preisdefinition nach Zimmernummern sehen Sie in der folgenden Abbildung.
Grundsätzlich dient wie bei der Saisonzeit auch bei der Preismeldung das
RateAmountMessage Element als Basis. Auch hier gibt es zwingend
notwendige sowie optionale Elemente. Die Funktion der Elemente lautet wie folgt.
Zwingend notwendige Elemente
-
„RateAmountMessage“:
Ist das zentrale Element, welches 1...n mal angeführt werden muss und Basis für die Preisinformation ist.
Das Attribut LocatorID ist dabei optional (siehe unten).
-
„StatusApplicationControl“:
Dieses Element gibt nun an auf welche Saison und auf welches Zimmer sich die nachstehende Preisinformation bezieht. Dazu muss das Attribut RatePlanID
angeführt werden. Führen Sie hier nun die ID (Integer Wert zwischen 1 und 20) der entsprechenden Saisonzeit an. Die IDs der
Saisonzeiten finden Sie im Webinterface unter "Zimmer- und Saisonplan" -> "Saisonzeiten verwalten". Das zweite Element InvCode gibt an
welchem Zimmer der Saisonpreis zugeordnet werden soll. Die entsprechenden Nummern finden Sie im Webinterface in den Zimmereinstellungen bzw.
gesammelt unter "Channel Manager -> Schnittstellen-Codes".
-
„Rates“:
Das Rates Element ist nun Container für genau ein Rate Elemente. Das Rate Element enthält nun den Container
BaseByGuestAmts. Dieser Container enthält wiederum genau ein BaseByGuestAmt Element. Dieses stellt nun mit seinen
Parametern die Preisinformation dar.
Der Parameter CurrencyCode gibt die Währung an und wird bei uns in der Regel mit "EUR" befüllt sein. Als zweiter Parameter können Sie
die Anzahl der Dezimalstellen unter DecimalPlaces fixieren. Der Preis wird dann endgültig im Parameter AmountAfterTax angeführt.
Achten Sie dabei darauf, dass nur ganzzahlige Werte erlaubt sind. Die Angabe von Cent ergibt sich durch die entsprechende Anzahl von DecimalPlaces.
Im oben angeführten Bild sehen Sie zum Beispiel wie für das Zimmer 101 in der Saison "Winter A" ein Preis von € 119,00 festgelegt wird.
Wenn Sie den Preis für ein Zimmer in einer bestimmten Saison löschen wollen, dann führen Sie bei "AmountAfterTax" den Wert "0" an.
Optionale Elemente
-
„LocatorID“:
Die LocatorID ist ein optionales Attribut der RateAmountMessage. Es stellt eine aufsteigende Nummerierung der "RateAmountMessage"
Elemente dar. Wir empfehlen dieses Element zu verwenden, denn es dient dazu, bei Ergebnissen mit Fehlern bzw. Warnungen den Bereich
anhand dieser ID genau definieren zu können. Sie finden dann die LocatorID im Result des Webservices wieder und können so Ihre Fehler
bzw. Warnungen leichter lokalisieren.
Preismeldung nach Zimmerkategorie
Ein Beispiel für eine Preisdefinition nach Zimmerkategorien sehen Sie in der folgenden Abbildung.
Grundsätzlich gilt das selbe Prinzip wie bei der Preismeldung nach Zimmernummer. Der einzige Unterschied liegt darin, dass statt dem
Parameter InvCode der Parameter InvTypeCode verwendet wird. Hier geben Sie die Zimmerkategorie an zu der Sie den Preis
definieren wollen. Somit wird bei jedem Zimmer dieser Kategorie der entsprechende Preis hinterlegt. Den Kategorie-Code finden Sie im
Webinterface in den Kategorieeinstellungen bzw. gesammelt unter "Channel Manager -> Schnittstellen-Codes".
Als Beispiel: Im oben angeführten Bild wird für jedes Zimmer der Kategorie "DZ" für die Saison "Winter C" ein Preis von € 99,00 hinterlegt.
Der Response
Success
Bei fehlerfreien Meldungen sieht die Antwort des Services immer folgendermaßen aus:
Warnings
Es besteht die Möglichkeit, dass Warnungen auftreten. Dies ist zum Beispiel der Fall wenn Sie ein ungültiges Datum angeben haben. Dabei würde dieser
Wert ignoriert werden, der Rest aber dennoch abgearbeitet werden.
Die Antwort des Services enthält zwar ein Success-Element, zusätzlich sind aber alle Warnungen angeführt die aufgetreten sind
(siehe folgende Abbildung).
Die Werte werden wie folgt interpretiert:
- ShortText
Eine kurze Beschreibung der Warnung.
- Code
Fehlercode laut opentravel.org Error-Codes.
- Status
Complete steht dafür, dass die Freimeldung abgearbeitet wurde, die Daten übernommen und an den CapServer übertragen wurden.
NotProcessed bedeutet, dass keine Änderungen vorgenommen wurden. Ist in der Regel der Fall wenn eine Anfrage
fehlerhaft ist.
- RecordID
Ist gleichzusetzen mit der LocatorID aus Ihrer Anfrage und zeigt Ihnen somit in welcher AvailSatusMessage die Warnung bzw.
der Fehler aufgetreten ist.
Errors
Es besteht die Möglichkeit, dass Fehler (Errors) auftreten. Hierfür gibt es viele mögliche Gründe wie etwa eine falsche Zimmernummer, eine
falsche Kategorie usw.
Wenn ein Fehler auftritt, werden automatisch keine Änderungen übernommen!
Wie so eine Antwort aussehen kann sehen Sie in der folgenden Abbildung.