Promosyonlar

Genel Bakış

Bu API, olası indirimleri belirtmenizi sağlar. Belirtilen promosyonlar arasından, Google, en düşük fiyata. İsteğe bağlı oranı destekleyen bir API arıyorsanız koşullar geçerli olduğunda fiyatı yükseltebilecek veya düşürebilecek ayarlamalar değerlendirdikten sonra Rate Modifications API. Her iki API de mevcutsa ücret değişikliklerinin promosyonlar.

İstekler

Söz dizimi

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

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

Öğeler ve Özellikler

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

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

Feed'ler için feed sağlayan bir arka ucunuz birden fazla hesapta oturum açtıysanız, bu değerin ID ile eşleşmesi gerekir <RequestorID> özelliğinde belirtilen özellik değeri <OTA_HotelRateAmountNotifRQ> ve Aynı için <OTA_HotelAvailNotifRQ> ileti hesap.

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

Bir tesise ait promosyonlardır. Her promosyon tek bir

<Stacking> kullanılmadığı sürece En büyük indirime sahip promosyon, birden fazla promosyon uygun.

Promotions / HotelPromotions / @hotel_id 1 string Tesisin benzersiz tanımlayıcısıdır. Bu değer, Otel kimliği, kullanılarak belirtildi <listing> öğesinde <id> otel listesi feed'inde görünür. Otel Kimliği, Hotel Center'da da listelenir.
Promotions / HotelPromotions / @action 0..1 enum

Belirtilirse değer şu şekilde olmalıdır: "overlay" Değer "overlay" olduğunda tüm depolanan promosyonlar, belirtilen promosyonlar depolanmadan önce silinir. öğesine dokunun.

Belirtilmemişse geçerli mesaj şunlardan biridir:

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

Bir tesis için tek bir promosyondur. Lütfen action="overlay" ve <Promotion> belirtilmezse tesise ait tüm promosyonlar silinir.

99'dan fazla promosyon kullanmanız gerekiyorsa Teknik Hesap Yöneticiniz (THY) ile görüşün.

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

Belirtilmişse değer delete olmalıdır. Değilse belirtilmiş ve bir aynı id değerine sahip promosyonlar depolanmaz. Bu durumda emin olun. Aksi takdirde, belirtilmezse ve aynı id depolanıyorsa mevcut promosyon güncellendi.

delete belirtilirse aynı id silindi. delete kullanırken <Promotion>. Ayrıca, delete değil <HotelPromotions action="overlay"/> ile bağlantılı olarak izin verilir.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates 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 geçerli olması için rezervasyonun ne zaman gerçekleşmesi gerektiğini belirten aralık. geçerlidir.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date veya DateTime

Başlangıç tarihi veya tarih ve saat (mülkün saat dilimine göre), değer aralığı.

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

Bitiş tarihi veya tarih ve saat (mülkün saat dilimine göre), değer aralığı.

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

Tarih aralığında izin verilen günleri ifade eder. Değilse belirtilen tarih aralığında tüm günlere izin verilir. Her biri karakteri bir günü belirtir. Örneğin, "MTWHF" belirtir belirtilen tarih aralığında hafta içi günlerine izin verilir.

Geçerli karakterler şunlardır:

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

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow giriş tarihi (tesisin saat dilimine göre). Örneğin, rezervasyon aralığı 180 günden uzun olmayacak şekilde en az 7 güne ayarlanabilir. kontrol edin.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Girişten önce, rezervasyonun gerçekleşmesi gereken minimum süre . Belirtilmezse veya değeri 0 ise minimum değer yoktur.

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

  • Tam sayı: Check-in'den önceki gün sayısı tarihi. Örneğin, 30 değeri promosyon yalnızca giriş tarihi yazın.
  • ISO 8601 Süresi (gün, saat ve dakika): Yayınlanacak gün (ve isteğe bağlı olarak saat/dakika cinsinden) ekleyebilirsiniz. Örneğin, Örneğin, P30D değeri yalnızca promosyonu belirtir giriş tarihinden en az 30 gün önceki rezervasyonlar için geçerlidir. CEVAP P30DT6H değeri için en geç 18:00'de rezervasyon yapılması gerekir varıştan 30. gün önce olmalıdır.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration 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:

  • Tam sayı: Check-in'den önceki gün sayısı tarihi. Örneğin, 30 değeri promosyon yalnızca tarihinden en çok 30 gün önce yapılan rezervasyonlar için geçerlidir giriş tarihi yazın.
  • ISO 8601 Süresi (gün, saat ve dakika): Yayınlanacak gün (ve isteğe bağlı olarak saat/dakika cinsinden) ekleyebilirsiniz. Örneğin, Örneğin, P30D değeri yalnızca promosyonu belirtir giriş tarihinden en fazla 30 gün önceki rezervasyonlar için geçerlidir. CEVAP P30DT6H değeri için 18:00 veya sonrasında rezervasyon yapılması gerekir varıştan 30. gün önce olmalıdır.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Bir ücretin ayarlanabileceği maksimum değerle ilgili kısıtlamaları tanımlar .

