العروض الترويجية

نظرة عامة

تتيح لك واجهة برمجة التطبيقات هذه تحديد الخصومات المحتملة. من بين العروض الترويجية المحدّدة، تطبّق Google العرض الترويجي المؤهّل أو مجموعة العروض الترويجية التي تؤدي إلى تحديد أدنى سعر. إذا كنت تبحث عن واجهة برمجة تطبيقات تتيح السعر العشوائي التعديلات التي يمكن أن تؤدي إلى زيادة السعر أو خفضه عندما تكون الظروف رضا عالٍ، إذن ضع في اعتبارك Rate Modifications API: يُرجى العلم بأنّه في حال توفُّر كِلا واجهتَي برمجة التطبيقات، سيتم تطبيق تعديلات الأسعار قبل أو العروض الترويجية.

الطلبات

البنية

تستخدم الرسالة Promotions البنية التالية:

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

العناصر والسمات

تحتوي رسالة العروض الترويجية على العناصر والسمات التالية:

العنصر / @Attribute عدد مرات الظهور النوع الوصف
Promotions 1 Complex element تمثّل هذه السمة العنصر الجذر لرسالة ترويجية.
Promotions / @partner 1 string حساب الشريك لهذه الرسالة قيمة السلسلة هذه هي "مفتاح الشريك" القيمة مدرجة في صفحة "إعدادات الحساب" في Hotel Center.

إذا كانت لديك واجهة خلفية توفر خلاصات حسابات متعددة، يجب أن تتطابق هذه القيمة مع ID قيمة السمة المحددة في <RequestorID> العنصر الأساسي في <OTA_HotelRateAmountNotifRQ> <OTA_HotelAvailNotifRQ> رسالة لنفس الحساب.

Promotions / @id 1 string معرّف فريد لرسالة الطلب هذه يتم عرض هذه القيمة في رسالة الرد. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة).
Promotions / @timestamp 1 DateTime تاريخ إنشاء هذه الرسالة ووقتها.
Promotions / HotelPromotions 0..n HotelPromotions

العروض الترويجية لأحد المواقع. ينطبق كل عرض ترويجي على عرض الموقع.

ما لم يتم استخدام <Stacking>، تُطبَّق على الحجز العرض الترويجي الحاصل على أكبر خصم تكون عدّة عروض ترويجية مؤهّلة.

Promotions / HotelPromotions / @hotel_id 1 string تشير هذه السمة إلى المعرّف الفريد الخاص بالمكان المخصّص للاستئجار. يجب أن تتطابق هذه القيمة مع تم تحديد رقم تعريف الفندق باستخدام <id> في العنصر <listing> في خلاصة قوائم الفنادق مُدرَج أيضًا رقم تعريف الفندق في مركز إدارة معلومات الفنادق.
Promotions / HotelPromotions / @action 0..1 enum

في حال تحديدها، يجب أن تكون القيمة "overlay" عندما تكون القيمة "overlay"، يتم يتم حذف العروض الترويجية المخزنة قبل تخزين العروض الترويجية المحددة في الرسالة الحالية.

