โปรโมชัน

ภาพรวม

API นี้ให้คุณระบุส่วนลดที่เป็นไปได้ จากโปรโมชันที่ระบุ Google ใช้โปรโมชันหรือชุดโปรโมชันที่มีสิทธิ์ซึ่งนำไปสู่ ในราคาต่ำสุด หากกำลังมองหา API ที่รองรับอัตราที่กำหนดเอง การปรับค่าใช้จ่ายที่อาจเพิ่มหรือลดราคาเมื่อมีเงื่อนไข แล้วพิจารณา 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 บัญชีพาร์ทเนอร์สำหรับข้อความนี้ ค่าสตริงนี้คือค่า "คีย์พาร์ทเนอร์" มูลค่าที่แสดงใน หน้าการตั้งค่าบัญชีใน 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 ครั้ง โปรโมชันแต่ละรายการ จะใช้ส่วนลด ตามด้วยเพดานของมูลค่าดังกล่าวทันที ตัวอย่างต่อไปนี้จะแสดงให้เห็นว่าแต่ละเพดานมีส่วนทำให้เกิด การคำนวณโปรโมชันในกลุ่ม

ตัวอย่าง

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

ตัวอย่าง

ราคาการเข้าพัก 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 เพื่อไม่ให้ใช้ชั้นสอง อัตราสุดท้ายคือ 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 ช่วงที่อยู่ติดกัน ตัวอย่างเช่น {"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 ช่วงที่อยู่ติดกัน ตัวอย่างเช่น {"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

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

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

เป็นหนึ่งใน percentage เท่านั้น fixed_amount fixed_amount_per_night fixed_price หรือ fixed_price_per_night คือ ต้องระบุ

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

ตัวอย่าง

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

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

    80.00 = 100 * (1 - 0.2)

  • หาก AmountBeforeTax เท่ากับ 100 percentage คือ 20 และ TaxFeeInfo ระบุภาษี 10 จากนั้น

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

    90.00 = 100 * (1 - 0.2) + 10

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

เป็นหนึ่งใน percentage เท่านั้น fixed_amount fixed_amount_per_night fixed_price หรือ fixed_price_per_night คือ ต้องระบุ

จำนวนคงที่ที่จะหักออกจากผลรวมของ ราคาต่อคืน AmountAfterTax (หรือ ผลรวมของราคาต่อคืน AmountBeforeTax หาก ไม่ได้ระบุ AmountAfterTax) จะมีสมมติฐานว่า ในสกุลเงินเดียวกับราคาต่อคืน หากมีขนาดใหญ่กว่า ผลรวมของราคาต่อคืน มูลค่าที่ได้จะเท่ากับ 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 คือ ต้องระบุ

ส่วนลดคงที่ที่ใช้กับ 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 คือ ต้องระบุ

หากระบุราคาต่อคืน 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 คือ ต้องระบุ

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

หนึ่งใน Discount เท่านั้น หรือ ต้องระบุ BestDailyDiscount

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

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

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

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

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

เป็นหนึ่งใน percentage เท่านั้น ต้องระบุ fixed_amount หรือ fixed_price

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

ตัวอย่าง

  • หาก AmountAfterTax สำหรับการเข้าพัก 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

จำนวนคงที่ที่จะหักออกจากรายการเดียว ราคาต่อคืน 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

หากระบุราคาต่อคืน 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 ระบุแพ็กเกจราคา แพ็กเกจราคากำหนดโดยชุดค่าผสมของ แพ็กเกจ ราคา และห้องว่างตามที่ระบุไว้ใน "ธุรกรรม" (ข้อมูลที่พัก), OTA_HotelRateAmountNotifRQ และ OTA_HotelAvailNotifRQ และตามที่ระบุโดย PackageID
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string ตัวระบุที่ไม่ซ้ำกันสำหรับแพ็กเกจราคา ค่านี้จะแมปกับ ค่า PackageID ใน <PackageData> ในข้อความ Transaction (Property Data) และใน RatePlanCodeแอตทริบิวต์ใน <StatusApplicationControl> ทั้งใน 2 ที่ <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 messages.)
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 ช่วงที่อยู่ติดกัน ตัวอย่างเช่น {"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

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

หากtypeประเทศของผู้ใช้คือ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 ด้วย

ตัวอย่าง

พร็อพเพอร์ตี้ 1 รายการมีโปรโมชันได้ไม่เกิน 500 รายการ โปรดดู "ลบ 1 รายการ โปรโมชัน" ตัวอย่างการนำโปรโมชันออกจากพร็อพเพอร์ตี้

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

ตัวอย่างต่อไปนี้แสดงข้อความ 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 ประเภท ข้อจำกัดเกี่ยวกับระยะเวลาการจองนี้ต้องจองในหรือก่อน 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 น. 1 ก.ค. 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 ถึง 01/01 ไม่ว่าจะเป็นปีใดก็ตาม ทุกปี ช่วงวันที่ที่ข้ามขอบเขตปีใหม่ไม่ถูกต้อง ดังนั้น DateRange จะแสดงเป็นช่วงวันที่ 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 คืน รวมเป็นเงิน ลด 50% สำหรับ 4 คืน

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

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

และสำหรับการเข้าพัก "Fiesta" ส่วนลดโปรโมชันเป็น 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

ตัวอย่าง

สำเร็จ

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

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