প্রচার

ওভারভিউ

এই 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, percentage_of_base, fixed_amount,
           fixed_amount_per_night, fixed_price, or fixed_price_per_night;
           applied_nights is only used with percentage, fixed_amount_per_night,
           and fixed_price_per_night. -->
      <Discount percentage="float" percentage_of_base="float"
                fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

উপাদান এবং বৈশিষ্ট্য

প্রচার বার্তায় নিম্নলিখিত উপাদান এবং বৈশিষ্ট্য রয়েছে:

উপাদান / @Attribute ঘটনা টাইপ বর্ণনা
Promotions 1 Complex element একটি প্রচার বার্তার মূল উপাদান।
Promotions / @partner 1 string এই বার্তার জন্য অংশীদার অ্যাকাউন্ট. এই স্ট্রিং মান হল হোটেল সেন্টারের অ্যাকাউন্ট সেটিংস পৃষ্ঠায় তালিকাভুক্ত "অংশীদার কী" মান।

আপনার যদি একাধিক অ্যাকাউন্টের জন্য ফিড প্রদান করে এমন একটি ব্যাকএন্ড থাকে, তাহলে এই মানটিকে একই অ্যাকাউন্টের জন্য আপনার <OTA_HotelRateAmountNotifRQ> এবং <OTA_HotelAvailNotifRQ> বার্তাগুলির <RequestorID> এলিমেন্টে উল্লেখ করা ID অ্যাট্রিবিউট মানের সাথে মিলতে হবে।

Promotions / @id 1 string এই অনুরোধ বার্তার জন্য একটি অনন্য শনাক্তকারী৷ এই মান প্রতিক্রিয়া বার্তা ফেরত দেওয়া হয়. অনুমোদিত অক্ষর হল az, AZ, 0-9, _ (আন্ডারস্কোর), এবং - (ড্যাশ)।
Promotions / @timestamp 1 DateTime এই বার্তা তৈরির তারিখ এবং সময়।
Promotions / HotelPromotions 0..n HotelPromotions

একটি সম্পত্তি জন্য প্রচার. প্রতিটি প্রচার একটি একক সম্পত্তি প্রযোজ্য.

<Stacking> ব্যবহার না করা হলে, একাধিক প্রচার যোগ্য হলে বুকিং-এ সবচেয়ে বেশি ছাড় সহ প্রচার প্রযোজ্য হয়।

Promotions / HotelPromotions / @hotel_id 1 string সম্পত্তির অনন্য শনাক্তকারী। এই মানটি অবশ্যই হোটেল তালিকা ফিডে <listing> এলিমেন্টে <id> ব্যবহার করে নির্দিষ্ট হোটেল আইডির সাথে মিলতে হবে। হোটেল আইডিটি হোটেল সেন্টারেও তালিকাভুক্ত করা হয়েছে।
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> -এ কোনো চাইল্ড উপাদান অন্তর্ভুক্ত করবেন না। এছাড়াও, <HotelPromotions action="overlay"/> এর সাথে delete অনুমতি নেই।

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 মূল্যের জন্য আগমনের 30 তম দিনে 18:00 বা তার আগে বুকিং করতে হবে।
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration প্রচারের আবেদন করার জন্য বুকিং করার সময় চেক-ইন করার আগে সর্বাধিক সংখ্যক দিন। যদি এটি নির্দিষ্ট করা না থাকে, বা এর মান 0 হয়, তাহলে সর্বোচ্চ নেই।

বৈধ মান প্রকারগুলি হল:

  • পূর্ণসংখ্যা: চেক-ইন তারিখের আগের দিনের সংখ্যা। উদাহরণস্বরূপ, 30 এর মান নির্দেশ করে যে প্রচারটি চেক-ইন তারিখের সর্বাধিক 30 দিন আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য।
  • ISO 8601 সময়কাল (দিন, ঘন্টা এবং মিনিট): চেক-ইন তারিখের আগে দিনের সংখ্যা (এবং ঐচ্ছিকভাবে ঘন্টা/মিনিট)। উদাহরণস্বরূপ, P30D এর একটি মান নির্দেশ করে যে প্রচারটি শুধুমাত্র চেক-ইন তারিখের সর্বাধিক 30 দিন আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য। P30DT6H মূল্যের জন্য আগমনের আগে 30 তম দিনে 18:00 বা তার পরে বুকিং করতে হবে।
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

প্রচারগুলি প্রয়োগ করার পরে একটি হার যে সর্বোচ্চ মানের উপর সেট করা যেতে পারে তার উপর সীমাবদ্ধতা সংজ্ঞায়িত করে।

প্রচারগুলিতে সর্বদা একটি <Discount> বা একটি <BestDailyDiscount> উল্লেখ করতে হবে, তাই একটি প্রচার তৈরি করতে যা শুধুমাত্র একটি <Ceiling> প্রযোজ্য, একটি বিকল্প হল 0 percentage সাথে একটি <Discount> সেট করা।

যদি স্ট্যাকিং কনফিগার করা থাকে, তাহলে <Ceiling> সহ একাধিক প্রচার একক থাকার জন্য প্রযোজ্য হতে পারে। প্রতিটি প্রচার তার ছাড় প্রয়োগ করবে, অবিলম্বে তার সিলিং অনুসরণ করবে। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে প্রতিটি সিলিং স্ট্যাকের পরবর্তী প্রচার গণনায় অবদান রাখে।

উদাহরণ:

1-রাত্রি থাকার মূল্য নির্ধারণ করা যেখানে AmountBeforeTax 100 এবং দুটি প্রচারের স্ট্যাক রয়েছে:

  1. স্ট্যাকিং টাইপ base সহ প্রচার , 25 এর একটি fixed_amount এবং 60 এর একটি সিলিং amount_per_night
  2. স্ট্যাকিং টাইপ second , 25 এর fixed_amount এবং 90 এর একটি সিলিং amount_per_night সহ প্রচার

এখানে গণনার ক্রম:

  1. base প্রমোশনটি প্রথমে প্রয়োগ করা হয় এবং 75 AmountBeforeTax ছাড় দেওয়া হয়, কিন্তু তারপর সিলিং এটিকে 60- এ নামিয়ে দেয়।
  2. second প্রচারটি 60 থেকে 35 পর্যন্ত AmountBeforeTax ছাড় দেয়। এটি 90-এর সিলিং-এর নিচে তাই দ্বিতীয় সিলিং প্রয়োগ করা হয় না। চূড়ান্ত হার হল 35

সত্য যে 60 একটি কঠোর সামগ্রিক সিলিং অপ্রাসঙ্গিক কারণ এটি শুধুমাত্র তার নিজস্ব প্রচারের জন্য বৈধ, এবং সম্পূর্ণ প্রচার স্ট্যাককে বিস্তৃত করে এমন কোনো একক সিলিং থাকতে পারে না।

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

ডিসকাউন্ট প্রযোজ্য হওয়ার পরে সর্বোচ্চ যে পরিমাণ রাত্রিকালীন রেট সেট করা যেতে পারে।

যদি একটি <Floor> উপাদানও নির্দিষ্ট করা থাকে, তাহলে এটি অবশ্যই <Floor> এর amount_per_night বৈশিষ্ট্যের চেয়ে বেশি বা সমান একটি মান সেট করতে হবে।

রাত্রিকালীন হারে AmountAfterTax ব্যবহার করে অন্তর্ভুক্ত করা হলে ট্যাক্স এবং ফিগুলিতে amount_per_night প্রয়োগ করা হয়, কিন্তু TaxFeeInfo ব্যবহার করে নির্দিষ্ট করা নয়।

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

ন্যূনতম মানের উপর বিধিনিষেধ সংজ্ঞায়িত করে যা প্রচারগুলি প্রয়োগ করার পরে একটি হার সেট করা যেতে পারে৷

প্রচারগুলিতে সর্বদা একটি <Discount> বা একটি <BestDailyDiscount> উল্লেখ করতে হবে, তাই একটি প্রচার তৈরি করতে যা শুধুমাত্র একটি <Floor> প্রযোজ্য, একটি বিকল্প হল 0 percentage সাথে একটি <Discount> সেট করা।

<Floor> যুক্তি এখনও <FreeNights> ডিসকাউন্টের ক্ষেত্রে প্রযোজ্য, এমনকি যদি বিনামূল্যের রাতের উপর 100% ডিসকাউন্ট প্রয়োগ করা হয়।

যদি স্ট্যাকিং কনফিগার করা থাকে, তাহলে <Floor> সহ একাধিক প্রচার একক থাকার জন্য প্রযোজ্য হতে পারে। প্রতিটি প্রচার তার ডিসকাউন্ট প্রয়োগ করবে, অবিলম্বে তার ফ্লোর অনুসরণ করবে। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে প্রতিটি ফ্লোর স্ট্যাকের পরবর্তী প্রচার গণনায় অবদান রাখে।

উদাহরণ:

1-রাত্রি থাকার মূল্য নির্ধারণ করা যেখানে AmountBeforeTax 100 এবং দুটি প্রচারের স্ট্যাক রয়েছে:

  1. স্ট্যাকিং টাইপ base সহ প্রচার, 25 এর একটি fixed_amount এবং ফ্লোর amount_per_night 90
  2. স্ট্যাকিং টাইপ second সহ প্রচার, 25 এর fixed_amount এবং ফ্লোর amount_per_night 60

এখানে গণনার ক্রম:

  1. base প্রমোশনটি প্রথমে প্রয়োগ করা হয় এবং AmountBeforeTax 75-এ ছাড় দেয়, কিন্তু তারপর ফ্লোর এটিকে 90 পর্যন্ত বাড়িয়ে দেয়।
  2. second প্রচারটি 90 থেকে 65 পর্যন্ত AmountBeforeTax ছাড় দেয়। এটি 60 ফ্লোরের উপরে তাই দ্বিতীয় তলায় প্রয়োগ করা হয় না। চূড়ান্ত হার হল 65

সত্য যে 90 একটি কঠোর সামগ্রিক ফ্লোর অপ্রাসঙ্গিক কারণ এটি শুধুমাত্র তার নিজস্ব প্রচারের জন্য বৈধ, এবং এমন কোনও একক তল থাকতে পারে না যা সমগ্র প্রচারের স্ট্যাককে বিস্তৃত করে৷

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

ডিসকাউন্ট প্রযোজ্য হওয়ার পরে ন্যূনতম পরিমাণ যা একটি রাতের হারে সেট করা যেতে পারে।

যদি একটি <Ceiling> উপাদানও নির্দিষ্ট করা হয়, তাহলে এটি অবশ্যই <Ceiling> -এর amount_per_night বৈশিষ্ট্যের চেয়ে কম বা সমান একটি মান সেট করতে হবে।

রাত্রিকালীন হারে AmountAfterTax ব্যবহার করে অন্তর্ভুক্ত করা হলে ট্যাক্স এবং ফিগুলিতে amount_per_night প্রয়োগ করা হয়, কিন্তু TaxFeeInfo ব্যবহার করে নির্দিষ্ট করা নয়।

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates এক বা একাধিক তারিখের সীমার জন্য একটি ধারক যা প্রচারের জন্য কখন চেক-ইন করতে হবে তা নির্ধারণ করে৷
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

প্রচারের জন্য কখন চেক-ইন করতে হবে তা নির্দিষ্ট করে একটি তারিখ ব্যাপ্তি। আপনি এক বা একাধিক প্রচার মুছে ফেললে এই উপাদানটির প্রয়োজন নেই৷

ইয়ারলেস ডেট ফরম্যাটও সমর্থিত।

  • যদি 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

প্রচারের জন্য কখন চেক-আউট করতে হবে তা নির্দিষ্ট করে একটি তারিখ ব্যাপ্তি। আপনি এক বা একাধিক প্রচার মুছে ফেললে এই উপাদানটির প্রয়োজন নেই৷

ইয়ারলেস ডেট ফরম্যাটও সমর্থিত।

  • যদি 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 , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night মধ্যে একটি প্রয়োজন।

0-100 থেকে একটি দশমিক মান যা শতাংশ ছাড় নির্দিষ্ট করে। এটি AmountAfterTax (বা AmountAfterTax নির্দিষ্ট না থাকলে AmountBeforeTax ) এ প্রয়োগ করা হয়।

উদাহরণ:

  • যদি 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 / @percentage_of_base 0..1 float

percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night মধ্যে একটি প্রয়োজন।

0-100 থেকে একটি দশমিক মান যা বেস ডিসকাউন্টের শতাংশ নির্দিষ্ট করে। percentage অনুরূপ, এটি AmountAfterTax (অথবা AmountAfterTax নির্দিষ্ট না থাকলে AmountBeforeTax ) এ প্রয়োগ করা হয়।