في حال عدم تحديد قيمة لهذه السمة، يكون كل عرض ترويجي محدّد في الرسالة الحالية هو:

  • Added (إذا لم يتضمن أي من العروض الترويجية المخزنة نفس id)
  • Updated (إذا كان عرض ترويجي محفوظ يحتوي على النتيجة نفسها id)
  • Deleted (إذا كان العرض الترويجي المخزّن يتضمّن id نفسه وكانت قيمة سمة action للعرض الترويجي المحدّد في الرسالة الحالية هي "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

عرض ترويجي واحد لفندق. يُرجى العلم أنّه في حال عدم تحديد action="overlay" و<Promotion> ، سيتم حذف جميع العروض الترويجية للموقع.

إذا كنت بحاجة إلى استخدام أكثر من 99 عرضًا ترويجيًا، يُرجى التواصل مع المدير التقني للحساب.

Promotions / HotelPromotions / Promotion / @id 1 string معرّف فريد للعرض الترويجي الحد الأقصى لعدد الأحرف المسموح بها هي 40. الأحرف المسموح بها هي a-z وA-Z و0-9 و0-9. _ (شرطة سفلية) و- (شرطة) و . (نقطة).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

وفي حال تحديدها، يجب أن تكون القيمة delete. إذا لم يكن كذلك محددة وa لا يتم تخزين العرض الترويجي الذي يستخدم id نفسها، تخزين الترويج. بخلاف ذلك، إذا لم يتم تحديد عرض ترويجي، يسري العرض عليه تم تخزين id نفسها، يصبح العرض الترويجي الحالي تحديث.

إذا تم تحديد delete، سيحمل العرض الترويجي المخزن مع يتم حذف id نفسها. عند استخدام delete، لا تضمِّن أي عناصر فرعية في <Promotion> أيضًا، delete ليس يتم السماح بذلك مع <HotelPromotions action="overlay"/>.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates حاوية لنطاق واحد أو أكثر تحدّد وقت إجراء الحجز لكي يتم تطبيق العرض الترويجي.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange نطاق يحدّد وقت إجراء الحجز ليتم تطبيق العرض الترويجي المنهجية.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date أو DateTime

تاريخ البدء أو التاريخ (استنادًا إلى المنطقة الزمنية للموقع) وشاملة ضمن النطاق.

  • يجب أن يكون التاريخ أو التاريخ المحدَّد في start هو قبل (أو مماثلين) للتاريخ أو التاريخ والوقت المحددين end
  • إذا لم يتم تحديد start، يتم استخدام النطاق بفعالية. غير محدود من حيث وقت البدء.
  • إذا تمت تعبئة start كتاريخ "YYYY-MM-DD"، تم تفسيره على أنه تاريخ ووقت "YYYY-MM-DDT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date أو DateTime

تاريخ الانتهاء أو التاريخ والوقت (استنادًا إلى المنطقة الزمنية للموقع) وشاملة ضمن النطاق.

  • يجب أن يكون التاريخ أو الوقت المحدَّد في "end" لاحقًا. من (أو مماثلة) للتاريخ أو التاريخ والوقت المحددين start
  • إذا لم يتم تحديد end، يتم استخدام النطاق بفعالية. غير محدود من حيث وقت الانتهاء.
  • إذا تم تقديم السمة end كتاريخ "YYYY-MM-DD"، تكون تم تفسيره على أنه تاريخ ووقت "YYYY-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. على كل يحدد الحرف في السلسلة يومًا. على سبيل المثال، "MTWHF" يحدد أن أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W ليوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow تحدِّد هذه السياسة الفترة الزمنية التي يجب أن يحدث فيها الحجز نسبةً إلى تاريخ تسجيل الوصول (استنادًا إلى المنطقة الزمنية للموقع). على سبيل المثال، يمكن ضبط فترة الحجز على 7 أيام على الأقل، ولا تزيد عن 180 يومًا، قبل تسجيل الوصول.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration الحدّ الأدنى للمدة المحدّدة قبل تسجيل الوصول عند وجوب إجراء الحجز كي يتم تطبيق العرض الترويجي إذا لم يتم تحديد قيمة الحقل أو قيمة هذه السمة هي 0، ما مِن حد أدنى.

أنواع القيم الصالحة هي:

  • عدد صحيح: عدد الأيام قبل تسجيل الوصول التاريخ. على سبيل المثال، تشير القيمة 30 إلى لا يسري العرض الترويجي إلا على الحجوزات قبل 30 يومًا على الأقل من تاريخ تسجيل الوصول.
  • المدة وفقًا لمعيار ISO 8601 (الأيام والساعات والدقائق): عدد أيام (واختيارية ساعات/دقائق) قبل تاريخ تسجيل الوصول. بالنسبة على سبيل المثال، تشير القيمة P30D إلى العرض الترويجي فقط. على الحجوزات قبل 30 يومًا على الأقل من تاريخ تسجيل الوصول. حاسمة بقيمة P30DT6H، يجب الحجز في الساعة 6:00 مساءً أو قبلها اليوم الثلاثين قبل الوصول.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration الحدّ الأقصى لعدد الأيام قبل تسجيل الوصول الذي يجب فيه إجراء الحجز كي يتم تطبيق العرض الترويجي إذا لم يتم تحديد قيمة الحقل أو قيمة هذه السمة هي 0، ما مِن حد أقصى.

أنواع القيم الصالحة هي:

  • عدد صحيح: عدد الأيام قبل تاريخ تسجيل الوصول على سبيل المثال، تشير القيمة 30 إلى لا يسري العرض الترويجي إلا على الحجوزات قبل 30 يومًا كحد أقصى من تاريخ تسجيل الوصول.
  • المدة وفقًا لمعيار ISO 8601 (الأيام والساعات والدقائق): عدد أيام (واختيارية ساعات/دقائق) قبل تاريخ تسجيل الوصول. على سبيل المثال، تشير القيمة P30D إلى أنّ العرض الترويجي لا ينطبق إلا على الحجوزات التي تتم قبل 30 يومًا بحد أقصى من تاريخ تسجيل الوصول. حاسمة بقيمة P30DT6H تتطلب الحجز في الساعة 6:00 مساءً أو بعد هذا التاريخ اليوم الثلاثين قبل الوصول.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

تحدّد هذه السمة القيود المفروضة على الحد الأقصى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية.

يجب أن تحدِّد العروض الترويجية دائمًا <Discount> أو <BestDailyDiscount>، لذا لإنشاء عرض ترويجي لا يطبِّق سوى <Ceiling>، يمكنك ضبط <Discount> مع percentage0.

في حال ضبط هذه السياسة، يتم عرض عدة عروض ترويجية ويمكن أن تنطبق <Ceiling> على إقامة واحدة. كل عرض ترويجي تطبيق التخفيض، يليه سقفه مباشرة. تشير رسالة الأشكال البيانية المثال التالي كيف يساهم كل سقف في المرحلة التالية وحساب العرض الترويجي في الحزمة.

مثال:

تحديد أسعار إقامة لمدة ليلة واحدة في فندق AmountBeforeTax 100 ولدينا عرضان ترويجيان هما:

  1. عرض ترويجي بنوع التكديس base، a fixed_amount من 25 وسقفًا amount_per_night من 60
  2. عرض ترويجي بنوع التكديس second، fixed_amount من 25 وسقفًا amount_per_night من 90

في ما يلي ترتيب الحساب:

  1. يتم تطبيق العرض الترويجي base أولاً ويتم تطبيق الخصومات عليه. AmountBeforeTax إلى 75، ولكن بعد ذلك سينخفض السقف إلى 60.
  2. يخصم العرض الترويجي second AmountBeforeTax من 60 إلى 35. إنه تحت السقف 90 وبالتالي لا يتم تطبيق الحد الأقصى الثاني. السعر النهائي هو 35.

إنّ حقيقة أنّ 60 هو الحدّ الأقصى العام الأكثر صرامة لا يهمّ، لأنّه لا يسري إلا على العرض الترويجي الخاص به، ولا يمكن أن يكون هناك وحده حدّ أقصى يشمل حزمة العروض الترويجية بأكملها.

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

الحد الأقصى للمبلغ الذي يمكن ضبط سعر الإقامة في الليلة عليه بعد تطبيق الخصم.

إذا تم تحديد عنصر <Floor> أيضًا، سيتم يجب تعيينه على قيمة أكبر من أو تساوي سمة amount_per_night في <Floor>

تُطبَّق amount_per_night على الضرائب والرسوم عند يتم تضمينها في سعر الليلة باستخدام AmountAfterTax، ولكن غير تلك المحددة باستخدام معلومات الضرائب.

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

تحدد القيود المفروضة على الحد الأدنى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية

يجب أن تحدد العروض الترويجية دائمًا <Discount> أو <BestDailyDiscount>، وذلك لإنشاء عرض ترويجي لا ينطبق سوى <Floor>، أحد الخيارات هو ضبط <Discount> مع percentage من 0

لا يزال منطق <Floor> ينطبق على خصومات <FreeNights>، حتى إذا كان لليلة المجانية سيتم تطبيق خصم بقيمة 100%.

في حال ضبط الميزة "تجميع العروض الترويجية"، يمكن أن تنطبق عروض ترويجية متعددة مع <Floor> على إقامة واحدة. سيطبّق كل عرض ترويجي الخصم الخاص به، وسيتبعه السعر الأدنى على الفور. تشير رسالة الأشكال البيانية المثال التالي كيف يساهم كل طابق في المستوى التالي وحساب العرض الترويجي في الحزمة.

مثال:

تحديد سعر الإقامة لمدة ليلة واحدة حيث يكون AmountBeforeTax هو 100 ويكون هناك مجموعة من عرضَين ترويجيَين:

  1. عرض ترويجي بنوع التجميع base و fixed_amount‏ 25 و amount_per_night‏ 90
  2. عرض ترويجي بنوع التكديس second، fixed_amount من 25، وطابق amount_per_night من 60

فيما يلي ترتيب الحساب:

  1. يتم تطبيق العرض الترويجي base أولاً ويخفض سعر AmountBeforeTax إلى 75، ولكن بعد ذلك ترفع الحدّ الأدنى له إلى 90.
  2. يقدّم العرض الترويجي second خصمًا على AmountBeforeTax من 90 إلى 65. هذا أعلى الطابق 60 وبالتالي لا يتم تطبيق الطابق الثاني. السعر النهائي هو 65.

حقيقة أن 90 هو حد إجمالي أكثر صرامة ليس له صلة بالموضوع صالحة فقط للترويج الخاص بها، ولا يجوز الحد الذي يمتد إلى حزمة العروض الترويجية بالكامل

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

الحد الأدنى للمبلغ الذي يمكن ضبط سعر الليلة عليه بعد تطبيق الخصم

إذا تم تحديد عنصر <Ceiling> أيضًا، سيتم يجب تعيينه على قيمة أقل من أو تساوي سمة amount_per_night في <Ceiling>

تُطبَّق amount_per_night على الضرائب والرسوم عند يتم تضمينها في سعر الليلة باستخدام AmountAfterTax، ولكن غير تلك المحددة باستخدام معلومات الضرائب.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates حاوية لنطاق زمني واحد أو أكثر تحدّد وقت تسجيل الوصول كي يتم تطبيق العرض الترويجي
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

نطاق زمني يحدّد وقت تسجيل الوصول لكي يتم تطبيق العرض الترويجي هذا العنصر غير مطلوب إذا حذفت عنصرًا واحدًا أو أكثر. أو العروض الترويجية.

يمكنك أيضًا استخدام التنسيق YearlessDate.

  • إذا كان أي من start أو end غير سنوي تاريخ، يجب تعبئة كليهما كتواريخ غير سنوية.
  • يجب ألا تنتهي النطاقات الزمنية للسنة مع حلول العام الجديد. بدلاً من ذلك، لتمثيل النطاق كنطاقين زمنيين متجاورين. على سبيل المثال: يمكن تمثيل {"12-29", "01-05"} كـ {"12-29", "12-31"} {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate تاريخ البدء (بناءً على المنطقة الزمنية للموقع) شاملاً النطاق الزمني. ويجب أن يكون هذا التاريخ قبل أو مطابقًا لتاريخ التاريخ: end إذا لم يتم تحديد start، يتم تضمين التاريخ غير محدود فعليًا من حيث تاريخ البدء.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) في ما يتعلق النطاق الزمني. يجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. التاريخ. إذا لم يتم تحديد end، يتم تضمين التاريخ غير محدود فعليًا من حيث تاريخ الانتهاء.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يكن كذلك محدد، يُسمح بجميع الأيام في النطاق الزمني. على كل يحدد الحرف في السلسلة يومًا. على سبيل المثال، "MTWHF" يحدد أن أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W ليوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates حاوية لنطاق زمني واحد أو أكثر تحدّد وقت الدفع لكي يتم تطبيق العرض الترويجي.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

نطاق زمني يحدّد وقت إتمام الدفع لكي يسري العرض الترويجي تطبيق المشروع. هذا العنصر غير مطلوب إذا كنت تريد حذف عرض ترويجي واحد أو أكثر.

يمكنك أيضًا استخدام التنسيق YearlessDate.

  • إذا كان أحد الحقلين start أو end يحتوي على تاريخ بدون سنة، يجب تعبئة الحقلين كتاريخَين بدون سنة.
  • يجب ألا تنتهي النطاقات الزمنية للسنة مع حلول العام الجديد. بدلاً من ذلك، لتمثيل النطاق كنطاقين زمنيين متجاورين. على سبيل المثال: يمكن تمثيل {"12-29", "01-05"} كـ {"12-29", "12-31"} و {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate تاريخ البدء (بناءً على المنطقة الزمنية للموقع) شاملاً النطاق الزمني. ويجب أن يكون هذا التاريخ قبل أو مطابقًا لتاريخ التاريخ: end إذا لم يتم تحديد start، يتم تضمين التاريخ غير محدود فعليًا من حيث تاريخ البدء.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) في ما يتعلق النطاق الزمني. يجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. التاريخ. إذا لم يتم تحديد end، يتم تضمين التاريخ غير محدود فعليًا من حيث تاريخ الانتهاء.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يكن كذلك محدد، يُسمح بجميع الأيام في النطاق الزمني. على كل يحدد الحرف في السلسلة يومًا. على سبيل المثال، "MTWHF" يحدد أن أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W ليوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أيّ مجموعة من الأحرف صالحة.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices حاوية لعرض أجهزة المستخدمين المؤهَّلة للاستفادة من الميزة الترويجية المستخدمون المؤهَّلون على الأجهزة المُدرَجة فقط، في حال تحديده السعر المخفض. إذا لم يتم تحديده، فسينضم المستخدمون المؤهلون في أي الجهاز بسعر مخفض.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device تحدّد هذه السمة نوعًا واحدًا من أجهزة المستخدمين مؤهَّلاً للاستفادة من العرض الترويجي.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum نوع الجهاز يجب أن تكون القيمة desktop. tablet أو mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

واحد بالضبط من Discount أو يجب تحديد BestDailyDiscount.

تحدّد هذه السمة الخصم الذي سيتم تطبيقه على هذا العرض الترويجي.

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

واحد بالضبط من percentage، fixed_amount، fixed_amount_per_night، fixed_price أو fixed_price_per_night هو مطلوبة.

قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم ويتم تطبيقه على AmountAfterTax (أو AmountBeforeTax في حال عدم تحديد AmountAfterTax).

أمثلة:

  • إذا كانت قيمة AmountAfterTax هي 100 وpercentage هو 20، ثم

    معدّل الترويج = AmountAfterTax * (1 - نسبة مئوية) تخفيض)

    80.00 = 100 * (1 - 0.2)

  • إذا كانت قيمة AmountBeforeTax هي 100، القيمة percentage هي 20 وتحدد TaxFeeInfo ضريبة بقيمة 10، ثم

    معدّل الترويج = AmountBeforeTax * (1 - نسبة مئوية) الخصم) + الضريبة

    90.00 = 100 * (1 - 0.2) + 10

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

