การโปรโมต

ภาพรวม

API นี้ให้คุณระบุส่วนลดที่เป็นไปได้ จากโปรโมชันที่ระบุไว้ Google จะใช้โปรโมชันที่มีสิทธิ์หรือชุดโปรโมชันที่นำไปสู่ราคาต่ำสุด หากกำลังมองหา API ที่รองรับการปรับอัตราที่กำหนดเองซึ่งอาจเพิ่มหรือลดราคาได้เมื่อเป็นไปตามเงื่อนไขแล้ว ลองใช้ Rate Modifications API ของเรา โปรดทราบว่าหากมี API ทั้งคู่ ระบบจะใช้การปรับราคาก่อนโปรโมชัน

คำขอ

ไวยากรณ์

ข้อความ Promotions ใช้ไวยากรณ์ต่อไปนี้

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

องค์ประกอบและแอตทริบิวต์

ข้อความโปรโมชันมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้

องค์ประกอบ / @แอตทริบิวต์ จำนวนข้อผิดพลาด ประเภท คำอธิบาย
Promotions 1 Complex element องค์ประกอบรูทของข้อความโปรโมชัน
Promotions / @partner 1 string บัญชีพาร์ทเนอร์สำหรับข้อความนี้ ค่าของสตริงนี้คือค่า "Partner key" ซึ่งแสดงอยู่ที่ หน้าการตั้งค่าบัญชีใน Hotel Center

หากคุณมีแบ็กเอนด์ที่มีฟีดสำหรับหลายบัญชี ค่านี้จะต้องตรงกับค่าแอตทริบิวต์ ID ที่ระบุในองค์ประกอบ <RequestorID> ของข้อความ <OTA_HotelRateAmountNotifRQ> และ <OTA_HotelAvailNotifRQ> สำหรับบัญชีเดียวกัน

Promotions / @id 1 string ตัวระบุที่ไม่ซ้ำกันสำหรับข้อความคำขอนี้ ค่านี้จะแสดงในข้อความตอบกลับ อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง) และ - (ขีดกลาง)
Promotions / @timestamp 1 DateTime วันที่และเวลาที่สร้างข้อความนี้
Promotions / HotelPromotions 0..n HotelPromotions

โปรโมชันสําหรับที่พัก โปรโมชันแต่ละรายการจะมีผลกับพร็อพเพอร์ตี้รายการเดียว

ระบบจะใช้โปรโมชันที่มีส่วนลดมากที่สุดกับการจองเมื่อมีสิทธิ์หลายโปรโมชัน เว้นแต่จะใช้ <Stacking>

Promotions / HotelPromotions / @hotel_id 1 string ตัวระบุที่ไม่ซ้ำกันของที่พัก ค่านี้ต้องตรงกับรหัสโรงแรมที่ระบุโดยใช้ <id> ในองค์ประกอบ <listing> ในฟีดข้อมูลโรงแรม นอกจากนี้ รหัสโรงแรมยังอยู่ใน Hotel Center ด้วย
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 ตัว อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง), - (ขีดกลาง) และ . (เครื่องหมายจุด)
Promotions /HotelPromotions / Promotion / @action 0..1 enum

หากระบุไว้ ค่าต้องเป็น delete หากไม่ได้ระบุไว้ และระบบไม่ได้จัดเก็บโปรโมชันที่มี id เดียวกัน ระบบจะจัดเก็บโปรโมชันนี้ มิเช่นนั้น หากไม่มีการระบุโปรโมชันและเก็บโปรโมชันที่มี id เดียวกันเอาไว้ ระบบจะอัปเดตโปรโมชันที่มีอยู่

หากระบุ delete ระบบจะลบโปรโมชันที่จัดเก็บไว้ซึ่งมี id เดียวกันออก เมื่อใช้ delete ห้ามรวมองค์ประกอบย่อยใน <Promotion> นอกจากนี้ delete ยังไม่ได้รับอนุญาตให้ใช้ร่วมกับ <HotelPromotions action="overlay"/> ด้วย

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates คอนเทนเนอร์สำหรับช่วงอย่างน้อย 1 ช่วงซึ่งกำหนดเวลาที่ต้องมีการจองจึงจะใช้โปรโมชันได้
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 จะถือว่าไม่มีจำนวนขั้นต่ำ

ประเภทของค่าที่ใช้ได้มีดังนี้

  • Integer: จำนวนวันก่อนวันที่เช็คอิน เช่น ค่า 30 บ่งบอกว่าโปรโมชันมีผลกับการจองอย่างน้อย 30 วันก่อนถึงวันที่เช็คอินเท่านั้น
  • ISO 8601 Duration (วัน ชั่วโมง และนาที): จำนวนวัน (และอาจรวมถึงชั่วโมง/นาที) ก่อนวันที่เช็คอิน เช่น ค่า P30D บ่งบอกว่าโปรโมชันมีผลกับการจองอย่างน้อย 30 วันก่อนถึงวันที่เช็คอินเท่านั้น มูลค่า P30DT6H ต้องจองในหรือก่อน 18:00 น. ในวันที่ 30 ก่อนเข้าพัก
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration จำนวนวันสูงสุดก่อนเช็คอินเมื่อจองต้องใช้โปรโมชัน หากไม่ได้ระบุ หรือค่าคือ 0 ก็จะไม่มีจำนวนสูงสุด