Promosyonlarda her zaman bir <Discount> veya <BestDailyDiscount>; bu nedenle, yalnızca <Ceiling> geçerlidir. Seçeneklerden biri, percentage değerindeki <Discount> 0.

Yığınlama yapılandırılmışsa <Ceiling> tek bir konaklama için geçerli olabilir. Her tanıtım indirim uygulayacak, hemen ardından tavanını tamamlayacaktı. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnekte her bir tavanın sonraki projeye nasıl katkıda bulunduğu gösterilmektedir promosyon hesaplamasına eklenir.

Örnek:

AmountBeforeTax adlı yerde 1 gecelik konaklamanın fiyatlandırması 100 ve iki promosyon yığını vardır:

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

Hesaplama sırası şöyledir:

  1. Önce base promosyonu ve indirimler uygulanır AmountBeforeTax 75'e, sonra da tavan düşüyor 60'a.
  2. second promosyonu, 60'tan 35'e AmountBeforeTax. Bu tavan tavanın altında ikinci tavan uygulanmaz. Son oran ise 35.

60'ın daha katı bir genel üst sınır olduğu düşünüldüğünde, yalnızca kendi promosyonu için geçerlidir ve tek bir anahtar kelime bir üst sınır oluşturun.

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

Gecelik ücretin indirim uygulanır.

Bir <Floor> öğesi de belirtilirse değerine eşit veya şundan büyük bir değere ayarlanmalıdır: Şu ürünlerde amount_per_night özelliği var: <Floor>

Şu durumlarda vergi ve ücretlere amount_per_night uygulanır: AmountAfterTax kullanılarak gecelik fiyata dahildir ancak TaxFeeInfo kullanılarak belirtilenler değil.

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

Bir ücretin ayarlanabileceği minimum değerle ilgili kısıtlamaları tanımlar .

Promosyonlarda her zaman bir <Discount> veya <BestDailyDiscount>; bu nedenle, yalnızca <Floor> geçerlidir. Seçeneklerden biri, percentage değerindeki <Discount> 0.

<Floor> mantığı, Ücretsiz gece imkanı için <FreeNights> indirim Reklama 100% indirim uygulandı.

Yığınlama yapılandırılmışsa <Floor> tek bir konaklama için geçerli olabilir. Her tanıtım indirimi uygular ve hemen ardından taban fiyatı uygular. İlgili içeriği oluşturmak için kullanılan Aşağıdaki örnekte, her bir katın bir sonraki tabana nasıl katkıda bulunduğu gösterilmektedir promosyon hesaplamasına eklenir.

Örnek:

AmountBeforeTax adlı yerde 1 gecelik konaklamanın fiyatlandırması 100 ve iki promosyon yığını vardır:

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

Hesaplama sırası şöyledir:

  1. Önce base promosyonu ve indirimler uygulanır AmountBeforeTax 75'e çıktıktan sonra taban yükseliyor. 90'a kadar.
  2. second promosyonu, 90'dan 65'e AmountBeforeTax. Bu zemin katın üzerinde taban fiyat 60 olarak hesaplanır. Bu nedenle, ikinci kat uygulanmaz. Son oran ise 65.

90'ın daha katı bir genel taban olması önemli değildir; yalnızca kendi promosyonu için geçerlidir ve tek bir anahtar kelime bir taban fiyat ekleyin.

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

Gecelik ücretin belirlenebilecek minimum tutar: indirim uygulanır.