واحد بالضبط من percentage، fixed_amount، fixed_amount_per_night، fixed_price أو fixed_price_per_night هو مطلوبة.

مبلغ ثابت يتم طرحه من حاصل طرح AmountAfterTax أسعار في الليلة (أو مجموع AmountBeforeTax أسعار في الليلة إذا ولم يتم تحديد الحقل "AmountAfterTax"). يُفترض أن يكون بالعملة نفسها المستخدمة في أسعار الليلة. إذا كانت هذه القيمة أكبر من مجموع الأسعار لكل ليلة، تكون القيمة الناتجة هي صفر.

أمثلة:

  • إذا كنا تسعيرنا إقامة لمدة ليلة واحدة حيث AmountBeforeTax - 90 عامًا، AmountAfterTax: 100 وfixed_amount هو 20، ثم

    معدّل الترويج = AmountAfterTax - ثابت خصم

    80.00 = 100 - 20

  • إذا كنا تسعيرنا إقامة لمدة ليلة واحدة حيث AmountBeforeTax هي 100، fixed_amount تساوي 20، وتحدد TaxFeeInfo ضريبة تبلغ 8%، ثم

    معدّل الترويج = (AmountBeforeTax - ثابت) الخصم) * (1 + النسبة المئوية للضرائب)

    86.40 = (100 - 20) * 1.08

  • إذا كنا تسعيرنا إقامة لمدة ليلة واحدة حيث AmountBeforeTax هي 50 عامًا، وfixed_amount هي 60، وتحدد TaxFeeInfo ضريبة بقيمة 10،

    معدّل الترويج = (AmountBeforeTax - ثابت) الخصم) * الضريبة

    10.00 = 0 + 10

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم AmountAfterTax هي 100 و110 و120، و fixed_amount هي 150، عندئذٍ

    معدّل الترويج = sum(AmountAfterTax) - (ثابتة) تخفيض)

    180.00 = (100 + 110 + 120) - 150

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