ประเภทของค่าที่ใช้ได้มีดังนี้

  • Integer: จำนวนวันก่อนวันที่เช็คอิน เช่น ค่า 30 บ่งบอกว่าโปรโมชันมีผลกับการจองภายใน 30 วันก่อนถึงวันที่เช็คอินเท่านั้น
  • ISO 8601 Duration (วัน ชั่วโมง และนาที): จำนวนวัน (และอาจรวมถึงชั่วโมง/นาที) ก่อนวันที่เช็คอิน เช่น ค่า P30D บ่งบอกว่าโปรโมชันมีผลกับการจองภายใน 30 วันก่อนวันที่เช็คอินเท่านั้น มูลค่า P30DT6H ต้องจองก่อนหรือหลัง 18:00 น. ในวันที่ 30 ก่อนเข้าพัก
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

กำหนดข้อจำกัดเกี่ยวกับค่าสูงสุดที่กำหนดอัตราได้หลังใช้โปรโมชัน

โปรโมชันต้องระบุ <Discount> หรือ <BestDailyDiscount> เสมอ ดังนั้นหากต้องการสร้างโปรโมชันที่ใช้เพียง <Ceiling> เท่านั้น ตัวเลือกหนึ่งคือการตั้งค่า <Discount> ด้วย percentage เป็น 0

หากมีการกำหนดค่าสแต็ก โปรโมชันหลายรายการที่มี <Ceiling> อาจมีผลกับการเข้าพักครั้งเดียว โปรโมชันแต่ละรายการจะใช้ส่วนลด ตามด้วยเพดานของโปรโมชันนั้นทันที ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเพดานแต่ละแบบส่งผลต่อการคำนวณโปรโมชันครั้งถัดไปในกลุ่มได้อย่างไร

ตัวอย่าง

กำหนดราคาสำหรับการเข้าพัก 1 คืนโดย AmountBeforeTax เท่ากับ 100 และมีโปรโมชัน 2 อย่าง ได้แก่

  1. โปรโมชันที่มีประเภทการซ้อน base fixed_amount เป็น 25 และเพดาน amount_per_night จาก 60
  2. โปรโมชันที่มีประเภทการกองซ้อน second, fixed_amount จาก 25 และเพดาน amount_per_night จาก 90

ลำดับของการคำนวณมีดังนี้

  1. ระบบจะใช้โปรโมชัน base ก่อนและรับส่วนลด AmountBeforeTax เหลือ 75 จากนั้นเพดานลดเหลือ 60
  2. โปรโมชัน second ลดราคา AmountBeforeTax จาก 60 เหลือ 35 ค่านี้อยู่ต่ำกว่าเพดาน 90 จึงไม่ใช้เพดานที่ 2 ราคาสุดท้ายคือ 35

ความจริงที่ว่า 60 เป็นเพดานที่เข้มงวดกว่านั้นไม่เกี่ยวข้อง เนื่องจากจะใช้ได้สำหรับการโปรโมตของตัวเองเท่านั้น และไม่มีเพดานเดียวที่ครอบคลุมทั้งกลุ่มโปรโมชัน

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

จำนวนเงินสูงสุดที่สามารถกำหนดราคาต่อคืนได้หลังจากใช้ส่วนลดแล้ว

หากมีการระบุองค์ประกอบ <Floor> ด้วย จะต้องกำหนดค่านี้เป็นค่าที่มากกว่าหรือเท่ากับแอตทริบิวต์ amount_per_night ใน <Floor>

amount_per_night จะมีผลกับภาษีและค่าธรรมเนียมเมื่อรวมอยู่ในราคาต่อคืนโดยใช้ AmountAfterTax แต่ไม่ใช่ราคาที่ระบุโดยใช้ TaxFeeInfo

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

กำหนดข้อจำกัดเกี่ยวกับค่าขั้นต่ำที่จะกำหนดอัตราได้หลังจากใช้โปรโมชัน

โปรโมชันต้องระบุ <Discount> หรือ <BestDailyDiscount> เสมอ ดังนั้นหากต้องการสร้างโปรโมชันที่ใช้เพียง <Floor> เท่านั้น ตัวเลือกหนึ่งคือการตั้งค่า <Discount> ด้วย percentage เป็น 0

ตรรกะ <Floor> จะยังมีผลกับส่วนลด <FreeNights> แม้ว่าคืนฟรีจะมีส่วนลด 100% ก็ตาม

หากมีการกำหนดค่าสแต็ก โปรโมชันหลายรายการที่มี <Floor> อาจมีผลกับการเข้าพักครั้งเดียว โปรโมชันแต่ละรายการจะใช้ส่วนลด ตามด้วยราคาพื้นทันที ตัวอย่างต่อไปนี้แสดงให้เห็นว่าราคาขั้นต่ำแต่ละรายการส่งผลต่อการคำนวณโปรโมชันครั้งถัดไปในกลุ่มได้อย่างไร

ตัวอย่าง