percentage বিপরীতে, এই ছাড়টি সর্বদা ভিত্তি হারের শতাংশ হিসাবে গণনা করা হয়, ক্রমানুসারে প্রয়োগ করা আগের প্রচারগুলি নির্বিশেষে।

উদাহরণ:

  • ধরুন আমাদের দুটি প্রচার রয়েছে যা এক রাত থাকার জন্য ক্রমানুসারে প্রয়োগ করা হয়েছে যার মূল্য 100। প্রথমটি হল নিয়মিত 10% শতাংশ ডিসকাউন্ট এবং দ্বিতীয়টি হল বেস ডিসকাউন্টের 10% শতাংশ৷ তারপরে ছাড়ের হার হবে 80 যেহেতু উভয় প্রচারই 10 বন্ধ করে। মনে রাখবেন যদি দ্বিতীয় প্রচারটিও একটি নিয়মিত শতাংশ ছাড় হয়, তাহলে ছাড়ের হার হবে 81 যেহেতু দ্বিতীয় প্রচারটি 90 এর 10% ছাড় দেয়৷
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

percentage , percentage_of_base , 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

  • যদি আমরা 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 , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night মধ্যে একটি প্রয়োজন।

AmountAfterTax রাত্রিকালীন রেটগুলির প্রতিটিতে একটি নির্দিষ্ট ডিসকাউন্ট প্রযোজ্য (অথবা applied_nights নির্দিষ্ট করা থাকলে সবচেয়ে সস্তা N)। যদি 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 , percentage_of_base , 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।
  • যদি আমরা 1-রাত্রি থাকার মূল্য নির্ধারণ করি যেখানে 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 , percentage_of_base , 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 (বা AmountAfterTax নির্দিষ্ট না থাকলে AmountBeforeTax ) এ প্রয়োগ করা হয়।

উদাহরণ:

  • যদি একটি রাত থাকার জন্য 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 একটি হার পরিকল্পনা নির্দিষ্ট করে। লেনদেন (সম্পত্তি ডেটা), OTA_HotelRateAmountNotifRQ এবং OTA_HotelAvailNotifRQ বার্তাগুলিতে সংজ্ঞায়িত প্যাকেজ, হার এবং উপলব্ধতার সংমিশ্রণ দ্বারা একটি রেট প্ল্যান সংজ্ঞায়িত করা হয় এবং প্যাকেজআইডি দ্বারা চিহ্নিত করা হয়৷
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string রেট প্ল্যানের অনন্য শনাক্তকারী। এই মানটি একটি লেনদেন (সম্পত্তি ডেটা) বার্তায় <PackageData> -এ PackageID মান এবং <OTA_HotelRateAmountNotifRQ> এবং <OTA_HotelAvailNotifRQ> উভয় বার্তায় <StatusApplicationControl> এর RatePlanCode অ্যাট্রিবিউটে ম্যাপ করে। অনুমোদিত অক্ষরের সর্বাধিক সংখ্যা 50।
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes রুম প্রকারের একটি তালিকার জন্য ধারক যেখানে প্রচার প্রযোজ্য। প্রচারটি নির্দিষ্ট করা প্রতিটি <RoomType> -এ প্রয়োগ করা হয়। যদি <RoomTypes> নির্দিষ্ট করা না থাকে, প্রচারটি সমস্ত রুমে প্রযোজ্য।
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType একটি রুমের ধরন নির্দিষ্ট করে। একটি লেনদেন (সম্পত্তি ডেটা) বার্তার একটি <RoomData> উপাদানে একটি রুমের ধরন সংজ্ঞায়িত করা হয় এবং এটির <RoomID> মান ব্যবহার করে উল্লেখ করা হয়। (এর <RoomID> মানটি OTA_HotelRateAmountNotifRQ বার্তাগুলিতে InvTypeCode বৈশিষ্ট্য দ্বারাও উল্লেখ করা হয়েছে।)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string ইনভেন্টরির জন্য অনন্য শনাক্তকারী (রুমের ধরন)। এই মানটি একটি লেনদেন (সম্পত্তি ডেটা) বার্তায় <RoomID> -এ ম্যাপ করে। অনুমোদিত অক্ষরের সর্বাধিক সংখ্যা 50।
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking প্রচারগুলিকে কীভাবে একত্রিত করা যেতে পারে তা নির্দিষ্ট করে৷ যদি নির্দিষ্ট না করা হয়, তাহলে "টাইপ" কে base হিসেবে ধরে নেওয়া হয়।
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

এই সেটিং এর উপর নির্ভর করে একক হারে একাধিক প্রচার প্রয়োগ করা যেতে পারে:

  • any : অন্য কোনো প্রচারের সাথে একত্রিত করা যেতে পারে ( none ছাড়া), কিন্তু যে ক্রমানুসারে প্রচারগুলি প্রয়োগ করা হবে তার নিশ্চয়তা নেই৷
  • base : সেরা যোগ্য base প্রচার নির্বাচন করা হয় এবং প্রথমে অন্য প্রচারের আগে প্রয়োগ করা হয়। এটিকে পূর্বে base_only নামকরণ করা হয়েছিল।
  • second : base প্রমোশনের পরে (যদি প্রযোজ্য হয়) এবং any প্রচারের আগে সেরা যোগ্য second পদোন্নতি নির্বাচন করা হয় এবং প্রয়োগ করা হয়।
  • 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 নির্দিষ্ট করা এবং overlap জন্য সেট করা application একটি অবৈধ সমন্বয়।
  • <FreeNights> সমস্ত application মান সমর্থন করে। নোট করুন যে overlap জন্য, ডিসকাউন্টের প্রয়োজনীয়তার জন্য শুধুমাত্র ওভারল্যাপ করা রাতের থাকার কথা বিবেচনা করা হয়।
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

একটি তারিখ ব্যাপ্তি যে তারিখগুলি উল্লেখ করে যে প্রচারটি কখন প্রয়োগ করা হবে৷

ইয়ারলেস ডেট ফরম্যাটও সমর্থিত।

  • যদি 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 ব্যবহারের ধরণ স্পেসিফিকেশন।

বৈধ মানগুলি include এবং exclude হয়।

যদি ইউএসআরসিউন্ট্রি type include হিসাবে সেট করা থাকে তবে তালিকাভুক্ত দেশগুলির ব্যবহারকারীদের জন্য প্রচার প্রযোজ্য।

যদি ব্যবহারকারীর type exclude , তবে প্রচারগুলি তালিকাভুক্ত দেশগুলির বাইরে থেকে ব্যবহারকারীদের ক্ষেত্রে প্রযোজ্য।

যদি ব্যবহারকারীর type আনসেট হয় তবে এটি include হিসাবে বিবেচনা করা হয় এবং তালিকাভুক্ত দেশগুলির ব্যবহারকারীদের জন্য প্রচার প্রয়োগ করা হয়।

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country এমন একটি দেশকে সংজ্ঞায়িত করে যেখানে ব্যবহারকারীরা প্রচারের জন্য যোগ্য।
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string একটি সিএলডিআর কান্ট্রি কোড , যেমন DE বা FR । মনে রাখবেন, কিছু দেশের জন্য, সিএলডিআর কান্ট্রি কোড 2-লেটার আইএসও কান্ট্রি কোডের মতো নয়। এছাড়াও, সিএলডিআর অঞ্চল কোডগুলি সমর্থিত নয়।

উদাহরণ

সম্পত্তি প্রতি 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 উপাদানটি আইএসও 8601 সময়কাল প্রকার হিসাবে সংজ্ঞায়িত তার শুরু এবং শেষ সীমাগুলির সাথে ব্যবহৃত হয়। এই বুকিং উইন্ডো বিধিনিষেধের আগমনের আগের দিন বা 18: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 বৈশিষ্ট্যগুলির সাথে ব্যবহৃত হয়। এই বুকিংয়ের তারিখের সীমাবদ্ধতার জন্য 2020-07-01 এবং 2020-07-02 এ 06:30 এর মধ্যে বুকিং হওয়া দরকার।

<?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 এর মধ্যে চেক-ইন তারিখগুলিতে প্রযোজ্য। নতুন বছরের সীমানা অতিক্রমকারী বছরহীন তারিখের সীমাগুলি অবৈধ, সুতরাং ড্যাটারঞ্জটি দুটি সংলগ্ন তারিখের রেঞ্জ হিসাবে প্রকাশ করা হয়।

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



Frenights ছাড়

নিম্নলিখিত উদাহরণটি প্রতিটি চার রাতের জন্য 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 (থাকুন)
  • 2022-01-03
  • 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>

সেরাডেইলিডিস্কাউন্ট

নিম্নলিখিত উদাহরণটি Discount সাথে সজ্জিত BestDailyDiscount প্রয়োগ করে একটি দুটি রাতের থাকার ছাড় দেয়।

<?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 বার্তায় নিম্নলিখিত উপাদানগুলি এবং বৈশিষ্ট্য রয়েছে:

উপাদান / @অ্যাট্রিবিউট ঘটনা টাইপ বর্ণনা
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>

,

ওভারভিউ

এই এপিআই আপনাকে সম্ভাব্য ছাড়গুলি নির্দিষ্ট করতে দেয়। উল্লিখিত প্রচারগুলির মধ্যে গুগল যোগ্য প্রচার বা প্রচারের সেট প্রয়োগ করে যা সর্বনিম্ন দামের দিকে পরিচালিত করে। আপনি যদি এমন কোনও এপিআই খুঁজছেন যা স্বেচ্ছাসেবী হারের সমন্বয়কে সমর্থন করে যা শর্তগুলি সন্তুষ্ট হলে দাম বাড়াতে বা হ্রাস করতে পারে, তবে আমাদের রেট পরিবর্তনগুলি এপিআই বিবেচনা করুন। মনে রাখবেন যে উভয় এপিআই উপস্থিত থাকলে, প্রচারের আগে রেট পরিবর্তনগুলি প্রয়োগ করা হয়।

অনুরোধ

সিনট্যাক্স

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, percentage_of_base, fixed_amount,
           fixed_amount_per_night, fixed_price, or fixed_price_per_night;
           applied_nights is only used with percentage, fixed_amount_per_night,
           and fixed_price_per_night. -->
      <Discount percentage="float" percentage_of_base="float"
                fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

উপাদান এবং বৈশিষ্ট্য

প্রচার বার্তায় নিম্নলিখিত উপাদান এবং বৈশিষ্ট্য রয়েছে:

উপাদান / @অ্যাট্রিবিউট ঘটনা টাইপ বর্ণনা
Promotions 1 Complex element একটি প্রচার বার্তার মূল উপাদান।
Promotions / @partner 1 string এই বার্তার জন্য অংশীদার অ্যাকাউন্ট। এই স্ট্রিং মানটি হোটেল সেন্টারে অ্যাকাউন্ট সেটিংস পৃষ্ঠায় তালিকাভুক্ত "অংশীদার কী" মান।

আপনার যদি একাধিক অ্যাকাউন্টের জন্য ফিড সরবরাহ করে এমন একটি ব্যাকএন্ড থাকে তবে এই মানটির <OTA_HotelRateAmountNotifRQ> এবং <OTA_HotelAvailNotifRQ> একই অ্যাকাউন্টের জন্য বার্তাগুলির <RequestorID> উপাদানগুলিতে নির্দিষ্ট ID অ্যাট্রিবিউট মানটি মেলে।

Promotions / @id 1 string এই অনুরোধ বার্তার জন্য একটি অনন্য শনাক্তকারী। এই মানটি প্রতিক্রিয়া বার্তায় ফিরে আসে। অনুমোদিত অক্ষরগুলি হ'ল এজেড, এজেড, 0-9, _ (আন্ডারস্কোর), এবং - (ড্যাশ)।
Promotions / @timestamp 1 DateTime এই বার্তার তৈরির তারিখ এবং সময়।
Promotions / HotelPromotions 0..n HotelPromotions

একটি সম্পত্তি জন্য প্রচার। প্রতিটি প্রচার একটি একক সম্পত্তির ক্ষেত্রে প্রযোজ্য।

<Stacking> ব্যবহার না করা হলে, একাধিক প্রচারের যোগ্য হলে বুকিংয়ে সবচেয়ে বড় ছাড়ের সাথে প্রচার প্রয়োগ করা হয়।

Promotions / HotelPromotions / @hotel_id 1 string সম্পত্তি জন্য অনন্য পরিচয়। এই মানটি অবশ্যই হোটেল তালিকার ফিডে <আইডি> <listing> উপাদানটিতে <id> ব্যবহার করে নির্দিষ্ট হোটেল আইডির সাথে মেলে। হোটেল আইডিও হোটেল সেন্টারে তালিকাভুক্ত রয়েছে।
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। অনুমোদিত অক্ষরগুলি হ'ল এজেড, এজেড, 0-9, _ (আন্ডারস্কোর), - (ড্যাশ), এবং। (সময়কাল)।
Promotions /HotelPromotions / Promotion / @action 0..1 enum