Bir <Ceiling> öğesi de belirtilirse değerine eşit veya şundan küçük bir değere ayarlanmalıdır: Şu ürünlerde amount_per_night özelliği var: <Ceiling>

Şu durumlarda vergi ve ücretlere amount_per_night uygulanır: AmountAfterTax kullanılarak gecelik fiyata dahildir ancak TaxFeeInfo kullanılarak belirtilenler değil.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Giriş yapma işleminin ne zaman yapılması gerektiğini tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır. geçerli olması gerektiğini unutmayın.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Promosyonda promosyonun ne zaman check-in yapılması gerektiğini tarafından uygulanır. Bir veya daha fazla öğeyi siliyorsanız bu öğe gerekli değildir promosyonlar.

YearlessDate biçimi de desteklenir.

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

Tarih aralığında izin verilen günleri ifade eder. Değilse belirtilen tarih aralığında tüm günlere izin verilir. Her biri karakteri bir günü belirtir. Örneğin, "MTWHF" belirtir belirtilen tarih aralığında hafta içi günlerine izin verilir.

Geçerli karakterler şunlardır:

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

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Ödeme zamanını tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır. promosyonun uygulanabilmesi için gerçekleşmelidir.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Promosyonun ne zaman çıkış yapılması gerektiğini belirten tarih aralığı tarafından uygulanır. Aşağıdaki durumlarda bu öğe gerekli değildir: Bir veya daha fazla promosyonu silerek.

YearlessDate biçimi de desteklenir.

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

Tarih aralığında izin verilen günleri ifade eder. Değilse belirtilen tarih aralığında tüm günlere izin verilir. Her biri karakteri bir günü belirtir. Örneğin, "MTWHF" belirtir belirtilen tarih aralığında hafta içi günlerine izin verilir.

Geçerli karakterler şunlardır:

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

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Şu uygulama için uygun kullanıcı cihazlarının listelendiği kapsayıcı: promosyon'a dokunun. Belirtilirse yalnızca listelenen cihazlardaki uygun kullanıcılar indirimli fiyat sunulur. Belirtilmezse herhangi bir indirimli fiyat sunulur.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Promosyon için uygun olan bir kullanıcı cihazı türünü tanımlar.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Bir cihaz türü. Değer desktop olmalıdır. tablet veya mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Tam olarak bir Discount veya BestDailyDiscount belirtilmelidir.

Bu promosyon için uygulanacak indirimi belirtir.

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

Tam olarak bir percentage, fixed_amount fixed_amount_per_night, fixed_price veya fixed_price_per_night gereklidir.

0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir. AmountAfterTax (veya AmountAfterTax değilse AmountBeforeTax belirtilir).

Örnekler:

  • AmountAfterTax 100 ve percentage ise 20 ise

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

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

  • AmountBeforeTax 100 ise, percentage 20'dir ve TaxFeeInfo'da 10 değerinde vergi belirtilmektedir. ardından

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

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

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

Tam olarak bir percentage, fixed_amount fixed_amount_per_night, fixed_price veya fixed_price_per_night gereklidir.

Toplamdan çıkarılacak sabit tutar AmountAfterTax gecelik ücret (veya toplam AmountBeforeTax gecelik ücret AmountAfterTax belirtilmemiş). Öngörülen gecelik ücretlerle aynı para biriminde olduğundan emin olun. Bu değer gecelik ücretleri topladıysa sonuç sıfır olur.

Örnekler:

  • 1 gecelik konaklama fiyatlandırdığımızda AmountBeforeTax 90, AmountAfterTax 100 ve fixed_amount 20 ise

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • 1 gecelik konaklama fiyatlandırdığımızda AmountBeforeTax 100, fixed_amount 20'dir ve TaxFeeInfo'da %8'lik bir vergi belirtiliyorsa

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

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

  • 1 gecelik konaklama fiyatlandırdığımızda AmountBeforeTax 50, fixed_amount 50 60 ve TaxFeeInfo'da 10 değerinde vergi belirtiliyorsa

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

    10,00 = 0 + 10

  • 3 gecelik konaklamayı fiyatlandırırsak AmountAfterTax değerleri 100, 110 ve 120'dir; ve fixed_amount 150'dir, sonra

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

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

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

Tam olarak bir percentage, fixed_amount fixed_amount_per_night, fixed_price veya fixed_price_per_night gereklidir.

