Promosyonlar

Genel Bakış

Bu API, olası indirimleri belirtmenize olanak tanır. Belirtilen promosyonlar arasında Google, en düşük fiyata yol açan uygun promosyonu veya promosyon grubunu uygular. Koşullar karşılandığında fiyatı artırabilen veya azaltabilen rastgele oran 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ı. 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 <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 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 öğesini kullanırken <Promotion> satırına alt öğe eklemeyin. Ayrıca <HotelPromotions action="overlay"/> ile birlikte delete 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 yapılması gerektiğini belirten aralıktır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date veya DateTime

Aralığın (girilen tarihler dahil) başlangıç tarihi veya tarih saatidir (tesisin bulunduğu saat dilimine göre).

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

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

  • end tarafından belirtilen tarih veya tarih saat, start tarafından belirtilen tarih veya tarih saatten sonra (ya da 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 "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ü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 ne kadar süre önce yapılması gerektiğini belirtir. 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ıştan 30 gün önce saat 18:00'a kadar yapılması gerektiğini belirtir.
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. 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ıştan 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 <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Ceiling> uygulayan bir promosyon oluşturmak için seçeneklerden biri, percentage değeri 0 olan bir <Discount> ayarlamaktır.

Katmanlama yapılandırılırsa <Ceiling> içeren birden fazla promosyon tek bir konaklamaya uygulanabilir. Her promosyon, indirimini uygular ve hemen ardından üst sınırı belirler. Aşağıdaki örnekte, her tavanın, yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değerinin 100 olduğu ve iki promosyonun birleştirildiği 1 gecelik konaklamayı fiyatlandırırsak:

  1. base türünde, fixed_amount tutarında ve amount_per_night üst sınırında bir promosyon
  2. second türünde, fixed_amount değerinde 25 ve amount_per_night değerinde 90 üst sınıra sahip promosyon

Hesaplama sırası şu şekildedir:

  1. base promosyonu önce uygulanır ve AmountBeforeTax değerini 75'e düşürür. Ancak daha sonra tavan değeri 60'a düşer.
  2. second promosyonu, AmountBeforeTax fiyatını 60 TL'den 35 TL'ye düşürüyor. Bu değer, 90 olan üst sınırın altında olduğundan ikinci üst sınır uygulanmaz. Son oran 35'tir.

60'ın genel olarak daha katı bir ü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 üst sınır olamayacağından önemsizdir.

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

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

<Floor> öğesi de belirtilmişse bu değer, <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 vergi ve ücretlere uygulanır ancak TaxFeeInfo kullanılarak belirtilenlere uygulanmaz.

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

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

Promosyonlarda her zaman <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Floor> uygulayan bir promosyon oluşturmak için seçeneklerden biri, percentage değeri 0 olan bir <Discount> ayarlamaktır.

Ücretsiz geceye 100% indirimi uygulanmış olsa bile <Floor> mantığı, <FreeNights> indirimleri için geçerliliğini korur.

Katmanlama yapılandırılırsa <Floor> içeren birden fazla promosyon tek bir konaklamaya uygulanabilir. Her promosyon, indirimini uygular ve hemen ardından taban fiyatını uygular. Aşağıdaki örnekte, her katın yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değerinin 100 olduğu ve iki promosyonun birleştirildiği 1 gecelik konaklamayı fiyatlandırırsak:

  1. base türünde, fixed_amount değerinde bir üst sınır ve amount_per_night değerinde bir alt sınır içeren promosyon
  2. second türünde, 25 fixed_amount üst sınırına ve 60 amount_per_night alt sınırına sahip bir promosyon

Hesaplama sırası şu şekildedir:

  1. base promosyonu önce uygulanır ve AmountBeforeTax değerini 75'e düşürür. Ardından taban fiyat, değeri 90'a yükseltir.
  2. second promosyonu, AmountBeforeTax değerini 90'dan 65'e düşürüyor. Bu değer 60 olan tabanın üzerinde olduğundan ikinci taban uygulanmaz. Son oran 65'tir.

90'ın genel olarak daha katı bir taban olması, yalnızca kendi promosyonu için geçerli olduğundan ve promosyon yığını genelinde tek bir taban olamayacağından önemsizdir.

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

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

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

amount_per_night, AmountAfterTax kullanılarak gecelik ücrete dahil edilen 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 tarihlerinde yıl belirtilmemişse her ikisi de yıl olmadan doldurulmalıdır.
  • Yıl içermeyen 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 gösterilebilir.
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ı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 gösterilebilir.
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

Tam olarak bir Discount veya BestDailyDiscount 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 yüzdelik indirimi belirten ondalık değerdir. percentage ile benzer şekilde, AmountAfterTax (veya AmountAfterTax belirtilmezse AmountBeforeTax) için geçerlidir.

percentage'dan farklı olarak bu indirim, sıralı olarak uygulanan önceki promosyonlardan bağımsız şekilde her zaman temel ücretlerin yüzdesi olarak hesaplanır.

Örnek:

  • 100 TL fiyatlandırılmış tek gecelik konaklamaya sırayla uygulanan iki promosyonumuz olduğunu varsayalım. Birincisi normal %10 yüzdelik indirim, ikincisi ise taban fiyat üzerinden% 10 yüzdelik indirimdir. Ardından, her iki promosyon da 10 TL indirim sağladığından indirimli fiyat 80 TL olur. İkinci promosyon da normal bir yüzdelik indirim olsaydı ikinci promosyon 90 TL'nin% 10'unu indirimli fiyata yansıtacağından indirimli fiyat 81 TL olurdu.
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 ücret belirtilirse bu, vergiler ve ücretler dahil konaklama fiyatını belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmediğine bakılmaksızı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 belirlemek yanlış vergi ve ücretlere neden olabilir. Genel olarak, bir tesisin vergilerini ve ücretlerini belirtmek için TaxFeeInfo kullanmanız önemle tavsiye edilir.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_price 80 olacak şekilde fiyatlandırırsak promosyon oranı 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, konaklamanın her gecesi için vergi ve ücretler dahil fiyatı belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmediğine bakılmaksızın konaklamanın her gecesi için 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 belirlemek yanlış vergi ve ücretlere neden olabilir. Genel olarak, bir tesisin vergilerini ve ücretlerini belirtmek için TaxFeeInfo kullanmanız ö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ğeri 100, 100; fixed_amount 80 olacak ve TaxFeeInfo'da %8 değerinde vergi belirtilecek şekilde fiyatlandırırsak promosyonlu 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 indirim uygulanacağını 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, 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 konaklamada iki konaklama gecesi segmenti vardır: 1. geceden 4. geceye kadar ve 5. geceden 8. geceye kadar. 9. ve 10. geceler konaklama gecesi segmentinin parçası değildir.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Konaklama gecelerinin her bir 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 geceler için 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ğı. false ise yalnızca seyahat planının başındaki konaklama geceleri segmentinde indirim uygulanır. true ise konaklama gecelerinin herhangi bir segmentinde indirim uygulanır.

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

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Bu tanıtıma bir sıralama atar ve sıralı seçimi etkinleştirir. Sıralı seçimde, uygulanacak tanıtım olarak yalnızca en düşük sıralamaya sahip olan seçilir. Değerler 1 ile 99 arasında (1 ve 99 dahil) olmalıdır. Birden fazla promosyon aynı sıralamayı paylaşıyorsa rastgele bir promosyon seçilip uygulanır.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Tam olarak bir Discount veya BestDailyDiscount belirtilmelidir.

Konaklama gecesine uygulanabilecek günlük indirimi belirtir. Bu, konaklamanın tamamına indirim uygulayan Discount ile karşıttır.

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

Stacking, BestDailyDiscount ile belirtilebilir. base veya none olarak ayarlanmalıdır. Her gece için en yüksek indirimi sağlayan "en iyi günlük" indirimler birleştirilir ve yapılandırılan birleştirme türüne uygun şekilde tek bir konaklama indirimi (ör. Discount) olarak değerlendirilir. Bu birleştirilmiş indirim, en yüksek indirimi sağlayan indirim veya kombinasyonu bulmak için diğer uygun <Discount> promosyonlarıyla karşılaştırılır ve bu promosyonlarla birlikte kullanılabilir. BestDailyDiscount kombinasyonu veya tek bir Discount (hangisi daha düşük fiyat veriyorsa) seçilir ve base sıralama 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

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 konaklamanın 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 konaklamanın AmountBeforeTax değeri 100, percentage değeri 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 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 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, konaklama gecesinin fiyatını (vergi ve ücretler dahil) belirtilen değere ayarlar. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmediğine bakılmaksızın 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 oranı 80 olur.
  • 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 ücreti kuralının kapsayıcısı.

Bu öğe, <Discount> de belirtilmediği sürece 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ığı konaklama türleriyle ilgili kısıtlamaları tanımlar. Dolu olma oranı minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz.

Promosyonlar, seyahat planının ücreti için geçerlidir. Kişi başına maksimum indirim ayarlamak mümkün değildir.

Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer İndirimin uygulanabilmesi 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 uygulanabilmesi için kullanıcının belirttiği doluluk oranı 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), OA_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ı gereken sıra garanti edilmez.
  • base: En uygun base promosyonu seçilir ve diğer promosyonlardan önce uygulanır. Bu daha önce base_only olarak adlandırılıyordu.
  • second: En uygun second promosyonu seçilir ve base promosyonundan (geçerliyse) sonra ve 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 konaklamanın çakışan 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ı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 gösterilebilir.

