Promosyonlar

Genel bakış

Bu API, olası indirimleri belirtmenizi sağlar. Google, belirtilen promosyonlar arasında en düşük fiyata yol açan uygun promosyonu veya promosyon grubunu uygular. Koşullar karşılandığında fiyatı artırabilecek veya azaltabilecek rastgele ücret düzenlemelerini destekleyen bir API arıyorsanız Rate Modifications API'mizi kullanabilirsiniz. Her iki API de mevcutsa ücret değişikliklerinin promosyonlardan önce uygulandığını unutmayın.

İstekler

Söz dizimi

Promotions mesajında aşağıdaki söz dizimi kullanılır:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
            id="message_ID"
            timestamp="timestamp">
  <HotelPromotions hotel_id="HotelID" action="[overlay]">
    <Promotion id="PromotionID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
      </BookingDates>
      <BookingWindow min="integer_or_duration" max="integer_or_duration"/>
      <Ceiling amount_per_night="float"/>
      <Floor amount_per_night="float"/>
      <CheckinDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckoutDates>
      <!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night,
           fixed_price, or fixed_price_per_night; applied_nights is only used
           with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
      <Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

Öğeler ve Özellikler

Tanıtımlar mesajında aşağıdaki öğeler ve özellikler bulunur:

Öğe / @Özellik Yineleme sayısı Tür Açıklama
Promotions 1 Complex element Bir promosyon mesajının kök öğesidir.
Promotions / @partner 1 string Bu mesajın iş ortağı hesabıdır. Bu dize değeri, Hotel Center'ın Hesap ayarları sayfasında listelenen "İş ortağı anahtarı" değeridir.

Birden fazla hesap için feed sağlayan bir arka ucunuz varsa bu değerin aynı hesap için <OTA_HotelRateAmountNotifRQ> ve <OTA_HotelAvailNotifRQ> mesajlarınızın <RequestorID> öğesinde belirtilen ID özellik değeriyle eşleşmesi gerekir.

Promotions / @id 1 string Bu istek mesajının benzersiz tanımlayıcısıdır. Bu değer, yanıt mesajında döndürülür. İzin verilen karakterler a-z, A-Z, 0-9, _ (alt çizgi) ve - (kısa çizgi) şeklindedir.
Promotions / @timestamp 1 DateTime Bu mesajın oluşturulma tarihi ve saati.
Promotions / HotelPromotions 0..n HotelPromotions

Bir tesise ait promosyonlardır. Her promosyon tek bir tesis için geçerlidir.

<Stacking> kullanılmadığı sürece, birden fazla promosyon uygun olduğunda rezervasyona en büyük indirime sahip promosyon uygulanır.

Promotions / HotelPromotions / @hotel_id 1 string Tesisin benzersiz tanımlayıcısıdır. Bu değer, Otel Listesi Feed'indeki <listing> öğesinde <id> kullanılarak belirtilen Otel Kimliği ile eşleşmelidir. Otel Kimliği, Hotel Center'da da listelenir.
Promotions / HotelPromotions / @action 0..1 enum

Belirtilmişse değer "overlay" olmalıdır. Değer "overlay" olduğunda, geçerli mesajda belirtilen promosyonlar depolanmadan önce, depolanan tüm promosyonlar silinir.

Belirtilmezse geçerli mesajda belirtilen her bir promosyon şunlardan biridir:

  • Added (depolanan promosyonların hiçbiri aynı id değerine sahip değilse)
  • Updated (depolanan bir promosyon aynı id değerine sahipse)
  • Deleted (depolanan bir promosyon aynı id değerine sahipse ve geçerli mesajda belirtilen promosyonun action özelliğinin değeri "delete" ise)
Promotions / HotelPromotions / Promotion 0..99 Promotion

Bir tesis için tek bir promosyondur. action="overlay" ve <Promotion> belirtilmezse tesise ait tüm promosyonların silineceğini unutmayın.

99'dan fazla promosyon kullanmanız gerekiyorsa Teknik Hesap Yöneticinizle (THY) iletişime geçin.

Promotions / HotelPromotions / Promotion / @id 1 string Promosyon için benzersiz bir tanımlayıcı. İzin verilen maksimum karakter sayısı 40'tır. İzin verilen karakterler a-z, A-Z, 0-9, _ (alt çizgi), - (kısa çizgi) ve . (nokta) tuşlarına basın.
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Belirtilmişse değer delete olmalıdır. Belirtilmezse ve aynı id değerine sahip bir promosyon depolanmıyorsa bu promosyon depolanır. Aksi takdirde belirtilmezse ve aynı id değerine sahip bir promosyon depolanırsa mevcut promosyon güncellenir.

delete belirtilirse aynı id değerine sahip depolanan promosyon silinir. delete kullanırken <Promotion> öğesine alt öğe eklemeyin. Ayrıca, <HotelPromotions action="overlay"/> ile birlikte delete öğesinin kullanılmasına izin verilmez.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates Promosyonun uygulanabilmesi için rezervasyonun ne zaman gerçekleşmesi gerektiğini tanımlayan bir veya daha fazla aralığın kapsayıcısıdır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange Promosyonun uygulanabilmesi için rezervasyonun ne zaman gerçekleşmesi gerektiğini belirten aralıktır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date veya DateTime