Her bir AmountAfterTax öğesine sabit indirim uygulanır. gecelik ücretler (veya applied_nights belirtilirse en ucuz N). Eğer AmountAfterTax belirtilmemiş, şuna uygulandı: AmountBeforeTax. Öngörülen gecelik ücretlerle aynı para biriminde olduğundan emin olun. Eğer fixed_amount_per_night, şundan daha büyük: o gecelik ücret sıfıra düşürülür. İndirim, gecelik fiyatın negatif olmasına neden olamaz.

Örnekler:

  • 3 gecelik konaklamayı fiyatlandırırsak AmountAfterTax değerleri 100, 110 ve 120'dir; ve fixed_amount_per_night 10, ardından

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

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

  • 3 gecelik konaklamayı fiyatlandırırsak AmountAfterTax değerleri 10, 50 ve 100'dür; ve fixed_amount_per_night 20, ardından

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

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

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

Tam olarak bir percentage, fixed_amount fixed_amount_per_night, fixed_price veya fixed_price_per_night gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu konaklama fiyatını, vergi ve ücretler dahil olmak üzere belirtilen değer. AmountBeforeTax belirtilmişse AmountAfterTax belirtilse de olmasa da, bu işlem belirtilen değer kadar konaklama için vergi öncesi fiyat. Öngörülen gecelik ücretlerle aynı para biriminde olduğundan emin olun.

AmountAfterTax, bir yüzdelik vergi hesaplayıp AmountBeforeTax, vergi ve ücretlerde hataya neden olabilir. Genel olarak TaxFeeInfo kullanmanız kesinlikle önerilir seçeneğini tıklayarak tesisin vergi ve ücretlerini belirtebilirsiniz.

Örnekler:

  • 1 gecelik konaklama fiyatlandırdığımızda AmountBeforeTax 90, AmountAfterTax 100 ve fixed_price 80 ise promosyon ücreti 80 olur.
  • 1 gecelik konaklama fiyatlandırdığımızda AmountBeforeTax 100, fixed_amount 80'dir ve TaxFeeInfo'da %8'lik bir vergi belirtiliyorsa

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

    86,40 = 80 * 1,08

  • 3 gecelik konaklamayı fiyatlandırırsak AmountAfterTax değerleri 100, 110 ve 120'dir; ve fixed_amount 300'dür, ardından

    promosyon ücreti = 300

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

Tam olarak bir percentage, fixed_amount fixed_amount_per_night, fixed_price veya fixed_price_per_night gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu konaklamanın vergi ve ücretler dahil olmak üzere her gecesine ait fiyatı belirtilen değer. AmountBeforeTax belirtilmişse AmountAfterTax belirtilse de olmasa da, bu işlem belirtilen değerde konaklama her gece için vergi öncesi fiyat. Evet gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax, bir yüzdelik vergi hesaplayıp AmountBeforeTax, vergi ve ücretlerde hataya neden olabilir. Genel olarak TaxFeeInfo kullanmanız kesinlikle önerilir seçeneğini tıklayarak tesisin vergi ve ücretlerini belirtebilirsiniz.

applied_nights belirtilirse yeni fiyat üç gecelik bir ücret uygulanmıştır.

Örnekler:

  • 2 gecelik konaklama için fiyat veriyorsak AmountBeforeTax değerleri 90, 90; AmountAfterTax değerleri 100, 100'dür; ve fixed_price 80 ise promosyon ücreti 80 + 80 = 160.
  • 2 gecelik konaklama için fiyat veriyorsak AmountBeforeTax 100, 100'dür; fixed_amount 80'dir ve TaxFeeInfo %8'lik bir vergi belirtir ve ardından promosyon oranı eşittir (80 + 80) * 1,08 = 172,8.
  • 3 gecelik konaklamayı fiyatlandırırsak AmountAfterTax değerleri 100, 110 ve 120'dir; ve fixed_amount 110 ise promosyon ücreti 110 * 3 olur = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Bu yalnızca percentage veya fixed_amount_per_night.

