Promosyonlar

Genel Bakış

Bu API, olası indirimleri belirtmenize olanak tanır. Google, belirtilen promosyonlar arasından en düşük fiyatı sağlayan uygun promosyonu veya promosyon grubunu uygular. Koşullar karşılandığında fiyatı artırıp azaltabilecek keyfi fiyat ayarlamalarını 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 şu 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, percentage_of_base, 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" percentage_of_base="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

Promosyonlar 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 genelinde <OTA_HotelRateAmountNotifRQ> ve <OTA_HotelAvailNotifRQ> mesajlarınızın ID öğesinde belirtilen <RequestorID> ö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 saatidir.
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ı. 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

Belirtilirse 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 promosyona şu işlemlerden biri yapılır:

  • 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 promosyondaki action özelliğinin değeri "delete" ise)
Promotions / HotelPromotions / Promotion 0..99 Promotion

Bir tesise ait tek bir promosyondur. action="overlay" ise ve <Promotion> belirtilmezse özellik için 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 Promosyonun benzersiz tanımlayıcısıdır. İ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) şeklindedir.
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Belirtilirse 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ıyorsa mevcut promosyon güncellenir.

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

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

Aralığın başlangıç tarihi veya saati (tesisin bulunduğu saat dilimine göre)

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

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

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

Tarih aralığında izin verilen günlerdir. 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çindeki günlere 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

Herhangi bir karakter kombinasyonu geçerlidir.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Check-in tarihine göre rezervasyonun gerçekleşmesi gereken dönemi belirtir (tesisin saat dilimine göre). Örneğin rezervasyon dönemi, check-in işleminden en erken 7 gün önce olarak ayarlanabilir ancak 180 günü aşamaz.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden minimum kaç gün önce yapılması gerektiğini belirtir. Bu ayar belirtilmezse veya değeri 0 ise minimum değer yoktur.

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

  • Tamsayı: Giriş tarihinden önceki gün sayısıdır. Örneğin, 30 değeri, promosyonun yalnızca check-in tarihinden en az 30 gün önce yapılan rezervasyonlar için geçerli olduğunu belirtir.
  • ISO 8601 uyumlu süre (gün, saat ve dakika): Giriş tarihinden önceki gün sayısını (ve isteğe bağlı olarak saat/dakika sayısını) belirtir. Örneğin, P30D değeri, promosyonun yalnızca check-in tarihinden en az 30 gün önce yapılan rezervasyonlar için geçerli olduğunu belirtir. P30DT6H değeri, rezervasyonun varış tarihinden 30 gün önce saat 18:00'da veya öncesinde 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 ayar belirtilmezse veya değeri 0 ise maksimum değer yoktur.

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

  • Tamsayı: Giriş tarihinden önceki gün sayısıdır. Örneğin, 30 değeri, promosyonun yalnızca check-in tarihinden en fazla 30 gün önce yapılan rezervasyonlar için geçerli olduğunu belirtir.
  • ISO 8601 uyumlu süre (gün, saat ve dakika): Giriş tarihinden önceki gün sayısını (ve isteğe bağlı olarak saat/dakika sayısını) belirtir. Örneğin, P30D değeri, promosyonun yalnızca check-in tarihinden en fazla 30 gün önce yapılan rezervasyonlar için geçerli olduğunu belirtir. P30DT6H değeri, rezervasyonun varış tarihinden 30 gün önce saat 18:00'da veya sonrasında yapılmasını gerektirir.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

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

Promosyonlarda her zaman bir <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Ceiling> geçerli olan bir promosyon oluşturmak için 0 percentage içeren bir <Discount> ayarlayabilirsiniz.

