Khuyến mãi

Tổng quan

API này cho phép bạn chỉ định các khoản chiết khấu có thể có. Trong số các chương trình khuyến mãi đã chỉ định, Google áp dụng chương trình khuyến mãi đủ điều kiện hoặc tập hợp các chương trình khuyến mãi dẫn đến giá thấp nhất. Nếu bạn đang tìm một API có hỗ trợ giá tuỳ ý các mức điều chỉnh có thể tăng hoặc giảm giá khi các điều kiện hài lòng, thì hãy xem xét API Sửa đổi giá. Xin lưu ý rằng nếu có cả hai API thì nội dung sửa đổi giá sẽ được áp dụng trước chương trình khuyến mãi.

Yêu cầu

Cú pháp

Thông báo Promotions sử dụng cú pháp sau:

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

Phần tử và thuộc tính

Thông báo Chương trình khuyến mãi có các thành phần và thuộc tính sau:

Phần tử / @Thuộc tính Số lần xuất hiện Loại Mô tả
Promotions 1 Complex element Thành phần gốc của thông báo khuyến mãi.
Promotions / @partner 1 string Tài khoản đối tác dùng cho thư này. Giá trị của chuỗi này là giá trị của "Khoá đối tác" được liệt kê trên trang Cài đặt tài khoản trong Hotel Center.

Nếu bạn có phần phụ trợ cung cấp nguồn cấp dữ liệu cho nhiều tài khoản, thì giá trị này cần phải khớp với ID giá trị thuộc tính được chỉ định trong <RequestorID> phần tử <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> thông báo cho cùng một tài khoản.

Promotions / @id 1 string Giá trị nhận dạng duy nhất cho thông báo yêu cầu này. Giá trị này được trả về trong thông báo phản hồi. Ký tự được phép sử dụng là a – z, A – Z, 0 – 9, _ (dấu gạch dưới) và - (dấu gạch nối).
Promotions / @timestamp 1 DateTime Ngày và giờ tạo thông báo này.
Promotions / HotelPromotions 0..n HotelPromotions

Chương trình khuyến mãi của cơ sở lưu trú. Mỗi chương trình khuyến mãi áp dụng cho một thuộc tính này.

Trừ phi <Stacking> được sử dụng, chương trình khuyến mãi có mức chiết khấu cao nhất sẽ được áp dụng cho yêu cầu đặt phòng khi nhiều chương trình khuyến mãi đều đủ điều kiện.

Promotions / HotelPromotions / @hotel_id 1 string Giá trị nhận dạng duy nhất của cơ sở lưu trú. Giá trị này phải khớp với Mã khách sạn được chỉ định bằng <id> trong phần tử <listing> trong Nguồn cấp dữ liệu danh sách khách sạn. Mã khách sạn cũng có trong Hotel Center.
Promotions / HotelPromotions / @action 0..1 enum

Nếu được chỉ định, giá trị phải là "overlay". Khi giá trị là "overlay", tất cả chương trình khuyến mãi đã lưu trữ sẽ bị xoá trước khi lưu trữ chương trình khuyến mãi đã chỉ định trong thông báo hiện tại.