İndirimin uygulandığı gece sayısı. Bu değer: en uygunudur. 1 ile 99 arasında bir tam sayı olmalıdır. Belirtilmemişse İndirim tüm gecelere uygulanır.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Minimum konaklama süresinde, konaklamanın belirli gecelerinde yapılacak indirimi belirtir belirlenebilir. Üst Discount öğesindeki özellikler bu öğe kullanılırsa izin verilmez.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

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

Örneğin, stay_nights adlı 10 gecelik konaklama için 4 (ve repeats doğru) ise iki konaklama gecesi yapılıyor Segmentler: 1. ila 4. geceler ve 5. ila 8. geceler; "the" 9. ve 10. geceler, gece konaklama segmentine dahil değildir.

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

İndirimin birden fazla konaklama için uygulanıp uygulanmayacağı emin olun. false ise yalnızca konaklama geceleri segmenti seyahat planının başlangıcına indirim uygulanır. true ise, Konaklama gecelerinin tüm segmentlerinde indirim yapılır.

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

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Bu promosyona bir rütbe atar ve sıralamayı seçime dahil eder. yalnızca en düşük sıralamaya sahip promosyon uygulanır. Değerler 1 ile 99 arasında (bu değerler dahil) olmalıdır. Aynı modeli birden fazla promosyon paylaşıyorsa rastgele seçilir ve uygulanır.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Tam olarak bir Discount veya BestDailyDiscount belirtilmelidir.

Şu geceye uygulanabilecek günlük indirimi belirtir: kalır. Bu durum, geçerli olan Discount metriğinin aksine tüm konaklamalarda indirimler.

Her tesisin şu özelliklere sahip tek bir promosyon grubu olabilir: "günlük en iyi" olarak değerlendirilir. Yani her gece konaklamanın süresi, single "en iyi günlük" en yüksek getiriyi sağlayan ve en yüksek dönüşüm oranını o gece için indirim seçilmiştir ve uygulanabilir.

Stacking şununla belirtilemez: BestDailyDiscount. "En iyi günlük" en iyi sonuçları sağlayan her gece için en yüksek indirim birleştirilip tek bir indirim olarak ele alınır. yığınlama türü şu şekilde ayarlanmış konaklama indirimi (ör. Discount) base. Bu birleştirilmiş indirim karşılaştırılır. diğer uygun <İndirim> promosyonları en kapsamlı indirimi sağlayan bir veya daha fazla kombinasyonu bulunur. Ya BestDailyDiscount veya tek bir kombinasyon Daha düşük fiyatı veren Discount seçilir ve base yığın türü uygulandı.

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

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

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir. AmountAfterTax (veya AmountAfterTax değilse AmountBeforeTax belirtilir).

Örnekler:

  • Konaklama gecesi için AmountAfterTax 100 ve percentage 20, ardından

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

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

  • Konaklama süresi AmountBeforeTax 100 ise percentage 20'dir ve TaxFeeInfo'da 10 değerinde vergi belirtilmektedir. ardından

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

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

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

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

Tek bir değerden çıkarılacak sabit tutar AmountAfterTax gecelik ücret (veya Şu koşullarda gecelik fiyat: AmountBeforeTax AmountAfterTax belirtilmemiş). Öngörülen gecelik ücretlerle aynı para biriminde olduğundan emin olun. Bu değer gecelik ücretleri topladıysa sonuç sıfır olur.

Örnekler:

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

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • Tek bir gece için AmountBeforeTax değeri 100 ise, fixed_amount 20'dir ve TaxFeeInfo, şu tutarda bir vergi belirtir: %8, ardından

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

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

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

Tam olarak bir percentage, fixed_amount veya fixed_price gereklidir.

AmountAfterTax gecelik ücret belirtilirse bu konaklama gecesinin fiyatını, vergiler ve ücretler dahil olmak üzere belirtilen değer. AmountBeforeTax belirtilmişse AmountAfterTax belirtilse de olmasa da, bu işlem belirtilen değer kadar konaklama için vergi öncesi fiyat. Öngörülen gecelik ücretlerle aynı para biriminde olduğundan emin olun.