Aralığın (tesisin saat dilimine göre) başlangıç tarihi veya tarihidir.

  • start tarafından belirtilen tarih veya tarih ve saat, end tarafından belirtilen tarihten ya da tarih ve saatten önce (veya bu tarih veya saatle aynı) olmalıdır.
  • start belirtilmezse aralık, başlangıç zamanı açısından etkin bir şekilde sınırsızdır.
  • start tarihi "YYYY-AA-GG" olarak doldurulursa tarih ve saat "YYYY-AA-GGT00:00:00" olarak yorumlanır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date veya DateTime

Aralığın bitiş tarihi veya tarihi (tesisin bulunduğu saat dilimine göre).

  • end tarafından belirtilen tarih veya tarih ve saat, start tarafından belirtilen tarih veya tarih ile aynı olmalıdır.
  • end belirtilmezse aralık, bitiş zamanı açısından etkin bir şekilde sınırsızdır.
  • end tarihi "YYYY-AA-GG" olarak sağlanırsa tarih ve saat "YYYY-AA-GGT23:59:59" olarak yorumlanır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günleri ifade eder. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir.

Geçerli karakterler şunlardır:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Giriş tarihine göre rezervasyonun gerçekleşmesi gereken dönemi belirtir (tesisin saat dilimine göre). Örneğin, rezervasyon aralığı check-in işleminden en az 7 gün önce olarak ayarlanabilir ancak 180 günden uzun olamaz.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden önce gerçekleşmesi gereken minimum süredir. Belirtilmezse veya değeri 0 ise minimum değer yoktur.

Geçerli değer türleri şunlardır:

  • Tam sayı: Giriş tarihinden önceki gün sayısı. Örneğin, 30 değeri, promosyonun yalnızca giriş tarihinden en az 30 gün önceki rezervasyonlar için geçerli olduğunu gösterir.
  • ISO 8601 Süresi (gün, saat ve dakika): Giriş tarihinden önceki gün sayısı (ve isteğe bağlı olarak saat/dakika). Örneğin, P30D değeri, promosyonun yalnızca giriş tarihinden en az 30 gün önceki rezervasyonlar için geçerli olduğunu gösterir. P30DT6H değeri, varıştan önceki 30. gün saat 18:00'de veya öncesinde rezervasyon yapılmasını gerektirir.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden maksimum kaç gün önce yapılması gerektiğini belirtir. Bu belirtilmezse veya değeri 0 ise maksimum değer yoktur.

Geçerli değer türleri şunlardır:

  • Tam sayı: Giriş tarihinden önceki gün sayısı. Örneğin, 30 değeri, promosyonun yalnızca giriş tarihinden en fazla 30 gün önceki rezervasyonlar için geçerli olduğunu gösterir.
  • ISO 8601 Süresi (gün, saat ve dakika): Giriş tarihinden önceki gün sayısı (ve isteğe bağlı olarak saat/dakika). Örneğin, P30D değeri, promosyonun yalnızca giriş tarihinden en fazla 30 gün önceki rezervasyonlar için geçerli olduğunu gösterir. P30DT6H değeri, varıştan önceki 30. gün saat 18:00'de veya sonrasında rezervasyon yapılmasını gerektirir.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Promosyonlar uygulandıktan sonra ücretin ayarlanabileceği maksimum değerle ilgili kısıtlamaları tanımlar.

Promosyonlar her zaman bir <Discount> veya <BestDailyDiscount> belirtmelidir. Bu nedenle, yalnızca <Ceiling> için geçerli olan bir promosyon oluşturmak için percentage değeri 0 ile <Discount> belirlemek bir seçenektir.

Yığınlama yapılandırılırsa <Ceiling> özelliğine sahip birden fazla promosyon tek bir konaklama için geçerli olabilir. Her promosyonda indirim uygulanır ve hemen ardından tavan fiyat uygulanır. Aşağıdaki örnek, her bir tavanın yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğunu gösterir.

Örnek:

AmountBeforeTax 100 kişilik ve iki promosyonluk bir yığının olduğu 1 gecelik konaklamanın fiyatlandırması:

  1. Yığın türü base, fixed_amount 25 ve tavan amount_per_night 60 ile promosyon
  2. Yığın türü second, fixed_amount/25 ve tavan amount_per_night(90) ile promosyon

Hesaplama sırası şöyledir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax promosyonda indirim tutarı 75'e düşürülür. Daha sonra üst sınır, promosyonu 60'a düşürür.
  2. second promosyonu, AmountBeforeTax olan değeri 60'tan 35'e indirir. Bu, 90 derecelik tavanın altında olduğu için ikinci tavan uygulanmaz. Son oran 35'tir.

60 değerinin daha katı bir genel üst sınır olması, yalnızca kendi promosyonu için geçerli olduğundan ve promosyon yığınının tamamını kapsayan tek bir tavan olamayacağından, hiçbir fark yoktur.

Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night 1 float

İndirim uygulandıktan sonra gecelik ücretin ayarlanabileceği maksimum tutardır.

Ayrıca <Floor> öğesi belirtilmişse bu, <Floor> içindeki amount_per_night özelliğine eşit veya bundan büyük bir değere ayarlanmalıdır.

amount_per_night, AmountAfterTax kullanılarak gecelik fiyata dahil edildiğinde vergi ve ücretlere uygulanır ancak TaxFeeInfo kullanılarak belirtilenlere uygulanmaz.

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