Nếu không được chỉ định, thì mỗi chương trình khuyến mãi được chỉ định trong tin nhắn là:

  • Added (nếu không có chương trình khuyến mãi đã lưu trữ nào có id giống nhau)
  • Updated (nếu chương trình khuyến mãi đã lưu trữ có cùng id)
  • Deleted (nếu chương trình khuyến mãi đã lưu trữ có cùng id và giá trị của thuộc tính action cho chương trình khuyến mãi được chỉ định trong thông báo hiện tại là "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

Một chương trình khuyến mãi của cơ sở lưu trú. Lưu ý rằng nếu action="overlay"<Promotion> là không được chỉ định, tất cả chương trình khuyến mãi cho cơ sở lưu trú đều sẽ bị xoá.

Nếu bạn cần sử dụng hơn 99 chương trình khuyến mãi, hãy liên hệ với Giám đốc Quản lý Khách hàng về Kỹ thuật (TAM) của bạn.

Promotions / HotelPromotions / Promotion / @id 1 string Giá trị nhận dạng duy nhất của chương trình khuyến mãi. Số lượng ký tự tối đa được phép là 40. Các ký tự được phép là a-z, A-Z, 0-9, _ (dấu gạch dưới), - (dấu gạch ngang) và . (dấu chấm).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Nếu được chỉ định, giá trị này phải là delete. Nếu bạn không chỉ định và không lưu trữ chương trình khuyến mãi có cùng id, thì chương trình khuyến mãi này sẽ được lưu trữ. Ngược lại, nếu bạn không chỉ định thì chương trình khuyến mãi đi kèm cùng một id được lưu trữ, thì chương trình khuyến mãi hiện có sẽ được đã cập nhật.

Nếu bạn chỉ định delete, chương trình khuyến mãi được lưu trữ với cùng id đã bị xoá. Khi sử dụng delete, không dùng thêm bất kỳ phần tử con nào trong <Promotion>. Ngoài ra, delete không được phép kết hợp với <HotelPromotions action="overlay"/>.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates Vùng chứa một hoặc nhiều phạm vi để xác định thời điểm phải đặt phòng để được áp dụng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange Phạm vi xác định thời điểm phải đặt phòng để được hưởng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date hoặc DateTime

Ngày bắt đầu hoặc ngày giờ bắt đầu (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi.

  • Ngày hoặc ngày giờ do start chỉ định phải là sớm hơn (hoặc giống với) ngày hoặc ngày giờ được chỉ định bởi end.
  • Nếu bạn không chỉ định start, phạm vi sẽ có hiệu lực không giới hạn về thời gian bắt đầu.
  • Nếu start được điền dưới dạng ngày "YYYY-MM-DD", thì giá trị này sẽ được diễn giải là ngày giờ "YYYY-MM-DDT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date hoặc DateTime

Ngày kết thúc hoặc ngày giờ (dựa trên múi giờ của cơ sở lưu trú), bao gồm, của phạm vi.

  • Ngày hoặc ngày giờ do end chỉ định phải sau hơn (hoặc giống với) ngày hoặc ngày giờ được chỉ định bởi start.
  • Nếu bạn không chỉ định end, phạm vi sẽ có hiệu lực không giới hạn về thời gian kết thúc.
  • Nếu bạn cung cấp end dưới dạng ngày "YYYY-MM-DD", được diễn giải là ngày giờ "YYYY-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu không đã chỉ định, tất cả các ngày đều được phép trong phạm vi ngày. Mỗi ký tự trong chuỗi xác định một ngày. Ví dụ: "MTWHF" chỉ định mà các ngày trong tuần được phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Cho biết khoảng thời gian phải đặt phòng so với ngày nhận phòng (dựa trên múi giờ của cơ sở lưu trú). Ví dụ: có thể đặt thời hạn đặt trước tối thiểu là 7 ngày, nhưng không quá 180 ngày, trước khi nhận phòng.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Thời gian tối thiểu trước khi nhận phòng khi phải đặt phòng để được áp dụng chương trình khuyến mãi. Nếu bạn không chỉ định giá trị này hoặc giá trị của thuộc tính này là 0, không có giá trị tối thiểu.

Các loại giá trị hợp lệ là:

  • Số nguyên: Số ngày trước khi nhận phòng ngày tháng. Ví dụ: giá trị của 30 cho biết chương trình khuyến mãi chỉ áp dụng cho các lượt đặt phòng ít nhất 30 ngày trước ngày nhận phòng.
  • Thời gian ISO 8601 (ngày, giờ và phút): Số ngày (và giờ/phút, không bắt buộc) trước ngày nhận phòng. Để ví dụ: giá trị P30D chỉ cho biết chương trình khuyến mãi áp dụng cho các yêu cầu đặt phòng ít nhất 30 ngày trước ngày nhận phòng. Giá trị P30DT6H yêu cầu đặt phòng vào hoặc trước 18:00 vào ngày thứ 30 trước ngày đến.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration Số ngày tối đa phải đặt phòng trước ngày nhận phòng để được áp dụng chương trình khuyến mãi. Nếu bạn không chỉ định giá trị này hoặc giá trị của thuộc tính này là 0, thì sẽ không có giới hạn tối đa.

Các loại giá trị hợp lệ là:

  • Số nguyên: Số ngày trước ngày nhận phòng. Ví dụ: giá trị của 30 cho biết chương trình khuyến mãi chỉ áp dụng cho các lượt đặt trước tối đa 30 ngày trước ngày nhận phòng.
  • Thời lượng ISO 8601 (ngày, giờ và phút): Số lượng ngày (và giờ/phút (không bắt buộc)) trước ngày nhận phòng. Ví dụ: Giá trị P30D cho biết chương trình khuyến mãi chỉ áp dụng cho các lượt đặt phòng tối đa 30 ngày trước ngày nhận phòng. Đáp giá trị P30DT6H yêu cầu đặt chỗ vào hoặc sau 18:00 ngày thứ 30 trước khi đến nơi.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Xác định các quy định hạn chế về giá trị tối đa mà một mức giá có thể được đặt thành sau khi áp dụng chương trình khuyến mãi.

Chương trình khuyến mãi phải luôn chỉ định <Discount> hoặc <BestDailyDiscount>. Vì vậy, để tạo một chương trình khuyến mãi chỉ áp dụng <Ceiling>, bạn có thể đặt <Discount> với percentage0.

Nếu bạn định cấu hình tính năng xếp chồng, thì nhiều chương trình khuyến mãi có <Ceiling> có thể áp dụng cho một lượt lưu trú. Mỗi chương trình khuyến mãi sẽ áp dụng chiết khấu, ngay sau đó là giá trần. Chiến lược phát hành đĩa đơn ví dụ sau đây minh hoạ cách mỗi trần đóng góp cho tính toán chương trình khuyến mãi trong ngăn xếp.

Ví dụ:

Giá cho 1 đêm lưu trú tại AmountBeforeTax 100 và có một chồng hai chương trình khuyến mãi:

  1. Chương trình khuyến mãi có loại xếp chồng base, fixed_amount là 25 và amount_per_night trần là 60
  2. Chương trình khuyến mãi có kiểu xếp chồng second, fixed_amount/25 và mức trần amount_per_night/90

Sau đây là thứ tự tính toán:

  1. Chương trình khuyến mãi base áp dụng trước tiên và chiết khấu AmountBeforeTax xuống 75, nhưng sau đó trần nhà giảm xuống thành 60.
  2. Chương trình khuyến mãi second giảm giá AmountBeforeTax từ 60 xuống 35. Mục này ở dưới trần 90 nên không áp dụng mức trần thứ hai. Giá cuối cùng là 35.

Trên thực tế, mức trần tổng thể 60 nghiêm ngặt hơn là không phù hợp vì chỉ có hiệu lực với quảng cáo riêng và không có mức trần kéo dài toàn bộ ngăn xếp khuyến mãi.

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

Số tiền tối đa mà bạn có thể đặt giá mỗi đêm sau có áp dụng chiết khấu.

Nếu bạn cũng chỉ định phần tử <Floor>, thì đây phải được đặt thành một giá trị lớn hơn hoặc bằng Thuộc tính amount_per_night trong <Floor>.

amount_per_night được áp dụng cho các khoản thuế và phí khi chúng được đưa vào giá mỗi đêm bằng AmountAfterTax, nhưng không áp dụng cho các khoản thuế và phí được chỉ định bằng TaxFeeInfo.

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

Xác định các quy định hạn chế về giá trị tối thiểu mà bạn có thể đặt mức giá sau khi áp dụng chương trình khuyến mãi.

Chương trình khuyến mãi phải luôn chỉ định <Discount> hoặc <BestDailyDiscount>. Vì vậy, để tạo một chương trình khuyến mãi chỉ áp dụng <Floor>, bạn có thể đặt <Discount> với percentage0.

Logic <Floor> vẫn áp dụng cho Chiết khấu <FreeNights>, ngay cả khi đêm miễn phí có Đã áp dụng mức chiết khấu 100%.

Nếu bạn định cấu hình tính năng xếp chồng, thì nhiều chương trình khuyến mãi có <Floor> có thể áp dụng cho một lượt lưu trú. Mỗi chương trình khuyến mãi sẽ áp dụng mức chiết khấu, ngay sau đó là giá sàn. Chiến lược phát hành đĩa đơn ví dụ sau đây minh hoạ cách mỗi tầng đóng góp cho tính toán chương trình khuyến mãi trong ngăn xếp.

Ví dụ:

Giá cho 1 đêm lưu trú tại AmountBeforeTax 100 và có một chồng hai chương trình khuyến mãi:

  1. Chương trình khuyến mãi có kiểu xếp chồng base, a fixed_amount/25 và một tầng amount_per_night/90
  2. Chương trình khuyến mãi có kiểu xếp chồng second, fixed_amount/25 và một tầng amount_per_night/60

Sau đây là thứ tự tính toán:

  1. Chương trình khuyến mãi base được áp dụng trước và giảm giá AmountBeforeTax xuống còn 75, nhưng sau đó giá sàn sẽ tăng lên 90.
  2. Chương trình khuyến mãi second chiết khấu AmountBeforeTax từ 90 lên 65. Mục này cao hơn giá sàn 60 nên không áp dụng tầng thứ hai. Giá cuối cùng là 65.

Trên thực tế, 90 là giá sàn tổng thể hẹp hơn là không phù hợp vì chỉ có hiệu lực với quảng cáo riêng và không có được áp dụng cho toàn bộ ngăn xếp khuyến mãi.

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

Số tiền tối thiểu mà bạn có thể đặt cho đơn giá theo đêm sau khi áp dụng chiết khấu.

Nếu bạn cũng chỉ định phần tử <Ceiling>, thì đây phải được đặt thành một giá trị nhỏ hơn hoặc bằng Thuộc tính amount_per_night trong <Ceiling>.

amount_per_night được áp dụng cho thuế và phí khi được bao gồm trong giá mỗi đêm bằng cách sử dụng AmountAfterTax, nhưng chứ không phải những mã được chỉ định bằng TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định thời điểm phải nhận phòng xảy ra khi có áp dụng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Phạm vi ngày xác định thời điểm phải nhận phòng để được hưởng chương trình khuyến mãi sẽ được áp dụng. Không cần có phần tử này nếu bạn đang xóa một hoặc nhiều phần tử chương trình khuyến mãi.

Định dạng YearlessDate cũng được hỗ trợ.

  • Nếu một trong số start hoặc end là không có năm ngày, cả hai đều phải được điền dưới dạng ngày không có năm.
  • Phạm vi ngày không theo năm không được bao quanh năm mới. Thay vào đó, thể hiện phạm vi dưới dạng hai phạm vi ngày liền nhau. Ví dụ: {"12-29", "01-05"} có thể được biểu thị dưới dạng {"12-29", "12-31"}{"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú), tính cả ngày phạm vi ngày. Ngày này phải trước hoặc trùng với ngày end. Nếu bạn không chỉ định start thì ngày này phạm vi hoàn toàn không giới hạn về ngày bắt đầu.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) kể cả ngày phạm vi ngày. Ngày này phải trùng hoặc sau ngày start ngày tháng. Nếu bạn không xác định end, phạm vi ngày sẽ không có giới hạn vì không có ngày kết thúc.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày trong tuần đều được phép sử dụng trong phạm vi ngày. Một ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" chỉ định mà các ngày trong tuần được phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định thời điểm phải trả phòng để được hưởng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Phạm vi ngày xác định thời điểm phải trả phòng để được hưởng chương trình khuyến mãi sẽ được áp dụng. Không bắt buộc phải có phần tử này nếu bạn đang đang xoá một hoặc nhiều chương trình khuyến mãi.

Định dạng YearlessDate cũng được hỗ trợ.

  • Nếu một trong các giá trị start hoặc end là không có năm cả ngày, cả hai đều phải được điền dưới dạng ngày không có năm.
  • Phạm vi ngày không có năm không được bao gồm năm mới. Thay vào đó, thể hiện phạm vi dưới dạng hai phạm vi ngày liền nhau. Ví dụ: {"12-29", "01-05"} có thể được biểu thị dưới dạng {"12-29", "12-31"}{"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú), tính cả ngày phạm vi ngày. Ngày này phải trước hoặc giống với ngày Ngày end. Nếu bạn không chỉ định start thì ngày này phạm vi hoàn toàn không giới hạn về ngày bắt đầu.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) kể cả ngày phạm vi ngày. Ngày này phải trùng hoặc sau ngày start ngày tháng. Nếu bạn không xác định end, phạm vi ngày sẽ không có giới hạn vì không có ngày kết thúc.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày trong tuần đều được phép sử dụng trong phạm vi ngày. Một ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" chỉ định mà các ngày trong tuần được phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Vùng chứa để liệt kê những thiết bị của người dùng đủ điều kiện kích hoạt quảng cáo. Nếu bạn chỉ định thì chỉ những người dùng đủ điều kiện trên các thiết bị được liệt kê đều được hưởng mức giá chiết khấu. Nếu không được chỉ định, người dùng đủ điều kiện trên bất kỳ được hưởng mức giá chiết khấu.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Xác định một loại thiết bị của người dùng đủ điều kiện tham gia chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Một loại thiết bị. Giá trị phải là desktop, tablet hoặc mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Chính xác một trong số Discount hoặc Bạn phải chỉ định BestDailyDiscount.

Xác định mức chiết khấu sẽ áp dụng cho chương trình khuyến mãi này.

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

Đúng một trong percentage, fixed_amount, fixed_amount_per_night fixed_price hoặc fixed_price_per_night là là bắt buộc.

Một giá trị thập phân từ 0 đến 100 để xác định tỷ lệ chiết khấu theo phần trăm. Giá trị này được áp dụng cho AmountAfterTax (hoặc AmountBeforeTax nếu AmountAfterTax không đã chỉ định).

Ví dụ:

  • Nếu AmountAfterTax là 100 và percentage là 20, sau đó

    tỷ lệ khuyến mãi = AmountAfterTax * (1 – tỷ lệ chiết khấu)

    80 = 100 * (1 - 0,2)

  • Nếu AmountBeforeTax là 100, percentage là 20 và TaxFeeInfo chỉ định mức thuế là 10, sau đó

    tỷ lệ khuyến mãi = AmountBeforeTax * (1 – tỷ lệ chiết khấu) + thuế

    90 = 100 * (1 - 0,2) + 10

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

Đúng một trong percentage, fixed_amount, fixed_amount_per_night fixed_price hoặc fixed_price_per_night là là bắt buộc.

Một số tiền cố định sẽ bị trừ vào tổng của Mức giá mỗi đêm AmountAfterTax (hoặc tổng của AmountBeforeTax mức giá mỗi đêm nếu AmountAfterTax chưa được chỉ định). Giả định là theo cùng đơn vị tiền tệ với giá mỗi đêm. Nếu giá trị này lớn hơn tổng của giá mỗi đêm, thì giá trị thu được bằng 0.

Ví dụ:

  • Nếu chúng ta định giá 1 đêm ở, trong đó AmountBeforeTax là 90, AmountAfterTax là 100 và fixed_amount là 20, thì

    tỷ lệ khuyến mãi = AmountAfterTax – cố định chiết khấu

    80 = 100 - 20

  • Nếu chúng ta định giá 1 đêm ở, trong đó AmountBeforeTax là 100, fixed_amount là 20 và TaxFeeInfo cho biết thuế suất là 8%, thì

    tỷ lệ khuyến mãi = (AmountBeforeTax – mức chiết khấu cố định) * (1 + thuế suất)

    86,40 = (100 - 20) * 1,08

  • Nếu chúng ta định giá 1 đêm ở, trong đó AmountBeforeTax là 50, fixed_amount là 60 và TaxFeeInfo cho biết thuế suất là 10, thì

    tỷ lệ khuyến mãi = (AmountBeforeTax – cố định chiết khấu) * thuế

    10 = 0 + 10

  • Nếu chúng ta định giá 3 đêm ở, trong đó AmountAfterTax là 100, 110 và 120; còn fixed_amount là 150, thì

    tỷ lệ khuyến mãi = tổng(AmountAfterTax) – (cố định chiết khấu)

    180 = (100 + 110 + 120) - 150

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

Đúng một trong percentage, fixed_amount, fixed_amount_per_night fixed_price hoặc fixed_price_per_night là là bắt buộc.

Một khoản chiết khấu cố định được áp dụng cho từng AmountAfterTax giá mỗi đêm (hoặc N rẻ nhất nếu applied_nights được chỉ định). Nếu AmountAfterTax chưa được chỉ định, mà sẽ áp dụng cho AmountBeforeTax. Giả định là theo cùng đơn vị tiền tệ với giá mỗi đêm. Nếu fixed_amount_per_night lớn hơn giá mỗi đêm thì mức giá mỗi đêm đó đã giảm xuống còn 0 – giá trị không được khiến giá mỗi đêm thành số âm.

Ví dụ:

  • Nếu chúng ta định giá cho 3 đêm ở, trong đó giá trị của AmountAfterTax là 100, 110 và 120; còn fixed_amount_per_night là 10, thì

    tỷ lệ khuyến mãi = tổng(AmountBeforeTax – số tiền cố định được chiết khấu)

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

  • Nếu chúng tôi định giá cho 3 đêm lưu trú tại nơi Các giá trị của AmountAfterTax là 10, 50 và 100; và fixed_amount_per_night là 20, sau đó

    tỷ lệ khuyến mãi = tổng(AmountAfterTax – số tiền cố định chiết khấu)

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

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

Đúng một trong percentage, fixed_amount, fixed_amount_per_night fixed_price hoặc fixed_price_per_night là là bắt buộc.

Nếu bạn chỉ định mức giá mỗi đêm là AmountAfterTax, thì giá trị này đặt giá cho lượt lưu trú (bao gồm cả thuế và phí) cho giá trị đã chỉ định. Nếu bạn chỉ định AmountBeforeTax, thì cho dù AmountAfterTax có được chỉ định hay không, thao tác này sẽ đặt giá trị giá trước thuế cho lượt lưu trú vào giá trị đã chỉ định. Giá trị này được giả định là có cùng đơn vị tiền tệ với đơn giá theo đêm.

Nếu AmountAfterTax dùng để phản ánh phần trăm thuế, sau đó đặt mức giá cố định cho AmountBeforeTax có thể khiến thuế và phí không chính xác. Nhìn chung, bạn nên sử dụng TaxFeeInfo để chỉ định thuế và phí của một cơ sở lưu trú.

Ví dụ:

  • Nếu chúng tôi định giá 1 đêm ở tại nơi AmountBeforeTax là 90, AmountAfterTax là 100 và fixed_price là 80, thì tỷ lệ khuyến mãi là 80.
  • Nếu chúng tôi định giá 1 đêm ở tại nơi AmountBeforeTax là 100, fixed_amount là 80 và TaxFeeInfo cho biết thuế suất là 8%, sau đó

    tỷ lệ khuyến mãi = giá cố định * (1 + thuế suất)

    86,40 = 80 * 1,08

  • Nếu chúng tôi định giá cho 3 đêm lưu trú tại nơi Các giá trị của AmountAfterTax là 100, 110 và 120; và fixed_amount là 300, sau đó

    tỷ lệ khuyến mãi = 300

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

Bạn phải dùng chính xác một trong các tham số percentage, fixed_amount, fixed_amount_per_night, fixed_price hoặc fixed_price_per_night.

Nếu bạn chỉ định mức giá mỗi đêm là AmountAfterTax, thì giá trị này đặt giá cho mỗi đêm lưu trú (bao gồm cả thuế và phí) cho giá trị đã chỉ định. Nếu bạn chỉ định AmountBeforeTax, thì cho dù AmountAfterTax có được chỉ định hay không, thao tác này sẽ đặt giá trị giá trước thuế cho mỗi đêm lưu trú bằng giá trị đã chỉ định. Giá trị này được giả định là có cùng đơn vị tiền tệ với đơn giá theo đêm.

Nếu AmountAfterTax dùng để phản ánh phần trăm thuế, sau đó đặt mức giá cố định cho AmountBeforeTax có thể khiến thuế và phí không chính xác. Nhìn chung, bạn nên sử dụng TaxFeeInfo để chỉ định thuế và phí của một cơ sở lưu trú.

Nếu bạn chỉ định applied_nights, thì giá mới sẽ được áp dụng cho N đêm rẻ nhất.

Ví dụ:

  • Nếu chúng tôi định giá 2 đêm ở tại nơi Các giá trị AmountBeforeTax là 90, 90; Các giá trị AmountAfterTax là 100, 100; và fixed_price là 80, thì tỷ lệ khuyến mãi là 80 + 80 = 160.
  • Nếu chúng tôi định giá 2 đêm ở tại nơi AmountBeforeTax là 100; 100; fixed_amount là 80 và TaxFeeInfo cho biết mức thuế là 8%, sau đó là tỷ lệ khuyến mãi là (80 + 80) * 1,08 = 172,8.
  • Nếu chúng tôi định giá cho 3 đêm lưu trú tại nơi Các giá trị của AmountAfterTax là 100, 110 và 120; và fixed_amount là 110, thì tỷ lệ khuyến mãi sẽ là 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Chỉ nên sử dụng thuộc tính này với percentage hoặc fixed_amount_per_night.

Số đêm được áp dụng khoản chiết khấu, bắt đầu bằng loại đắt nhất. Phải là một số nguyên từ 1 đến 99. Nếu không xác định số đêm, chiết khấu sẽ được áp dụng cho tất cả các đêm.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Cho biết mức chiết khấu cho một số đêm lưu trú trong thời gian lưu trú tối thiểu đã được đáp ứng. Các thuộc tính trên phần tử Discount mẹ không được phép nếu phần tử này được sử dụng.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Số đêm bắt buộc để áp dụng chiết khấu. Một áp dụng chiết khấu cho một phân đoạn số đêm lưu trú riêng biệt.

Ví dụ: đối với thời gian lưu trú 10 đêm tại nơi có stay_nights 4 (và repeats là true), sau đó có 2 đêm ở lại các phân đoạn: các đêm đầu tiên đến đêm thứ 4 và các đêm thứ 5 đến các đêm thứ 8; thời gian Đêm thứ 9 và thứ 10 không nằm trong phân đoạn đêm lưu trú.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Số đêm chiết khấu trong mỗi phân đoạn số đêm lưu trú.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float Mức chiết khấu được áp dụng cho các đêm có chiết khấu. Nếu giá trị này là 50, sau đó, mỗi đêm đã chọn được giảm giá 50%.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Phải là cheapest hoặc last. Nếu last, thì số đêm vào cuối phân đoạn lưu trú đêm được chiết khấu. Nếu là cheapest, thì các đêm rẻ nhất trong khoảng thời gian lưu trú sẽ được chiết khấu.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Khoản chiết khấu có thể được áp dụng cho nhiều đêm lưu trú hay không phân khúc. Nếu là false, thì chỉ có phân đoạn số đêm lưu trú tại thời điểm bắt đầu hành trình là được giảm giá. Nếu là true, thì mọi phân đoạn số đêm lưu trú đều được chiết khấu.

Ví dụ: nếu stay_nights là 4 và hành trình là 10 đêm, sau đó, nếu repeatstrue thì 2 các phân khúc được giảm giá (đêm 1-4 và đêm 5-8); nhưng, nếu repeatsfalse, sau đó chỉ có 1 phân đoạn được giảm giá (từ đêm 1 đến đêm 4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Chỉ định một thứ hạng cho chương trình khuyến mãi này và đưa chương trình vào danh sách lựa chọn theo thứ hạng, trong đó chỉ chương trình khuyến mãi có thứ hạng thấp nhất mới được chọn để áp dụng. Giá trị phải nằm trong khoảng từ 1 đến 99. Nếu nhiều chương trình khuyến mãi có cùng một chương trình hạng, sau đó một sẽ được chọn và áp dụng tuỳ ý.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Chính xác một trong số Discount hoặc Bạn phải chỉ định BestDailyDiscount.

Chỉ định một Chiết khấu hằng ngày có thể được áp dụng cho một đêm lưu trú. Nội dung trong trái ngược với Discount, áp dụng chiết khấu cho toàn bộ ở lại.

Mỗi cơ sở lưu trú có thể có một nhóm chương trình khuyến mãi duy nhất được xem là "hiệu quả nhất hằng ngày". Điều này có nghĩa là đối với mỗi đêm lưu trú, đĩa đơn "tốt nhất hằng ngày" quảng cáo đủ điều kiện và mang lại kết quả tốt nhất chiết khấu cho đêm đó sẽ được chọn và có thể được áp dụng.

Stacking có thể được chỉ định bằng BestDailyDiscount. Bạn phải đặt giá trị này là: base hoặc none. "Tốt nhất hằng ngày" chiết khấu mang lại mức chiết khấu cao nhất cho mỗi đêm được kết hợp và xử lý như chiết khấu cho một lượt lưu trú (tức là Discount) mà vẫn tuân thủ kiểu xếp chồng đã định cấu hình. Khoản chiết khấu kết hợp này được so sánh và có thể kết hợp với những loại <Discount> đủ điều kiện khác khuyến mãi để tìm ra một hoặc nhiều kiểu kết hợp . Kết hợp BestDailyDiscount hoặc Discount đơn lẻ, tuỳ theo mức nào mang lại mức giá thấp hơn, là được chọn và áp dụng cho kiểu xếp chồng base.

Bạn có thể chỉ định StayDates bằng loại chiết khấu này, nhưng phải đặt application thành overlap

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

Đúng một trong percentage, Bạn phải nhập fixed_amount hoặc fixed_price.

Giá trị thập phân từ 0 đến 100 xác định tỷ lệ chiết khấu theo phần trăm. Giá trị này được áp dụng cho AmountAfterTax (hoặc AmountBeforeTax nếu bạn không chỉ định AmountAfterTax).

Ví dụ:

  • Nếu AmountAfterTax cho một đêm lưu trú là 100 và percentage là 20, thì

    tỷ lệ khuyến mãi = AmountAfterTax * (1 - tỷ lệ phần trăm chiết khấu)

    80 = 100 * (1 - 0,2)

  • Nếu AmountBeforeTax đối với thời gian lưu trú là 100, percentage là 20 và TaxFeeInfo chỉ định mức thuế là 10, sau đó

    tỷ lệ khuyến mãi = AmountBeforeTax * (1 - tỷ lệ phần trăm chiết khấu) + thuế

    90 = 100 * (1 - 0,2) + 10

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

Đúng một trong percentage, Bạn phải nhập fixed_amount hoặc fixed_price.

Số tiền cố định bị trừ vào một đơn vị Mức giá mỗi đêm AmountAfterTax (hoặc Mức giá mỗi đêm AmountBeforeTax nếu AmountAfterTax chưa được chỉ định). Giả định là theo cùng đơn vị tiền tệ với giá mỗi đêm. Nếu giá trị này lớn hơn tổng của giá mỗi đêm, thì giá trị thu được bằng 0.

Ví dụ:

  • Nếu AmountBeforeTax cho một đêm là 90, AmountAfterTax là 100 và fixed_amount là 20, sau đó

    tỷ lệ khuyến mãi = AmountAfterTax – cố định chiết khấu

    80 = 100 - 20

  • Nếu AmountBeforeTax cho một đêm là 100, fixed_amount là 20 và TaxFeeInfo cho biết mức thuế là 8%, sau đó là

    tỷ lệ khuyến mãi = (AmountBeforeTax – mức chiết khấu cố định) * (1 + thuế suất)

    86,40 = (100 - 20) * 1,08

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

Đúng một trong percentage, Bạn phải nhập fixed_amount hoặc fixed_price.

Nếu bạn chỉ định mức giá mỗi đêm là AmountAfterTax, thì giá trị này đặt giá cho đêm lưu trú (bao gồm cả thuế và phí) cho giá trị đã chỉ định. Nếu bạn chỉ định AmountBeforeTax, thì cho dù AmountAfterTax có được chỉ định hay không, thao tác này sẽ đặt giá trị giá trước thuế cho lượt lưu trú vào giá trị đã chỉ định. Giả định là theo cùng đơn vị tiền tệ với giá mỗi đêm.

Ví dụ:

  • Nếu AmountBeforeTax cho một đêm là 90, AmountAfterTax là 100 và fixed_price là 80, thì giá khuyến mãi là 80.
  • Nếu AmountBeforeTax cho một đêm là 100, fixed_amount là 80 và TaxFeeInfo cho biết thuế suất là 8%, thì

    tỷ lệ khuyến mãi = giá cố định * (1 + thuế theo tỷ lệ phần trăm)

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Đặt quy định hạn chế về số lượng phòng phải còn trống để được hưởng chương trình khuyến mãi. Chiết khấu chỉ được áp dụng cho đêm đáp ứng quy tắc ràng buộc đó. Không được phép với Chiết khấu fixed_amount. Xin lưu ý rằng số lượt cài đặt phòng được chỉ định bằng một trong hai OTA_HotelInvCountNotifRQ (InvCount) hoặc OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer Số lượng phòng còn trống tối thiểu phải được dành ra cho chương trình khuyến mãi sẽ được áp dụng cho đơn giá theo đêm. Nếu bạn không xác định thì sẽ không có tối thiểu.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer Số lượng phòng tối đa còn trống cho chương trình khuyến mãi để được áp dụng cho mức giá mỗi đêm. Nếu bạn không xác định thì sẽ không có tối đa.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Xác định giới hạn thời gian lưu trú mà chương trình khuyến mãi này có thể áp dụng áp dụng. Chương trình khuyến mãi không được áp dụng nếu thời gian lưu trú nằm ngoài thời gian giới hạn tối thiểu và tối đa.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer Số đêm tối thiểu được phép trong thời gian lưu trú để được hưởng chương trình khuyến mãi áp dụng. Nếu bạn không xác định giá trị này, thì sẽ không có giới hạn tối thiểu.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer Số đêm tối đa trong thời gian lưu trú được phép thực hiện chương trình khuyến mãi áp dụng. Nếu bạn không xác định giá trị này, thì sẽ không có số đêm tối đa.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Vùng chứa cho quy tắc giá dành cho thành viên kích hoạt một biện pháp xử lý giao diện người dùng cụ thể cho khoản chiết khấu được liên kết.

Bạn không được chỉ định phần tử này trừ phi cũng chỉ định <Discount>.

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

Mã của quy tắc giá liên quan đến chương trình thành viên.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Xác định tổng số tiền tối thiểu của các giá phòng theo ngày (dùng AmountBeforeTax hoặc AmountAfterTax tuỳ giá trị nào lớn hơn) mà bạn phải đạt cao hơn để được hưởng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer Bạn phải vượt quá giá trị này để được áp dụng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Xác định các quy định hạn chế về số người lưu trú của chương trình khuyến mãi này áp dụng. Chương trình khuyến mãi không áp dụng khi số người lưu trú nằm ngoài phạm vi giới hạn tối thiểu và tối đa.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer Số người lưu trú do người dùng chỉ định ít nhất phải là giá trị này để mức chiết khấu sẽ được áp dụng.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Số người lưu trú do người dùng chỉ định phải tối đa là giá trị này để áp dụng chiết khấu.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Vùng chứa danh sách các gói giá được áp dụng chương trình khuyến mãi. Nếu bạn không xác định <RatePlans>, thì chương trình khuyến mãi sẽ áp dụng cho mọi gói giá.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Chỉ định một gói giá. Gói giá được xác định bằng cách kết hợp các giá trị sau: gói, giá và tình trạng còn phòng, như được xác định trong Giao dịch (Dữ liệu của cơ sở lưu trú), OTA_HotelRateAmountNotifRQ và OTA_HotelAvailNotifRQ thông báo và được xác định bằng PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string Giá trị nhận dạng riêng biệt của gói giá. Giá trị này liên kết với Giá trị PackageID trong <PackageData> trong thông báo Giao dịch (Dữ liệu của cơ sở lưu trú) và trong Thuộc tính RatePlanCode trong <StatusApplicationControl> ở cả hai <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> tin nhắn. Số lượng ký tự tối đa được phép là 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Vùng chứa danh sách các loại phòng được áp dụng chương trình khuyến mãi. Chương trình khuyến mãi sẽ được áp dụng cho mỗi <RoomType> đã chỉ định. Nếu bạn không chỉ định <RoomTypes>, chương trình khuyến mãi áp dụng cho tất cả các phòng.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Xác định một loại phòng. Loại phòng được xác định trong một Phần tử <RoomData> trong một Thông báo Giao dịch (Dữ liệu của cơ sở lưu trú) và là được tham chiếu bằng cách sử dụng giá trị <RoomID>. (Đó là Giá trị <RoomID> cũng được tham chiếu bởi Thuộc tính InvTypeCode trong OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string Giá trị nhận dạng duy nhất của quỹ phòng (loại phòng). Giá trị này tương ứng với <RoomID> trong thông báo Giao dịch (Dữ liệu của cơ sở lưu trú). Số lượng ký tự tối đa được phép là 50.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Xác định cách kết hợp các chương trình khuyến mãi. Nếu không xác định, "type" sẽ được giả định là base.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Bạn có thể áp dụng nhiều chương trình khuyến mãi cho một giá duy nhất tuỳ thuộc vào cài đặt này:

  • any: Có thể kết hợp với mọi chương trình khuyến mãi khác (ngoại trừ none), nhưng thứ tự áp dụng các chương trình khuyến mãi sẽ không được đảm bảo.
  • base: Chương trình khuyến mãi base đủ điều kiện tốt nhất là được chọn và áp dụng đầu tiên, trước các chương trình khuyến mãi khác. Đây là có tên trước đây là base_only.
  • second: Chương trình khuyến mãi second đủ điều kiện tốt nhất sẽ được chọn và áp dụng sau chương trình khuyến mãi base (nếu có) và trước chương trình khuyến mãi any.
  • none: Không thể kết hợp với các giá trị khác chương trình khuyến mãi.

Trong số các cách kết hợp được chấp nhận, tập hợp các chương trình khuyến mãi tạo ra mức chiết khấu lớn nhất sẽ được áp dụng cho đơn giá.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định cách áp dụng chương trình khuyến mãi, chẳng hạn như để phù hợp với các mức chiết khấu theo mùa.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Mô tả cách áp dụng chương trình khuyến mãi.

Các giá trị hợp lệ là:

  • all: Áp dụng chương trình khuyến mãi cho mỗi đêm trong hành trình nếu tất cả các ngày trong hành trình đó trùng với các ngày trong thời gian lưu trú.
  • any: Áp dụng chương trình khuyến mãi cho tất cả các đêm ở hành trình nếu có bất kỳ ngày nào trong hành trình đó trùng lặp với ngày trong phạm vi ngày lưu trú.
  • overlap: Chỉ áp dụng chương trình khuyến mãi cho các đêm trong hành trình trùng với một ngày trong thời gian lưu trú.

Thuộc tính này phải luôn được chỉ định.

  • Nếu <Discount> chỉ định percentageapplication được đặt thành all hoặc any, mức chiết khấu được áp dụng theo tỷ lệ phần trăm của lượt lưu trú trọn gói.
  • Nếu <Discount> chỉ định percentageapplication được đặt là overlap, thì mức chiết khấu sẽ được áp dụng theo tỷ lệ phần trăm của đơn giá mỗi đêm đối với các đêm trùng.
  • <Discount> chỉ định fixed_amountapplication được đặt thành overlap là kết hợp không hợp lệ.
  • <FreeNights> hỗ trợ tất cả application giá trị. Xin lưu ý rằng đối với overlap, chỉ được áp dụng chiết khấu với các đêm lưu trú trùng lặp các yêu cầu liên quan.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Phạm vi ngày xác định các ngày mà chương trình khuyến mãi sẽ được áp dụng.

Định dạng YearlessDate cũng được hỗ trợ.

  • Nếu một trong số start hoặc end là không có năm ngày, cả hai đều phải được điền dưới dạng ngày không có năm.
  • Phạm vi ngày không theo năm không được bao quanh năm mới. Thay vào đó, thể hiện phạm vi dưới dạng hai phạm vi ngày liền nhau. Ví dụ: {"12-29", "01-05"} có thể được biểu thị dưới dạng {"12-29", "12-31"}{"01-01", "01-05"}.

Nếu bạn muốn đặt phạm vi StayDates thành cho phép chương trình khuyến mãi vào các ngày cụ thể trong tuần, bạn nên đặt giá trị Ngày start là ngày hiện tại và không có end nên chương trình khuyến mãi không hết hạn.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú), tính cả ngày phạm vi ngày. Ngày này phải trước hoặc trùng với ngày end. Nếu bạn không chỉ định start thì ngày này phạm vi hoàn toàn không giới hạn về ngày bắt đầu.

Bạn nên chỉ định giá trị start nếu Bạn chưa cung cấp giá trị end.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate Ngày kết thúc (sử dụng múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trùng hoặc sau ngày Ngày start. Nếu bạn không xác định end, phạm vi ngày sẽ không có giới hạn kể từ ngày start trở đi.

Bạn nên chỉ định giá trị end nếu Bạn chưa cung cấp giá trị start.

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

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày trong tuần đều được phép sử dụng trong phạm vi ngày. Mỗi ký tự trong chuỗi xác định một ngày. Ví dụ: "MTWHF" chỉ định mà các ngày trong tuần được phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Vùng chứa để liệt kê vị trí của người dùng (quốc gia) đủ điều kiện cho chương trình khuyến mãi. Nếu được chỉ định thì chỉ những người dùng đủ điều kiện trong danh sách quốc gia có mức giá chiết khấu. Nếu không được chỉ định, quảng cáo đủ điều kiện người dùng ở mọi quốc gia đều được hưởng mức giá chiết khấu.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum Loại thông số UserCountry.

Các giá trị hợp lệ là includeexclude.

Nếu UserCountry type được đặt là include, chương trình khuyến mãi áp dụng cho người dùng từ quốc gia trong danh sách.

Nếu type UserCountries là exclude, thì chương trình khuyến mãi sẽ áp dụng cho người dùng ở bên ngoài các quốc gia được liệt kê.

Nếu bạn không đặt UserCountries type, thì thuộc tính này sẽ được coi là include và chương trình khuyến mãi sẽ được áp dụng cho người dùng ở các quốc gia được liệt kê.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Xác định quốc gia nơi người dùng đủ điều kiện hưởng chương trình khuyến mãi.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string Quốc gia theo CLDR , chẳng hạn như DE hoặc FR. Lưu ý rằng, đối với một số quốc gia, mã quốc gia CLDR không giống với mã ISO gồm 2 chữ cái . Ngoài ra, mã vùng CLDR không được hỗ trợ.

Ví dụ

Mỗi cơ sở lưu trú chỉ được có tối đa 500 chương trình khuyến mãi. Tham khảo phần "Xoá một quảng cáo" ví dụ về cách xoá chương trình khuyến mãi khỏi một cơ sở lưu trú.

Thông báo cơ bản

Ví dụ sau đây trình bày một thông báo Promotions cơ bản:

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


Tình trạng quỹ phòng

Ví dụ sau đây trình bày cách tạo chiết khấu nếu khoản tiền vượt quá kho hàng gần ngày đến:

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


Xoá một chương trình khuyến mãi

Ví dụ sau đây trình bày cách xoá một chương trình khuyến mãi của cơ sở lưu trú:

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

Xoá tất cả chiến dịch quảng bá

Ví dụ sau đây trình bày cách xoá tất cả chương trình khuyến mãi của một cơ sở lưu trú:

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



Xếp chồng tất cả chương trình khuyến mãi

Ví dụ sau đây trình bày cách phủ <HotelPromotions> cho một tài sản có một hoặc nhiều chương trình khuyến mãi mới. Khi action="overlay", tất cả được lưu trữ chương trình khuyến mãi sẽ bị xoá trước khi lưu trữ chương trình khuyến mãi được chỉ định trong thông báo hiện tại:

<?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 kiểu xếp chồng

Ví dụ sau đây cho thấy trường hợp trong đó ba chương trình khuyến mãi khác nhau sẽ là đã áp dụng (base, second, any). Lưu ý rằng chương trình khuyến mãi none sẽ không vì các chương trình khuyến mãi khác có mức chiết khấu tốt hơn. Nếu giá trị gốc giá là 100.000 đồng, giá chiết khấu là 72.900 đồng.

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


Loại xếp chồng không có

Ví dụ sau đây cho thấy trường hợp sử dụng chương trình khuyến mãi none vì việc kết hợp các chương trình khuyến mãi khác sẽ cung cấp mức chiết khấu nhỏ hơn. Nếu giá gốc là 100.000 đồng, giá chiết khấu là 750.000 đồng.

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



Giới hạn thời lượng đặt trước

Ví dụ sau đây cho thấy một trường hợp trong đó BookingWindow phần tử được sử dụng với giới hạn bắt đầu và giới hạn kết thúc được xác định theo Thời lượng ISO 8601 loại. Quy định hạn chế về thời hạn đặt trước này yêu cầu bạn phải đặt chỗ vào hoặc trước 18:00 ngày trước khi đến và vào hoặc sau 12:00 vào ngày thứ 2 trước khi đến nơi.

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


Giới hạn ngày đặt phòng theo ngày giờ

Ví dụ sau đây cho thấy một trường hợp trong đó BookingDates Phần tử được sử dụng cùng với các thuộc tính startend như Loại DateTime. Bạn phải đặt trước theo quy định hạn chế này về ngày đặt phòng từ 06:30 ngày 01/07/2020 đến 18:45 ngày 02/07/2020.

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


Phạm vi ngày không theo năm

Ví dụ sau đây cho thấy một trường hợp trong đó CheckInDates phần tử chứa DateRangesstart và Trường end không có năm. Trong ví dụ này, chương trình khuyến mãi sẽ được áp dụng để nhận phòng trong khoảng thời gian từ ngày 29/12 đến ngày 2/1, bất kể năm nào. Không theo năm các phạm vi ngày vượt qua ranh giới năm mới không hợp lệ, do đó, Daterange được biểu thị dưới dạng hai phạm vi ngày liền nhau.

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



Giảm giá FreeNights

Ví dụ sau đây giảm giá 50% cho 2 đêm đối với mỗi 4 đêm lưu trú trong phạm vi ngày đặt phòng đã chỉ định. Đối với hành trình 10 đêm, tổng cộng giảm giá 50% cho bốn đêm.

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

Ví dụ tiếp theo giảm giá 50% một đêm cho mỗi ba đêm ở trong phạm vi ngày lưu trú đã chỉ định. Chỉ tính các đêm lưu trú bị trùng lặp đủ điều kiện hưởng chiết khấu. Đối với hành trình có ngày nhận phòng sau đây vào ngày 1 tháng 1 năm 2022 và trả phòng vào ngày 7 tháng 1 năm 2022, các đêm lưu trú đủ điều kiện và thì các khoản chiết khấu sẽ được áp dụng như sau.

  • 01-01-2022 (ở lại)
  • 2022-01-02 (ở lại)
  • 2022-01-03
  • 04/01/2022 (đã chiết khấu)
  • 5/1/2022 (ở lại)
  • 06-01-2022 (ở lại)
<?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>


Lựa chọn theo thứ hạng

Ví dụ sau đây đưa ra hai chương trình chiết khấu, một là giảm giá 20% và một là để được giảm giá 15%. Trong quá trình đánh giá, bạn chỉ được áp dụng mức chiết khấu 15% vì nó có thứ hạng thấp hơn.

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

Ví dụ sau đây chiết khấu cho thời gian lưu trú hai đêm bằng cách áp dụng BestDailyDiscount được xếp chồng cùng với một 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>

Hãy xem xét trường hợp lưu trú hai đêm từ ngày 30 tháng 4 năm 2023 đến ngày 2 tháng 5 năm 2023. Để tính toán, trước tiên, hệ thống sẽ tìm ra tổ hợp chiết khấu hằng ngày tốt nhất mang lại mức chiết khấu sâu nhất.

Đối với đêm đầu tiên, cụm từ "chung" chương trình khuyến mãi là số tiền duy nhất đủ điều kiện có mức chiết khấu cố định là 20.

Đối với đêm thứ hai, "có thể" chương trình khuyến mãi cung cấp chiết khấu sâu hơn so với từ "chung" . Vì vậy, khi "có thể" được chọn mức chiết khấu cố định số tiền là 50.

Sau đó, đối với thời gian lưu trú, "đại lễ" chương trình khuyến mãi giảm giá xuống còn 5 chương trình mỗi đêm, hoặc Tổng cộng 10. Bạn có thể kết hợp các khoản chiết khấu hằng ngày tốt nhất vì "fiesta" có kiểu xếp chồng được đặt thành any. Nếu đã đặt lên base, thì chỉ kết hợp các khoản chiết khấu hằng ngày tốt nhất hoặc "đại hội" có áp dụng chiết khấu. Xem mô tả về Stacking để biết thêm thông tin.

"Tổng thể, giá của lượt lưu trú nhận được một số tiền cố định là 20 + 50 + 10 = 80 .

Phản hồi

Cú pháp

Thông báo PromotionsResponse sử dụng cú pháp sau:

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

Phần tử và thuộc tính

Thông báo PromotionsResponse có các phần tử và thuộc tính như sau:

Phần tử / @Thuộc tính Số lần xuất hiện Loại Mô tả
PromotionsResponse 1 Complex element Phần tử gốc cho biết ứng dụng nhận được thành công hay gặp vấn đề Tin nhắn yêu cầu chương trình khuyến mãi.
PromotionsResponse / @timestamp 1 DateTime Ngày và giờ tạo thông báo này.
PromotionsResponse / @id 1 string Giá trị nhận dạng duy nhất lấy từ thông báo Chương trình khuyến mãi được liên kết.
PromotionsResponse / @partner 1 string Tài khoản đối tác dùng cho thư này.
PromotionsResponse / Success 0..1 Success Cho biết rằng thông báo Chương trình khuyến mãi đã được xử lý thành công mà không có cảnh báo, lỗi hoặc hỏng hóc.

Mỗi thông báo có <Success> hoặc <Issues>.

PromotionsResponse / Issues 0..1 Issues Vùng chứa một hoặc nhiều vấn đề gặp phải trong khi xử lý Thông báo về chương trình khuyến mãi.

<Success> hoặc <Issues> là xuất hiện trong mỗi thông điệp.

PromotionsResponse / Issues / Issue 1..n Issue Nội dung mô tả về cảnh báo, lỗi hoặc thất bại xảy ra trong khi đang xử lý thông báo Chương trình khuyến mãi. Bạn có thể xem thông tin chi tiết về các vấn đề này inch Thông báo lỗi về trạng thái của nguồn cấp dữ liệu.
PromotionsResponse / Issues / Issue / @code 1 integer Giá trị nhận dạng của vấn đề.
PromotionsResponse / Issues / Issue / @status 1 enum

Loại vấn đề mà bạn gặp phải.

Các giá trị hợp lệ là warning, error, và failure.

Ví dụ

Thành công

Dưới đây là phản hồi cho thông báo Chương trình khuyến mãi được xử lý thành công.

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

Vấn đề

Dưới đây là phản hồi cho một thông báo Chương trình khuyến mãi không được xử lý do .

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