تبلیغات

نمای کلی

این API به شما امکان می دهد تخفیف های احتمالی را مشخص کنید. از میان تبلیغات مشخص شده، Google تبلیغات واجد شرایط یا مجموعه تبلیغاتی را که به پایین‌ترین قیمت منجر می‌شود، اعمال می‌کند. اگر به دنبال API هستید که از تنظیمات نرخ دلخواه پشتیبانی می‌کند که می‌تواند در صورت برآورده شدن شرایط، قیمت را افزایش یا کاهش دهد، API تغییرات نرخ ما را در نظر بگیرید. توجه داشته باشید که اگر هر دو 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 حساب شریک برای این پیام. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است.

اگر پشتیبان دارید که برای چندین حساب فید ارائه می کند، این مقدار باید با مقدار مشخصه ID مشخص شده در عنصر <RequestorID> پیام های <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> برای یک حساب مطابقت داشته باشد.

Promotions / @id 1 string یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می شود. کاراکترهای مجاز عبارتند از: az، AZ، ​​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 تبلیغات دارید، با مدیر حساب فنی خود (TAM) تماس بگیرید.

Promotions / HotelPromotions / Promotion / @id 1 string یک شناسه منحصر به فرد برای تبلیغات. حداکثر تعداد نویسه‌های مجاز 40 است. نویسه‌های مجاز عبارتند از: az، AZ، ​​0-9، _ (زیر خط)، - (خط تیره)، و . (دوره).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

اگر مشخص شده باشد، مقدار باید delete شود. اگر مشخص نشده باشد و تبلیغی با همان 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 مستلزم رزرو در یا قبل از ساعت 18:00 30 روز قبل از ورود است.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration حداکثر تعداد روزهای قبل از اعلام حضور هنگام رزرو باید برای اعمال تبلیغات انجام شود. اگر این مشخص نشده باشد، یا مقدار آن 0 باشد، حداکثر وجود ندارد.

انواع مقادیر معتبر عبارتند از:

  • عدد صحیح: تعداد روزهای قبل از تاریخ ورود. به عنوان مثال، مقدار 30 نشان می دهد که تبلیغات فقط برای رزرو حداکثر 30 روز قبل از تاریخ ورود اعمال می شود.
  • مدت زمان ISO 8601 (روز، ساعت و دقیقه): تعداد روزها (و در صورت تمایل ساعت/دقیقه) قبل از تاریخ ورود. به عنوان مثال، مقدار P30D نشان می‌دهد که تبلیغات فقط برای رزرو حداکثر 30 روز قبل از تاریخ ورود اعمال می‌شود. مقدار P30DT6H مستلزم رزرو در ساعت 18:00 یا بعد از 30 روز قبل از ورود است.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

محدودیت‌هایی را بر روی حداکثر مقداری که پس از اعمال تبلیغات می‌توان روی آن تنظیم کرد، تعریف می‌کند.

تبلیغات همیشه باید یک <Discount> یا یک <BestDailyDiscount> را مشخص کنند، بنابراین برای ایجاد تبلیغاتی که فقط از یک <Ceiling> استفاده می کند، یک گزینه تنظیم <Discount> با percentage 0 است.

اگر انباشتگی پیکربندی شده باشد، تبلیغات متعدد با <Ceiling> می‌تواند برای یک اقامت اعمال شود. هر تبلیغی تخفیف خود را اعمال می کند و بلافاصله سقف آن را اعمال می کند. مثال زیر نشان می دهد که چگونه هر سقف در محاسبه ارتقاء بعدی در پشته کمک می کند.

مثال:

قیمت گذاری یک شب اقامت که در آن AmountBeforeTax 100 است و مجموعه ای از دو تبلیغ وجود دارد:

  1. تبلیغات با base نوع انباشته، 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 گنجانده شود، برای مالیات‌ها و کارمزدها اعمال می‌شود، اما نه مواردی که با استفاده از TaxFeeInfo مشخص شده‌اند.

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 گنجانده شود، برای مالیات‌ها و کارمزدها اعمال می‌شود، اما نه مواردی که با استفاده از TaxFeeInfo مشخص شده‌اند.

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 مشخص نشده باشد) کم شود. فرض بر این است که به همان ارز نرخ شبانه است. اگر این بزرگتر از مجموع نرخ های شبانه باشد، مقدار حاصل صفر است.