Promosyonlar uygulandıktan sonra ücretin ayarlanabileceği minimum değerle ilgili kısıtlamaları tanımlar.

Promosyonlar her zaman bir <Discount> veya <BestDailyDiscount> belirtmelidir. Bu nedenle, yalnızca <Floor> için geçerli olan bir promosyon oluşturmak için percentage değeri 0 ile <Discount> belirlemek bir seçenektir.

Ücretsiz geceye 100% indirimi uygulansa bile <Floor> mantığı, <FreeNights> indirimleri için geçerlidir.

Yığınlama yapılandırılırsa <Floor> özelliğine sahip birden fazla promosyon tek bir konaklama için geçerli olabilir. Her promosyonda önce indirim uygulanır, ardından taban fiyat gelir. Aşağıdaki örnekte, her bir tabanın yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax 100 kişilik ve iki promosyonluk bir yığının olduğu 1 gecelik konaklamanın fiyatlandırması:

  1. Yığın türü base, fixed_amount değeri 25 ve taban fiyatı 90 amount_per_night olan promosyon
  2. Yığın türü second, fixed_amount/25 ve taban fiyatı 60 amount_per_night olan promosyon

Hesaplama sırası şöyledir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax indirimle 75'e düşürülür, ardından taban fiyat 90'a kadar yükseltilir.
  2. second promosyonu, AmountBeforeTax olan fiyatı 90'dan 65'e indirir. Bu değer, 60 olan tabandan yüksek olduğu için ikinci kat uygulanmaz. Son oran 65'tir.

90'ın daha katı bir genel taban olması, yalnızca kendi promosyonu için geçerli olduğundan ve promosyon yığınının tamamını kapsayan tek bir taban olamayacağından önemli değildir.

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

İndirim uygulandıktan sonra gecelik ücretin ayarlanabileceği minimum tutardır.

Ayrıca bir <Ceiling> öğesi belirtilmişse bu, <Ceiling> içindeki amount_per_night özelliğine eşit veya bundan küçük bir değere ayarlanmalıdır.

amount_per_night, AmountAfterTax kullanılarak gecelik fiyata dahil edildiğinde vergi ve ücretlere uygulanır ancak TaxFeeInfo kullanılarak belirtilenlere uygulanmaz.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Promosyonun uygulanabilmesi için check-in işleminin ne zaman yapılması gerektiğini tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Promosyonun uygulanabilmesi için check-in işleminin ne zaman yapılması gerektiğini belirten tarih aralığıdır. Bir veya daha fazla promosyonu siliyorsanız bu öğe gerekli değildir.

YearlessDate biçimi de desteklenir.

  • start veya end tarihlerinden biri yıl belirtilmemişse her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yılsız tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterin. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) başlangıç tarihidir. Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) bitiş tarihidir. Bu tarih, start tarihiyle aynı veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günleri ifade eder. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir.

Geçerli karakterler şunlardır:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Promosyonun uygulanabilmesi için ne zaman çıkış yapılması gerektiğini tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Promosyonun uygulanabilmesi için ne zaman çıkış yapılması gerektiğini belirten tarih aralığıdır. Bir veya daha fazla promosyonu siliyorsanız bu öğe gerekli değildir.

YearlessDate biçimi de desteklenir.

  • start veya end tarihlerinden biri yıl belirtilmemişse her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yılsız tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterin. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) başlangıç tarihidir. Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) bitiş tarihidir. Bu tarih, start tarihiyle aynı veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günleri ifade eder. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir.

Geçerli karakterler şunlardır:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Promosyon için uygun olan kullanıcı cihazlarını listeleyen kapsayıcıdır. Belirtilirse yalnızca listelenen cihazlardaki uygun kullanıcılara indirimli fiyat sunulur. Belirtilmezse tüm cihazlardaki uygun kullanıcılara indirimli fiyat sunulur.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Promosyon için uygun olan bir kullanıcı cihazı türünü tanımlar.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Bir cihaz türü. Değer desktop, tablet veya mobile olmalıdır.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Tam olarak bir Discount veya BestDailyDiscount belirtilmelidir.

Bu promosyon için uygulanacak indirimi belirtir.

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

Tam olarak percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden biri gereklidir.

0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir. AmountAfterTax (veya AmountAfterTax belirtilmezse AmountBeforeTax) için uygulanır.

Örnekler:

  • AmountAfterTax 100 ve percentage 20 ise bu durumda

    promosyon ücreti = AmountAfterTax * (1 - yüzdelik indirim)

    80,00 = 100 * (1 - 0,2)

  • AmountBeforeTax değeri 100, percentage 20 ve TaxFeeInfo'da 10 değerinde vergi belirtiliyorsa bu durumda

    promosyon ücreti = AmountBeforeTax * (1 - yüzdelik indirim) + vergi

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Tam olarak percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden biri gereklidir.

AmountAfterTax gecelik ücretlerin (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücretlerin) toplamından çıkarılacak sabit tutardır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. Bu değer, gecelik ücretlerin toplamından büyükse elde edilen değer sıfır olur.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax 90, AmountAfterTax 100 ve fixed_amount 20 olacak şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • 1 gecelik konaklamayı AmountBeforeTax değeri 100, fixed_amount 20 olacak ve TaxFeeInfo'da %8 vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * (1 + yüzdelik vergi)

    86,40 = (100 - 20) * 1,08

  • 1 gecelik konaklamayı AmountBeforeTax değeri 50, fixed_amount 60 olacak ve TaxFeeInfo'da 10 değerinde vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * vergi

    10,00 = 0 + 10

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount değeri ise 150 olacak şekilde fiyatlandırırsak

    promosyon ücreti = toplam(AmountAfterTax) - (sabit indirim)

    180,00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

