โปรโมชัน

ภาพรวม

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 เป็น 0 ระบบจะไม่กำหนดจำนวนขั้นต่ำ

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

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

ตัวอย่าง

การกำหนดราคาสำหรับการเข้าพัก 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 ต้องตั้งค่าเป็น base หรือ none "ดีที่สุดทุกวัน" ส่วนลด ที่ให้ส่วนลดที่ลึกที่สุดสำหรับแต่ละคืนจะนำมารวมเข้าด้วยกันเป็น ส่วนลดสำหรับการเข้าพัก 1 ครั้ง (เช่น Discount) ควบคู่ไปกับ ประเภทการกองซ้อนที่กำหนดค่าไว้ เราจะเปรียบเทียบส่วนลดรวมนี้ โดยซ้อนกับ <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"}

ถ้าคุณต้องการตั้งค่าช่วง StayDates เป็น ให้เสนอโปรโมชันในบางวันของสัปดาห์ คุณควรตั้งค่า วันที่ start เป็นวันที่ปัจจุบันโดยไม่มี end โปรโมชันไม่มีวันหมดอายุ

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ซึ่งก็คือ ช่วงวันที่ วันที่นี้ต้องเป็นวันที่ก่อนวันที่ หรือวันที่เดียวกับ end หากไม่ได้ระบุ start จะเป็นวันที่ ไม่มีการกำหนดช่วงของวันที่เริ่มต้นที่มีประสิทธิภาพ

คุณควรระบุค่า start หากค่า ไม่ได้ระบุค่า end

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของ ช่วงวันที่ วันที่นี้ต้องเป็นวันที่เดียวกับหรือหลังจาก start หากไม่ได้ระบุ end จะเป็นวันที่ จะไม่มีช่วงจำกัดตั้งแต่วันที่ start เป็นต้นไป

คุณควรระบุค่า end หากไม่ได้ระบุค่า start

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 (เข้าพัก)
  • 2022-01-02 (stay)
  • 2022-01-03
  • 04-01-2022 (ลดราคาแล้ว)
  • 05-01-2022 (เข้าพัก)
  • 2022-01-06 (stay)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <StayDates application="overlap">
        <DateRange start="2022-01-01" end="2022-01-02"/>
        <DateRange start="2022-01-04" end="2022-01-06"/>
      </StayDates>
      <Discount>
        <FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>


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

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

และสำหรับการเข้าพัก "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>