โปรโมชัน

ภาพรวม

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

คำขอ

ไวยากรณ์

ข้อความ 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 ก็จะไม่มีขั้นต่ำ

ประเภทค่าที่ถูกต้องมีดังนี้

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

ประเภทค่าที่ถูกต้องมีดังนี้

  • จำนวนเต็ม: จำนวนวันก่อนวันที่เช็คอิน เช่น ค่า 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 - ส่วนลดคงที่) * ภาษี

    10.00 = 0 + 10

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

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

    180.00 = (100 + 110 + 120) - 150

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

ต้องระบุ percentage, fixed_amount, fixed_amount_per_night, fixed_price หรือ fixed_price_per_night ที่แน่นอน 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 ส่วนลดแบบรวมนี้จะนำมาเปรียบเทียบและนำไปรวมกับโปรโมชัน <Discount> อื่นๆ ที่มีสิทธิ์เพื่อค้นหา ส่วนลดเดียวหรือชุดค่าผสมที่ให้ส่วนลดมากที่สุดได้ ระบบจะเลือกและใช้กับประเภทสแต็ก 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 ประเภทของข้อกำหนด UserCountry

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

หากกำหนด User countries type เป็น include โปรโมชันจะมีผลกับผู้ใช้จากประเทศที่อยู่ในรายการ

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

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

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country กำหนด 1 ประเทศที่ผู้ใช้มีสิทธิ์รับโปรโมชัน
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string รหัสประเทศ CLDR เช่น DE หรือ FR โปรดทราบว่ารหัสประเทศ CLDR สำหรับบางประเทศจะไม่ตรงกับรหัสประเทศ ISO 2 ตัวอักษร และไม่รองรับรหัสภูมิภาค 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 เนื่องจากโปรโมชันอื่นๆ รวมกันมีส่วนลดน้อยกว่า หากราคาเดิมคือ $100 ราคาลดจะเป็น $75

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



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

ตัวอย่างต่อไปนี้แสดงกรณีที่มีการใช้องค์ประกอบ BookingWindow กับขอบเขตเริ่มต้นและสิ้นสุดที่กำหนดไว้เป็นประเภท ISO 8601 Duration ข้อจำกัดของระยะเวลาการจองนี้กำหนดให้ต้องจองในหรือก่อน 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 เป็นประเภท DateTime การจำกัดวันที่จองนี้กำหนดให้ต้องจองระหว่างเวลา 06:30 น. ของ 01/07-2020 ถึง 18:45 น. ของ 2020-07-02

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


ช่วงวันที่ที่ไม่แบ่งรายปี

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



ส่วนลด 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 คืนตามช่วงวันที่เข้าพักที่ระบุไว้ เฉพาะคืนที่เข้าพักที่ซ้อนทับกันเท่านั้นที่จะมีสิทธิ์รับส่วนลด สำหรับแผนการเดินทางต่อไปนี้ที่มีการเช็คอินในวันที่ 01-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>

BestDailyDiscount

ตัวอย่างต่อไปนี้เป็นส่วนลดสำหรับการเข้าพัก 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

จากนั้นสำหรับการเข้าพัก รับส่วนลดโปรโมชัน "เทศกาล" เหลือคืนละ 5 หรือรวมทั้งหมด 10 รายการนี้อาจแสดงร่วมกับส่วนลดรายวันที่ดีที่สุด เนื่องจาก "Fiesta" มีการตั้งค่าประเภทการซ้อนทับเป็น 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>