Promosyonun haftanın belirli günlerinde kullanılması için StayDates aralığını ayarlamak istiyorsanız promosyonun süresinin dolmaması için end olmadan start tarihini 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ğlanmıyorsa 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ğlanmıyorsa 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 değeri exclude ise promosyon, listelenen ülkelerin dışındaki kullanıcılar için geçerlidir.

UserCountries type ayarlanmamışsa include olarak kabul edilir 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 CLDR ülke kodu (ör. DE veya FR). 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 koşulu

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ı Stacking Türü

Aşağıdaki örnekte, üç farklı promosyonun (base, second, any) uygulanacağı bir durum gösterilmektedir. Diğer promosyonlar daha iyi bir 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>


Birleştirme Türü Yok

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üresi türü olarak tanımlanmış şekilde kullanıldığı bir durum gösterilmektedir. Bu rezervasyon aralığı kısıtlaması, varıştan önceki gün saat 18:00'e kadar ve varıştan 2 gün önce saat 12:00'den sonra rezervasyon 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>


Booking Dates DateTime Bounds

Aşağıdaki örnekte, BookingDates öğesinin start ve end özellikleri ile DateTime türleri olarak kullanıldığı bir durum gösterilmektedir. Bu rezervasyon tarihi kısıtlaması, rezervasyonun 01.07.2020 tarihinde 06:30 ile 02.07.2020 tarihinde 18:45 arasında 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">
      <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 öğelerini içerdiği bir durum gösterilmektedir. Bu örnekte promosyon, yıldan bağımsız olarak 29.12 ile 02.01 arasındaki giriş tarihleri için geçerlidir. Yıl içermeyen ve yeni yıl sınırını aşan 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 tarihi aralığında konaklanan her dört gece için iki geceye% 50 indirim uygulanmaktadır. 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>