Tam olarak percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden biri gereklidir.

AmountAfterTax gecelik ücretlerin her birine (veya applied_nights belirtilirse en ucuz N değerine) uygulanan sabit indirimdir. AmountAfterTax belirtilmezse AmountBeforeTax için uygulanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. fixed_amount_per_night değeri, bir gecelik ücretten büyükse bu gecelik ücret sıfıra düşürülür. İndirim, gecelik fiyatın negatif olmasına neden olamaz.

Örnekler:

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount_per_night değeri de 10 olacak şekilde fiyatlandırırsak

    promosyon ücreti = toplam(AmountBeforeTax - sabit tutar indirimi)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • 3 gecelik konaklamayı AmountAfterTax değerleri 10, 50 ve 100, fixed_amount_per_night değeri 20 olacak şekilde fiyatlandırırsak

    promosyon ücreti = toplam(AmountAfterTax - sabit tutar indirimi)

    110,00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

Tam olarak percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden biri gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu işlem, konaklama fiyatını (vergi ve ücretler dahil) belirtilen değere belirler. AmountBeforeTax belirtilirse AmountAfterTax değerinin belirtildiğinden bağımsız olarak konaklamanın vergi öncesi fiyatı belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax ürününün yüzdelik vergiyi yansıtması amaçlanıyorsa AmountBeforeTax için sabit fiyat belirlemek vergi ve ücretlerin hatalı olmasına yol açabilir. Genel olarak, tesisin vergi ve ücretlerini belirtmek için TaxFeeInfo kullanmanız kesinlikle önerilir.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax 90, AmountAfterTax 100 ve fixed_price 80 olacak şekilde fiyatlandırırsak promosyon ücreti 80 olur.
  • 1 gecelik konaklamayı AmountBeforeTax değeri 100, fixed_amount 80 olacak ve TaxFeeInfo'da %8 oranında vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = sabit fiyat * (1 + yüzdelik vergi)

    86,40 = 80 * 1,08

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount değeri ise 300 olacak şekilde fiyatlandırırsak

    promosyon ücreti = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

Tam olarak percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden biri gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu işlem, konaklamanın her gecesinin fiyatını (vergi ve ücretler dahil) belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax değerinin belirtildiğinden bağımsız olarak her konaklama gecesi için vergi öncesi fiyatı belirtilen değere ayarlar. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax ürününün yüzdelik vergiyi yansıtması amaçlanıyorsa AmountBeforeTax için sabit fiyat belirlemek vergi ve ücretlerin hatalı olmasına yol açabilir. Genel olarak, tesisin vergi ve ücretlerini belirtmek için TaxFeeInfo kullanmanız kesinlikle önerilir.

applied_nights belirtilirse yeni fiyat en ucuz N geceye uygulanır.

Örnekler:

  • 2 gecelik konaklamayı AmountBeforeTax değerleri 90 ve 90; AmountAfterTax değerleri 100, 100 ve fixed_price değerleri 80 olacak şekilde fiyatlandırırsak promosyon ücreti 80 + 80 = 160 olur.
  • 2 gecelik konaklamayı AmountBeforeTax değeri 100, 100; fixed_amount değeri 80 ve TaxFeeInfo'da %8 oranında bir vergi belirtecek şekilde fiyatlandırırsak promosyon oranı (80 + 80) * 1, 08 = 172,8 olur.
  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount değeri ise 110 olacak şekilde fiyatlandırırsak promosyon ücreti 110 x 3 = 330 olur.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Bu yalnızca percentage veya fixed_amount_per_night ile kullanılmalıdır.

En ucuz olandan başlayarak indirimin uygulandığı gece sayısıdır. 1 ile 99 arasında bir tam sayı olmalıdır. Belirtilmezse indirim tüm gecelere uygulanır.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Minimum konaklama süresi karşılandığında konaklamanın belirli gecelerinde yapılacak indirimi belirtir. Bu öğe kullanılıyorsa üst Discount öğesindeki özelliklere izin verilmez.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

İndirimin uygulanması için gerekli gece sayısıdır. Her indirim, konaklama gecelerinin ayrı bir segmentine uygulanır.

Örneğin, stay_nights değerinin 4 olduğu (ve repeats değerinin doğru olduğu) 10 gecelik bir konaklama için geceleri konaklama segmenti ikiye ayrılmaktadır: 1. ile 4. geceler arasındakiler ve 5. ile 8. geceler; 9. ve 10. geceler, konaklama gecesi segmentine dahil değildir.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Konaklama gecelerinin her bir segmentindeki indirimli gecelerin sayısı.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float İndirimli gecelere uygulanan indirimdir. Bu değer 50 ise seçilen her gece için% 50 indirim uygulanır.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string cheapest veya last olmalıdır. last ise konaklama geceleri segmentinin sonundaki geceler için indirim uygulanır. cheapest ise konaklama geceleri segmenti dahilindeki en ucuz geceler için indirim uygulanır.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