واحد بالضبط من percentage، fixed_amount، fixed_amount_per_night، fixed_price أو fixed_price_per_night هو مطلوبة.

خصم ثابت مطبَّق على كل من AmountAfterTax. أسعار الإقامة في الليلة (أو أرخص N إذا تم تحديد applied_nights). إذا لم يتم تحديد AmountAfterTax، يتم تطبيقه على AmountBeforeTax. يُفترض أن يكون بالعملة نفسها المستخدمة في أسعار الليلة. في حال حذف fixed_amount_per_night أكبر من في الليلة، يتم خفض سعر الليلة إلى صفر لا يمكن أن يؤدي الخصم إلى أن يصبح سعر الليلة سالبًا.

أمثلة:

  • إذا كنا بصدد تسعير إقامة لمدة 3 ليالٍ، حيث قيم AmountAfterTax هي 100 و110 و120؛ و fixed_amount_per_night هي 10، ثم

    معدّل الترويج = المبلغ(AmountBeforeTax - مبلغ ثابت) تخفيض)

    300.00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • إذا كنا بصدد تسعير إقامة لمدة 3 ليالٍ، حيث قيم AmountAfterTax هي 10 و50 و100؛ و قيمة fixed_amount_per_night هي 20، ثم

    معدّل الترويج = المبلغ(AmountAfterTax - مبلغ ثابت) تخفيض)

    110.00 = (0 + (50 - 20) + (100 - 20))

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

واحد بالضبط من percentage، fixed_amount، fixed_amount_per_night، fixed_price أو fixed_price_per_night هو مطلوبة.

إذا تم تحديد أسعار الإقامة في الليلة بـ AmountAfterTax، ستكون هذه القيمة تحديد سعر الإقامة، بما في ذلك الضرائب والرسوم، المحددة. إذا تم تحديد AmountBeforeTax، سواء تم تحديد AmountAfterTax أم لا، يؤدي ذلك إلى تعيين السعر بدون احتساب الضريبة للإقامة على القيمة المحدّدة يُفترض أن يكون بالعملة نفسها المستخدمة في أسعار الليلة.

إذا كان AmountAfterTax يهدف إلى إظهار بالنسبة المئوية للضريبة، ثم تحديد سعر ثابت يمكن أن تؤدي القيمة AmountBeforeTax إلى ضرائب ورسوم غير دقيقة. وعمومًا، ننصح بشدة باستخدام السمة TaxFeeInfo لتحديد الضرائب والرسوم في الفندق.

أمثلة:

  • إذا أردنا تحديد سعر الإقامة لمدة ليلة واحدة حيث يكون AmountBeforeTax هو 90، AmountAfterTax هو 100، وfixed_price هو 80، يكون السعر الترويجي هو 80.
  • إذا كنا تسعيرنا إقامة لمدة ليلة واحدة حيث AmountBeforeTax هي 100، fixed_amount 80، وتحدد TaxFeeInfo ضريبة بقيمة 8%، ثم

    معدّل الترويج = سعر ثابت * (1 + نسبة الضريبة)

    86.40 = 80 * 1.08

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم AmountAfterTax هي 100 و110 و120، و fixed_amount هي 300، عندئذٍ

    معدّل الترويج = 300

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

واحد بالضبط من percentage، fixed_amount، fixed_amount_per_night، fixed_price أو fixed_price_per_night هو مطلوبة.

إذا تم تحديد أسعار الإقامة في الليلة بـ AmountAfterTax، ستكون هذه القيمة تحدد سعر كل ليلة إقامة شاملةً الضرائب والرسوم المحددة. إذا تم تحديد AmountBeforeTax، سواء تم تحديد AmountAfterTax أم لا، يؤدي ذلك إلى تعيين السعر قبل احتساب الضريبة لكل ليلة إقامة وفقًا للقيمة المحدّدة. ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة.

إذا كان AmountAfterTax يهدف إلى إظهار بالنسبة المئوية للضريبة، ثم تحديد سعر ثابت يمكن أن تؤدي القيمة AmountBeforeTax إلى ضرائب ورسوم غير دقيقة. بشكل عام، ننصح بشدة باستخدام TaxFeeInfo لتحديد الضرائب والرسوم الخاصة بالموقع.

إذا تم تحديد applied_nights، سيبلغ السعر الجديد على أرخص N من الليالي.

أمثلة:

  • إذا كنا كنا تسعير إقامة لمدة ليلتين حيث قيم AmountBeforeTax هي 90 و90؛ قيم AmountAfterTax هي 100 و100، أو قيمة fixed_price هي 80، ثم يكون معدّل العرض الترويجي 80 + 80 = 160.
  • إذا كنا كنا تسعير إقامة لمدة ليلتين حيث AmountBeforeTax: 100، 100؛ fixed_amount 80، وتحدد TaxFeeInfo ضريبة تبلغ %8، ثم يحدد معدّل الترويج هو (80 + 80) * 1.08 = 172.8.
  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم AmountAfterTax هي 100 و110 و120، وتكون fixed_amount هي 110، يكون السعر الترويجي هو 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

لا يجب استخدام هذه السمة إلا مع percentage أو fixed_amount_per_night