Örnekler:

  • Tek bir gece için AmountBeforeTax değeri 90 ise: AmountAfterTax 100 ve fixed_price 80 ise promosyon ücreti 80 olur.
  • Tek bir gece için AmountBeforeTax değeri 100 ise, fixed_amount 80'dir ve TaxFeeInfo şu tutarda bir vergi belirtir: %8, ardından

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

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount İçinde müsait olması gereken oda sayısına ilişkin kısıtlamaları tanımlar bu promosyonun uygulanması için sipariş verin. İndirim yalnızca gece sayısını karşılaştırabilirsiniz. fixed_amount indirim. Mevcut projeniz için odalar için OTA_HotelInvCountNotifRQ (InvCount) veya OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer Promosyon için kullanılabilir olması gereken minimum oda sayısı uygulanacak. Bu belirtilmemişse minimumdur.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer Promosyon için kullanılabilir olması gereken maksimum oda sayısı uygulanacak. Bu belirtilmemişse daha fazla bilgi edineceksiniz.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Bu promosyonun uygulanabileceği konaklama süresi sınırlarını belirler. geçerlidir. Konaklama süresi şunun dışında olduğunda promosyon uygulanmaz: min. ve maksimum sınırları belirleyin.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer Promosyonun belirlenebilmesi için konaklamada izin verilen minimum gece sayısı geçerlidir. Belirtilmezse minimum değer yoktur.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer Promosyonun kullanılabilmesi için konaklamada izin verilen maksimum gece sayısı geçerlidir. Belirtilmezse maksimum değer yoktur.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Belirli bir kullanıcı arayüzünü tetikleyen üyelik ücreti kuralının kapsayıcısıdır. değerlendirilmesi gerekir.

Bu öğe, belirli bir süre için geçerli olmadıkça <Discount> öğesi de belirtilmiş.

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

kimliği ücret kuralı dahil olduğundan emin olun.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Günlük oda fiyatlarının minimum toplamını belirtir ( AmountBeforeTax veya AmountAfterTax) sınırı aşılmamalıdır.
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 geçerli olduğu kişi sayısıyla ilgili kısıtlamaları tanımlar. geçerlidir. Şu değerlerin dışında olanlarda promosyon uygulanmaz: min. ve maks. sınırlar.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer Bu özelliğin kullanılabilir hale gelmesi için kullanıcı tarafından belirtilen doluluk değerinin en az bu uygulanacak indirimdir.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Aşağıdaki özelliğin dönüşüm geçirebilmesi için, kullanıcı tarafından belirtilen doluluk değerinin en fazla bu değer olması gerekir. uygulanacak indirimdir.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Promosyonun geçerli olduğu ücret planları listesinin kapsayıcısıdır. <RatePlans> belirtilmezse promosyon tüm ücret planları için geçerlidir.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Ücret planını belirtir. Ücret planı, (İşlem'de tanımlandığı şekilde paket, ücretler ve stok durumu) (Tesis Verileri), OTA_HotelRateAmountNotifRQ ve OTA_HotelAvailNotifRQ iletilerinin yer aldığı ve PackageID tarafından tanımlandığı şekilde yapılır.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string Ücret planının benzersiz tanımlayıcısıdır. Bu değer, <PackageData> içindeki PackageID değeri Transaction (Tesis Verileri) mesajında ve RatePlanCode özelliği Her ikisinde de <StatusApplicationControl> <OTA_HotelRateAmountNotifRQ> ve <OTA_HotelAvailNotifRQ> mesaj. İ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 her <RoomType> için geçerlidir belirtiliyor. <RoomTypes> belirtilmezse promosyon tüm odalar için geçerlidir.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Oda türünü belirtir. Oda türü <RoomData> öğesi Transaction (Tesis Verileri) mesajı ve (<RoomID> değeri kullanılarak) referans verildi. ( <RoomID> değerine, OTA_HotelRateAmountNotifRQ öğesinde InvTypeCode özelliği messages.)
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) mesajında <RoomID> adresine. İzin verilen maksimum karakter sayısı 50'dir.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Promosyonların nasıl birleştirilebileceğini belirtir. Belirtilmemişse "type" base olduğu varsayılır.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Şuna bağlı olarak tek bir ücrete birden fazla promosyon uygulanabilir: bu ayar:

  • any: Diğer promosyonlarla birleştirilebilir ( none), ancak promosyonların olması gereken sırada garanti edilmez.
  • base: Uygun en iyi base promosyonu: önce seçilip uygulanır. Bu Önceden base_only olarak adlandırıldı.
  • second: Uygun en iyi second promosyonu base promosyondan sonra seçilip uygulanır (geçerliyse) ve any promosyondan önce.
  • none: Diğer promosyonlar.