กำหนดราคาสำหรับการเข้าพัก 1 คืนโดย AmountBeforeTax เท่ากับ 100 และมีโปรโมชัน 2 อย่าง ได้แก่

  1. โปรโมชันที่มีประเภทการกองซ้อน base fixed_amount เป็น 25 และชั้น amount_per_night เป็น 90
  2. โปรโมชันที่มีประเภทการกองซ้อน second, fixed_amount จาก 25 และชั้น amount_per_night จาก 60

ลำดับของการคำนวณมีดังนี้

  1. ระบบจะใช้โปรโมชัน base ก่อนและลดราคา AmountBeforeTax เหลือ 75 จากนั้นราคาพื้นจะเพิ่มขึ้นสูงสุด 90
  2. โปรโมชัน second ลดราคา AmountBeforeTax จาก 90 เหลือ 65 ห้องนี้อยู่สูงกว่าราคาพื้นของ 60 ระบบจึงไม่ใช้ชั้นที่ 2 ราคาสุดท้ายคือ 65

การที่ 90 เป็นราคาพื้นโดยรวมที่เข้มงวดกว่านั้นไม่เกี่ยวข้อง เนื่องจากใช้ได้กับโปรโมชันของตัวเองเท่านั้น และไม่มีราคาพื้นที่ครอบคลุมทั้งชุดโปรโมชัน

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

จำนวนเงินขั้นต่ำที่จะกำหนดราคาต่อคืนได้หลังจากใช้ส่วนลดแล้ว

หากมีการระบุองค์ประกอบ <Ceiling> ด้วย จะต้องกำหนดค่านี้เป็นค่าที่น้อยกว่าหรือเท่ากับแอตทริบิวต์ amount_per_night ใน <Ceiling>

amount_per_night จะมีผลกับภาษีและค่าธรรมเนียมเมื่อรวมอยู่ในราคาต่อคืนโดยใช้ AmountAfterTax แต่ไม่ใช่ราคาที่ระบุโดยใช้ TaxFeeInfo

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้ ไม่จำเป็นต้องใช้องค์ประกอบนี้หากกำลังลบโปรโมชันอย่างน้อย 1 รายการ