عدد الليالي التي يتم تطبيق الخصم عليها، بدءًا من الأقل تكلفة. يجب أن تكون القيمة عددًا صحيحًا من 1 إلى 99. إذا لم يتم تحديده، يسري الخصم على جميع الليالي.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights يحدّد هذا الخيار خصمًا على ليالٍ معيّنة من الإقامة عند استيفاء الحد الأدنى لطول الإقامة . السمات في العنصر الرئيسي Discount غير مسموح بها في حال استخدام هذا العنصر.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

عدد الليالي المطلوبة لكي يتم تطبيق الخصم. على كل ينطبق الخصم على جزء منفصل من ليالي الإقامة.

على سبيل المثال، لمدة 10 ليالٍ يتم فيها تحديد stay_nights 4 (وتكون repeats صحيحة)، تكون هناك ليلتان للإقامة. المقاطع: من الليالي الأولى إلى الرابعة ومن الليالي الخامسة إلى الثامنة؛ الـ ولا تشكّل الليالي التاسعة والعاشرة جزءًا من فترة الإقامة الليلية.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer عدد الليالي المخفَّضة السعر ضمن كل قسم من ليالي الإقامة
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float الخصم الذي يسري على ليالي الخصم. إذا كانت هذه القيمة هو 50، ثم يتم خصم% 50 في كل ليلة يتم اختيارها.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string يجب أن تكون القيمة cheapest أو last. في حال حذف last، ثم عدد الليالي في نهاية فترة الإقامة ليالي مخفضة. إذا كانت cheapest، تكون الأرخص ويتم خصم قيمة عدد الليالي خلال فترة الإقامة خلال مدة الإقامة.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

ما إذا كان يمكن تطبيق الخصم على عدة ليالٍ إقامة الأقسام. إذا كانت القيمة false، سيتم عندها فقط جزء من مدة الإقامة لعدد الليالي في الساعة. يتم خصم بداية برنامج الرحلة. إذا كانت القيمة true، وسيتم خصم قيمة أي فترة من ليالي الإقامة.

على سبيل المثال، إذا كان stay_nights هو 4 وبرنامج الرحلة 10 ليلة، إذا كانت قيمة repeats هي true، تكون قيمة الحقل 2. الأسعار مخفّضة (الليلة من يوم واحد إلى 4 ليالٍ ومن 5 إلى 8 ليالٍ) ولكن إذا قيمة "repeats" هي "false"، وبالتالي يتم عرض شريحة واحدة فقط سعر مخفّض (ليلة من 1 إلى 4 ليالٍ).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer يعيّن هذا العرض الترويجي ترتيبًا ويفعّله في اختيار الترتيب، حيث يتم فقط اختيار العرض الترويجي الأدنى ترتيب ليتم تطبيقه. القيم يجب أن تتراوح القيمة بين 1 و99 (ضمنًا). في حال مشاركة عروض ترويجية متعدّدة معًا ترتيب، يتم تحديد واحد وتطبيقه بشكل عشوائي.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

واحد بالضبط من Discount أو يجب تحديد BestDailyDiscount.

تحدد خصم يومي يمكن تطبيقه على ليلة الإقامة. يختلف ذلك عن Discount الذي يطبّق الخصومات على الإقامة بالكامل.

يمكن أن يتضمّن كل موقع مجموعة واحدة من العروض الترويجية التي "الأفضل يوميًا". وهذا يعني أنه لكل ليلة من ليالي الإقامة، أغنية فردية "أفضل يوميًا" عرض ترويجي مؤهل وينتج عنه أعمق يتم تطبيق خصم على تلك الليلة وقد يتم تطبيقه.

قد يتم تحديد Stacking باستخدام BestDailyDiscount يجب تعيينه على إما base أو none "أفضل الصور يوميًا" خصومات التي ينتج عنها أكبر تخفيض لكل ليلة ويتم التعامل معها على أنّها خصم على إقامة واحدة (أي Discount) مع مراعاة نوع التجميع الذي تم إعداده. تمّت مقارنة هذا الخصم المجمّع. مقارنةً بغيرها من أنواع <Discount> المؤهلة العروض الترويجية للعثور على المنتج أو المجموعة التي تقدم أعمق خصم. إما الجمع بين BestDailyDiscount أو قيمة Discount الفردية، التي تؤدي إلى انخفاض السعر وتم اختياره وتطبيقه على نوع تكديس base.

يمكن تحديد StayDates مع هذا النوع من الخصم، ولكن يجب ضبط application على overlap

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

واحد بالضبط من percentage، يجب توفير الحقل fixed_amount أو fixed_price.

قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم يتم تطبيقه على AmountAfterTax (أو AmountBeforeTax إذا لم يكن AmountAfterTax محددة).

أمثلة:

  • إذا كان سعر AmountAfterTax لليلة الإقامة هو 100 قيمة percentage هي 20، ثم

    معدّل الترويج = AmountAfterTax * (1 - نسبة مئوية) تخفيض)

    80.00 = 100 * (1 - 0.2)

  • وإذا كانت قيمة AmountBeforeTax لمدة ثمانية إقامة هي 100، القيمة percentage هي 20 وتحدد TaxFeeInfo ضريبة بقيمة 10، ثم

    معدّل الترويج = AmountBeforeTax * (1 - نسبة مئوية) الخصم) + الضريبة

    90.00 = 100 * (1 - 0.2) + 10

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

واحد بالضبط من percentage، يجب توفير الحقل fixed_amount أو fixed_price.

مبلغ ثابت يتم طرحه من مبلغ واحد سعر الإقامة في الليلة: AmountAfterTax (أو AmountBeforeTax سعر الإقامة في الليلة إذا ولم يتم تحديد الحقل "AmountAfterTax"). ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة. وإذا كان هذا أكبر من مجموع أسعار الليلة، تكون القيمة الناتجة صفر.

أمثلة:

  • إذا كان AmountBeforeTax لليلة الواحدة هو 90، AmountAfterTax: 100 وfixed_amount هو 20، ثم

    معدّل الترويج = AmountAfterTax - ثابت خصم

    80.00 = 100 - 20

  • إذا كانت قيمة AmountBeforeTax لليلة واحدة هي 100، تبلغ قيمة fixed_amount 20، وتحدد TaxFeeInfo ضريبة بقيمة 8%، ثم

    معدّل الترويج = (AmountBeforeTax - ثابت) الخصم) * (1 + النسبة المئوية للضرائب)

    86.40 = (100 - 20) * 1.08

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

واحد بالضبط من percentage، يجب توفير الحقل fixed_amount أو fixed_price.