Yığınlama yapılandırılmışsa <Ceiling> içeren birden fazla promosyon tek bir konaklama için geçerli olabilir. Her promosyon, indirimini uygular ve hemen ardından tavan fiyatını uygular. Aşağıdaki örnekte, her bir tavanın gruptaki sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değerinin 100 olduğu ve iki promosyon grubu bulunduğu 1 gecelik konaklama için fiyatlandırma:

  1. base yığınlama türü, 25 fixed_amount ve 60 amount_per_night tavanıyla tanıtım
  2. Yığın oluşturma türü second, fixed_amount değeri 25 ve amount_per_night değeri 90 olan promosyon

Hesaplama sırası aşağıda verilmiştir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax'un fiyatı 75'e indirilir. Ardından tavan, fiyatı 60'a düşürür.
  2. second promosyonu, AmountBeforeTax için indirimi 60'tan 35'e düşürüyor. Bu değer 90'ın altında olduğundan ikinci tavan uygulanmaz. Nihai ücret 35'tir.

60'ın daha katı bir genel tavan 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 alakasızdır.

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

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

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

amount_per_night, AmountAfterTax kullanılarak gecelik ücrete dahil edilen vergilere ve ücretlere uygulanır ancak TaxFeeInfo kullanılarak belirtilenlere uygulanmaz.

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

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

Promosyonlarda her zaman bir <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Floor> geçerli olan bir promosyon oluşturmak için 0 percentage içeren bir <Discount> ayarlayabilirsiniz.

Ücretsiz geceye 100% indirimi uygulanmış olsa bile <Floor> mantığı <FreeNights> indirimleri için geçerli olmaya devam eder.

Yığınlama yapılandırılmışsa <Floor> içeren birden fazla promosyon tek bir konaklama için geçerli olabilir. Her promosyon, indirimini uygular ve hemen ardından taban fiyatı uygular. Aşağıdaki örnekte, her katmanın yığıntaki sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değerinin 100 olduğu ve iki promosyon grubu bulunduğu 1 gecelik konaklama için fiyatlandırma:

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

Hesaplama sırası aşağıda verilmiştir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax 75'e indirilir, ancak daha sonra taban fiyat 90'a yükseltilir.
  2. second promosyonu, AmountBeforeTax için indirimi 90'dan 65'e düşürür. Bu değer 60'ın üzerinde olduğundan ikinci taban uygulanmaz. Nihai ücret 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 alakasızdır.

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

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

<Ceiling> öğesi de belirtilmişse bu öğe, <Ceiling> öğesindeki amount_per_night özelliğinden küçük veya bu değere eşit bir değere ayarlanmalıdır.