যদি নির্দিষ্ট করা হয় তবে মানটি delete হবে। যদি নির্দিষ্ট না করা হয় এবং একই id সহ একটি প্রচার সংরক্ষণ করা হয় না, তবে এই প্রচারটি সংরক্ষণ করা হয়। অন্যথায়, যদি নির্দিষ্ট না করা হয় এবং একই id সহ একটি প্রচার সংরক্ষণ করা হয়, তবে বিদ্যমান প্রচার আপডেট করা হয়।

যদি delete নির্দিষ্ট করা থাকে তবে একই id সহ সঞ্চিত প্রচার মুছে ফেলা হয়। delete ব্যবহার করার সময়, <Promotion> এ কোনও শিশু উপাদান অন্তর্ভুক্ত করবেন না। এছাড়াও, <HotelPromotions action="overlay"/> এর সাথে একত্রে delete অনুমতি নেই।

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

সপ্তাহের দিনগুলি যা তারিখের সীমাতে অনুমোদিত। যদি নির্দিষ্ট না করা হয় তবে সমস্ত দিন তারিখের সীমাতে অনুমোদিত। স্ট্রিংয়ের প্রতিটি চরিত্র একটি দিন নির্দিষ্ট করে। উদাহরণস্বরূপ, "এমটিডাব্লুএইচএফ" নির্দিষ্ট করে যে সপ্তাহের দিনগুলি তারিখের সীমাতে অনুমোদিত।

বৈধ অক্ষর হল:

  • 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 দিন আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য।
  • আইএসও 8601 সময়কাল (দিন, ঘন্টা এবং মিনিট): চেক-ইন তারিখের আগে দিনের সংখ্যা (এবং ally চ্ছিকভাবে ঘন্টা/মিনিট)। উদাহরণস্বরূপ, P30D এর একটি মান প্রচারকে নির্দেশ করে কেবল চেক-ইন তারিখের কমপক্ষে 30 দিন আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য। P30DT6H এর একটি মানের আগমনের 30 তম দিনে 18:00 বা তার আগে বুকিং প্রয়োজন।
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration বুকিংয়ের সময় চেক-ইন করার আগে সর্বোচ্চ দিনগুলি অবশ্যই প্রচারের জন্য প্রয়োগ করা উচিত। যদি এটি নির্দিষ্ট না করা হয়, বা এর মান 0 হয় তবে সর্বোচ্চ কোনও নেই।

বৈধ মান প্রকারগুলি হ'ল:

  • পূর্ণসংখ্যা: চেক-ইন তারিখের আগের দিনগুলির সংখ্যা। উদাহরণস্বরূপ, 30 এর একটি মান প্রচারকে নির্দেশ করে কেবল চেক-ইন তারিখের আগে 30 দিনের আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য।
  • আইএসও 8601 সময়কাল (দিন, ঘন্টা এবং মিনিট): চেক-ইন তারিখের আগে দিনের সংখ্যা (এবং ally চ্ছিকভাবে ঘন্টা/মিনিট)। উদাহরণস্বরূপ, P30D এর একটি মান নির্দেশ করে যে প্রচারটি কেবল চেক-ইন তারিখের আগে 30 দিনের আগে বুকিংয়ের ক্ষেত্রে প্রযোজ্য। P30DT6H এর একটি মানের আগমনের 30 তম দিনে 18:00 বা তার পরে বুকিং প্রয়োজন।
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

প্রচার প্রয়োগের পরে একটি হার সেট করা যেতে পারে এমন সর্বাধিক মানের উপর বিধিনিষেধগুলি সংজ্ঞায়িত করে।

প্রচারগুলি অবশ্যই সর্বদা একটি <Discount> বা একটি <BestDailyDiscount> নির্দিষ্ট করতে হবে, সুতরাং এমন একটি প্রচার তৈরি করতে যা কেবলমাত্র একটি <Ceiling> প্রয়োগ করে, একটি বিকল্প হ'ল 0 এর percentage সাথে একটি <Discount> সেট করা।

যদি স্ট্যাকিং কনফিগার করা থাকে তবে <Ceiling> সহ একাধিক প্রচার একক থাকার ক্ষেত্রে প্রয়োগ করতে পারে। প্রতিটি প্রচার তার ছাড় প্রয়োগ করবে, তত্ক্ষণাত্ এর সিলিং অনুসরণ করবে। নিম্নলিখিত উদাহরণটি দেখায় যে প্রতিটি সিলিং কীভাবে স্ট্যাকের পরবর্তী প্রচার গণনায় অবদান রাখে।

উদাহরণ:

1-নাইট থাকার মূল্য নির্ধারণ যেখানে AmountBeforeTax 100 এবং দুটি প্রচারের একটি স্ট্যাক রয়েছে:

  1. স্ট্যাকিং টাইপ base সহ প্রচার, 25 এর একটি fixed_amount এবং 60 এর একটি সিলিংয়ের amount_per_night
  2. স্ট্যাকিং টাইপ second সাথে প্রচার, 25 এর fixed_amount এবং 90 এর একটি সিলিংয়ের amount_per_night

এখানে গণনার ক্রম:

  1. base প্রচারটি প্রথমে প্রয়োগ করা হয় এবং পরিমাণের AmountBeforeTax 75 এ ছাড় দেয় তবে তারপরে সিলিংটি এটি 60 এ নামিয়ে দেয়।
  2. second প্রচারটি 60 থেকে 35 এর মধ্যে AmountBeforeTax ছাড় দেয় This এটি 90 এর সিলিংয়ের নীচে তাই দ্বিতীয় সিলিং প্রয়োগ করা হয় না। চূড়ান্ত হার 35

60 একটি কঠোর সামগ্রিক সিলিং এটি অপ্রাসঙ্গিক কারণ এটি কেবল তার নিজস্ব প্রচারের জন্য বৈধ, এবং কোনও একক সিলিং থাকতে পারে না যা পুরো প্রচারের স্ট্যাককে বিস্তৃত করে।

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

ছাড় প্রয়োগের পরে একটি রাতের রেট সর্বাধিক পরিমাণ সেট করা যেতে পারে।

যদি কোনও <Floor> উপাদানটিও নির্দিষ্ট করা থাকে তবে এটি অবশ্যই <Floor> এর amount_per_night বৈশিষ্ট্যের চেয়ে বড় বা সমান একটি মান সেট করতে হবে।

ট্যাক্স এবং ফিগুলিতে amount_per_night প্রয়োগ করা হয় যখন তারা AmountAfterTax ব্যবহার করে রাতের হারে অন্তর্ভুক্ত করা হয়, তবে ট্যাক্সফেইইনফো ব্যবহার করে নির্দিষ্ট করা নয়।

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

ন্যূনতম মানের উপর বিধিনিষেধগুলি সংজ্ঞায়িত করে যে প্রচারগুলি প্রয়োগ করার পরে একটি হার সেট করা যেতে পারে।

প্রচারগুলি অবশ্যই সর্বদা একটি <Discount> বা <BestDailyDiscount> নির্দিষ্ট করতে হবে, সুতরাং এমন একটি প্রচার তৈরি করতে যা কেবলমাত্র একটি <Floor> প্রয়োগ করে, একটি বিকল্প হ'ল 0 এর percentage সাথে একটি <Discount> সেট করা।

<Floor> লজিক এখনও <FreeNights> ছাড়ের ক্ষেত্রে প্রযোজ্য, এমনকি যদি ফ্রি নাইটটিতে এটিতে 100% ছাড় প্রয়োগ করা হয়।

যদি স্ট্যাকিং কনফিগার করা থাকে তবে <Floor> সহ একাধিক প্রচার একক থাকার ক্ষেত্রে প্রয়োগ করতে পারে। প্রতিটি প্রচার তার ছাড় প্রয়োগ করবে, তত্ক্ষণাত্ এর মেঝে অনুসরণ করবে। নিম্নলিখিত উদাহরণটি দেখায় যে প্রতিটি তল কীভাবে স্ট্যাকের পরবর্তী প্রচার গণনায় অবদান রাখে।

উদাহরণ:

1-নাইট থাকার মূল্য নির্ধারণ যেখানে AmountBeforeTax 100 এবং দুটি প্রচারের একটি স্ট্যাক রয়েছে:

  1. স্ট্যাকিং টাইপ base সহ প্রচার, 25 এর একটি fixed_amount এবং 90 এর একটি মেঝে amount_per_night
  2. স্ট্যাকিং টাইপ second সাথে প্রচার, 25 এর fixed_amount এবং 60 এর একটি মেঝে amount_per_night

এখানে গণনার ক্রম:

  1. base প্রচারটি প্রথমে প্রয়োগ করা হয় এবং পরিমাণের AmountBeforeTax 75 এ ছাড় দেয় তবে তারপরে মেঝে এটি 90 পর্যন্ত উত্থাপন করে।
  2. second প্রচারটি 90 থেকে 65 পর্যন্ত AmountBeforeTax ছাড় দেয় This এটি 60 এর তলদেশের উপরে তাই দ্বিতীয় তলটি প্রয়োগ করা হয় না। চূড়ান্ত হার 65

90 টি কঠোর সামগ্রিক তল হিসাবে এটি অপ্রাসঙ্গিক কারণ এটি কেবল তার নিজস্ব প্রচারের জন্য বৈধ, এবং কোনও একক তল থাকতে পারে না যা পুরো প্রচারের স্ট্যাককে বিস্তৃত করে।

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

ছাড় প্রয়োগের পরে একটি রাতের রেট যে সর্বনিম্ন পরিমাণ সেট করা যেতে পারে।

যদি একটি <Ceiling> উপাদানটিও নির্দিষ্ট করা থাকে তবে এটি অবশ্যই <Ceiling> এর amount_per_night বৈশিষ্ট্যের চেয়ে কম বা সমান একটি মান সেট করতে হবে।

ট্যাক্স এবং ফিগুলিতে amount_per_night প্রয়োগ করা হয় যখন তারা AmountAfterTax ব্যবহার করে রাতের হারে অন্তর্ভুক্ত করা হয়, তবে ট্যাক্সফেইইনফো ব্যবহার করে নির্দিষ্ট করা নয়।

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates এক বা একাধিক তারিখের জন্য একটি ধারক যা প্রচারের প্রয়োগের জন্য চেক-ইন করতে হবে যখন সংজ্ঞায়িত হয়।
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

প্রচার প্রয়োগের জন্য যখন চেক-ইন করা উচিত তখন অবশ্যই নির্দিষ্ট তারিখের পরিসীমা। আপনি যদি এক বা একাধিক প্রচার মুছে ফেলছেন তবে এই উপাদানটির প্রয়োজন নেই।

বছরবিহীন ফর্ম্যাটটিও সমর্থিত।

  • যদি 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

সপ্তাহের দিনগুলি যা তারিখের সীমাতে অনুমোদিত। যদি নির্দিষ্ট না করা হয় তবে সমস্ত দিন তারিখের সীমাতে অনুমোদিত। স্ট্রিংয়ের প্রতিটি চরিত্র একটি দিন নির্দিষ্ট করে। উদাহরণস্বরূপ, "এমটিডাব্লুএইচএফ" নির্দিষ্ট করে যে সপ্তাহের দিনগুলি তারিখের সীমাতে অনুমোদিত।

বৈধ অক্ষর হল:

  • M সোমবারের জন্য
  • মঙ্গলবারের জন্য T
  • বুধবার জন্য W
  • বৃহস্পতিবার H
  • শুক্রবার জন্য F
  • S জন্য
  • U রবিবারের জন্য

যে কোনও চরিত্রের সংমিশ্রণ বৈধ।

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates এক বা একাধিক তারিখের রেঞ্জের জন্য একটি ধারক যা প্রচারের প্রয়োগের জন্য অবশ্যই চেক-আউট ঘটতে হবে তা সংজ্ঞায়িত করে।
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

প্রচার প্রয়োগের জন্য চেক-আউট হওয়ার সময় অবশ্যই নির্দিষ্ট করার একটি তারিখের পরিসীমা। আপনি যদি এক বা একাধিক প্রচার মুছে ফেলছেন তবে এই উপাদানটির প্রয়োজন নেই।

বছরবিহীন ফর্ম্যাটটিও সমর্থিত।

  • যদি 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

সপ্তাহের দিনগুলি যা তারিখের সীমাতে অনুমোদিত। যদি নির্দিষ্ট না করা হয় তবে সমস্ত দিন তারিখের সীমাতে অনুমোদিত। স্ট্রিংয়ের প্রতিটি চরিত্র একটি দিন নির্দিষ্ট করে। উদাহরণস্বরূপ, "এমটিডাব্লুএইচএফ" নির্দিষ্ট করে যে সপ্তাহের দিনগুলি তারিখের সীমাতে অনুমোদিত।