إذا تم تحديد أسعار الإقامة في الليلة بـ AmountAfterTax، ستكون هذه القيمة تحدد سعر ليلة الإقامة، شاملةً الضرائب والرسوم، على المحددة. إذا تم تحديد AmountBeforeTax، سواء تم تحديد AmountAfterTax أم لا، يؤدي ذلك إلى تعيين السعر بدون احتساب الضريبة للإقامة على القيمة المحدّدة يُفترض أن يكون بالعملة نفسها المستخدمة في أسعار الليلة.

أمثلة:

  • إذا كان AmountBeforeTax لليلة الواحدة هو 90، AmountAfterTax: 100 وfixed_price على 80، ثم يكون معدّل الترويج 80.
  • إذا كانت قيمة AmountBeforeTax لليلة واحدة هي 100، تبلغ قيمة fixed_amount 80، وتحدد TaxFeeInfo ضريبة بقيمة 8%، ثم

    معدّل الترويج = سعر ثابت * (1 + نسبة الضريبة)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount لتحديد القيود المفروضة على عدد الغرف التي يجب أن تكون متاحة حتى يمكن تطبيق هذا العرض الترويجي يتم تطبيق الخصم على الليالي التي تفي بالقيد. غير مسموح به مع خصم بقيمة fixed_amount. لاحظ أن عدد الغرف محددة إما OTA_HotelInvCountNotifRQ (InvCount) أو OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer الحد الأدنى لعدد الغرف التي يجب أن تكون متاحة لتطبيق العرض الترويجي على السعر لكل ليلة إذا لم يتم تحديد ذلك، فلا يوجد الحد الأدنى.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer الحد الأقصى لعدد الغرف التي يجب أن تكون متاحة لكي يتم تطبيق العرض الترويجى على السعر لكل ليلة. إذا لم يتم تحديد هذه السمة، لن يكون هناك حدّ أقصى.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay لتحديد حدود مدة الإقامة التي يمكن فيها تطبيق هذا العرض الترويجي لا يسري العرض الترويجي عندما تكون مدة الإقامة خارج نطاق الحدود الدنيا والحد الأقصى.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer الحد الأدنى لعدد ليالي الإقامة المسموح بها خلال فترة الإقامة لكي يتم تطبيق العرض الترويجي المنهجية. وإذا لم يتم تحديد قيمة الحقل، فلا يوجد حد أدنى.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer الحد الأقصى لعدد ليالي الإقامة خلال فترة الإقامة لكي يتم تطبيق العرض الترويجي المنهجية. وإذا لم يتم تحديد قيمة السمة، لن يكون هناك حدّ أقصى.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

حاوية لقاعدة تعرفة الاشتراك التي تؤدي إلى معالجة محددة في واجهة المستخدم للخصم المرتبط

يجب عدم تحديد هذا العنصر إلا تم أيضًا تحديد <Discount>.

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

رقم تعريف قاعدة السعر المرتبطة ببرنامج عضوية

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount تحدّد هذه السمة الحدّ الأدنى لمجموع الأسعار اليومية للغرف (باستخدام القيمة الأكبر من AmountBeforeTax أو AmountAfterTax) التي يجب تجاوزها لتطبيق العرض الترويجي.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer القيمة التي يجب تجاوزها لتطبيق العرض الترويجي
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy تحدد القيود المفروضة على عدد النزلاء في الأماكن التي ينطبق عليها هذا العرض الترويجي. المنهجية. لا يسري العرض الترويجي عندما يكون عدد النزلاء في خارج المنطقة الحدود الدنيا والحد الأقصى.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer يجب ألا تقلّ مدة الإشغال التي يحددها المستخدم عن هذه القيمة من أجل التخفيض الذي سيتم تطبيقه.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer يجب ألا تزيد مدة الإشغال الذي يحدده المستخدم عن هذه القيمة من أجل التخفيض الذي سيتم تطبيقه.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans حاوية لقائمة خطط الأسعار التي ينطبق عليها العرض الترويجي إذا لم يتم تحديد <RatePlans>، يسري العرض الترويجي. على جميع خطط الأسعار
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan تحدّد خطة أسعار. يتم تحديد خطة الأسعار من خلال مجموعة من الحزمة والأسعار والتوفّر، كما هو محدّد في المعاملة (بيانات الموقع) وOTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ والرسائل كما هو محدد في PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string المعرّف الفريد لخطة الأسعار يتم ربط هذه القيمة بقيمة PackageID في <PackageData> في رسالة المعاملة (بيانات الموقع)، وفي سمة RatePlanCode في <StatusApplicationControl> في كلّ من رسالتَي <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ>. الحد الأقصى لعدد الأحرف المسموح به هو 50 حرفًا.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes حاوية لقائمة بأنواع الغرف التي ينطبق عليها العرض الترويجي يتم تطبيق العرض الترويجي على كل <RoomType> محدّد. إذا لم يتم تحديد السمة <RoomTypes>، سيتم يسري العرض الترويجي على جميع الغرف.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType تحدِّد هذه السياسة نوع الغرفة. يتم تحديد نوع الغرفة في عنصر <RoomData> في رسالة المعاملة (بيانات الفندق)، ويتم الإشارة إليه باستخدام قيمته <RoomID>. ( تتم الإشارة إلى قيمة <RoomID> أيضًا من خلال السمة السمة InvTypeCode في OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string المعرّف الفريد للمستودع (نوع الغرفة) ترتبط هذه القيمة بالرمز <RoomID> في رسالة Transaction (Property Data). الحد الأقصى لعدد الأحرف المسموح به هو 50 حرفًا.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking تحدّد هذه السمة طريقة دمج العروض الترويجية. إذا لم يتم تحديده، فسيتم يُفترض أن يكون base.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

يمكن تطبيق عروض ترويجية متعددة على سعر واحد استنادًا إلى هذا الإعداد:

  • any: يمكن جمعه مع أي عرض ترويجي آخر (باستثناء none)، ولكن الترتيب الذي يجب أن تظهر به العروض الترويجية تطبيقها غير مضمونة.
  • base: أفضل عرض ترويجي مؤهَّل من base هو يتم اختيارها وتطبيقها أولاً، قبل العروض الترويجية الأخرى. كان يُعرَف هذا الخيار سابقًا باسم base_only.
  • second: يتم اختيار أفضل عرض ترويجي مؤهَّل لتطبيق second وتطبيقه بعد عرض ترويجي لتطبيق base (إن وُجد) وقبل العروض الترويجية لتطبيق any.
  • none: لا يمكن الجمع بينه وبين غير ذلك أو العروض الترويجية.

من بين التركيبات المسموح بها، تمثّل مجموعة العروض الترويجية التي تُنتج سيتم تطبيق الخصم الأكبر على السعر.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates حاوية نطاق زمني واحد أو أكثر تحدّد كيفية تحديد التي يسري عليها العرض الترويجي، مثلاً من أجل استيعاب خصومات موسمية.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

يصف كيفية تطبيق العرض الترويجي.

القيم الصالحة هي:

  • all: يطبّق العرض الترويجي على كل ليلة في برنامج الرحلة في حال تداخل جميع التواريخ في برنامج الرحلة مع تواريخ الإقامة.
  • any: يطبّق العرض الترويجي على جميع الليالي في في حال تداخل أي تاريخ في برنامج الرحلة مع تاريخ نطاق تواريخ الإقامة.
  • overlap: لا ينطبق العرض الترويجي إلا على تلك الليالي في برنامج الرحلة التي تتداخل مع تاريخ في النطاق الزمني للإقامة.

يجب تحديد هذه السمة دائمًا.

  • إذا كانت السمة <Discount> تحدّد percentage وapplication مضبوطة على all أو any، يتم تطبيق الخصم كنسبة مئوية من إقامة كاملة.
  • إذا كانت السمة <Discount> تحدّد percentage وapplication على overlap، يطبّق الخصم كنسبة مئوية من أسعار الإقامة في الليلة الواحدة على العروض المتداخلة ليالي
  • <Discount> مع تحديد fixed_amount وapplication المضبوطة على overlap هي الدمج غير صالح.
  • يتوافق تطبيق <FreeNights> مع كل الأجهزة application من القيم. يُرجى العلم أنّه بالنسبة إلى overlap، لا يتم احتساب سوى ليالي الإقامة المتداخلة لمتطلبات الاستفادة من الخصم
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

نطاق زمني يحدّد تواريخ تطبيق العرض الترويجي

يمكنك أيضًا استخدام التنسيق YearlessDate.

  • إذا كان أي من start أو end غير سنوي تاريخ، يجب تعبئة كليهما كتواريخ غير سنوية.
  • يجب ألا تنتهي النطاقات الزمنية للسنة مع حلول العام الجديد. بدلاً من ذلك، لتمثيل النطاق كنطاقين زمنيين متجاورين. على سبيل المثال، يمكن تمثيل {"12-29", "01-05"} على أنّه {"12-29", "12-31"} و {"01-01", "01-05"}.

إذا كنت تريد ضبط النطاق StayDates لسماح بالعرض الترويجي في أيام محددة من الأسبوع، يجب ضبط تاريخ start على أنّه التاريخ الحالي بدون end لمنع انتهاء صلاحية العرض الترويجي.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate تاريخ البدء (بناءً على المنطقة الزمنية للموقع) شاملاً النطاق الزمني. ويجب أن يكون هذا التاريخ قبل أو مطابقًا لتاريخ التاريخ: end إذا لم يتم تحديد start، يكون النطاق الزمني غير محدود بشكل فعال من حيث تاريخ البدء.

يجب تحديد قيمة start إذا كانت لم يتم توفير قيمة end.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) في ما يتعلق النطاق الزمني. ويجب أن يتطابق هذا التاريخ مع تاريخ التاريخ: start إذا لم يتم تحديد end، يتم تضمين التاريخ غير محدود فعليًا اعتبارًا من تاريخ start فصاعدًا.