İndirimin birden fazla konaklama gecesi segmentine uygulanıp uygulanamayacağı. false ise yalnızca seyahat planının başlangıcındaki konaklama geceleri segmentine indirim uygulanır. true ise konaklama gecelerinin tüm segmentlerinde indirim uygulanır.

Örneğin, stay_nights 4 ve seyahat planı 10 gece ise repeats true ise 2 segment indirimli olur (1-4. geceler ve 5-8. geceler; ancak repeats false ise yalnızca 1 segment indirimli olur (1-4 geceler).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Bu promosyona bir sıralama atar ve yalnızca en düşük sıralamaya sahip promosyonun uygulanmak üzere seçildiği sıralı seçime dahil edilir. Değerler 1 ile 99 arasında (1 ve 99 dahil) olmalıdır. Birden fazla promosyon aynı sıralamayı paylaşıyorsa rastgele biri seçilir ve uygulanır.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Tam olarak bir Discount veya BestDailyDiscount belirtilmelidir.

Konaklama gecesine uygulanabilecek günlük indirimi belirtir. Bu, tüm konaklamalara indirim uygulanan Discount özelliğinin aksine.

Her tesisin, "günlük en iyi" olarak kabul edilen tek bir promosyon grubu olabilir. Yani, konaklama yapılan her gece için uygun olan ve o gece için en kapsamlı indirimi sağlayan tek bir "günlük en iyi" promosyon seçilir ve uygulanabilir.

Stacking, BestDailyDiscount ile belirtilemez. Her gece için en büyük indirimi sağlayan "en iyi günlük" indirimler birleştirilir ve yığınlama türü base olarak ayarlanmış tek bir konaklama indirimi (ör. Discount) olarak değerlendirilir. Bu birleşik indirim, en kapsamlı indirimi sağlayan indirimin veya kombinasyonun bulunması için diğer uygun <İndirim> promosyonlarıyla karşılaştırılır ve bir arada kullanılabilir. BestDailyDiscount kombinasyonu veya daha düşük fiyatı veren tek bir Discount kombinasyonu seçilir ve base yığın türü için uygulanır.

StayDates bu indirim türüyle belirtilebilir ancak application, overlap olarak ayarlanmalıdır

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir. AmountAfterTax (veya AmountAfterTax belirtilmezse AmountBeforeTax) için uygulanır.

Örnekler:

  • Konaklama gecesi için AmountAfterTax 100 ve percentage 20 ise bu durumda

    promosyon ücreti = AmountAfterTax * (1 - yüzdelik indirim)

    80,00 = 100 * (1 - 0,2)

  • Konaklama süresi için AmountBeforeTax değeri 100, percentage 20 ve TaxFeeInfo'da 10 değerinde vergi belirtiliyorsa bu durumda

    promosyon ücreti = AmountBeforeTax * (1 - yüzdelik indirim) + vergi

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

Tek bir AmountAfterTax gecelik ücretten (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücret) çıkarılacak sabit tutardır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. Bu değer, gecelik ücretlerin toplamından büyükse elde edilen değer sıfır olur.

Örnekler:

  • Tek bir gece için AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_amount 20 ise bu durumda

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • Tek bir gece için AmountBeforeTax değeri 100, fixed_amount 20 ve TaxFeeInfo'da %8 oranında vergi belirtiliyorsa bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * (1 + yüzdelik vergi)

    86,40 = (100 - 20) * 1,08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu işlem, konaklama gecesi fiyatını (vergi ve ücretler dahil) belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax değerinin belirtildiğinden bağımsız olarak konaklamanın vergi öncesi fiyatı belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

Örnekler:

  • Tek bir gece için AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_price 80 ise promosyon ücreti 80 olur.
  • Tek bir gece için AmountBeforeTax değeri 100, fixed_amount 80 ve TaxFeeInfo'da %8 oranında vergi belirtiliyorsa bu durumda

    promosyon ücreti = sabit fiyat * (1 + yüzdelik vergi)

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Bu promosyonun uygulanabilmesi için müsait olması gereken oda sayısıyla ilgili kısıtlamaları tanımlar. İndirim, yalnızca kısıtlamaya uyan gecelere uygulanır. fixed_amount indirimiyle birlikte kullanılmasına izin verilmez. Müsait oda sayısının OTA_HotelInvCountNotifRQ (InvCount) veya OTA_HotelAvailNotifRQ (BookingLimit) ile belirtildiğini unutmayın.
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer Promosyonun gecelik fiyata uygulanabilmesi için müsait olması gereken minimum oda sayısıdır. Belirtilmezse minimum değer yoktur.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer Promosyonun gecelik ücrete uygulanabilmesi için müsait olması gereken maksimum oda sayısıdır. Belirtilmezse maksimum değer yoktur.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Bu promosyonun uygulanabileceği konaklama süresi sınırlarını belirler. Konaklama süresi minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer Promosyonun uygulanabilmesi için konaklama süresinde izin verilen minimum gece sayısıdır. Belirtilmezse minimum değer yoktur.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer Promosyonun uygulanabilmesi için konaklama süresinde izin verilen maksimum gece sayısıdır. Belirtilmezse maksimum değer yoktur.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

İlişkili indirim için belirli bir kullanıcı arayüzü işlemini tetikleyen üyelik ücreti kuralının kapsayıcısıdır.

<Discount> belirtilmediği sürece bu öğe belirtmemelidir.

Promotions / HotelPromotions / Promotion / MembershipRateRule / @id 1 string

Üyelik programıyla ilişkili ücret kuralının kimliği.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Promosyonun uygulanabilmesi için aşılması gereken günlük oda fiyatlarının (AmountBeforeTax veya AmountAfterTax değerinden büyük olanı kullanılarak) minimum toplamını belirtir.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer Promosyonun uygulanabilmesi için aşılması gereken değerdir.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Bu promosyonun uygulandığı kişi sayısıyla ilgili kısıtlamaları tanımlar. Doluluk, minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer İndirimin uygulanabilmesi için kullanıcı tarafından belirtilen doluluk değerinin en az bu değer olması gerekir.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer İndirimin uygulanabilmesi için kullanıcı tarafından belirtilen doluluk değerinin en fazla bu değer olması gerekir.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Promosyonun geçerli olduğu ücret planları listesinin kapsayıcısıdır. <RatePlans> belirtilmezse promosyon tüm ücret planları için geçerlidir.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Ücret planını belirtir. Ücret planı; Transaction (Tesis Verileri), OTA_HotelRateAmountNotifRQ ve OTA_HotelAvailNotifRQ mesajlarında tanımlanan ve PackageID tarafından tanımlanan paket, ücret ve stok durumunun kombinasyonuyla tanımlanır.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string Ücret planının benzersiz tanımlayıcısıdır. Bu değer, Transaction (Tesis Verileri) mesajındaki <PackageData> öğesinde ve hem <OTA_HotelRateAmountNotifRQ> hem de <OTA_HotelAvailNotifRQ> mesajlarında <StatusApplicationControl> içinde yer alan RatePlanCode özelliğinde bulunan PackageID değeriyle eşlenir. İzin verilen maksimum karakter sayısı 50'dir.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Promosyonun geçerli olduğu oda türleri listesinin kapsayıcısıdır. Promosyon, belirtilen her bir <RoomType> için geçerlidir. <RoomTypes> belirtilmezse promosyon tüm odalar için geçerli olur.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Oda türünü belirtir. Oda türü, Transaction (Tesis Verileri) mesajındaki bir <RoomData> öğesinde tanımlanır ve <RoomID> değeri kullanılarak referans verilir. (<RoomID> değerine, OTA_HotelRateAmountNotifRQ mesajlarındaki InvTypeCode özelliği tarafından da referans verilir.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string Envanterin benzersiz tanımlayıcısıdır (oda türü). Bu değer, Transaction (Tesis Verileri) mesajlarındaki <RoomID> ile eşlenir. İzin verilen maksimum karakter sayısı 50'dir.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Promosyonların nasıl birleştirilebileceğini belirtir. Belirtilmezse "type" base olarak kabul edilir.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Bu ayara bağlı olarak tek bir ücrete birden fazla promosyon uygulanabilir:

  • any: Diğer herhangi bir promosyonla birleştirilebilir (none hariç) ancak promosyonların uygulanması gereken sıra garanti edilmez.
  • base: En uygun base promosyonu seçilir ve diğer promosyonlardan önce ilk olarak uygulanır. Daha önce base_only olarak adlandırılıyordu.
  • second: Uygun olan en iyi second promosyonu (varsa) base promosyondan sonra ve any promosyonlarından önce seçilir ve uygulanır.
  • none: Diğer promosyonlarla birleştirilemez.

İzin verilen kombinasyonlar arasından en yüksek indirimi sağlayan promosyon grubu ücrete uygulanır.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Sezonluk indirimlerin karşılanması gibi amaçlarla promosyonun nasıl uygulanacağını belirleyen bir veya daha fazla tarih aralığının kapsayıcısıdır.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Promosyonun nasıl uygulanması gerektiğini açıklar.

Valid values are:

  • all: Seyahat planındaki tüm tarihler konaklama tarihleriyle çakışıyorsa promosyonu seyahat planındaki her geceye uygular.
  • any: Seyahat planındaki herhangi bir tarih, konaklama tarihleri aralığındaki bir tarihle çakışıyorsa promosyonu seyahat planındaki tüm gecelere uygular.
  • overlap: Promosyonu yalnızca konaklama tarihleri aralığındaki bir tarihle çakışan seyahat planındaki gecelere uygular.

Bu özellik her zaman belirtilmelidir.

  • <Discount> öğesinde percentage değeri belirtilirse ve application, all veya any olarak ayarlanırsa indirim, tam konaklama yüzdesi olarak uygulanır.
  • <Discount> öğesinde percentage değeri belirtilirse ve application, overlap olarak ayarlanırsa indirim, çakışan geceler için gecelik ücretlerin yüzdesi olarak uygulanır.
  • <Discount> öğesinde fixed_amount değerinin belirtilmesi ve application öğesinin overlap olarak ayarlanması geçersiz bir kombinasyondur.
  • <FreeNights>, tüm application değerlerini destekler. overlap için, indirim koşullarında yalnızca çakışan konaklama gecelerinin dikkate alındığını unutmayın.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Promosyonun uygulanacağı tarihleri belirten tarih aralığıdır.

YearlessDate biçimi de desteklenir.

  • start veya end tarihlerinden biri yıl belirtilmemişse her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yılsız tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterin. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) başlangıç tarihidir. Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (tesisin bulunduğu saat dilimine göre) bitiş tarihidir. Bu tarih, start tarihiyle aynı veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günleri ifade eder. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir.