amount_per_night, AmountAfterTax kullanılarak gecelik ücrete dahil edilen vergilere 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 tarihlerinde yıl belirtilmemişse her ikisi de yıl olmadan doldurulmalıdır.
  • Yıl içermeyen tarih aralıkları yeni yıla sarmalanmamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak temsil edin. Ö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 (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle aynı veya ilgili tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırlandırılmaz.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günlerdir. 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çindeki günlere 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

Herhangi bir karakter kombinasyonu 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 tarihlerinde yıl belirtilmemişse her ikisi de yıl olmadan doldurulmalıdır.
  • Yıl içermeyen tarih aralıkları yeni yıla sarmalanmamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak temsil edin. Ö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 (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle aynı veya ilgili tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırlandırılmaz.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günlerdir. 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çindeki günlere 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

Herhangi bir karakter kombinasyonu 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üdür. Değer desktop, tablet veya mobile olmalıdır.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Discount veya BestDailyDiscount özelliklerinden biri belirtilmelidir.

Bu promosyon için uygulanacak indirimi belirtir.

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

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

Örnekler:

  • AmountAfterTax değeri 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 / @percentage_of_base 0..1 float

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

0 ile 100 arasında taban indirim yüzdesini belirten ondalık değerdir. percentage'e benzer şekilde, AmountAfterTax (veya AmountAfterTax belirtilmezse AmountBeforeTax) için geçerlidir.

percentage'ün aksine bu indirim, sırayla uygulanan önceki promosyonlardan bağımsız olarak her zaman taban ücretlerin yüzdesi olarak hesaplanır.

Örnek:

  • Fiyatı 100 TL olan tek gecelik bir konaklama için sırayla uygulanan iki promosyonumuz olduğunu varsayalım. Birincisi normal %10 oranında indirim, ikincisi ise taban indiriminin% 10'udur. Bu durumda, her iki promosyon da 10 TL indirim yaptığı için indirimli fiyat 80 TL olur. İkinci promosyon da normal bir yüzdelik indirim olsaydı indirimli fiyat 81 TL olurdu. Bunun nedeni, ikinci promosyonda 90 TL'nin% 10'u indirim uygulanmasıdır.
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretleri (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücretleri) 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 ortaya çıkan değer sıfır olur.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax değeri 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 değerinde 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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretlerinin her birine (veya applied_nights belirtilirse en ucuz N değeri) uygulanan sabit indirimdir. AmountAfterTax belirtilmezse AmountBeforeTax için geçerlidir. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. fixed_amount_per_night değeri, bir gecelik ücretten büyükse bu gece ücreti sıfıra düşürülür. İndirim sonucunda gecelik ücretler negatif olamaz.

Örnekler:

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount_per_night değeri ise 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 ise 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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretleri belirtilirse bu, vergiler ve ücretler dahil konaklama fiyatını belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilmiş olsun veya olmasın, konaklamanın vergi öncesi fiyatı belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax, yüzdelik bir vergiyi yansıtmak için kullanılıyorsa AmountBeforeTax için sabit bir fiyat ayarlamak yanlış vergi ve ücretlere neden olabilir. Genel olarak, bir tesisin vergilerini ve ücretlerini belirtmek için TaxFeeInfo parametresinin kullanılması önemle tavsiye edilir.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_price 80 olacak şekilde fiyatlandırırsak bu durumda promosyon fiyatı 80 olur.
  • 1 gecelik konaklamayı AmountBeforeTax değeri 100, fixed_amount 80 olacak ve TaxFeeInfo'da %8 değerinde 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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night öğelerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretleri belirtilirse bu, vergiler ve ücretler dahil olmak üzere her bir konaklama gecesinin fiyatını belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilmiş olsun veya olmasın, her bir konaklama gecesinin vergi öncesi fiyatı belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax, yüzdelik bir vergiyi yansıtmak için kullanılıyorsa AmountBeforeTax için sabit bir fiyat ayarlamak yanlış vergi ve ücretlere neden olabilir. Genel olarak, bir tesisin vergilerini ve ücretlerini belirtmek için TaxFeeInfo parametresinin kullanılması önemle tavsiye edilir.

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

Örnekler:

  • 2 gecelik konaklamayı AmountBeforeTax değerleri 90, 90, AmountAfterTax değerleri 100, 100 ve fixed_price değeri 80 olacak şekilde fiyatlandırırsak promosyon oranı 80 + 80 = 160 olur.
  • 2 gecelik konaklamayı AmountBeforeTax değerleri 100, 100; fixed_amount 80 olacak ve TaxFeeInfo'da %8 değerinde vergi belirtilecek şekilde fiyatlandırırsak bu durumda promosyon fiyatı (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 oranı 110 * 3 = 330 olur.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Yalnızca percentage veya fixed_amount_per_night ile kullanılmalıdır.

En uygun fiyatlardan 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 uygulanacak 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 gereken gece sayısı. Her indirim, ayrı bir konaklama gecesi 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 iki konaklama gecesi segmenti vardır: 1. ila 4. geceler ve 5. ila 8. geceler; 9. ve 10. geceler bir konaklama gecesi segmentinin parçası değildir.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Her konaklama gecesi segmentindeki indirimli gece sayısı.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float İndirimli gecelere uygulanan indirim. 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 gecelere indirim uygulanır. cheapest ise konaklama geceleri segmentindeki 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ğını belirtir. false ise yalnızca seyahat planının başındaki konaklama geceleri segmentine indirim uygulanır. true ise tüm konaklama gecesi segmentlerine indirim uygulanır.

Örneğin, stay_nights değeri 4 ve seyahat planı 10 gece ise repeats değeri true ise 2 segmente (1-4. geceler ve 5-8. geceler) indirim uygulanır. Ancak repeats değeri false ise yalnızca 1 segmente (1-4. geceler) indirim uygulanır.

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Bu promosyona bir sıra atar ve yalnızca en düşük sıraya sahip promosyonun uygulanacağı sıralı seçime dahil eder. Değerler 1 ile 99 arasında (1 ve 99 dahil) olmalıdır. Aynı sıralamaya sahip birden fazla promosyon varsa bunlardan biri rastgele seçilir ve uygulanır.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Discount veya BestDailyDiscount özelliklerinden biri belirtilmelidir.

Konaklama gecesine uygulanabilecek bir günlük indirimi belirtir. Bu, konaklamaların tamamına indirim uygulayan Discount ile zıttır.

Her mülkte "en iyi günlük" olarak kabul edilen tek bir promosyon grubu olabilir. Bu, konaklamanın her gecesi için uygun olan ve o gece için en yüksek indirimi sağlayan tek "en iyi günlük" promosyonun seçildiği ve uygulanabileceği anlamına gelir.

Stacking, BestDailyDiscount ile birlikte belirtilebilir. base veya none olarak ayarlanmalıdır. Her gece için en yüksek indirimi sağlayan "en iyi günlük" indirimler, yapılandırılmış yığınlama türüne bağlı olarak birleştirilir ve tek bir konaklama indirimi (ör. Discount) olarak değerlendirilir. Bu birleştirilmiş indirim, en yüksek indirimi sağlayan indirimi veya kombinasyonu bulmak için diğer uygun <Discount> promosyonlarıyla karşılaştırılır ve bunlarla birlikte kullanılabilir. BestDailyDiscount kombinasyonu veya tek bir Discount (hangisi daha düşük fiyat verirse) seçilir ve base yığınlama türü için uygulanır.

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

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

percentage, fixed_amount veya fixed_price öğelerinden tam olarak biri gereklidir.

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

Örnekler:

  • Bir gecelik konaklama için AmountAfterTax değeri 100 ve percentage değeri 20 ise bu durumda

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

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

  • Bir gecelik konaklama 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

percentage, fixed_amount veya fixed_price öğelerinden tam olarak biri gereklidir.

Tek bir AmountAfterTax gecelik ücretinden (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücretinden) çı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 ortaya çıkan değer sıfır olur.

Örnekler:

  • Tek gecelik AmountBeforeTax değeri 90, AmountAfterTax değeri 100 ve fixed_amount değeri 20 ise bu durumda

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • Tek gecelik AmountBeforeTax değeri 100, fixed_amount 20 ve TaxFeeInfo'da %8 değerinde 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

percentage, fixed_amount veya fixed_price öğelerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretleri belirtilirse bu, vergiler ve ücretler dahil konaklama gecesinin fiyatını belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilmiş olsun veya olmasın, konaklamanın vergi öncesi fiyatı belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

Örnekler:

  • Tek gecelik AmountBeforeTax değeri 90, AmountAfterTax değeri 100 ve fixed_price değeri 80 ise promosyon fiyatı 80'dir.
  • Tek gecelik AmountBeforeTax değeri 100, fixed_amount değeri 80 ve TaxFeeInfo'da %8 değerinde 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 ücrete 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 fiyatı kuralının kapsayıcısı.

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

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ğerlerinin daha 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ığı doluluklarla 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 uygulanması için kullanıcı tarafından belirtilen doluluk oranı en az bu değer olmalıdır.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer İndirimin uygulanması için kullanıcı tarafından belirtilen doluluk en fazla bu değer olmalıdır.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Promosyonun uygulandığı ü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 belirtilen ve PackageID tarafından tanımlanan paket, ücret ve stok durumunun birleşimiyle 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ının <StatusApplicationControl> öğesindeki 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 belirtilir. (<RoomID> değeri, OTA_HotelRateAmountNotifRQ mesajlarındaki InvTypeCode özelliği tarafından da belirtilir.)
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. Belirtilmediği takdirde "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 promosyonlarla (none hariç) birleştirilebilir ancak promosyonların uygulanmasının sırası garanti edilmez.
  • base: Uygun olan en iyi base promosyonu seçilir ve diğer promosyonlardan önce uygulanır. Bu parametrenin eski adı base_only idi.
  • second: En uygun second promosyonu seçilir ve base promosyonundan (geçerliyse) sonra, any promosyonlarından önce uygulanır.
  • none: Diğer promosyonlarla birleştirilemez.

İzin verilen kombinasyonlar arasında 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.

Geçerli değerler şunlardır:

  • 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 ücret 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 tarihlerinde yıl belirtilmemişse her ikisi de yıl olmadan doldurulmalıdır.
  • Yıl içermeyen tarih aralıkları yeni yıla sarmalanmamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak temsil edin. Örneğin, {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.

StayDates aralığını, promosyonun haftanın belirli günlerinde geçerli olmasına izin verecek şekilde ayarlamak istiyorsanız promosyonun süresinin dolmaması için start tarihini end olmadan geçerli tarih olarak ayarlamanız gerekir.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate Tarih aralığının (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz.

end değeri sağlanmazsa start değerini belirtmeniz gerekir.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle aynı veya ilgili tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, start tarihinden itibaren etkin bir şekilde sınırlandırılmaz.

start değeri sağlanmazsa end değerini belirtmeniz gerekir.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günlerdir. 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çindeki günlere 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

Herhangi bir karakter kombinasyonu 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 UserCountries spesifikasyonunun türü.

Geçerli değerler include ve exclude'dir.

UserCountries type include olarak ayarlanırsa promosyon, listelenen ülkelerdeki kullanıcılar için geçerli olur.

UserCountries type exclude ise promosyon, listelenen ülkelerin dışındaki kullanıcılar için geçerlidir.

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

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Promosyon için uygun olan kullanıcıların bulunduğu bir ülkeyi belirtir.
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

Tesis başına 500 promosyon sınırı vardır. Bir tesisteki promosyonları kaldırmak için "Bir promosyonu silme" örneğine bakın.

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 durumu

Aşağıdaki örnekte, varış tarihine yaklaşıldığında envanter fazlası 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 bir 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ı silme

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ın üstüne yazma

Aşağıdaki örnekte, bir veya daha fazla yeni promosyonla bir tesise ait <HotelPromotions> değerinin nasıl üstüne yazılacağı 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ı Gruplandırma Türü

Aşağıdaki örnekte, üç farklı promosyonun (base, second, any) uygulanacağı bir durum gösterilmektedir. Diğer promosyonlar daha iyi indirim sağladığından none promosyonunun uygulanmayacağını unutmayın. Orijinal fiyat 100 TL ise indirimli fiyat 72, 90 TL olur.

<?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>


Hiçbiri Gruplandırma 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 TL ise indirimli fiyat 75 TL olur.

<?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üresi 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ı, rezervasyonun varıştan önceki gün saat 18:00'a kadar ve varıştan 2 gün önce saat 12:00'den sonra yapılmasını gerektirir.

<?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 Zaman Aralığı

Aşağıdaki örnekte, BookingDates öğesinin DateTime türleri olarak start ve end özellikleriyle birlikte kullanıldığı bir durum gösterilmektedir. Bu rezervasyon tarihi kısıtlaması, rezervasyonun 01.07.2020'de 06:30 ile 02.07.2020'de 18:45 arasında yapılmasını gerektiriyor.

<?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ıl içermeyen 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 2.1 tarihleri arasındaki giriş tarihleri için geçerlidir. Yeni yıl sınırını aşan yıl içermeyen tarih aralıkları geçersizdir. Bu nedenle, DateRange iki bitişik 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ığında her dört gecelik konaklama için iki gecelik indirim% 50 olarak gösterilmektedir. On gecelik bir seyahat planında toplam dört gece için %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>

Aşağıdaki örnekte, belirtilen konaklama tarihleri aralıkları için her üç gecelik konaklamada bir gecelik konaklama için% 50 indirim uygulanmaktadır. İndirim için yalnızca çakışan konaklama geceleri sayılır. 01.01.2022'de giriş ve 07.01.2022'de çıkış yapılan aşağıdaki seyahat planında, uygun konaklama geceleri ve indirimler aşağıdaki gibi uygulanır.

  • 2022-01-01 (konaklama)
  • 2022-01-02 (konaklama)
  • 2022-01-03
  • 04.01.2022 (indirimli)
  • 2022-01-05 (konaklama)
  • 2022-01-06 (stay)
<?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, diğeri% 15 indirim olmak üzere iki indirim sunulmaktadır. Değerlendirme sırasında, daha düşük bir sıralamaya sahip olduğu için yalnızca% 15 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, BestDailyDiscount ile birlikte Discount uygulanarak 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 - 2 Mayıs 2023 tarihleri arasında iki gecelik konaklama düşünelim. Hesaplamada, en yüksek indirimi sağlayan en iyi günlük indirimlerin kombinasyonu önce bulunur.

İlk gece için 20 sabit indirim içeren tek uygun tutar "genel" promosyondur.

İkinci gece için "Mayıs" promosyonu, "Genel" promosyondan daha fazla indirim sunuyor. Dolayısıyla, "may" seçildiğinde sabit indirim tutarı 50 olur.

Ardından, konaklama için "fiesta" promosyonundan yararlanarak gecelik 5 TL veya toplam 10 TL indirim kazanırsınız. "Fiesta"nın yığın oluşturma türü any olarak ayarlandığından en iyi günlük indirimlerin kombinasyonuyla birlikte yığın oluşturabilir. base olarak ayarlanmışsa yalnızca en iyi günlük indirimlerin kombinasyonu veya "fiesta" indirimi uygulanır. Daha fazla bilgi için Stacking açıklamasına bakın.

Genel olarak, konaklama fiyatına 20 + 50 + 10 = 80 sabit tutarda indirim uygulanır.

Yanıtlar

Söz dizimi

PromotionsResponse mesajında şu 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ında aşağıdaki öğeler ve özellikler bulunur:

Öğe / @Özellik Yineleme sayısı Tür Açıklama
PromotionsResponse 1 Complex element Alınan Promotions 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 saatidir.
PromotionsResponse / @id 1 string İlişkilendirilmiş Promotions mesajındaki benzersiz tanımlayıcıdır.
PromotionsResponse / @partner 1 string Bu mesajın iş ortağı hesabıdır.
PromotionsResponse / Success 0..1 Success Promotions 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 Promotions mesajı işlenirken karşılaşılan bir veya daha fazla sorun için kullanılan bir kapsayıcıdır.

Her mesajda <Success> veya <Issues> bulunur.

PromotionsResponse / Issues / Issue 1..n Issue Promotions mesajı işlenirken karşılaşılan uyarı, hata veya sorunun açıklamasıdır. Bu sorunlarla ilgili ayrıntılar Feed Durumu Hata Mesajları konusunda 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üdür.

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

Örnekler

Başarılı

Aşağıda, başarıyla işlenmiş bir Promotions 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">
  <Success/>
</PromotionsResponse>

Sorunlar

Aşağıda, hatalar nedeniyle işlenmemiş bir Promotions 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>