يجب تحديد قيمة end إذا كانت لم يتم توفير قيمة start.

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

أيام الأسبوع المسموح بها في النطاق الزمني. في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. على كل يحدد الحرف في السلسلة يومًا. على سبيل المثال، "MTWHF" يحدد أن أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W ليوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries حاوية لإدراج المواقع الجغرافية للمستخدمين (البلدان) المؤهَّلة للترويج. إذا تم تحديده، يتم تقديم السعر المخفَّض للمستخدمين المؤهَّلين فقط في البلدان المدرَجة . إذا لم يتم تحديده، سيكون مؤهلاً أن يتوفّر للمستخدمين في أي بلد السعر المُخفَّض.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum تمثّل هذه السمة نوع مواصفات Userالبُلدان.

القيم الصالحة هي include و exclude.

في حال ضبط سمة "بلدان المستخدم type" على include، يسري العرض الترويجي على المستخدمين من البلدان المدرجة في القائمة.

إذا كانت قيمة Userالبُلدان type هي exclude، يسري العرض الترويجي على المستخدمين من خارج القائمة البلدان.

وفي حال ترك سمة Userالبُلدان type بدون ضبط، سيتم التعامل معها على أنّها: include ويسري العرض الترويجي على المستخدمين من البلدان المدرجة.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country تحدّد هذه السمة بلدًا واحدًا يكون فيه المستخدمون مؤهلين للاستفادة من العرض الترويجي.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string بلد CLDR الرمز، مثل DE أو FR. لاحظ أنه بالنسبة لبعض فإن رمز CLDR للبلدان ليس هو نفسه رمز ISO المكون من حرفين رمز البلد. بالإضافة إلى ذلك، لا يمكن استخدام رموز CLDR للمناطق.

أمثلة

هناك حدّ أقصى يبلغ 500 عرض ترويجي لكل موقع. راجع "حذف ملف الترويج" على سبيل المثال لإزالة العروض الترويجية من الموقع.

الرسالة الأساسية

يعرض المثال التالي رسالة Promotions أساسية:

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


حالة المستودع

يوضّح المثال التالي كيفية إنشاء خصم إذا كان زائدًا. مخزون من تاريخ الوصول:

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


حذف عرض ترويجي واحد

يوضّح المثال التالي كيفية حذف عرض ترويجي واحد لموقع:

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

حذف جميع الإعلانات الترويجية

يوضّح المثال التالي كيفية حذف جميع العروض الترويجية لأحد المواقع:

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



عرض كل العروض الترويجية

يوضّح المثال التالي كيفية تراكب <HotelPromotions> لموقع معيّن مع عرض ترويجي واحد أو أكثر. عندما يكون action="overlay"، يتم حذف جميع العروض الترويجية التي تم تخزينها قبل تخزين العروض الترويجية المحدّدة في الرسالة الحالية:

<?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 أنواع مختلفة للتكديس

يوضّح المثال التالي حالة تكون فيها ثلاثة عروض ترويجية مختلفة تم تطبيقها (base، وsecond، وany). يُرجى العلم أنّ العرض الترويجي "none" لأنّ العروض الترويجية الأخرى تقدّم خصمًا أفضل. إذا كانت النتيجة الأصلية السعر 100 دولار أمريكي، وسيكون السعر المخفّض 72.90 دولار أمريكي.

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


بدون نوع تكديس

يوضّح المثال التالي حالة يتم فيها استخدام العرض الترويجي none للأسباب التالية: مع مجموعة من العروض الترويجية الأخرى، ستحصل على خصم أقل. إذا كانت السعر الأصلي 100 دولار أمريكي، وسيكون السعر المخفّض 75 دولار أمريكي.

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