Geçerli karakterler şunlardır:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Promosyon için uygun olan kullanıcı konumlarını (ülkeleri) listeleyen kapsayıcıdır. Belirtilirse yalnızca listelenen ülkelerdeki uygun kullanıcılara indirimli fiyat sunulur. Belirtilmezse tüm ülkelerdeki uygun kullanıcılara indirimli fiyat sunulur.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum UserCountry spesifikasyonunun türü.

Geçerli değerler include ve exclude değerleridir.

UserÜlkeler type değeri include olarak ayarlanırsa promosyon, listelenen ülkelerdeki kullanıcılar için geçerli olur.

Kullanıcı ülkeleri type değeri exclude ise promosyon, listelenen ülkelerin dışındaki kullanıcılar için geçerli olur.

UserCountry (type) değeri ayarlanmazsa include olarak değerlendirilir ve promosyon, listelenen ülkelerdeki kullanıcılara uygulanır.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Kullanıcıların promosyon için uygun olduğu bir ülkeyi tanımlar.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string DE veya FR gibi bir CLDR ülke kodu. Bazı ülkelerde CLDR ülke kodunun 2 harfli ISO ülke koduyla aynı olmadığını unutmayın. Ayrıca, CLDR bölge kodları desteklenmez.

Örnekler

Temel mesaj