বৈধ অক্ষর হল:

  • 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 একটি, percentage_of_base , 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 এবং ট্যাক্সফেইইনফো 10 এর একটি কর নির্দিষ্ট করে, তারপরে

    প্রচারের হার = AmountBeforeTax * (1 - শতাংশ ছাড়) + কর

    90.00 = 100 * (1 - 0.2) + 10

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

হুবহু percentage একটি, percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night প্রয়োজন।

0-100 থেকে একটি দশমিক মান যা বেস ছাড়ের শতাংশ নির্দিষ্ট করে। percentage অনুরূপ, এটি AmountAfterTax প্রয়োগ করা হয় (বা AmountBeforeTax AmountAfterTax না করা থাকলে)।

percentage বিপরীতে, এই ছাড়টি সর্বদা ক্রম অনুসারে প্রয়োগ করা পূর্ববর্তী প্রচারগুলি নির্বিশেষে বেস হারের শতাংশ হিসাবে গণনা করা হয়।

উদাহরণ:

  • ধরুন আমাদের দুটি প্রচার রয়েছে যা এক রাতের থাকার ক্রম অনুসারে প্রয়োগ করা হয় যার মূল্য 100 ডলার। প্রথমটি নিয়মিত 10% শতাংশ ছাড় এবং দ্বিতীয়টি বেস ছাড়ের 10% শতাংশ। তারপরে ছাড়ের হারটি 80 হবে যেহেতু উভয় প্রচার 10 টি ছাড় দেয়। দ্রষ্টব্য যদি দ্বিতীয় প্রচারটিও নিয়মিত শতাংশ ছাড় হয়, তবে দ্বিতীয় পদোন্নতি 90 এর 10% ছাড় ছাড়ার পরে ছাড়ের হার 81 হবে।
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

হুবহু percentage একটি, percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night প্রয়োজন।

AmountAfterTax রাতের হারের যোগফল থেকে বিয়োগ করার জন্য একটি নির্দিষ্ট পরিমাণ (বা AmountAfterTax AmountBeforeTax নির্দিষ্ট না করা হলে রাতের রাত্রে হারের যোগফল)। এটি রাতের হারের মতো একই মুদ্রায় বলে ধরে নেওয়া হয়। যদি এটি রাতের হারের যোগফলের চেয়ে বড় হয় তবে ফলস্বরূপ মান শূন্য।

উদাহরণ:

  • যদি আমরা 1-রাতের থাকার জন্য মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 90 হয়, তবে AmountAfterTax 100 এবং fixed_amount 20, তারপরে তারপরে 20,

    প্রচারের হার = AmountAfterTax - স্থির ছাড়

    80.00 = 100 - 20

  • যদি আমরা 1-রাতের থাকার জন্য মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 100 হয় তবে fixed_amount 20 এবং ট্যাক্সফেইইনফো 8%এর কর নির্দিষ্ট করে, তারপরে

    প্রচারের হার = ( AmountBeforeTax - স্থির ছাড়) * (1 + শতাংশ কর)

    86.40 = (100 - 20) * 1.08

  • যদি আমরা 1-রাতের থাকার জন্য মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 50 হয় তবে fixed_amount 60 এবং ট্যাক্সফেইইনফো 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 একটি, percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night প্রয়োজন।