مثال ها:

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 90، AmountAfterTax 100، و fixed_amount 20 است، پس

    نرخ ارتقاء = AmountAfterTax - تخفیف ثابت

    80.00 = 100 - 20

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 100، fixed_amount 20 است، و TaxFeeInfo مالیات 8٪ را مشخص می کند، پس

    نرخ ارتقاء = ( AmountBeforeTax - تخفیف ثابت) * (1 + درصد مالیات)

    86.40 = (100 - 20) * 1.08

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن AmountBeforeTax 50، fixed_amount 60 است، و TaxFeeInfo مالیات 10 را مشخص می کند، پس

    نرخ ارتقاء = ( AmountBeforeTax - تخفیف ثابت) * مالیات

    10.00 = 0 + 10

  • اگر برای اقامت 3 شب قیمت گذاری کنیم که مقادیر AmountAfterTax 100، 110 و 120 باشد. و fixed_amount 150 است، پس

    نرخ تبلیغات = جمع ( 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 برای تعیین مالیات و هزینه های ملک استفاده کنید.

مثال ها:

  • اگر برای اقامت 1 شب قیمت گذاری کنیم که در آن 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 شب اعمال می‌شود.

مثال ها:

  • اگر برای اقامت 2 شب قیمت گذاری کنیم که مقادیر AmountBeforeTax 90، 90 باشد. مقادیر AmountAfterTax 100، 100 است. و fixed_price 80 است، سپس نرخ ارتقاء 80 + 80 = 160 است.
  • اگر ما برای اقامت 2 شب قیمت گذاری کنیم که در آن 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 درست است)، پس دو بخش شب اقامت وجود دارد: شب 1 تا 4 و شب 5 تا 8. شب های 9 و 10 بخشی از بخش شب اقامت نیستند.

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 بخش تخفیف داده می شود (شب 1-4 و شب 5-8). اما، اگر repeats false باشد، فقط 1 بخش تخفیف داده می شود (شب های 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 ) در نظر گرفته می‌شوند، در حالی که نوع انباشتگی پیکربندی شده رعایت می‌شود. این تخفیف ترکیبی با سایر تبلیغات واجد شرایط <تخفیف> مقایسه می‌شود و می‌توان آن‌ها را برای یافتن یک یا ترکیبی که عمیق‌ترین تخفیف را ارائه می‌دهد، انباشته کرد. یا ترکیبی از 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

کانتینری برای قانون نرخ عضویت که باعث ایجاد یک درمان UI خاص برای تخفیف مرتبط می شود.

این عنصر نباید مشخص شود مگر اینکه <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 یک طرح نرخ را مشخص می کند. طرح نرخ با ترکیبی از بسته، نرخ‌ها و در دسترس بودن تعریف می‌شود، همانطور که در پیام‌های Transaction (Property Data)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است، و توسط PackageID مشخص شده است.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در پیام Transaction (Property Data) و در ویژگی 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 ارجاع داده می شود.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string شناسه منحصر به فرد موجودی (نوع اتاق). این مقدار در پیام Transaction (Property Data) به <RoomID> نشان داده می شود. حداکثر تعداد کاراکترهای مجاز 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 مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ شروع نامحدود است.

اگر مقدار end ارائه نشده باشد، باید مقدار start را مشخص کنید.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate تاریخ پایان (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعد از آن باشد. اگر end مشخص نشده باشد، محدوده تاریخ عملاً از تاریخ start به بعد نامحدود است.

اگر مقدار start ارائه نشده باشد، باید مقدار end را مشخص کنید.

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 نوع مشخصات UserCountries.

مقادیر معتبر include و exclude می شوند.

اگر type UserCountries به عنوان include تنظیم شده باشد، این تبلیغ برای کاربران کشورهای فهرست شده اعمال می شود.

اگر type UserCountries exclude باشد، این تبلیغ برای کاربران خارج از کشورهای فهرست شده اعمال می شود.

اگر type UserCountries تنظیم نشده باشد، به عنوان include تلقی می شود و تبلیغات برای کاربران کشورهای فهرست شده اعمال می شود.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country کشوری را تعریف می کند که در آن کاربران واجد شرایط تبلیغ هستند.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string یک کد کشور CLDR ، مانند DE یا FR . توجه داشته باشید که برای برخی کشورها، کد کشور CLDR با کد کشور ISO 2 حرفی یکسان نیست. همچنین، کدهای منطقه 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 استفاده می شود. این محدودیت پنجره رزرو نیاز به رزرو در روز یا قبل از ساعت 18:00 روز قبل از ورود و بعد از ساعت 12 یا بعد از ساعت 2 روز قبل از ورود دارد.

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


تاریخ رزرو مرزهای DateTime

مثال زیر موردی را نشان می دهد که از عنصر BookingDates با ویژگی های start و end به عنوان انواع DateTime استفاده می شود. این محدودیت تاریخ رزرو نیاز به رزرو بین ساعت 06:30 در 2020-07-01 و 18:45 در 2020-07-02 دارد.

<?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 را دارند. در این مثال ، این تبلیغ در مورد تاریخ های چک بین 12/29 تا 1/2 ، صرف نظر از سال اعمال می شود. محدوده تاریخ سال که از مرز سال نو عبور می کند نامعتبر است ، بنابراین Daterange به عنوان دو محدوده تاریخ مجاور بیان می شود.

<?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 ٪ برای هر سه شب در محدوده مشخص تاریخ اقامت باقی مانده است. فقط شبهای همپوشانی اقامت به سمت واجد شرایط برای تخفیف حساب می شود. برای برنامه سفر زیر با ورود به سیستم در 2022-01-01 و چک در 2022-01-07 ، شبهای واجد شرایط اقامت و تخفیف ها به شرح زیر اعمال می شود.

  • 2022-01-01 (اقامت)
  • 2022-01-02 (اقامت)
  • 03-01-2022
  • 2022-01-04 (تخفیف)
  • 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 تنظیم شود ، فقط ترکیبی از بهترین تخفیف های روزانه یا تخفیف "Fiesta" اعمال می شود. برای اطلاعات بیشتر به توضیحات 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 عناصر و ویژگی های زیر را دارد:

Element / 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>