Aşağıdaki örnekte temel bir Promotions mesajı gösterilmektedir:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <Discount percentage="20" applied_nights="2"/>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <Stacking type="base"/>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>


Envanter koşulu

Aşağıdaki örnekte, varış tarihine yakın fazla envanter varsa nasıl indirim oluşturulacağı gösterilmektedir:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow max="7"/>
      <Discount percentage="10"/>
      <InventoryCount min="3"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Bir promosyonu silme

Aşağıdaki örnekte, bir tesise ait promosyonun nasıl silineceği gösterilmektedir:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1" action="delete"/>
  </HotelPromotions>
</Promotions>

Tüm promosyonları sil

Aşağıdaki örnekte, bir tesise ait tüm promosyonların nasıl silineceği gösterilmektedir:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>



Tüm promosyonları yer paylaşımlı olarak göster

Aşağıdaki örnekte, bir veya daha fazla yeni promosyonla bir tesis için <HotelPromotions> değerinin nasıl üstleneceği gösterilmektedir. action="overlay" olduğunda, geçerli mesajda belirtilen promosyonlar depolanmadan önce, depolanan tüm promosyonlar silinir:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <Discount percentage="10"/>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <Stacking type="base"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

3 Farklı Birleştirme Türü

Aşağıdaki örnekte, üç farklı promosyonun uygulanacağı bir durum gösterilmektedir (base, second, any). Diğer promosyonlar daha iyi indirim sağladığı için none promosyonu uygulanmaz. Orijinal fiyat 100 ABD doları olsaydı indirimli fiyat 72, 90 ABD doları olurdu.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="second"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="4">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Yok Yığma Türü

Aşağıdaki örnekte, diğer promosyonların kombinasyonu daha düşük bir indirim sağladığı için none promosyonunun kullanıldığı bir durum gösterilmektedir. Orijinal fiyat 100 ABD doları olsaydı indirimli fiyat 75 ABD doları olurdu.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



Rezervasyon Aralığı Süre Sınırları

Aşağıdaki örnekte, BookingWindow öğesinin başlangıç ve bitiş sınırları ISO 8601 Süre türü olarak tanımlanmış şekilde kullanıldığı bir durum gösterilmektedir. Bu rezervasyon aralığı kısıtlamasında, varıştan önceki gün 18:00 veya öncesinde, varıştan önceki 2. gün saat 12:00'de veya sonrasında rezervasyon yapılması gerekir.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow min="P1DT6H" max="P2DT12H"/>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Rezervasyon Tarihleri Tarih ve Saat Sınırları

Aşağıdaki örnekte, BookingDates öğesinin DateTime türü olarak start ve end özellikleriyle kullanıldığı bir durum gösterilmektedir. Bu rezervasyon tarihi kısıtlaması nedeniyle rezervasyonun 01.07.2020 06:30 ile 02.07.2020 18:45 arasında gerçekleşmesi gerekir.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
      </BookingDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Yılsız tarih aralıkları

Aşağıdaki örnekte, CheckInDates öğesinin yıl içermeyen start ve end alanlarına sahip DateRanges içerdiği bir durum gösterilmektedir. Bu örnekte promosyon, yıldan bağımsız olarak 29.12 ile 01.02 arasındaki giriş tarihleri için geçerlidir. Yeni yıl sınırını geçen yılsız tarih aralıkları geçersiz olduğundan DateRange, bitişik iki tarih aralığı olarak ifade edilir.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <CheckInDates>
         <DateRange start="12-29" end="12-31"/>
         <DateRange start="01-01" end="01-02"/>
      </CheckInDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



FreeNights indirimi

Aşağıdaki örnekte, belirtilen rezervasyon tarihleri aralığı boyunca konaklanan her dört gece için iki gecelik% 50 indirim yapılmaktadır. On gecelik seyahat planında toplam dört gecelik tutara %50 indirim uygulanır.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
        <DateRange start="2022-01-01" end="2022-05-31"/>
      </BookingDates>
      <Discount>
        <FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>