প্রতিটি AmountAfterTax নাইটলি হারের জন্য একটি নির্দিষ্ট ছাড় প্রয়োগ করা হয় (বা 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 একটি, percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night প্রয়োজন।

যদি AmountAfterTax রাতের হারগুলি নির্দিষ্ট করা থাকে, তবে এটি কর এবং ফি সহ নির্দিষ্ট মানটিতে থাকার জন্য মূল্য নির্ধারণ করে। যদি AmountBeforeTax নির্দিষ্ট করা থাকে তবে AmountAfterTax নির্দিষ্ট করা আছে কি না, এটি নির্দিষ্ট মানটিতে থাকার জন্য প্রাক-করের মূল্য নির্ধারণ করে। এটি রাতের হারের মতো একই মুদ্রায় বলে ধরে নেওয়া হয়।

যদি AmountAfterTax শতাংশ শতাংশ কর প্রতিফলিত করার উদ্দেশ্যে করা হয়, তবে AmountBeforeTax জন্য একটি নির্দিষ্ট মূল্য নির্ধারণের ফলে ভুল কর এবং ফি হতে পারে। সাধারণভাবে, কোনও সম্পত্তির কর এবং ফি নির্দিষ্ট করতে TaxFeeInfo ব্যবহার করার জন্য দৃ strongly ়ভাবে সুপারিশ করা হয়।

উদাহরণ:

  • যদি আমরা 1-রাতের থাকার জন্য মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 90 হয়, তবে AmountAfterTax 100 এবং fixed_price 80 হয়, তবে প্রচারের হার 80 হয়।
  • যদি আমরা 1-রাতের থাকার জন্য মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 100 হয় তবে fixed_amount 80, এবং ট্যাক্সফেইইনফো 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 একটি, percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , বা fixed_price_per_night প্রয়োজন।

যদি AmountAfterTax রাতের হার নির্দিষ্ট করা থাকে, তবে এটি কর এবং ফি সহ নির্দিষ্ট মান হিসাবে প্রতিটি রাতের থাকার জন্য মূল্য নির্ধারণ করে। যদি AmountBeforeTax নির্দিষ্ট করা থাকে তবে AmountAfterTax নির্দিষ্ট করা আছে কিনা, এটি নির্দিষ্ট মানটিতে থাকার প্রতিটি রাতের জন্য প্রাক-করের মূল্য নির্ধারণ করে। এটি রাতের হারের মতো একই মুদ্রায় বলে ধরে নেওয়া হয়।

যদি AmountAfterTax শতাংশ শতাংশ কর প্রতিফলিত করার উদ্দেশ্যে করা হয়, তবে AmountBeforeTax জন্য একটি নির্দিষ্ট মূল্য নির্ধারণের ফলে ভুল কর এবং ফি হতে পারে। সাধারণভাবে, কোনও সম্পত্তির কর এবং ফি নির্দিষ্ট করতে TaxFeeInfo ব্যবহার করার জন্য দৃ strongly ়ভাবে সুপারিশ করা হয়।

যদি applied_nights নির্দিষ্ট করা থাকে তবে নতুন দামটি সস্তার এন নাইটগুলিতে প্রয়োগ করা হয়।

উদাহরণ:

  • যদি আমরা একটি 2-রাতের থাকার মূল্য নির্ধারণ করি যেখানে AmountBeforeTax মানগুলি 90, 90; AmountAfterTax মানগুলি 100, 100; এবং fixed_price 80, তারপরে প্রচারের হার 80 + 80 = 160।
  • যদি আমরা একটি 2-রাতের থাকার মূল্য নির্ধারণ করি যেখানে AmountBeforeTax 100, 100; fixed_amount 80, এবং ট্যাক্সফেইআইএনএফও 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 ম চতুর্থ রাত এবং 5 তম থেকে 8 তম রাত; নবম এবং দশম রাতগুলি স্টে নাইট বিভাগের অংশ নয়।

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 এবং ট্যাক্সফেইইনফো 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 হয়, তারপরে তারপরে 20,

    প্রচারের হার = AmountAfterTax - স্থির ছাড়

    80.00 = 100 - 20

  • যদি এক রাতের জন্য AmountBeforeTax 100 হয় তবে fixed_amount 20 এবং ট্যাক্সফেইইনফো 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 হয় এবং ট্যাক্সফেইইনফো 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 পদোন্নতি প্রয়োগের জন্য থাকার জন্য সর্বনিম্ন রাতগুলি অনুমোদিত। If this isn't specified, there is no minimum.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Container for a membership rate rule that triggers a specific UI treatment for the associated discount.

This element should not be specified unless <Discount> is also specified.

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

ID of the rate rule associated with a membership program.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Specifies the minimum sum of the daily room rates (using the larger of AmountBeforeTax or AmountAfterTax ) that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer The value that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer The user-specified occupancy must be at least this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer The user-specified occupancy must be at most this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Container for a list of rate plans to which the promotion applies. If <RatePlans> isn't specified, the promotion applies to all rate plans.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Specifies a rate plan. A rate plan is defined by a combination of package, rates, and availability, as defined in Transaction (Property Data), OTA_HotelRateAmountNotifRQ, and OTA_HotelAvailNotifRQ messages, and as identified by the PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string The unique identifier for the rate plan. This value maps to the PackageID value in <PackageData> in a Transaction (Property Data) message, and in the RatePlanCode attribute in <StatusApplicationControl> in both <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Container for a list of room types to which the promotion applies. The promotion is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the promotion applies to all rooms.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Specifies a room type. A room type is defined in a <RoomData> element in a Transaction (Property Data) message and is referenced using its <RoomID> value. (Its <RoomID> value is also referenced by the InvTypeCode attribute in OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string The unique identifier for the inventory (room type). This value maps to <RoomID> in a Transaction (Property Data) message. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Specifies how promotions can be combined. If not specified, the "type" is assumed to be base .
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Multiple promotions can be applied to a single rate depending on this setting:

  • any : Can be combined with any other promotion (except none ), but the order in which the promotions should be applied is not guaranteed.
  • base : The best eligible base promotion is selected and applied first, before other promotions. This was previously named base_only .
  • second : The best eligible second promotion is selected and applied after a base promotion (if applicable) and before any promotions.
  • none : Can not be combined with other promotions.

Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Describes how the promotion should be applied.

বৈধ মান হল:

  • all : Applies the promotion to each night in the itinerary if all dates in the itinerary overlap with the stay dates.
  • any : Applies the promotion to all nights in the itinerary if any date in the itinerary overlaps with a date in the stay dates range.
  • overlap : Applies the promotion only to those nights in the itinerary that overlap with a date in the stay dates range.

This attribute must always be specified.

  • If <Discount> specifies percentage and application is set to all or any , the discount is applied as a percentage of the full stay.
  • If <Discount> specifies percentage and application is set to overlap , the discount is applied as a percentage of nightly rates for overlapping nights.
  • <Discount> specifying fixed_amount and application set to overlap is an invalid combination.
  • <FreeNights> supports all application values. Note that for overlap , only overlapping nights of stay are considered for the discount requirements.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

A date range specifying dates when the promotion is to be applied.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .

If you want to set StayDates range to allow the promotion on specific days of the week, you should set the start date as the current date with no end so that the promotion doesn't expire.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.

You should specify start value if the end value isn't provided.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited from the start date onwards.

You should specify end value if the start value isn't provided.

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

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum The type of UserCountries specification.

Valid values are include and exclude .

If the UserCountries type is set as include , the promotion applies to users from the listed countries.

If the UserCountries type is exclude , the promotion applies to users from outside the listed countries.

If the UserCountries type is unset, it is treated as include and the promotion is applied to users from the listed countries.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Defines one country where users are eligible for the promotion.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string A CLDR country code , such as DE or FR . Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported.

উদাহরণ

সম্পত্তি প্রতি 500টি প্রচারের সীমা রয়েছে। Refer to "Delete one promotion" example to remove promotions from a property.

মৌলিক বার্তা

The following example shows a basic Promotions message:

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


Inventory condition

The following example shows how to create a discount if there is excess inventory close to the arrival date:

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


Delete one promotion

The following example shows how to delete one promotion for a property:

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

Delete all promotions

The following example shows how to delete all promotions for a property:

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



Overlay all promotions

The following example shows how to overlay <HotelPromotions> for a property with one or more new promotions. When action="overlay" , all stored promotions are deleted prior to storing the promotions specified in the current message:

<?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 Different Stacking Types

The following example shows a case where three different promotions would be applied ( base , second , any ). Note that the none promotion wouldn't be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $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 Stacking Type

The following example shows a case where the none promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $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>



Booking Window Duration Bounds

The following example shows a case where the BookingWindow element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.

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


Booking Dates DateTime Bounds

The following example shows a case where the BookingDates element is used with start and end attributes as DateTime types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 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>


Yearless date ranges

The following example shows a case where the CheckInDates element contains DateRanges that have start and end fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.

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

The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 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>

The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.

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


Ranked Selection

The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.

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

The following example discounts a two night stay by applying BestDailyDiscount stacked with a 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>

Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.

For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.

For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.

Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any . If it were set to base , then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking for more information.

`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.

প্রতিক্রিয়া

সিনট্যাক্স

The PromotionsResponse message uses the following syntax:

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

উপাদান এবং বৈশিষ্ট্য

The PromotionsResponse message has the following elements and attributes:

Element / @Attribute ঘটনা টাইপ বর্ণনা
PromotionsResponse 1 Complex element The root element indicating the success or issues for a received Promotions request message.
PromotionsResponse / @timestamp 1 DateTime The creation date and time of this message.
PromotionsResponse / @id 1 string The unique identifier from the associated Promotions message.
PromotionsResponse / @partner 1 string The partner account for this message.
PromotionsResponse / Success 0..1 Success Indicates that the Promotions message was processed successfully without warnings, errors, or failures.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues 0..1 Issues A container for one or more issues encountered while processing the Promotions message.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues / Issue 1..n Issue The description of a warning, error, or failure encountered while processing the Promotions message. Details on these issues can be found in Feed Status Error Messages .
PromotionsResponse / Issues / Issue / @code 1 integer The identifier for the issue.
PromotionsResponse / Issues / Issue / @status 1 enum

The type of issue encountered.

Valid values are warning , error , and failure .

উদাহরণ

সফলতা

The following is a response to a successfully processed Promotions message.

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

ইস্যু

The following is a response to a Promotions message not processed due to errors.

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

,

ওভারভিউ

This API lets you specify possible discounts. Of the promotions specified, Google applies the eligible promotion or set of promotions that leads to the lowest price. If you are looking for an API which supports arbitrary rate adjustments that can either increase or decrease the price when conditions are satisfied, then consider our Rate Modifications API . Note that if both APIs are present, rate modifications are applied before promotions.

অনুরোধ

সিনট্যাক্স

The Promotions message uses the following syntax:

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

উপাদান এবং বৈশিষ্ট্য

The Promotions message has the following elements and attributes:

Element / @Attribute ঘটনা টাইপ বর্ণনা
Promotions 1 Complex element The root element of a promotions message.
Promotions / @partner 1 string The partner account for this message. This string value is the "Partner key" value listed on the Account settings page in Hotel Center.

If you have a backend that provides feeds for multiple accounts, this value needs to match the ID attribute value specified in the <RequestorID> element of your <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages for the same account.

Promotions / @id 1 string A unique identifier for this request message. This value is returned in the response message. Allowed characters are az, AZ, 0-9, _ (underscore), and - (dash).
Promotions / @timestamp 1 DateTime The creation date and time of this message.
Promotions / HotelPromotions 0..n HotelPromotions

Promotions for a property. Each promotion applies to a single property.

Unless <Stacking> is used, the promotion with the biggest discount is applied to the booking when multiple promotions are eligible.

Promotions / HotelPromotions / @hotel_id 1 string The unique identifier for the property. This value must match the Hotel ID specified using <id> in the <listing> element in the Hotel List Feed. The Hotel ID is also listed in Hotel Center .
Promotions / HotelPromotions / @action 0..1 enum

If specified, the value must be "overlay" . When the value is "overlay" , all stored promotions are deleted prior to storing the promotions specified in the current message.

If not specified, then each promotion specified in the current message is either:

  • Added (if none of the stored promotions has the same id )
  • Updated (if a stored promotion has the same id )
  • Deleted (if a stored promotion has the same id and the value of the action attribute for the promotion specified in the current message is "delete" )
Promotions / HotelPromotions / Promotion 0..99 Promotion

A single promotion for a property. Note that if action="overlay" and a <Promotion> is not specified, all promotions for the property are deleted.

If you need to use more than 99 promotions, contact your Technical Account Manager (TAM).

Promotions / HotelPromotions / Promotion / @id 1 string A unique identifier for the promotion. The maximum number of characters allowed is 40. Allowed characters are az, AZ, 0-9, _ (underscore), - (dash), and . (সময়কাল)।
Promotions /HotelPromotions / Promotion / @action 0..1 enum

If specified, the value must be delete . If not specified and a promotion with the same id isn't stored, then this promotion is stored. Otherwise, if not specified and a promotion with the same id is stored, then the existing promotion is updated.

If delete is specified, the stored promotion with the same id is deleted. When using delete , don't include any child elements in <Promotion> . Also, delete is not allowed in conjunction with <HotelPromotions action="overlay"/> .

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates A container for one or more ranges that define when booking must occur in order for the promotion to be applied.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange A range specifying when booking must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date or DateTime

The starting date or datetime (based on the property's time zone), inclusive, of the range.

  • The date or datetime specified by start must be earlier than (or the same as) the date or datetime specified by end .
  • If start isn't specified, the range is effectively unlimited in terms of a start time.
  • If start is populated as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date or DateTime

The ending date or datetime (based on the property's time zone), inclusive, of the range.

  • The date or datetime specified by end must be later than (or the same as) the date or datetime specified by start .
  • If end isn't specified, the range is effectively unlimited in terms of an end time.
  • If end is provided as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Specifies the time period when booking must occur relative to the check-in date (based on the property's time zone). For example, the booking window can be set to least 7 days, but not more than 180 days, prior to check-in.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration The minimum duration prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no minimum.

Valid value types are:

  • Integer: The number of days before the check-in date. For example, a value of 30 indicates the promotion only applies to bookings at least 30 days before the check-in date.
  • ISO 8601 Duration (days, hours, and minutes): The number of days (and optionally hours/minutes) before the check-in date. For example, a value of P30D indicates the promotion only applies to bookings at least 30 days before the check-in date. A value of P30DT6H requires booking on or before 18:00 on the 30th day before arrival.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration The maximum number of days prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no maximum.

Valid value types are:

  • Integer: The number of days before the check-in date. For example, a value of 30 indicates the promotion only applies to bookings at most 30 days before the check-in date.
  • ISO 8601 Duration (days, hours, and minutes): The number of days (and optionally hours/minutes) before the check-in date. For example, a value of P30D indicates the promotion only applies to bookings at most 30 days before the check-in date. A value of P30DT6H requires booking on or after 18:00 on the 30th day before arrival.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Defines restrictions on the maximum value that a rate can be set to after promotions are applied.

Promotions must always specify a <Discount> or a <BestDailyDiscount> , so to create a promotion that only applies a <Ceiling> , one option is to set a <Discount> with a percentage of 0 .

If stacking is configured, then multiple promotions with <Ceiling> could apply to a single stay. Each promotion would apply its discount, immediately followed by its ceiling. The following example demonstrates how each ceiling contributes to the next promotion calculation in the stack.

উদাহরণ:

Pricing a 1-night stay where AmountBeforeTax is 100 and there is a stack of two promotions:

  1. Promotion with stacking type base , a fixed_amount of 25, and a ceiling amount_per_night of 60
  2. Promotion with stacking type second , fixed_amount of 25, and a ceiling amount_per_night of 90

Here is the order of calculation:

  1. The base promotion is applied first and discounts the AmountBeforeTax to 75, but then the ceiling lowers it to 60 .
  2. The second promotion discounts the AmountBeforeTax from 60 to 35. This is below the ceiling of 90 so the second ceiling is not applied. The final rate is 35 .

The fact that 60 is a stricter overall ceiling is irrelevant since it is valid only for its own promotion, and there can be no single ceiling that spans the entire promotion stack.

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

The maximum amount that a nightly rate can be set to after the discount is applied.

If a <Floor> element is also specified, this must be set to a value greater than or equal to the amount_per_night attribute in <Floor> .

amount_per_night is applied to taxes and fees when they are included in the nightly rate using AmountAfterTax , but not those specified using TaxFeeInfo.

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

Defines restrictions on the minimum value that a rate can be set to after promotions are applied.

Promotions must always specify a <Discount> or a <BestDailyDiscount> , so to create a promotion that only applies a <Floor> , one option is to set a <Discount> with a percentage of 0 .

<Floor> logic still applies to <FreeNights> discounts, even if the free night has a 100% discount applied to it.

If stacking is configured, then multiple promotions with <Floor> could apply to a single stay. Each promotion would apply its discount, immediately followed by its floor. The following example demonstrates how each floor contributes to the next promotion calculation in the stack.

উদাহরণ:

Pricing a 1-night stay where AmountBeforeTax is 100 and there is a stack of two promotions:

  1. Promotion with stacking type base , a fixed_amount of 25, and a floor amount_per_night of 90
  2. Promotion with stacking type second , fixed_amount of 25, and a floor amount_per_night of 60

Here is the order of calculation:

  1. The base promotion is applied first and discounts the AmountBeforeTax to 75, but then the floor raises it up to 90 .
  2. The second promotion discounts the AmountBeforeTax from 90 to 65. This is above the floor of 60 so the second floor is not applied. The final rate is 65 .

The fact that 90 is a stricter overall floor is irrelevant since it is valid only for its own promotion, and there can be no single floor that spans the entire promotion stack.

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

The minimum amount that a nightly rate can be set to after the discount is applied.

If a <Ceiling> element is also specified, this must be set to a value less than or equal to the amount_per_night attribute in <Ceiling> .

amount_per_night is applied to taxes and fees when they are included in the nightly rate using AmountAfterTax , but not those specified using TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates A container for one or more date ranges that define when check-in must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

A date range specifying when check-in must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates A container for one or more date ranges that define when check-out must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

A date range specifying when check-out must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Container for listing the user devices that are eligible for the promotion. If specified, only eligible users on the listed devices are offered the discounted rate. If not specified, eligible users on any device are offered the discounted rate.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Defines one type of user device that is eligible for the promotion.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum A type of device. The value must be desktop , tablet , or mobile .
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Exactly one of Discount or BestDailyDiscount must be specified.

Specifies the discount to be applied for this promotion.

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A decimal value from 0-100 which specifies the percentage discount. It is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

উদাহরণ:

  • If AmountAfterTax is 100 and percentage is 20, then

    promotion rate = AmountAfterTax * (1 - percentage discount)

    80.00 = 100 * (1 - 0.2)

  • If AmountBeforeTax is 100, percentage is 20 and TaxFeeInfo specifies a tax of 10, then

    promotion rate = AmountBeforeTax * (1 - percentage discount) + tax

    90.00 = 100 * (1 - 0.2) + 10

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A decimal value from 0-100 which specifies the percentage of base discount. Similar to percentage , it is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

Unlike percentage , this discount is always calculated as a percentage of base rates regardless of prior promotions that have been applied in sequence.

উদাহরণ:

  • Suppose we have two promotions that are applied in sequence to a one night stay that is priced at 100. The first is a regular 10% percentage discount and the second is a 10% percentage of base discount. Then the discounted rate will be 80 since both promotions take 10 off. Note if the second promotion were also a regular percentage discount, then the discounted rate will be 81 since the second promotion discounts 10% of 90.
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A fixed amount to be subtracted from the sum of the AmountAfterTax nightly rates (or sum of AmountBeforeTax nightly rates if AmountAfterTax isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.

উদাহরণ:

  • If we're pricing a 1-night stay where AmountBeforeTax is 90, AmountAfterTax is 100, and fixed_amount is 20, then

    promotion rate = AmountAfterTax - fixed discount

    80.00 = 100 - 20

  • If we're pricing a 1-night stay where AmountBeforeTax is 100, fixed_amount is 20, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = ( AmountBeforeTax - fixed discount) * (1 + percentage tax)

    86.40 = (100 - 20) * 1.08

  • If we're pricing a 1-night stay where AmountBeforeTax is 50, fixed_amount is 60, and TaxFeeInfo specifies a tax of 10, then

    promotion rate = ( AmountBeforeTax - fixed discount) * tax

    10.00 = 0 + 10

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 150, then

    promotion rate = sum( AmountAfterTax ) - (fixed discount)

    180.00 = (100 + 110 + 120) - 150

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A fixed discount applied to each of the AmountAfterTax nightly rates (or the cheapest N if applied_nights is specified). If AmountAfterTax isn't specified, it is applied to AmountBeforeTax . It is assumed to be in the same currency as nightly rates. If fixed_amount_per_night is larger than a nightly rate, that nightly rate is reduced to as zero—the discount cannot cause a nightly rate to become negative.

উদাহরণ:

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and the fixed_amount_per_night is 10, then

    promotion rate = sum( AmountBeforeTax - fixed amount discount)

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

  • If we're pricing a 3-night stay where the AmountAfterTax values are 10, 50, and 100; and the fixed_amount_per_night is 20, then

    promotion rate = sum( AmountAfterTax - fixed amount discount)

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

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

If AmountAfterTax nightly rates are specified, then this sets the price for the stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.

If AmountAfterTax is intended to reflect a percentage tax, then setting a fixed price for AmountBeforeTax can result in inaccurate taxes and fees. In general, it is strongly recommended to use TaxFeeInfo to specify a property's taxes and fees.

উদাহরণ:

  • If we're pricing a 1-night stay where AmountBeforeTax is 90, AmountAfterTax is 100, and fixed_price is 80, then the promotion rate is 80.
  • If we're pricing a 1-night stay where AmountBeforeTax is 100, fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = fixed price * (1 + percentage tax)

    86.40 = 80 * 1.08

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 300, then

    promotion rate = 300

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

If AmountAfterTax nightly rates are specified, then this sets the price for each night of stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for each night of stay to the specified value. It is assumed to be in the same currency as nightly rates.

If AmountAfterTax is intended to reflect a percentage tax, then setting a fixed price for AmountBeforeTax can result in inaccurate taxes and fees. In general, it is strongly recommended to use TaxFeeInfo to specify a property's taxes and fees.

If applied_nights is specified, then the new price is applied to the cheapest N nights.

উদাহরণ:

  • If we're pricing a 2-night stay where AmountBeforeTax values are 90, 90; AmountAfterTax values are 100, 100; and fixed_price is 80, then the promotion rate is 80 + 80 = 160.
  • If we're pricing a 2-night stay where AmountBeforeTax is 100, 100; fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then the promotion rate is (80 + 80) * 1.08 = 172.8.
  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 110, then the promotion rate is 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

This should only be used with percentage or fixed_amount_per_night .

The number of nights to which the discount is applied, starting with the least expensive. Must be an integer from 1 to 99. If not specified, discount is applied to all nights.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Specifies a discount on certain nights of a stay when a minimum stay length is met. Attributes on the parent Discount element are not allowed if this element is used.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Number of required nights for the discount to be applied. Each discount is applied to a separate segment of stay nights.

For example, for a 10-night stay where stay_nights is 4 (and repeats is true), then there are two stay night segments: the 1st through 4th nights and the 5th through 8th nights; the 9th and 10th nights are not part of a stay night segment.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer The number of discounted nights within each segment of stay nights.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float The discount that is applied to the discount nights. If this value is 50 , then each selected night is 50% off.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Must be either cheapest or last . If last , then the nights at the end of the segment of stay nights are discounted. If cheapest , then the cheapest nights within the segment of stay nights are discounted.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Whether the discount may be applied to multiple stay night segments. If false , then only the segment of stay nights at the beginning of the itinerary is discounted. If true , then any segment of stay nights is discounted.

For example, if stay_nights is 4 and the itinerary is 10 nights, then, if repeats is true , then 2 segments are discounted (nights 1-4 and nights 5-8); but, if repeats is false , then only 1 segment is discounted (nights 1-4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Assigns this promotion a rank and opts it into ranked selection, where only the promotion with the lowest rank is selected to be applied. Values must be between 1 and 99, inclusive. If multiple promotions share the same rank, then one is arbitrarily selected and applied.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Exactly one of Discount or BestDailyDiscount must be specified.

Specifies a daily discount which may be applied to a night of stay. This is in contrast with Discount , which applies discounts to entire stays.

Each property may have a single group of promotions that are considered "best daily." This means that for each night of stay, the single "best daily" promotion that is eligible and yields the deepest discount for that night is selected and may be applied.

Stacking may be specified with BestDailyDiscount . It must be set to either base or none . The "best daily" discounts yielding the deepest discount for each night are combined and treated as a single stay discount (ie Discount ) while respecting the configured stacking type. This combined discount is compared against, and can be stacked with, other eligible <Discount> promotions to find the one or combination that provides the deepest discount. Either the combination of BestDailyDiscount or a single Discount , whichever yields the lower price, is selected and applied for the base stacking type.

StayDates can be specified with this type of discount, but the application must be set to overlap

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

A decimal value from 0-100 which specifies the percentage discount. It is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

উদাহরণ:

  • If AmountAfterTax for a night of stay is 100 and percentage is 20, then

    promotion rate = AmountAfterTax * (1 - percentage discount)

    80.00 = 100 * (1 - 0.2)

  • If AmountBeforeTax for an ight of stay is 100, percentage is 20 and TaxFeeInfo specifies a tax of 10, then

    promotion rate = AmountBeforeTax * (1 - percentage discount) + tax

    90.00 = 100 * (1 - 0.2) + 10

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

A fixed amount to be subtracted from a single AmountAfterTax nightly rate (or AmountBeforeTax nightly rate if AmountAfterTax isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.

উদাহরণ:

  • If AmountBeforeTax for a single night is 90, AmountAfterTax is 100, and fixed_amount is 20, then

    promotion rate = AmountAfterTax - fixed discount

    80.00 = 100 - 20

  • If AmountBeforeTax for a single night is 100, fixed_amount is 20, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = ( AmountBeforeTax - fixed discount) * (1 + percentage tax)

    86.40 = (100 - 20) * 1.08

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

If AmountAfterTax nightly rates are specified, then this sets the price for the night of stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.

উদাহরণ:

  • If AmountBeforeTax for a single night is 90, AmountAfterTax is 100, and fixed_price is 80, then the promotion rate is 80.
  • If AmountBeforeTax for a single night is 100, fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = fixed price * (1 + percentage tax)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Defines restrictions on the number of rooms that must be available in order for this promotion to be applied. Discount is applied only to the nights which meet the constraint. Not allowed with the fixed_amount discount. Note that the number of available rooms is specified with either OTA_HotelInvCountNotifRQ ( InvCount ) or OTA_HotelAvailNotifRQ ( BookingLimit ).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer The minimum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no minimum.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer The maximum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no maximum.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Defines length of stay limits within which this promotion can be applied. The promotion is not applied when length of stay is outside of the min and max limits.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer The minimum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no minimum.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Container for a membership rate rule that triggers a specific UI treatment for the associated discount.

This element should not be specified unless <Discount> is also specified.

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

ID of the rate rule associated with a membership program.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Specifies the minimum sum of the daily room rates (using the larger of AmountBeforeTax or AmountAfterTax ) that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer The value that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer The user-specified occupancy must be at least this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer The user-specified occupancy must be at most this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Container for a list of rate plans to which the promotion applies. If <RatePlans> isn't specified, the promotion applies to all rate plans.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Specifies a rate plan. A rate plan is defined by a combination of package, rates, and availability, as defined in Transaction (Property Data), OTA_HotelRateAmountNotifRQ, and OTA_HotelAvailNotifRQ messages, and as identified by the PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string The unique identifier for the rate plan. This value maps to the PackageID value in <PackageData> in a Transaction (Property Data) message, and in the RatePlanCode attribute in <StatusApplicationControl> in both <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Container for a list of room types to which the promotion applies. The promotion is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the promotion applies to all rooms.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Specifies a room type. A room type is defined in a <RoomData> element in a Transaction (Property Data) message and is referenced using its <RoomID> value. (Its <RoomID> value is also referenced by the InvTypeCode attribute in OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string The unique identifier for the inventory (room type). This value maps to <RoomID> in a Transaction (Property Data) message. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Specifies how promotions can be combined. If not specified, the "type" is assumed to be base .
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Multiple promotions can be applied to a single rate depending on this setting:

  • any : Can be combined with any other promotion (except none ), but the order in which the promotions should be applied is not guaranteed.
  • base : The best eligible base promotion is selected and applied first, before other promotions. This was previously named base_only .
  • second : The best eligible second promotion is selected and applied after a base promotion (if applicable) and before any promotions.
  • none : Can not be combined with other promotions.

Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Describes how the promotion should be applied.

বৈধ মান হল:

  • all : Applies the promotion to each night in the itinerary if all dates in the itinerary overlap with the stay dates.
  • any : Applies the promotion to all nights in the itinerary if any date in the itinerary overlaps with a date in the stay dates range.
  • overlap : Applies the promotion only to those nights in the itinerary that overlap with a date in the stay dates range.

This attribute must always be specified.

  • If <Discount> specifies percentage and application is set to all or any , the discount is applied as a percentage of the full stay.
  • If <Discount> specifies percentage and application is set to overlap , the discount is applied as a percentage of nightly rates for overlapping nights.
  • <Discount> specifying fixed_amount and application set to overlap is an invalid combination.
  • <FreeNights> supports all application values. Note that for overlap , only overlapping nights of stay are considered for the discount requirements.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

A date range specifying dates when the promotion is to be applied.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .

If you want to set StayDates range to allow the promotion on specific days of the week, you should set the start date as the current date with no end so that the promotion doesn't expire.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.

You should specify start value if the end value isn't provided.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited from the start date onwards.

You should specify end value if the start value isn't provided.

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

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum The type of UserCountries specification.

Valid values are include and exclude .

If the UserCountries type is set as include , the promotion applies to users from the listed countries.

If the UserCountries type is exclude , the promotion applies to users from outside the listed countries.

If the UserCountries type is unset, it is treated as include and the promotion is applied to users from the listed countries.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Defines one country where users are eligible for the promotion.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string A CLDR country code , such as DE or FR . Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported.

উদাহরণ

সম্পত্তি প্রতি 500টি প্রচারের সীমা রয়েছে। Refer to "Delete one promotion" example to remove promotions from a property.

মৌলিক বার্তা

The following example shows a basic Promotions message:

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


Inventory condition

The following example shows how to create a discount if there is excess inventory close to the arrival date:

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


Delete one promotion

The following example shows how to delete one promotion for a property:

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

Delete all promotions

The following example shows how to delete all promotions for a property:

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



Overlay all promotions

The following example shows how to overlay <HotelPromotions> for a property with one or more new promotions. When action="overlay" , all stored promotions are deleted prior to storing the promotions specified in the current message:

<?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 Different Stacking Types

The following example shows a case where three different promotions would be applied ( base , second , any ). Note that the none promotion wouldn't be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $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 Stacking Type

The following example shows a case where the none promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $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>



Booking Window Duration Bounds

The following example shows a case where the BookingWindow element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.

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


Booking Dates DateTime Bounds

The following example shows a case where the BookingDates element is used with start and end attributes as DateTime types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 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>


Yearless date ranges

The following example shows a case where the CheckInDates element contains DateRanges that have start and end fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.

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

The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 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>

The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.

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


Ranked Selection

The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.

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

The following example discounts a two night stay by applying BestDailyDiscount stacked with a 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>

Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.

For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.

For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.

Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any . If it were set to base , then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking for more information.

`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.

প্রতিক্রিয়া

সিনট্যাক্স

The PromotionsResponse message uses the following syntax:

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

উপাদান এবং বৈশিষ্ট্য

The PromotionsResponse message has the following elements and attributes:

Element / @Attribute ঘটনা টাইপ বর্ণনা
PromotionsResponse 1 Complex element The root element indicating the success or issues for a received Promotions request message.
PromotionsResponse / @timestamp 1 DateTime The creation date and time of this message.
PromotionsResponse / @id 1 string The unique identifier from the associated Promotions message.
PromotionsResponse / @partner 1 string The partner account for this message.
PromotionsResponse / Success 0..1 Success Indicates that the Promotions message was processed successfully without warnings, errors, or failures.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues 0..1 Issues A container for one or more issues encountered while processing the Promotions message.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues / Issue 1..n Issue The description of a warning, error, or failure encountered while processing the Promotions message. Details on these issues can be found in Feed Status Error Messages .
PromotionsResponse / Issues / Issue / @code 1 integer The identifier for the issue.
PromotionsResponse / Issues / Issue / @status 1 enum

The type of issue encountered.

Valid values are warning , error , and failure .

উদাহরণ

সফলতা

The following is a response to a successfully processed Promotions message.

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

ইস্যু

The following is a response to a Promotions message not processed due to errors.

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

,

ওভারভিউ

This API lets you specify possible discounts. Of the promotions specified, Google applies the eligible promotion or set of promotions that leads to the lowest price. If you are looking for an API which supports arbitrary rate adjustments that can either increase or decrease the price when conditions are satisfied, then consider our Rate Modifications API . Note that if both APIs are present, rate modifications are applied before promotions.

অনুরোধ

সিনট্যাক্স

The Promotions message uses the following syntax:

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

উপাদান এবং বৈশিষ্ট্য

The Promotions message has the following elements and attributes:

Element / @Attribute ঘটনা টাইপ বর্ণনা
Promotions 1 Complex element The root element of a promotions message.
Promotions / @partner 1 string The partner account for this message. This string value is the "Partner key" value listed on the Account settings page in Hotel Center.

If you have a backend that provides feeds for multiple accounts, this value needs to match the ID attribute value specified in the <RequestorID> element of your <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages for the same account.

Promotions / @id 1 string A unique identifier for this request message. This value is returned in the response message. Allowed characters are az, AZ, 0-9, _ (underscore), and - (dash).
Promotions / @timestamp 1 DateTime The creation date and time of this message.
Promotions / HotelPromotions 0..n HotelPromotions

Promotions for a property. Each promotion applies to a single property.

Unless <Stacking> is used, the promotion with the biggest discount is applied to the booking when multiple promotions are eligible.

Promotions / HotelPromotions / @hotel_id 1 string The unique identifier for the property. This value must match the Hotel ID specified using <id> in the <listing> element in the Hotel List Feed. The Hotel ID is also listed in Hotel Center .
Promotions / HotelPromotions / @action 0..1 enum

If specified, the value must be "overlay" . When the value is "overlay" , all stored promotions are deleted prior to storing the promotions specified in the current message.

If not specified, then each promotion specified in the current message is either:

  • Added (if none of the stored promotions has the same id )
  • Updated (if a stored promotion has the same id )
  • Deleted (if a stored promotion has the same id and the value of the action attribute for the promotion specified in the current message is "delete" )
Promotions / HotelPromotions / Promotion 0..99 Promotion

A single promotion for a property. Note that if action="overlay" and a <Promotion> is not specified, all promotions for the property are deleted.

If you need to use more than 99 promotions, contact your Technical Account Manager (TAM).

Promotions / HotelPromotions / Promotion / @id 1 string A unique identifier for the promotion. The maximum number of characters allowed is 40. Allowed characters are az, AZ, 0-9, _ (underscore), - (dash), and . (সময়কাল)।
Promotions /HotelPromotions / Promotion / @action 0..1 enum

If specified, the value must be delete . If not specified and a promotion with the same id isn't stored, then this promotion is stored. Otherwise, if not specified and a promotion with the same id is stored, then the existing promotion is updated.

If delete is specified, the stored promotion with the same id is deleted. When using delete , don't include any child elements in <Promotion> . Also, delete is not allowed in conjunction with <HotelPromotions action="overlay"/> .

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates A container for one or more ranges that define when booking must occur in order for the promotion to be applied.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange A range specifying when booking must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date or DateTime

The starting date or datetime (based on the property's time zone), inclusive, of the range.

  • The date or datetime specified by start must be earlier than (or the same as) the date or datetime specified by end .
  • If start isn't specified, the range is effectively unlimited in terms of a start time.
  • If start is populated as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date or DateTime

The ending date or datetime (based on the property's time zone), inclusive, of the range.

  • The date or datetime specified by end must be later than (or the same as) the date or datetime specified by start .
  • If end isn't specified, the range is effectively unlimited in terms of an end time.
  • If end is provided as date "YYYY-MM-DD", it is interpreted as datetime "YYYY-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Specifies the time period when booking must occur relative to the check-in date (based on the property's time zone). For example, the booking window can be set to least 7 days, but not more than 180 days, prior to check-in.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration The minimum duration prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no minimum.

Valid value types are:

  • Integer: The number of days before the check-in date. For example, a value of 30 indicates the promotion only applies to bookings at least 30 days before the check-in date.
  • ISO 8601 Duration (days, hours, and minutes): The number of days (and optionally hours/minutes) before the check-in date. For example, a value of P30D indicates the promotion only applies to bookings at least 30 days before the check-in date. A value of P30DT6H requires booking on or before 18:00 on the 30th day before arrival.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration The maximum number of days prior to check-in when booking must occur for the promotion to be applied. If this isn't specified, or its value is 0 , there is no maximum.

Valid value types are:

  • Integer: The number of days before the check-in date. For example, a value of 30 indicates the promotion only applies to bookings at most 30 days before the check-in date.
  • ISO 8601 Duration (days, hours, and minutes): The number of days (and optionally hours/minutes) before the check-in date. For example, a value of P30D indicates the promotion only applies to bookings at most 30 days before the check-in date. A value of P30DT6H requires booking on or after 18:00 on the 30th day before arrival.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Defines restrictions on the maximum value that a rate can be set to after promotions are applied.

Promotions must always specify a <Discount> or a <BestDailyDiscount> , so to create a promotion that only applies a <Ceiling> , one option is to set a <Discount> with a percentage of 0 .

If stacking is configured, then multiple promotions with <Ceiling> could apply to a single stay. Each promotion would apply its discount, immediately followed by its ceiling. The following example demonstrates how each ceiling contributes to the next promotion calculation in the stack.

উদাহরণ:

Pricing a 1-night stay where AmountBeforeTax is 100 and there is a stack of two promotions:

  1. Promotion with stacking type base , a fixed_amount of 25, and a ceiling amount_per_night of 60
  2. Promotion with stacking type second , fixed_amount of 25, and a ceiling amount_per_night of 90

Here is the order of calculation:

  1. The base promotion is applied first and discounts the AmountBeforeTax to 75, but then the ceiling lowers it to 60 .
  2. The second promotion discounts the AmountBeforeTax from 60 to 35. This is below the ceiling of 90 so the second ceiling is not applied. The final rate is 35 .

The fact that 60 is a stricter overall ceiling is irrelevant since it is valid only for its own promotion, and there can be no single ceiling that spans the entire promotion stack.

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

The maximum amount that a nightly rate can be set to after the discount is applied.

If a <Floor> element is also specified, this must be set to a value greater than or equal to the amount_per_night attribute in <Floor> .

amount_per_night is applied to taxes and fees when they are included in the nightly rate using AmountAfterTax , but not those specified using TaxFeeInfo.

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

Defines restrictions on the minimum value that a rate can be set to after promotions are applied.

Promotions must always specify a <Discount> or a <BestDailyDiscount> , so to create a promotion that only applies a <Floor> , one option is to set a <Discount> with a percentage of 0 .

<Floor> logic still applies to <FreeNights> discounts, even if the free night has a 100% discount applied to it.

If stacking is configured, then multiple promotions with <Floor> could apply to a single stay. Each promotion would apply its discount, immediately followed by its floor. The following example demonstrates how each floor contributes to the next promotion calculation in the stack.

উদাহরণ:

Pricing a 1-night stay where AmountBeforeTax is 100 and there is a stack of two promotions:

  1. Promotion with stacking type base , a fixed_amount of 25, and a floor amount_per_night of 90
  2. Promotion with stacking type second , fixed_amount of 25, and a floor amount_per_night of 60

Here is the order of calculation:

  1. The base promotion is applied first and discounts the AmountBeforeTax to 75, but then the floor raises it up to 90 .
  2. The second promotion discounts the AmountBeforeTax from 90 to 65. This is above the floor of 60 so the second floor is not applied. The final rate is 65 .

The fact that 90 is a stricter overall floor is irrelevant since it is valid only for its own promotion, and there can be no single floor that spans the entire promotion stack.

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

The minimum amount that a nightly rate can be set to after the discount is applied.

If a <Ceiling> element is also specified, this must be set to a value less than or equal to the amount_per_night attribute in <Ceiling> .

amount_per_night is applied to taxes and fees when they are included in the nightly rate using AmountAfterTax , but not those specified using TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates A container for one or more date ranges that define when check-in must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

A date range specifying when check-in must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates A container for one or more date ranges that define when check-out must occur for the promotion to be applied.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

A date range specifying when check-out must occur for the promotion to be applied. This element is not required if you're deleting one or more promotions.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Container for listing the user devices that are eligible for the promotion. If specified, only eligible users on the listed devices are offered the discounted rate. If not specified, eligible users on any device are offered the discounted rate.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Defines one type of user device that is eligible for the promotion.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum A type of device. The value must be desktop , tablet , or mobile .
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Exactly one of Discount or BestDailyDiscount must be specified.

Specifies the discount to be applied for this promotion.

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A decimal value from 0-100 which specifies the percentage discount. It is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

উদাহরণ:

  • If AmountAfterTax is 100 and percentage is 20, then

    promotion rate = AmountAfterTax * (1 - percentage discount)

    80.00 = 100 * (1 - 0.2)

  • If AmountBeforeTax is 100, percentage is 20 and TaxFeeInfo specifies a tax of 10, then

    promotion rate = AmountBeforeTax * (1 - percentage discount) + tax

    90.00 = 100 * (1 - 0.2) + 10

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A decimal value from 0-100 which specifies the percentage of base discount. Similar to percentage , it is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

Unlike percentage , this discount is always calculated as a percentage of base rates regardless of prior promotions that have been applied in sequence.

উদাহরণ:

  • Suppose we have two promotions that are applied in sequence to a one night stay that is priced at 100. The first is a regular 10% percentage discount and the second is a 10% percentage of base discount. Then the discounted rate will be 80 since both promotions take 10 off. Note if the second promotion were also a regular percentage discount, then the discounted rate will be 81 since the second promotion discounts 10% of 90.
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A fixed amount to be subtracted from the sum of the AmountAfterTax nightly rates (or sum of AmountBeforeTax nightly rates if AmountAfterTax isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.

উদাহরণ:

  • If we're pricing a 1-night stay where AmountBeforeTax is 90, AmountAfterTax is 100, and fixed_amount is 20, then

    promotion rate = AmountAfterTax - fixed discount

    80.00 = 100 - 20

  • If we're pricing a 1-night stay where AmountBeforeTax is 100, fixed_amount is 20, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = ( AmountBeforeTax - fixed discount) * (1 + percentage tax)

    86.40 = (100 - 20) * 1.08

  • If we're pricing a 1-night stay where AmountBeforeTax is 50, fixed_amount is 60, and TaxFeeInfo specifies a tax of 10, then

    promotion rate = ( AmountBeforeTax - fixed discount) * tax

    10.00 = 0 + 10

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 150, then

    promotion rate = sum( AmountAfterTax ) - (fixed discount)

    180.00 = (100 + 110 + 120) - 150

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

A fixed discount applied to each of the AmountAfterTax nightly rates (or the cheapest N if applied_nights is specified). If AmountAfterTax isn't specified, it is applied to AmountBeforeTax . It is assumed to be in the same currency as nightly rates. If fixed_amount_per_night is larger than a nightly rate, that nightly rate is reduced to as zero—the discount cannot cause a nightly rate to become negative.

উদাহরণ:

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and the fixed_amount_per_night is 10, then

    promotion rate = sum( AmountBeforeTax - fixed amount discount)

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

  • If we're pricing a 3-night stay where the AmountAfterTax values are 10, 50, and 100; and the fixed_amount_per_night is 20, then

    promotion rate = sum( AmountAfterTax - fixed amount discount)

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

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

If AmountAfterTax nightly rates are specified, then this sets the price for the stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.

If AmountAfterTax is intended to reflect a percentage tax, then setting a fixed price for AmountBeforeTax can result in inaccurate taxes and fees. In general, it is strongly recommended to use TaxFeeInfo to specify a property's taxes and fees.

উদাহরণ:

  • If we're pricing a 1-night stay where AmountBeforeTax is 90, AmountAfterTax is 100, and fixed_price is 80, then the promotion rate is 80.
  • If we're pricing a 1-night stay where AmountBeforeTax is 100, fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = fixed price * (1 + percentage tax)

    86.40 = 80 * 1.08

  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 300, then

    promotion rate = 300

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

Exactly one of percentage , percentage_of_base , fixed_amount , fixed_amount_per_night , fixed_price , or fixed_price_per_night is required.

If AmountAfterTax nightly rates are specified, then this sets the price for each night of stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for each night of stay to the specified value. It is assumed to be in the same currency as nightly rates.

If AmountAfterTax is intended to reflect a percentage tax, then setting a fixed price for AmountBeforeTax can result in inaccurate taxes and fees. In general, it is strongly recommended to use TaxFeeInfo to specify a property's taxes and fees.

If applied_nights is specified, then the new price is applied to the cheapest N nights.

উদাহরণ:

  • If we're pricing a 2-night stay where AmountBeforeTax values are 90, 90; AmountAfterTax values are 100, 100; and fixed_price is 80, then the promotion rate is 80 + 80 = 160.
  • If we're pricing a 2-night stay where AmountBeforeTax is 100, 100; fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then the promotion rate is (80 + 80) * 1.08 = 172.8.
  • If we're pricing a 3-night stay where the AmountAfterTax values are 100, 110, and 120; and fixed_amount is 110, then the promotion rate is 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

This should only be used with percentage or fixed_amount_per_night .

The number of nights to which the discount is applied, starting with the least expensive. Must be an integer from 1 to 99. If not specified, discount is applied to all nights.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Specifies a discount on certain nights of a stay when a minimum stay length is met. Attributes on the parent Discount element are not allowed if this element is used.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Number of required nights for the discount to be applied. Each discount is applied to a separate segment of stay nights.

For example, for a 10-night stay where stay_nights is 4 (and repeats is true), then there are two stay night segments: the 1st through 4th nights and the 5th through 8th nights; the 9th and 10th nights are not part of a stay night segment.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer The number of discounted nights within each segment of stay nights.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float The discount that is applied to the discount nights. If this value is 50 , then each selected night is 50% off.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Must be either cheapest or last . If last , then the nights at the end of the segment of stay nights are discounted. If cheapest , then the cheapest nights within the segment of stay nights are discounted.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Whether the discount may be applied to multiple stay night segments. If false , then only the segment of stay nights at the beginning of the itinerary is discounted. If true , then any segment of stay nights is discounted.

For example, if stay_nights is 4 and the itinerary is 10 nights, then, if repeats is true , then 2 segments are discounted (nights 1-4 and nights 5-8); but, if repeats is false , then only 1 segment is discounted (nights 1-4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Assigns this promotion a rank and opts it into ranked selection, where only the promotion with the lowest rank is selected to be applied. Values must be between 1 and 99, inclusive. If multiple promotions share the same rank, then one is arbitrarily selected and applied.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Exactly one of Discount or BestDailyDiscount must be specified.

Specifies a daily discount which may be applied to a night of stay. This is in contrast with Discount , which applies discounts to entire stays.

Each property may have a single group of promotions that are considered "best daily." This means that for each night of stay, the single "best daily" promotion that is eligible and yields the deepest discount for that night is selected and may be applied.

Stacking may be specified with BestDailyDiscount . It must be set to either base or none . The "best daily" discounts yielding the deepest discount for each night are combined and treated as a single stay discount (ie Discount ) while respecting the configured stacking type. This combined discount is compared against, and can be stacked with, other eligible <Discount> promotions to find the one or combination that provides the deepest discount. Either the combination of BestDailyDiscount or a single Discount , whichever yields the lower price, is selected and applied for the base stacking type.

StayDates can be specified with this type of discount, but the application must be set to overlap

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

A decimal value from 0-100 which specifies the percentage discount. It is applied to AmountAfterTax (or AmountBeforeTax if AmountAfterTax isn't specified).

উদাহরণ:

  • If AmountAfterTax for a night of stay is 100 and percentage is 20, then

    promotion rate = AmountAfterTax * (1 - percentage discount)

    80.00 = 100 * (1 - 0.2)

  • If AmountBeforeTax for an ight of stay is 100, percentage is 20 and TaxFeeInfo specifies a tax of 10, then

    promotion rate = AmountBeforeTax * (1 - percentage discount) + tax

    90.00 = 100 * (1 - 0.2) + 10

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

A fixed amount to be subtracted from a single AmountAfterTax nightly rate (or AmountBeforeTax nightly rate if AmountAfterTax isn't specified). It is assumed to be in the same currency as nightly rates. If this is larger than the sum of nightly rates, the resulting value is zero.

উদাহরণ:

  • If AmountBeforeTax for a single night is 90, AmountAfterTax is 100, and fixed_amount is 20, then

    promotion rate = AmountAfterTax - fixed discount

    80.00 = 100 - 20

  • If AmountBeforeTax for a single night is 100, fixed_amount is 20, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = ( AmountBeforeTax - fixed discount) * (1 + percentage tax)

    86.40 = (100 - 20) * 1.08

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

Exactly one of percentage , fixed_amount , or fixed_price is required.

If AmountAfterTax nightly rates are specified, then this sets the price for the night of stay, including taxes and fees, to the specified value. If AmountBeforeTax is specified, then whether or not AmountAfterTax is specified, this sets the pre-tax price for the stay to the specified value. It is assumed to be in the same currency as nightly rates.

উদাহরণ:

  • If AmountBeforeTax for a single night is 90, AmountAfterTax is 100, and fixed_price is 80, then the promotion rate is 80.
  • If AmountBeforeTax for a single night is 100, fixed_amount is 80, and TaxFeeInfo specifies a tax of 8%, then

    promotion rate = fixed price * (1 + percentage tax)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Defines restrictions on the number of rooms that must be available in order for this promotion to be applied. Discount is applied only to the nights which meet the constraint. Not allowed with the fixed_amount discount. Note that the number of available rooms is specified with either OTA_HotelInvCountNotifRQ ( InvCount ) or OTA_HotelAvailNotifRQ ( BookingLimit ).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer The minimum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no minimum.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer The maximum number of rooms that must be available for the promotion to be applied to the nightly rate. If this isn't specified, there is no maximum.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Defines length of stay limits within which this promotion can be applied. The promotion is not applied when length of stay is outside of the min and max limits.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer The minimum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no minimum.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer The maximum nights allowed in the stay for the promotion to be applied. If this isn't specified, there is no maximum.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Container for a membership rate rule that triggers a specific UI treatment for the associated discount.

This element should not be specified unless <Discount> is also specified.

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

ID of the rate rule associated with a membership program.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Specifies the minimum sum of the daily room rates (using the larger of AmountBeforeTax or AmountAfterTax ) that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer The value that must be exceeded for the promotion to be applied.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Defines restrictions on occupancies for which this promotion is applied. The promotion is not applied when occupancy is outside of the min and max limits.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer The user-specified occupancy must be at least this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer The user-specified occupancy must be at most this value in order for the discount to be applied.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Container for a list of rate plans to which the promotion applies. If <RatePlans> isn't specified, the promotion applies to all rate plans.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Specifies a rate plan. A rate plan is defined by a combination of package, rates, and availability, as defined in Transaction (Property Data), OTA_HotelRateAmountNotifRQ, and OTA_HotelAvailNotifRQ messages, and as identified by the PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string The unique identifier for the rate plan. This value maps to the PackageID value in <PackageData> in a Transaction (Property Data) message, and in the RatePlanCode attribute in <StatusApplicationControl> in both <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Container for a list of room types to which the promotion applies. The promotion is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the promotion applies to all rooms.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Specifies a room type. A room type is defined in a <RoomData> element in a Transaction (Property Data) message and is referenced using its <RoomID> value. (Its <RoomID> value is also referenced by the InvTypeCode attribute in OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string The unique identifier for the inventory (room type). This value maps to <RoomID> in a Transaction (Property Data) message. The maximum number of characters allowed is 50.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Specifies how promotions can be combined. If not specified, the "type" is assumed to be base .
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Multiple promotions can be applied to a single rate depending on this setting:

  • any : Can be combined with any other promotion (except none ), but the order in which the promotions should be applied is not guaranteed.
  • base : The best eligible base promotion is selected and applied first, before other promotions. This was previously named base_only .
  • second : The best eligible second promotion is selected and applied after a base promotion (if applicable) and before any promotions.
  • none : Can not be combined with other promotions.

Of the allowed combinations, the set of promotions which yields the largest discount are applied to the rate.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates A container for one or more date ranges that determine how the promotion is applied, such as to accommodate seasonal discounts.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Describes how the promotion should be applied.

বৈধ মান হল:

  • all : Applies the promotion to each night in the itinerary if all dates in the itinerary overlap with the stay dates.
  • any : Applies the promotion to all nights in the itinerary if any date in the itinerary overlaps with a date in the stay dates range.
  • overlap : Applies the promotion only to those nights in the itinerary that overlap with a date in the stay dates range.

This attribute must always be specified.

  • If <Discount> specifies percentage and application is set to all or any , the discount is applied as a percentage of the full stay.
  • If <Discount> specifies percentage and application is set to overlap , the discount is applied as a percentage of nightly rates for overlapping nights.
  • <Discount> specifying fixed_amount and application set to overlap is an invalid combination.
  • <FreeNights> supports all application values. Note that for overlap , only overlapping nights of stay are considered for the discount requirements.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

A date range specifying dates when the promotion is to be applied.

The YearlessDate format is also supported.

  • If one of start or end is a yearless date, both must be populated as yearless dates.
  • Yearless date ranges must not wrap around the new year. Instead, represent the range as two adjacent date ranges. For example, {"12-29", "01-05"} can be represented as {"12-29", "12-31"} and {"01-01", "01-05"} .

If you want to set StayDates range to allow the promotion on specific days of the week, you should set the start date as the current date with no end so that the promotion doesn't expire.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.

You should specify start value if the end value isn't provided.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited from the start date onwards.

You should specify end value if the start value isn't provided.

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

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

বৈধ অক্ষর হল:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Container for listing the user locations (countries) that are eligible for the promotion. If specified, only eligible users in the listed countries are offered the discounted rate. If not specified, eligible users in any country are offered the discounted rate.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum The type of UserCountries specification.

Valid values are include and exclude .

If the UserCountries type is set as include , the promotion applies to users from the listed countries.

If the UserCountries type is exclude , the promotion applies to users from outside the listed countries.

If the UserCountries type is unset, it is treated as include and the promotion is applied to users from the listed countries.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Defines one country where users are eligible for the promotion.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string A CLDR country code , such as DE or FR . Note that, for some countries, the CLDR country code isn't the same as the 2-letter ISO country code. Also, CLDR region codes are not supported.

উদাহরণ

সম্পত্তি প্রতি 500টি প্রচারের সীমা রয়েছে। Refer to "Delete one promotion" example to remove promotions from a property.

মৌলিক বার্তা

The following example shows a basic Promotions message:

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


Inventory condition

The following example shows how to create a discount if there is excess inventory close to the arrival date:

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


Delete one promotion

The following example shows how to delete one promotion for a property:

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

Delete all promotions

The following example shows how to delete all promotions for a property:

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



Overlay all promotions

The following example shows how to overlay <HotelPromotions> for a property with one or more new promotions. When action="overlay" , all stored promotions are deleted prior to storing the promotions specified in the current message:

<?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 Different Stacking Types

The following example shows a case where three different promotions would be applied ( base , second , any ). Note that the none promotion wouldn't be applied since the other promotions provide a better discount. If the original price was $100, the discounted price would be $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 Stacking Type

The following example shows a case where the none promotion is used because the combination of other promotions provides a smaller discount. If the original price was $100, the discounted price would be $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>



Booking Window Duration Bounds

The following example shows a case where the BookingWindow element is used with its start and end bounds defined as an ISO 8601 Duration type. This booking window restriction requires booking on or before 18:00 the day prior to arrival, and on or after 12:00 on the 2nd day before arrival.

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


Booking Dates DateTime Bounds

The following example shows a case where the BookingDates element is used with start and end attributes as DateTime types. This booking date restriction requires booking to occur between 06:30 on 2020-07-01 and 18:45 on 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>


Yearless date ranges

The following example shows a case where the CheckInDates element contains DateRanges that have start and end fields without years. In this example, the promotion applies to check-in dates between 12/29 and 1/2, regardless of the year. Yearless date ranges that cross the new-year boundary are invalid, so the DateRange is expressed as two adjacent date ranges.

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

The following example discounts two nights 50% for each four nights stayed for the specified range of booking dates. For a ten night itinerary, a total of four nights would be discounted 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>

The next example discounts one night 50% for each three nights stayed for the specified ranges of stay dates. Only the overlapping nights of stay count towards qualifying for the discount. For the following itinerary with check-in on 2022-01-01 and check-out on 2022-01-07, the qualified nights of stay and discounts are applied as follows.

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


Ranked Selection

The following example offers two discounts, one for 20% off and another for 15% off. During evaluation, only the 15% discount is applied because it has a lower rank.

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

The following example discounts a two night stay by applying BestDailyDiscount stacked with a 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>

Consider a two night stay from April 30, 2023 to May 2, 2023 For calculation, the combination of best daily discounts that yields the deepest discount is found first.

For the first night, the "general" promotion is the only eligible amount with a fixed discount of 20.

For the second night, the "may" promotion offers a deeper discount than the "general" discount. So, when "may" is selected the fixed discount amount is 50.

Then for the stay, the "fiesta" promotion discounts to 5 per night, or 10 total. It can be stacked with the combination of best daily discounts because "fiesta" has stacking type set to any . If it were set to base , then only the combination of best daily discounts or the "fiesta" discount is applied. See description of Stacking for more information.

`Overall, the price of the stay receives a 20 + 50 + 10 = 80 fixed amount discount.

প্রতিক্রিয়া

সিনট্যাক্স

The PromotionsResponse message uses the following syntax:

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

উপাদান এবং বৈশিষ্ট্য

The PromotionsResponse message has the following elements and attributes:

Element / @Attribute ঘটনা টাইপ বর্ণনা
PromotionsResponse 1 Complex element The root element indicating the success or issues for a received Promotions request message.
PromotionsResponse / @timestamp 1 DateTime The creation date and time of this message.
PromotionsResponse / @id 1 string The unique identifier from the associated Promotions message.
PromotionsResponse / @partner 1 string The partner account for this message.
PromotionsResponse / Success 0..1 Success Indicates that the Promotions message was processed successfully without warnings, errors, or failures.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues 0..1 Issues A container for one or more issues encountered while processing the Promotions message.

Either <Success> or <Issues> is present in each message.

PromotionsResponse / Issues / Issue 1..n Issue The description of a warning, error, or failure encountered while processing the Promotions message. Details on these issues can be found in Feed Status Error Messages .
PromotionsResponse / Issues / Issue / @code 1 integer The identifier for the issue.
PromotionsResponse / Issues / Issue / @status 1 enum

The type of issue encountered.

Valid values are warning , error , and failure .

উদাহরণ

সফলতা

The following is a response to a successfully processed Promotions message.

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

ইস্যু

The following is a response to a Promotions message not processed due to errors.

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