Bir sonraki örnekte, belirtilen konaklama tarihi aralıklarında konaklanan her üç gece için bir gece% 50 indirimli olarak sunulmaktadır. İndirimden yararlanmak için yalnızca konaklamanın çakışan geceleri dikkate alınır. 2022-01-01 tarihinde check-in ve 2022-01-07 tarihinde check-out yapılan aşağıdaki seyahat planı için uygun konaklama geceleri ve indirimler aşağıdaki şekilde uygulanır.

  • 2022-01-01 (konaklama)
  • 2022-01-02 (konaklama)
  • 2022-01-03
  • 2022-01-04 (indirimli)
  • 2022-01-05 (konaklama)
  • 2022-01-06 (konaklama)
<?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 ve Discount üst üste uygulanarak iki gecelik konaklamada indirim yapılıyor.

<?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 - 2 Mayıs 2023 tarihleri arasında iki gecelik konaklama olduğunu varsayalım. Hesaplama için en iyi günlük indirimlerin kombinasyonu bulunarak en yüksek indirim elde edilir.

İlk gece için "genel" promosyon, 20 TL'lik sabit indirimle tek uygun tutardır.

İkinci gece için "may" promosyonu, "general" indiriminden daha yüksek bir indirim sunuyor. Bu nedenle, "olabilir" seçildiğinde sabit indirim tutarı 50 olur.

Ardından, konaklama için "fiesta" promosyonu gecelik 5 ABD doları veya toplamda 10 ABD doları indirim uygular. "Fiesta"nın birleştirme türü any olarak ayarlandığından, en iyi günlük indirimlerin kombinasyonuyla birleştirilebilir. base olarak ayarlanırsa yalnızca en iyi günlük indirimlerin kombinasyonu veya "fiesta" indirimi uygulanır. Daha fazla bilgi için Stacking açıklamasını inceleyin.

`Genel olarak, konaklama fiyatına 20 + 50 + 10 = 80 sabit tutarında indirim uygulanıyor.

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ı.
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ı başlıklı makalede bulabilirsiniz.
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 ş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>