İzin verilen kombinasyonlar arasından en yüksek indirim fiyata uygulanır.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Bir veya daha fazla tarih aralığının yer aldığı kapsayıcı mevsimsel indirimlere uymak gibi amaçlarla promosyon uygulanır.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

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

Geçerli değerler şunlardır:

  • all: Promosyonu seyahat planındaki tüm tarihler çakışıyorsa seyahat planı tercih edebilirsiniz.
  • any: Promosyonu şu gündeki tüm gecelere uygular: üzerindeki herhangi bir tarihin konaklama tarihleri aralığı.
  • overlap: Promosyonu yalnızca şunlara uygular: konaklama tarihlerindeki bir tarihle çakışan seyahat planındaki gece sayısı aralığı.

Bu özellik her zaman belirtilmelidir.

  • <Discount>, percentage değerini belirtiyorsa ve application, all veya İndirim, any tam konaklama.
  • <Discount>, percentage değerini belirtiyorsa ve application overlap olarak ayarlanırsa İndirim, çakışan fiyatlar için gecelik ücretlerin yüzdesi olarak uygulanır geceleri.
  • <Discount>, fixed_amount değerini belirtiyor overlap olarak ayarlanmış application ise geçersiz kombinasyon.
  • <FreeNights> tüm kampanyaları destekliyor application değerleri. overlap için, Yalnızca çakışan konaklama geceleri indirim için dikkate alınır gereksinimlerini karşılayı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 özelliklerinden biri yıl değeri belirtilmemişse tarihinin her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yılsız tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine aralığı, bitişik iki tarih aralığı olarak temsil eder. Örneğin, {"12-29", "01-05"} şu şekilde temsil edilebilir: {"12-29", "12-31"} ve {"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate Başlangıç tarihi (tesisin bulunduğu saat dilimine göre), seçin. Bu tarih, end tarihi. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate Tesisin bulunduğu saat dilimine göre, bitiş tarihi seçin. Bu tarih, start tarihiyle aynı veya bu tarihten sonra olmalıdır tarihi. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırsızdır.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

Tarih aralığında izin verilen günleri ifade eder. Değilse belirtilen tarih aralığında tüm günlere izin verilir. Her biri karakteri bir günü belirtir. Örneğin, "MTWHF" belirtir belirtilen tarih aralığında hafta içi günlerine izin verilir.

Geçerli karakterler şunlardır:

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

Karakter kombinasyonları geçerlidir.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Uygun olan kullanıcı konumlarını (ülkeleri) listeleyen kapsayıcı teşvik edebilirsiniz. Belirtilmişse yalnızca listelenen uygun kullanıcılar indirimli fiyat sunulur. Belirtilmemişse uygun tüm ülkelerdeki kullanıcılara indirimli fiyat sunulur.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum UserCountry spesifikasyonunun türü.

Geçerli değerler: include ve exclude.

Kullanıcı ülkeleri type değeri şu şekilde ayarlanırsa: include, promosyon şu ülkelerdeki kullanıcılar için geçerlidir: listelenen ülkeler.

Kullanıcı ülkeleri type değeri exclude ise promosyon listelenenlerin dışındaki kullanıcılar için geçerlidir ülkeler.

UserÜlkeler type ayarlanmazsa şu şekilde kabul edilir: include ve promosyon şu ülkelerdeki kullanıcılara uygulanır: listelenen ülkeler.

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

Örnekler

Tesis başına 500 promosyon sınırı vardır. Daha fazla bilgi için promosyon" Örnek olarak bir tesisteki promosyonları kaldırabilirsiniz.

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, aşırı yüksek bir indirimin nasıl oluşturulacağı gösterilmektedir Varış tarihine yakın envanter:

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


Bir promosyonu silme

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

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

Tüm promosyonları sil

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

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



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

Aşağıdaki örnekte bir mülk için <HotelPromotions> yer paylaşımının nasıl yapılacağı gösterilmektedir bir veya daha fazla yeni promosyonla ekleyebilirsiniz. action="overlay" olduğunda tümü depolanır Promosyonlar geçerli mesaj:

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

3 Farklı Birleştirme Türü

Aşağıdaki örnekte, üç farklı promosyonun kullanılabileceği bir durum gösterilmektedir uygulandı (base, second, any). none promosyonu Diğer promosyonlar daha iyi indirim sağladığı için uygulanır. Asıl 100 TL olsaydı indirimli fiyat 72, 90 TL olurdu.

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


Yok Yığma Türü

Aşağıdaki örnekte, none promosyonunun Diğer promosyonların kombinasyonu daha düşük bir indirim sağlar. Öğe 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üre Sınırları

Aşağıdaki örnekte BookingWindow öğesinin öğesi, başlangıç ve bitiş sınırları ISO 8601 Süresi olarak tanımlanmış şekilde kullanılır türü. Bu rezervasyon aralığı kısıtlaması için en geç 18:00'de rezervasyon yapmanız gerekiyor Varıştan önceki gün ve 2. günde saat 12:00'de veya sonrasında gösterir.

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


Rezervasyon Tarihleri Tarih ve Saat Sınırları

Aşağıdaki örnekte BookingDates öğesinin öğesi, aşağıdaki durumlarda start ve end özellikleriyle kullanılır: DateTime türlerine bağlıdır. Bu rezervasyon tarihi kısıtlaması nedeniyle rezervasyonun gerçekleşmesi gerekiyor 01.07.2020 06:30 ve 02.07.2020 18:45 arasında.

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


Yılsız tarih aralıkları

Aşağıdaki örnekte CheckInDates öğesinin öğesi, start içeren DateRanges ve Yıl içermeyen end alan. Bu örnekte, promosyon her yıl 2 Kasım 2029 ile 01:00 tarihleri arasındaki check-in tarihlerine katılıyorsunuz. Yılsız Yeni yıl sınırını aşan tarih aralıkları geçersiz olduğundan DateRange bitişik iki tarih aralığı olarak ifade edilir.

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



FreeNights indirimi

Aşağıdaki örnekte, iki gecelik konaklamalar için her dört gece için% 50 indirim belirtilen rezervasyon tarihi aralığı. On gecelik seyahat planı için toplam tutar 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 örnek gecelik indirim, konaklama süresi boyunca her üç gece için% 50 oranında belirtilen konaklama tarihleri aralığı Yalnızca çakışan gece sayısı (konaklama sayısı) indirime hak kazanmayı hedefler. Check-in yapılan aşağıdaki seyahat planı için 01.01.2022'de çıkış yapacak ve 07.01.2022'de çıkış yapacak ve konaklamaya ve indirimler aşağıdaki şekilde uygulanır.

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


Sıralı Seçim

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

<?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 örnek, BestDailyDiscount, bir Discount ile birlikte gösteriliyor.

<?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 konaklamayı düşünebilirsiniz Hesaplama için, en iyi günlük indirim oranını sağlayan bulunur.

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

İkinci gece için “may” daha fazla indirim sunar. "genel" indirim. “ sabit indirim seçiliyken tutar 50.

Konaklama için de "şenlik" gecelik 5 adete promosyon indirimi veya Toplam 10. En iyi günlük indirimlerin kombinasyonuyla birlikte kullanılabilir. çünkü "fiesta" yığma türü any olarak ayarlanmış. Ayarlanmışsa base, yalnızca en iyi günlük indirimlerin veya "fiesta" indirim uygulanır. Şu açıklamaya bakın: Daha fazla bilgi için Stacking.

Genel olarak konaklamanın fiyatına 20 + 50 + 10 = 80 sabit tutar verilir. indirim.

Yanıtlar

Söz dizimi

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

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

Öğeler ve Özellikler

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

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

<Success> veya <Issues> her iletide yer alır.

PromotionsResponse / Issues 0..1 Issues işlenirken karşılaşılan bir veya daha fazla sorun için bir kapsayıcı Promosyonlar mesajı.

<Success> veya <Issues> her iletide yer alır.

PromotionsResponse / Issues / Issue 1..n Issue Güncelleme sırasında karşılaşılan uyarı, hata veya sorunun Promosyonlar mesajını işliyoruz. Bu sorunlarla ilgili ayrıntılar şurada bulunabilir: bir listesini oluştur: Feed Durumu Hata Mesajları.
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.

Örnekler

Başarılı

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

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

Sorunlar

Aşağıda, hatalar.

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