حدود مدة الحجز

يوضّح المثال التالي حالة تُستخدم فيها السمة BookingWindow يُستخدم مع تحديد حدود البداية والنهاية لـ ISO 8601 Duration الكتابة. تتطلّب فترة الحجز هذه الحجز بحلول الساعة 6:00 مساءً أو قبلها. في اليوم السابق للوصول، وفي الساعة 12:00 أو بعد ذلك في اليوم الثاني قبل الوصول الوصول.

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


تواريخ الحجز وتواريخ أو وقت

يعرض المثال التالي حالة يتم فيها استخدام العنصر BookingDates مع السمتَين start وend كنوعَين DateTime. يفرض هذا القيد على تاريخ الحجز أن يتم الحجز بين الساعة 6:30 صباحًا في 1 تموز (يوليو) 2020 والساعة 6:45 مساءً في 2 تموز (يوليو) 2020.

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


النطاقات الزمنية السنوية

يوضّح المثال التالي حالة تُستخدم فيها السمة CheckInDates عنصر واحد يحتوي على DateRanges التي تحتوي على start end حقلاً بدون سنوات في هذا المثال، ينطبق العرض الترويجي. إلى تواريخ تسجيل الوصول بين 29/12 و2/1، بغض النظر عن السنة. بدون عام النطاقات الزمنية التي تعبر حدود السنة الجديدة غير صالحة، وبالتالي يمكن أن يكون النطاق الزمني ويتم التعبير عنها في نطاقين زمنيين متجاورين.

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

يقدم المثال التالي تخفيضًا على ليلتين بنسبة 50٪ لكل أربع ليالٍ تم إقامة إقامة لمدة ليلتين النطاق المحدد لتواريخ الحجز. بالنسبة لمسار رحلة مدته عشر ليالٍ، يكون إجمالي ثم تخفيض السعر بنسبة 50٪ لأربع ليالٍ.

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

في المثال التالي، يتم تقديم خصم بنسبة %50 على ليلة واحدة مقابل كل ثلاث ليالٍ مُقيم فيها خلال الفترات المحدّدة لتاريخ الإقامة. لا يتم احتساب سوى الليالي المتداخلة للإقامة للتأهّل للحصول على الخصم. بالنسبة إلى برنامج الرحلة التالي الذي يتضمّن تسجيل المغادرة في 01‏-01‏-2022 وتسجيل المغادرة في 07‏-01‏-2022، يتم تطبيق ليالي الإقامة المؤهّلة والتخفيضات التالية:

  • 2022-01-01 (إقامة)
  • ‎2022-01-02 (stay)
  • 2022-01-03
  • ‎2022-01-04 (discounted)
  • 2022-01-05 (إقامة)
  • 2022-01-06 (إقامة)
<?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>


الاختيار المُرتب

يقدّم المثال التالي خصمَين، أحدهما بنسبة خصم 20% والآخر للحصول على خصم بنسبة% 15. أثناء التقييم، يتم تطبيق الخصم بنسبة 15% فقط. لأن رتبتها أقل.

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

يقدّم المثال التالي خصمًا على إقامة لمدة ليلتين من خلال تقديم طلب. تم تكديس BestDailyDiscount مع Discount.

<?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 أبريل 2023 إلى 2 مايو 2023 بالنسبة إلى العملية الحسابية، يتم الجمع بين أفضل الخصومات اليومية التي ينتج عنها سيتم العثور على الخصم الأكثر عمقًا أولاً.

في الليلة الأولى، يعرض "عام" هو المبلغ المؤهَّل الوحيد بخصم ثابت قدره 20.

وفي الليلة الثانية، سيتم عرض "ربما" عرض ترويجي أفضل من "عام" خصم. لذلك، عندما "قد" تم اختيار الخصم الثابت وهو 50.

ثم بالنسبة للإقامة، "المهرجان" خصومات العروض الترويجية إلى 5 في الليلة الواحدة 10 إجمالاً يمكن الجمع بين أفضل الخصومات اليومية. لأنّ "مهرجان" تم ضبط نوع التكديس على any. إذا تم ضبطه على base، سيتم تطبيق أفضل خصومات يومية أو خصم "المهرجان" فقط. اطّلع على وصف يمكنك Stacking للحصول على مزيد من المعلومات.

"بشكل عام، يحصل سعر الإقامة على خصم ثابت بقيمة 20 + 50 + 10 = 80 .

الردود

البنية

تستخدم الرسالة PromotionsResponse البنية التالية:

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

العناصر والسمات

تحتوي الرسالة PromotionsResponse على العناصر والسمات التالية:

العنصر / @Attribute عدد مرات الظهور النوع الوصف
PromotionsResponse 1 Complex element يشير هذا المصطلح إلى العنصر الجذر الذي يشير إلى نجاح أو مشاكل في عملية استلام. رسالة طلب العروض الترويجية
PromotionsResponse / @timestamp 1 DateTime تاريخ إنشاء هذه الرسالة ووقتها.
PromotionsResponse / @id 1 string المعرّف الفريد من رسالة العروض الترويجية المرتبطة
PromotionsResponse / @partner 1 string حساب الشريك لهذه الرسالة
PromotionsResponse / Success 0..1 Success يشير إلى أنّه تمّت معالجة رسالة "العروض الترويجية" بنجاح بدون تحذيرات أو أخطاء أو إخفاقات.

قيمة <Success> أو <Issues> هي موجود في كل رسالة.

PromotionsResponse / Issues 0..1 Issues حاوية لمشكلة واحدة أو أكثر حدثت أثناء معالجة رسالة "العروض الترويجية"

يتم استخدام إما <Success> أو <Issues> في كل رسالة.

PromotionsResponse / Issues / Issue 1..n Issue وصف للتحذير أو الخطأ أو الخطأ الذي حدث أثناء جارٍ معالجة رسالة العروض الترويجية يمكنك الاطّلاع على تفاصيل حول هذه المشاكل. بوصة رسائل خطأ حالة الخلاصة:
PromotionsResponse / Issues / Issue / @code 1 integer معرِّف المشكلة.
PromotionsResponse / Issues / Issue / @status 1 enum

نوع المشكلة التي حدثت.

القيمتان الصالحتان هما warning وerror. وfailure.

أمثلة

تم الإجراء بنجاح

في ما يلي ردّ على رسالة عروض ترويجية تمت معالجتها بنجاح.

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

المشاكل

في ما يلي ردّ على رسالة ترويجية لم تتم معالجتها بسبب الأخطاء.

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