และยังรองรับรูปแบบ YearlessDate อีกด้วย

  • หากวันใดวันหนึ่งของ start หรือ end เป็นวันที่ที่ไม่มีปี ทั้ง 2 อย่างจะต้องมีการป้อนข้อมูลเป็นวันที่ที่ไม่มีปี
  • ช่วงวันที่ที่ไม่มีปีจะต้องไม่เกินช่วงปีใหม่ แต่ให้แสดงช่วงวันที่ดังกล่าวเป็นช่วงวันที่ติดกัน 2 ช่วงแทน เช่น {"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 คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คเอาต์จึงจะใช้โปรโมชันได้
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คเอาต์จึงจะใช้โปรโมชันได้ ไม่จำเป็นต้องใช้องค์ประกอบนี้หากกำลังลบโปรโมชันอย่างน้อย 1 รายการ

และยังรองรับรูปแบบ YearlessDate อีกด้วย

  • หากวันที่ใดวันหนึ่งของ start หรือ end เป็นวันที่ที่ไม่มีปี ทั้ง 2 อย่างจะต้องได้รับการป้อนข้อมูลเป็นวันที่ที่ไม่มีปี
  • ช่วงวันที่ที่ไม่มีปีจะต้องไม่เกินช่วงปีใหม่ แต่ให้แสดงช่วงวันที่ดังกล่าวเป็นช่วงวันที่ติดกัน 2 ช่วงแทน เช่น {"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 กำหนดอุปกรณ์ของผู้ใช้ 1 ประเภทที่มีสิทธิ์สำหรับโปรโมชัน
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum ประเภทของอุปกรณ์ ค่าต้องเป็น desktop, tablet หรือ mobile
Promotions / HotelPromotions / Promotion / Discount 1 Discount

ต้องระบุ Discount หรือ BestDailyDiscount เพียง 1 รายการ

ระบุส่วนลดที่จะใช้กับโปรโมชันนี้

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

ต้องระบุ percentage, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night เพียง 1 รายการ

ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุส่วนลดเป็นเปอร์เซ็นต์ โดยจะมีผลกับ AmountAfterTax (หรือ AmountBeforeTax หากไม่ได้ระบุ AmountAfterTax)

เช่น

  • หาก AmountAfterTax คือ 100 และ percentage เท่ากับ 20

    อัตราโปรโมชัน = AmountAfterTax * (1 - เปอร์เซ็นต์ส่วนลด)

    80.00 = 100 * (1 - 0.2)

  • หาก AmountBeforeTax คือ 100, percentage คือ 20 และ TaxFeeInfo ระบุภาษีเป็น 10

    อัตราโปรโมชัน = AmountBeforeTax * (1 - ส่วนลดเป็นเปอร์เซ็นต์) + ภาษี

    90.00 = 100 * (1 - 0.2) + 10

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

ต้องระบุ percentage, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night เพียง 1 รายการ

จำนวนเงินคงที่ซึ่งจะถูกหักจากผลรวมของราคาต่อคืน AmountAfterTax (หรือผลรวมของราคาคืนละ AmountBeforeTax หากไม่ได้ระบุ AmountAfterTax) โดยจะใช้สกุลเงินเดียวกับราคาต่อคืน หากมากกว่าผลรวมของราคาต่อคืน ค่าที่ได้จะเป็น 0

เช่น

  • หากเรากำหนดราคาสำหรับการเข้าพัก 1 คืนโดยที่ AmountBeforeTax เท่ากับ 90, AmountAfterTax เท่ากับ 100 และ fixed_amount เท่ากับ 20

    อัตราโปรโมชัน = AmountAfterTax - ส่วนลดคงที่

    80.00 = 100 - 20

  • หากเรากำหนดราคาสำหรับการเข้าพัก 1 คืนโดยที่ AmountBeforeTax เท่ากับ 100 fixed_amount เท่ากับ 20 และ TaxFeeInfo ระบุภาษี 8%

    อัตราโปรโมชัน = (AmountBeforeTax - ส่วนลดคงที่) * (ภาษี 1 + เปอร์เซ็นต์)

    86.40 = (100 - 20) * 1.08

  • หากเรากำหนดราคาสำหรับการเข้าพัก 1 คืนโดยที่ AmountBeforeTax เท่ากับ 50, fixed_amount เท่ากับ 60 และ TaxFeeInfo ระบุภาษี 10 จากนั้น

    อัตราโปรโมชัน = (AmountBeforeTax - ส่วนลดคงที่) * ภาษี

    300.00 = 0 + 10

  • หากเรากำหนดราคาสำหรับการเข้าพัก 3 คืนโดยที่ค่า AmountAfterTax คือ 100, 110 และ 120 และ fixed_amount เท่ากับ 150

    อัตราโปรโมชัน = ผลรวม(AmountAfterTax) - (ส่วนลดคงที่)

    180.00 = (100 + 110 + 120) - 150

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

ต้องระบุ percentage, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night เพียง 1 รายการ

ส่วนลดคงที่ที่ใช้กับราคาต่อคืน AmountAfterTax แต่ละรายการ (หรือ N ที่ถูกที่สุดหากระบุ applied_nights) หากไม่ได้ระบุ AmountAfterTax จะเป็นการใช้กับ AmountBeforeTax โดยจะใช้สกุลเงินเดียวกับราคาต่อคืน หากราคา fixed_amount_per_night สูงกว่าราคาต่อคืน ราคาต่อคืนนั้นจะลดลงเป็น 0 เนื่องจากส่วนลดนี้ไม่สามารถทำให้ราคาต่อคืนกลายเป็นติดลบ

เช่น

  • หากเรากำหนดราคาสำหรับการเข้าพัก 3 คืนโดยที่ค่า AmountAfterTax คือ 100, 110 และ 120 และ fixed_amount_per_night คือ 10

    อัตราโปรโมชัน = ผลรวม(AmountBeforeTax - ส่วนลดตามจำนวนคงที่)

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

  • หากเรากำหนดราคาสำหรับการเข้าพัก 3 คืนโดยที่ค่า AmountAfterTax คือ 10, 50 และ 100 และ fixed_amount_per_night คือ 20

    อัตราโปรโมชัน = ผลรวม(AmountAfterTax - ส่วนลดตามจำนวนคงที่)

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

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

ต้องระบุ percentage, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night เพียง 1 รายการ

หากระบุราคาต่อคืน 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, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night เพียง 1 รายการ

หากระบุราคาต่อคืน 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 เป็นจริง) จะมีกลุ่มการเข้าพัก 2 คืน ได้แก่ คืนที่ 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 เท่านั้น หากโปรโมชันหลายรายการมีอันดับเดียวกัน ระบบจะเลือกและนำไปใช้เอง 1 รายการ
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

ต้องระบุ Discount หรือ BestDailyDiscount เพียง 1 รายการ

ระบุส่วนลดรายวันที่อาจนำไปใช้กับคืนที่เข้าพัก ซึ่งตรงกันข้ามกับ Discount ที่จะใช้ส่วนลดกับทั้งการเข้าพัก

ที่พักแต่ละรายการอาจมีกลุ่มโปรโมชันกลุ่มเดียวที่ถือว่า "ดีที่สุดทุกวัน" ซึ่งหมายความว่าสำหรับการเข้าพักแต่ละคืน ระบบจะเลือกโปรโมชัน "รายวันที่ดีที่สุด" รายการเดียวที่มีสิทธิ์และให้ส่วนลดสูงสุดสำหรับคืนนั้นและอาจใช้

ไม่สามารถระบุ Stacking ด้วย BestDailyDiscount ระบบจะรวมส่วนลด "รายวันที่ดีที่สุด" ที่ให้ส่วนลดมากที่สุดสำหรับแต่ละคืนเข้าด้วยกันและถือเป็นส่วนลดสำหรับการเข้าพัก 1 รายการ (เช่น Discount) โดยมีการตั้งค่าประเภทการซ้อนเป็น base ระบบจะนำส่วนลดแบบรวมนี้ไปเปรียบเทียบกับโปรโมชัน <ลดราคา> อื่นๆ ที่มีสิทธิ์ เพื่อหาส่วนลดเดียวกันหรือชุดค่าผสมที่ให้ส่วนลดมากที่สุด ระบบจะเลือกและนำไปใช้กับประเภทการกองซ้อน base เพื่อใช้ชุดค่าผสม BestDailyDiscount หรือ Discount รายการเดียว (ขึ้นอยู่กับว่าค่าใดให้ราคาต่ำกว่า)

ระบุ StayDates ด้วยส่วนลดประเภทนี้ได้ แต่ต้องตั้งค่า application เป็น overlap

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

ต้องระบุ percentage, fixed_amount หรือ fixed_price อย่างน้อย 1 รายการ

ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุส่วนลดเป็นเปอร์เซ็นต์ โดยจะมีผลกับ AmountAfterTax (หรือ AmountBeforeTax หากไม่ได้ระบุ AmountAfterTax)

เช่น

  • หาก AmountAfterTax สำหรับการเข้าพัก 1 คืนเท่ากับ 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 อย่างน้อย 1 รายการ

จำนวนเงินคงที่ซึ่งจะถูกหักออกจากราคาห้องพักคืน AmountAfterTax เดียว (หรือราคา AmountBeforeTax ต่อคืนหากไม่ได้ระบุ AmountAfterTax) โดยจะใช้สกุลเงินเดียวกับราคาต่อคืน หากมากกว่าผลรวมของราคาต่อคืน ค่าที่ได้จะเป็น 0

เช่น

  • หากAmountBeforeTaxสำหรับ 1 คืนเท่ากับ 90, AmountAfterTax เท่ากับ 100 และ fixed_amount เท่ากับ 20

    อัตราโปรโมชัน = AmountAfterTax - ส่วนลดคงที่

    80.00 = 100 - 20

  • หาก AmountBeforeTax สำหรับ 1 คืนเท่ากับ 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 อย่างน้อย 1 รายการ

หากระบุราคาต่อคืน AmountAfterTax ระบบจะกำหนดราคาสำหรับคืนที่เข้าพักรวมภาษีและค่าธรรมเนียมตามมูลค่าที่ระบุ หากระบุ AmountBeforeTax จะเป็นการระบุว่าจะระบุ AmountAfterTax หรือไม่ การดำเนินการนี้จะกำหนดราคาก่อนหักภาษีสำหรับการเข้าพักให้เป็นค่าที่ระบุ โดยจะใช้สกุลเงินเดียวกับราคาต่อคืน

เช่น

  • หากAmountBeforeTaxสำหรับ 1 คืนเท่ากับ 90, AmountAfterTax เท่ากับ 100 และ fixed_price เท่ากับ 80 อัตราโปรโมชันจะเท่ากับ 80
  • หาก AmountBeforeTax สำหรับ 1 คืนเท่ากับ 100 fixed_amount จะเท่ากับ 80 และ TaxFeeInfo ระบุภาษี 8%

    อัตราโปรโมชัน = ราคาคงที่ * (1 + ภาษีเปอร์เซ็นต์)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount กำหนดข้อจำกัดของจำนวนห้องพักที่ต้องมีให้ใช้ในโปรโมชันนี้ ระบบจะใช้ส่วนลดกับจำนวนคืนที่ตรงตามเกณฑ์เท่านั้น ไม่อนุญาตเมื่อใช้ส่วนลด fixed_amount โปรดทราบว่าจำนวนห้องว่างจะระบุด้วย OTA_HotelInvCountNotifRQ (InvCount) หรือ OTA_HotelAvailNotifRQ (BookingLimit)
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer จำนวนห้องขั้นต่ำที่ต้องพร้อมใช้งานสำหรับโปรโมชันจึงมีผลกับราคาต่อคืน หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนขั้นต่ำ
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer จำนวนห้องพักสูงสุดที่ต้องพร้อมใช้งานสำหรับโปรโมชันจึงมีผลกับราคาต่อคืน หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนสูงสุด
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay กำหนดขีดจำกัดระยะเวลาในการเข้าพักที่จะใช้โปรโมชันนี้ได้ โปรโมชันจะใช้ไม่ได้เมื่อระยะเวลาในการเข้าพักไม่อยู่ในขีดจำกัดขั้นต่ำและสูงสุด
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer จำนวนคืนขั้นต่ำที่เข้าพักเพื่อให้ใช้โปรโมชันได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนขั้นต่ำ
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer จำนวนคืนสูงสุดที่เข้าพักเพื่อใช้โปรโมชันได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนสูงสุด
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

คอนเทนเนอร์สำหรับกฎอัตราการเป็นสมาชิกที่ทริกเกอร์ตัวเลือก UI ที่เฉพาะเจาะจงสำหรับส่วนลดที่เกี่ยวข้อง

ไม่ควรระบุองค์ประกอบนี้เว้นแต่จะมีการระบุ <Discount> ไว้ด้วย

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

รหัสของ กฎเกี่ยวกับอัตราที่เชื่อมโยงกับโปรแกรมการเป็นสมาชิก

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount ระบุยอดรวมขั้นต่ำของราคาห้องพักรายวัน (โดยใช้จำนวนที่มากกว่าของ AmountBeforeTax หรือ AmountAfterTax) ซึ่งต้องมากกว่าจำนวนนี้จึงจะใช้โปรโมชันได้
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer ค่าที่ต้องเกินเพื่อให้โปรโมชันมีผล
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy กำหนดข้อจำกัดเกี่ยวกับอัตราการเข้าพักที่ใช้โปรโมชันนี้ โปรโมชันจะใช้ไม่ได้เมื่ออัตราการเข้าพักอยู่นอกขีดจำกัดขั้นต่ำและสูงสุด
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer อัตราการเข้าพักที่ผู้ใช้ระบุต้องมีค่าอย่างน้อยเท่ากับค่านี้เพื่อให้ใช้ส่วนลดได้
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer อัตราการเข้าพักที่ผู้ใช้ระบุต้องมีค่าไม่เกินค่านี้จึงจะใช้ส่วนลดได้
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans คอนเทนเนอร์สำหรับรายการแพ็กเกจราคาที่ใช้โปรโมชัน หากไม่มีการระบุ <RatePlans> โปรโมชันจะมีผลกับแพ็กเกจราคาทั้งหมด
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan ระบุแพ็กเกจราคา ระบบจะกำหนดแพ็กเกจราคาจากชุดค่าผสมของแพ็กเกจ ราคา และจำนวนห้องว่าง ตามที่ระบุไว้ในข้อความ Transaction (Property Data), OTA_HotelRateAmountNotifRQ และ OTA_HotelAvailNotifRQ รวมถึงตามที่ PackageID ระบุไว้
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string ตัวระบุที่ไม่ซ้ำกันสำหรับแพ็กเกจราคา ค่านี้จะแมปกับค่า PackageID ใน <PackageData> ในข้อความ Transaction (Property Data) และในแอตทริบิวต์ RatePlanCode ของ <StatusApplicationControl> ทั้งข้อความ <OTA_HotelRateAmountNotifRQ> และ <OTA_HotelAvailNotifRQ> จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes คอนเทนเนอร์สำหรับรายการประเภทห้องพักที่ใช้โปรโมชัน โปรโมชันจะใช้กับ <RoomType> แต่ละรายการที่ระบุ หากไม่มีการระบุ <RoomTypes> โปรโมชันจะมีผลกับห้องพักทั้งหมด
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType ระบุประเภทห้องพัก ประเภทห้องพักจะระบุอยู่ในองค์ประกอบ <RoomData> ของข้อความ Transaction (Property Data) และอ้างอิงโดยใช้ค่า <RoomID> (ค่า <RoomID> ยังอ้างอิงโดยแอตทริบิวต์ InvTypeCode ในข้อความ OTA_HotelRateAmountNotifRQ)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string ตัวระบุที่ไม่ซ้ำกันสำหรับห้องพัก (ประเภทห้องพัก) ค่านี้จะแมปกับ <RoomID> ในข้อความ Transaction (Property Data) จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking ระบุวิธีรวมโปรโมชัน หากไม่ได้ระบุไว้ ระบบจะถือว่า "type" เป็น base
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

คุณใช้โปรโมชันหลายรายการกับอัตราเดียวได้โดยขึ้นอยู่กับการตั้งค่านี้

  • any: ใช้ร่วมกับโปรโมชันอื่นๆ ได้ (ยกเว้น none) ได้ แต่ไม่รับประกันลำดับการใช้โปรโมชัน
  • base: ระบบจะเลือกและใช้โปรโมชัน base ที่ดีที่สุดที่มีสิทธิ์ก่อนโปรโมชันอื่นๆ ก่อนหน้านี้มีชื่อว่า base_only
  • second: ระบบจะเลือกและใช้โปรโมชัน second ที่ดีที่สุดที่มีสิทธิ์หลังจากโปรโมชัน base (หากมี) และก่อนวันที่ any
  • none: ใช้ร่วมกับโปรโมชันอื่นๆ ไม่ได้

จากชุดค่าผสมที่อนุญาต ระบบจะใช้ชุดโปรโมชันที่ให้ส่วนลดมากที่สุดกับอัตรา

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดวิธีใช้โปรโมชัน เช่น เพื่อรองรับส่วนลดตามฤดูกาล
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

อธิบายวิธีใช้โปรโมชัน

ค่าที่ใช้ได้มีดังนี้

  • all: ใช้โปรโมชันกับแต่ละคืนในแผนการเดินทางหากวันที่ทั้งหมดในแผนการเดินทางซ้อนทับกับวันที่เข้าพัก
  • any: ใช้โปรโมชันกับทุกคืนในแผนการเดินทางหากวันที่ในแผนการเดินทางซ้อนทับกับวันที่ในช่วงวันที่เข้าพัก
  • overlap: ใช้โปรโมชันกับคืนในแผนการเดินทางที่ซ้อนทับกับวันที่ในช่วงวันที่เข้าพักเท่านั้น

คุณต้องระบุแอตทริบิวต์นี้เสมอ

  • หาก <Discount> ระบุ percentage และมีการตั้งค่า application เป็น all หรือ any ระบบจะใช้ส่วนลดเป็นเปอร์เซ็นต์ของการเข้าพักแบบเต็ม
  • หาก <Discount> ระบุ percentage และ application มีการตั้งค่าเป็น overlap ระบบจะนำส่วนลดไปใช้เป็นเปอร์เซ็นต์ของราคาต่อคืนสำหรับคืนที่ทับซ้อนกัน
  • <Discount> ที่ระบุ fixed_amount และ application ที่ตั้งค่าเป็น overlap เป็นชุดค่าผสมที่ไม่ถูกต้อง
  • <FreeNights> รองรับค่า application ทั้งหมด โปรดทราบว่าสำหรับ overlap ระบบจะพิจารณาเฉพาะการเข้าพักที่ซ้อนทับกันสำหรับข้อกำหนดส่วนลด
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

ช่วงวันที่ที่ระบุวันที่ที่จะใช้โปรโมชัน

และยังรองรับรูปแบบ YearlessDate อีกด้วย

  • หากวันที่ใดวันหนึ่งของ start หรือ end เป็นวันที่ที่ไม่มีปี ทั้ง 2 อย่างจะต้องได้รับการป้อนข้อมูลเป็นวันที่ที่ไม่มีปี
  • ช่วงวันที่ที่ไม่มีปีจะต้องไม่เกินช่วงปีใหม่ แต่ให้แสดงช่วงวันที่ดังกล่าวเป็นช่วงวันที่ติดกัน 2 ช่วงแทน เช่น {"12-29", "01-05"} อาจแสดงเป็น {"12-29", "12-31"} และ {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่ก่อนหน้าหรือวันที่เดียวกับ end หากไม่มีการระบุ start ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่เริ่มต้น
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่เดียวกันหรือหลังจากวันที่ start หากไม่มีการระบุ end ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่สิ้นสุด
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่ระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่

อักขระที่ใช้ได้มีดังนี้

  • M สำหรับวันจันทร์
  • T สำหรับวันอังคาร
  • W สำหรับวันพุธ
  • H สำหรับวันพฤหัสบดี
  • F สำหรับวันศุกร์
  • S สำหรับวันเสาร์
  • U สำหรับวันอาทิตย์

ชุดค่าผสมของอักขระแบบใดก็ได้สามารถใช้ได้

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries คอนเทนเนอร์สำหรับแสดงสถานที่ตั้งของผู้ใช้ (ประเทศ) ที่มีสิทธิ์สำหรับโปรโมชัน หากระบุไว้ เฉพาะผู้ใช้ที่มีสิทธิ์ในประเทศที่ระบุไว้เท่านั้นที่จะได้รับส่วนลดดังกล่าว หากไม่ระบุ ผู้ใช้ที่มีสิทธิ์ในประเทศต่างๆ จะได้รับข้อเสนอราคาหลังหักส่วนลด
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum ประเภทของข้อกำหนด Usercountries

ค่าที่ถูกต้องคือ include และ exclude

หากตั้งค่า Usercountries type เป็น include โปรโมชันจะใช้กับผู้ใช้จากประเทศที่ระบุไว้

หาก UserCountry type เป็น exclude โปรโมชันจะมีผลกับผู้ใช้ที่อยู่นอกประเทศที่ระบุไว้

หากไม่ได้ตั้งค่า Usercountries type ระบบจะถือว่าเป็น include และโปรโมชันจะใช้กับผู้ใช้จากประเทศที่ระบุไว้

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country กำหนดประเทศเดียวที่ผู้ใช้มีสิทธิ์ได้รับโปรโมชัน
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string รหัสประเทศ CLDR เช่น DE หรือ FR โปรดทราบว่าในบางประเทศ รหัสประเทศ CLDR จะไม่เหมือนกับรหัสประเทศ 2 ตัวอักษรของ ISO รวมถึงไม่รองรับรหัสภูมิภาค CLDR

ตัวอย่าง

ข้อความพื้นฐาน

ตัวอย่างต่อไปนี้แสดงข้อความ 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>


ลบโปรโมชัน 1 รายการ

ตัวอย่างต่อไปนี้แสดงวิธีลบโปรโมชัน 1 รายการสําหรับพร็อพเพอร์ตี้

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1" 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> สำหรับที่พักที่มีโปรโมชันใหม่อย่างน้อย 1 รายการ เมื่อ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 ประเภท

ตัวอย่างต่อไปนี้แสดงกรณีที่จะใช้โปรโมชันที่แตกต่างกัน 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 เนื่องจากการรวมโปรโมชันอื่นๆ จะให้ส่วนลดน้อยกว่า หากราคาเดิมคือ 3,000 บาท ราคาลดเหลือ 2,250 บาท

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



ขอบเขตระยะเวลาการจอง

ตัวอย่างต่อไปนี้แสดงกรณีที่มีการใช้องค์ประกอบ BookingWindow พร้อมขอบเขตเริ่มต้นและสิ้นสุดที่กำหนดเป็นประเภทระยะเวลา ISO 8601 ข้อจำกัดระยะเวลาการจองนี้ต้องจองในหรือก่อน 18:00 น. ก่อนวันเข้าพัก และหลัง 12:00 น. ของวันที่ 2 ก่อนมาถึง

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


วันที่จอง ขอบเขตวันที่และเวลา

ตัวอย่างต่อไปนี้แสดงกรณีที่มีการใช้องค์ประกอบ BookingDates กับแอตทริบิวต์ start และ end เป็นประเภทวันที่และเวลา ข้อจำกัดวันที่ต้องจองนี้กำหนดให้จองระหว่างเวลา 06:30 น. ในวันที่ 07/07 2020 ถึง 18:45 น. ในวันที่ 02-07-2020

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


ช่วงวันที่ที่ไม่มีปี

ตัวอย่างต่อไปนี้แสดงกรณีที่องค์ประกอบ CheckInDates มี DateRanges ที่มีช่อง start และ end ที่ไม่มีปี ในตัวอย่างนี้ โปรโมชันใช้ได้กับวันที่เช็คอินระหว่าง 29/12 ถึง 2/1/20 ปี ช่วงวันที่ที่ไม่มีปีที่ข้ามผ่านขอบเขตปีใหม่นั้นไม่ถูกต้อง ดังนั้น ช่วงวันที่จึงแสดงเป็นช่วงวันที่ที่ติดกัน 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>



ส่วนลด FreeNights

ตัวอย่างต่อไปนี้ส่วนลด 50% สำหรับ 2 คืนสําหรับการเข้าพักแต่ละ 4 คืนตามช่วงวันที่จองที่ระบุไว้ สำหรับแผนการเดินทาง 10 คืน การเข้าพักทั้งหมด 4 คืนจะได้ส่วนลด 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% สำหรับ 1 คืนสำหรับการเข้าพัก 3 คืนตามช่วงวันที่เข้าพักที่ระบุไว้ เฉพาะคืนการเข้าพักที่ทับซ้อนกันเท่านั้น ที่จะได้รับเงินส่วนลด สำหรับแผนการเดินทางต่อไปนี้ที่มีการเช็คอินในวันที่ 1-01-2022 และเช็คเอาต์ในวันที่ 07-01-2022 คืนการเข้าพักและส่วนลดที่เข้าเกณฑ์จะมีผลดังนี้

  • 01-01-2022 (เข้าพัก)
  • 02-01-2022 (เข้าพัก)
  • 2022-01-03
  • 04-01-2022 (ลดราคา)
  • 05-01-2022 (เข้าพัก)
  • 06-01-2022 (เข้าพัก)
<?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>


การเลือกแบบจัดอันดับ

ตัวอย่างต่อไปนี้เสนอส่วนลด 2 รายการ รายการแรกลด 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>

ส่วนลดรายวันที่ดีที่สุด

ตัวอย่างต่อไปนี้ส่วนลดการเข้าพัก 2 คืนโดยการใช้ BestDailyDiscount ซ้อนกับ Discount

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
 <HotelPromotions hotel_id="HotelID" action="overlay">
   <Promotion id="general">
     <BestDailyDiscount fixed_amount="20"/>
   </Promotion>
   <Promotion id="may">
     <BestDailyDiscount fixed_amount="50"/>
     <StayDates application="overlap">
        <DateRange start="2023-05-01" end="2023-05-31"/>
     </StayDates>
   </Promotion>
   <Promotion id="fiesta">
     <Discount fixed_amount_per_night="5"/>
     <Stacking type="any"/>
   </Promotion>
 </HotelPromotions>
</Promotions>

ลองพิจารณาการเข้าพัก 2 คืนตั้งแต่วันที่ 30 เมษายน 2023 ถึง 2 พฤษภาคม 2023 สำหรับการคำนวณ ระบบจะพบส่วนลดสูงสุดประจำวันที่รวมส่วนลดสูงสุดไว้เป็นอันดับแรก

สำหรับคืนแรก โปรโมชัน "ทั่วไป" คือจำนวนเงินเดียวที่คุณมีสิทธิ์พร้อมส่วนลดคงที่ 20 แต้ม

สำหรับคืนที่ 2 โปรโมชัน "อาจ" จะให้ส่วนลดมากกว่าส่วนลด "ทั่วไป" ดังนั้นเมื่อเลือก "อาจ" จำนวนส่วนลด คงที่คือ 50

จากนั้นลดค่าโปรโมชัน "Fiesta" เป็น 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 คอนเทนเนอร์สำหรับปัญหาอย่างน้อย 1 รายการที่พบขณะประมวลผลข้อความโปรโมชัน

แต่ละข้อความจะมี <Success> หรือ <Issues> ปรากฏอยู่

PromotionsResponse / Issues / Issue 1..n Issue คำอธิบายของคำเตือน ข้อผิดพลาด หรือความล้มเหลวที่พบขณะประมวลผลข้อความโปรโมชัน ดูรายละเอียดเกี่ยวกับปัญหาเหล่านี้ได้ในข้อความแสดงข้อผิดพลาดของสถานะฟีด
PromotionsResponse / Issues / Issue / @code 1 integer ตัวระบุสำหรับปัญหา
PromotionsResponse / Issues / Issue / @status 1 enum

ประเภทของปัญหาที่พบ

ค่าที่ถูกต้องคือ warning, error และ failure

ตัวอย่าง

Success

การตอบกลับข้อความโปรโมชันที่ประมวลผลเรียบร้อยแล้วมีดังนี้

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