Bir sonraki örnek, belirtilen konaklama tarihleri aralığı için konaklanan her üç gece için bir gece% 50 indirim yapıyor. İndirimden yararlanmaya hak kazanmak için yalnızca çakışan konaklama geceleri hesaba katılır. 01.01.2022 check-in ve 7.01.2022 tarihinde çıkış yapılan aşağıdaki seyahat planı için uygun konaklama geceleri ve indirimler aşağıdaki şekilde uygulanır.

  • 01.01.2022 (kalın)
  • 02.01.2022 (kalın)
  • 2022-01-03
  • 04.01.2022 (indirimli)
  • 05.01.2022 (kalın)
  • 06.01.2022 (kalın)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <StayDates application="overlap">
        <DateRange start="2022-01-01" end="2022-01-02"/>
        <DateRange start="2022-01-04" end="2022-01-06"/>
      </StayDates>
      <Discount>
        <FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>


Sıralı Seçim

Aşağıdaki örnekte biri% 20 ve diğeri% 15 indirim olmak üzere iki indirim sunulmaktadır. Değerlendirme sırasında daha düşük bir sıralamaya sahip olduğundan yalnızca% 15'lik indirim uygulanır.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="15" rank="25"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="20" rank="50"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

BestDailyDiscount

Aşağıdaki örnekte, Discount ile birlikte BestDailyDiscount uygulayarak iki gecelik konaklamada indirim yapılmaktadır.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
 <HotelPromotions hotel_id="HotelID" action="overlay">
   <Promotion id="general">
     <BestDailyDiscount fixed_amount="20"/>
   </Promotion>
   <Promotion id="may">
     <BestDailyDiscount fixed_amount="50"/>
     <StayDates application="overlap">
        <DateRange start="2023-05-01" end="2023-05-31"/>
     </StayDates>
   </Promotion>
   <Promotion id="fiesta">
     <Discount fixed_amount_per_night="5"/>
     <Stacking type="any"/>
   </Promotion>
 </HotelPromotions>
</Promotions>

30 Nisan 2023 ile 2 Mayıs 2023 tarihleri arasında iki gecelik konaklamayı düşünebilirsiniz. Hesaplamada, en yüksek indirimi sağlayan en iyi günlük indirimler kombinasyonu bulunur.

İlk gece "genel" promosyon, 20 sabit indirimle uygun olan tek tutardır.

İkinci gece için ise “olabilir” promosyonu “genel” indirimden daha kapsamlı bir indirim sunar. Yani, "olabilir" seçildiğinde sabit indirim tutarı 50 olur.

Ardından, konaklama süresince "fiesta" promosyonu gecelik 5 ya da toplam 10 indirim uygulanır. "Fiesta"nın yığın türü any olarak ayarlandığı için indirim, en iyi günlük indirimlerin kombinasyonuyla birleştirilebilir. Teklif base olarak ayarlanırsa yalnızca en iyi günlük indirimler veya "fiesta" indirimi kombinasyonu uygulanır. Daha fazla bilgi için Stacking açıklamasına bakın.

Konaklama ücretine genel olarak 20 + 50 + 10 = 80 sabit tutarda indirim uygulanır.

Yanıtlar

Söz dizimi

PromotionsResponse mesajında aşağıdaki söz dizimi kullanılır:

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues are populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code"
           status="issue_type">
      issue_description
    </Issue>
  </Issues>
</PromotionsResponse>

Öğeler ve Özellikler

PromotionsResponse mesajı aşağıdaki öğelere ve özelliklere sahiptir:

Öğe / @Özellik Yineleme sayısı Tür Açıklama
PromotionsResponse 1 Complex element Alınan Tanıtımlar istek mesajının başarısını veya sorunlarını gösteren kök öğedir.
PromotionsResponse / @timestamp 1 DateTime Bu mesajın oluşturulma tarihi ve saati.
PromotionsResponse / @id 1 string İlişkilendirilmiş Tanıtımlar mesajındaki benzersiz tanımlayıcı.
PromotionsResponse / @partner 1 string Bu mesajın iş ortağı hesabıdır.
PromotionsResponse / Success 0..1 Success Tanıtımlar mesajının uyarı, hata veya sorun olmadan başarıyla işlendiğini belirtir.

Her mesajda <Success> veya <Issues> bulunur.

PromotionsResponse / Issues 0..1 Issues Tanıtımlar mesajı işlenirken karşılaşılan bir veya daha fazla sorun için bir kapsayıcıdır.

Her mesajda <Success> veya <Issues> bulunur.

PromotionsResponse / Issues / Issue 1..n Issue Tanıtımlar mesajı işlenirken karşılaşılan uyarı, hata veya sorunun açıklaması. Bu sorunlarla ilgili ayrıntılar Feed Durumu Hata Mesajları bölümünde bulunabilir.
PromotionsResponse / Issues / Issue / @code 1 integer Sorunun tanımlayıcısıdır.
PromotionsResponse / Issues / Issue / @status 1 enum

Karşılaşılan sorunun türü.

Geçerli değerler warning, error ve failure değerleridir.

Örnekler

Başarılı

Aşağıda, başarıyla işlenmiş bir Tanıtımlar iletisine verilen yanıt yer almaktadır.

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</PromotionsResponse>

Sorunlar

Aşağıda, hatalar nedeniyle işlenmemiş bir Tanıtımlar mesajına yanıt yer almaktadır.

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</PromotionsResponse>