תוכן מקודם

סקירה

ה-API הזה מאפשר לציין הנחות אפשריות. מתוך המבצעים שצוינו, Google מחילה את המבצע או קבוצת המבצעים שעומדים בדרישות שהובילו למחיר הנמוך ביותר. אם אתם מחפשים API שתומך בהתאמות שרירותיות של תעריפים, שיכולות להעלות או להוריד את המחיר כשהתנאים מתקיימים, מומלץ להשתמש ב-Rate Modifys API. שימו לב שאם שני ממשקי ה-API קיימים, השינויים בתעריפים יחולו לפני מבצעים.

בקשות

תחביר

ההודעה Promotions מבוססת על התחביר הבא:

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

רכיבים ומאפיינים

הודעת המבצעים כוללת את הרכיבים והמאפיינים הבאים:

רכיב / @Attribute אירועים סוג תיאור
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 מאגר בטווח אחד או יותר שמגדיר מתי צריך להתבצע הזמנה כדי שהמבצע יחול.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange טווח שמציין מתי מתבצעת ההזמנה כדי שהמבצע יחול.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date או DateTime

תאריך ההתחלה או התאריך והשעה (על סמך אזור הזמן של הנכס), כולל הטווח.

  • התאריך או התאריך והשעה שמצוינים על ידי start צריכים להיות מוקדמים (או זהים) לתאריך או לתאריך והשעה שצוינו על ידי end.
  • אם לא מציינים את האפשרות start, הטווח בפועל בלתי מוגבל מבחינת שעת ההתחלה.
  • אם start מאוכלס כתאריך 'YYYY-MM-DD', הוא מתפרש כתאריך ושעה 'YYYY-MM-DDT00:00:00'.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date או DateTime

תאריך הסיום או התאריך והשעה (על סמך אזור הזמן של הנכס), כולל הטווח.

  • התאריך או התאריך והשעה שמצוינים על ידי end חייבים להיות מאוחרים יותר מהתאריך או מהתאריך והשעה שמצוינים על ידי start (או זהים להם).
  • אם לא מציינים את end, הטווח בפועל בלתי מוגבל מבחינת שעת הסיום.
  • אם מציינים את end כתאריך 'YYYY-MM-DD', הוא מתפרש כתאריך ושעה 'YYYY-MM-DDT23:59:59'.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

הימים בשבוע שמותרים בטווח התאריכים. אם לא מציינים זאת, כל הימים מותרים בטווח התאריכים. כל תו במחרוזת מציין יום. לדוגמה, הערך MTWHF מציין שימי חול מותרים בטווח התאריכים.

התווים החוקיים הם:

  • M ליום שני
  • T ביום שלישי
  • W ליום רביעי
  • H ליום חמישי
  • F ליום שישי
  • S ליום שבת
  • U ביום ראשון

כל שילוב תווים חוקי.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow מאפיין זה מציין את התקופה שבה צריך לבצע הזמנה ביחס לתאריך הצ'ק אין (בהתאם לאזור הזמן של הנכס). לדוגמה, אפשר להגדיר חלון הזמנה של 7 ימים לפחות, אבל לא יותר מ-180 ימים לפני הצ'ק-אין.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration כדי שהמבצע יחול, יש לציין את משך הזמן המינימלי לפני הצ'ק-אין בזמן ההזמנה. אם הוא לא צוין, או אם הערך שלו הוא 0, אין מינימום.

סוגי הערכים החוקיים הם:

  • מספר שלם: מספר הימים לפני תאריך הצ'ק-אין. לדוגמה, הערך 30 מציין שהמבצע חל רק על הזמנות לפחות 30 ימים לפני תאריך הצ'ק-אין.
  • משך הזמן לפי תקן ISO 8601 (ימים, שעות ודקות): מספר הימים (כולל שעות ודקות) לפני תאריך הצ'ק-אין. לדוגמה, הערך P30D מציין שהמבצע חל רק על הזמנות שבוצעו לפחות 30 ימים לפני תאריך הצ'ק אין. כדי לציין את הערך P30DT6H, יש לבצע הזמנה בשעה 18:00 או לפני כן, ביום ה-30 שלפני ההגעה.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration כדי שהמבצע יחול, עליך להזין את מספר הימים המקסימלי לפני הצ'ק-אין. אם הערך הזה לא מוגדר, או אם הערך שלו הוא 0, אין ערך מקסימלי.

סוגי הערכים החוקיים הם:

  • מספר שלם: מספר הימים לפני תאריך הצ'ק-אין. לדוגמה, הערך 30 מציין שהמבצע חל רק על הזמנות לכל היותר 30 ימים לפני תאריך הצ'ק-אין.
  • משך הזמן לפי תקן ISO 8601 (ימים, שעות ודקות): מספר הימים (כולל שעות ודקות) לפני תאריך הצ'ק-אין. לדוגמה, הערך P30D מציין שהמבצע חל רק על הזמנות לכל היותר 30 ימים לפני תאריך הצ'ק אין. כדי לציין את הערך P30DT6H, חובה לבצע הזמנה בשעה 18:00 או מאוחר יותר, ביום ה-30 שלפני ההגעה.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

המדיניות הזו מגדירה הגבלות על הערך המקסימלי שאפשר להגדיר לתעריף לאחר החלת מבצעים.

במבצעים תמיד צריך לציין <Discount> או <BestDailyDiscount>, ולכן כדי ליצור מבצע שחל רק <Ceiling>, אפשרות אחת היא להגדיר <Discount> עם percentage של 0.

אם מגדירים מקבצים, יכול להיות שכמה מבצעים עם <Ceiling> יחולו על שהייה אחת. כל מבצע יחול על ההנחה, ומיד אחריה חלה התקרה. הדוגמה הבאה ממחישה איך כל תקרה תורמת לחישוב המבצע הבא במקבץ.

דוגמה:

מחירים של שהייה של לילה אחד, כשהסכום של AmountBeforeTax הוא 100, וערכתם של שני מבצעים:

  1. מבצע עם ערימה מסוג base, fixed_amount מתוך 25, ותקרה amount_per_night של 60
  2. מבצע עם ערימה מסוג second, fixed_amount מתוך 25, תקרת amount_per_night של 90

זהו סדר החישוב:

  1. המבצע של base חל קודם ומפחית את AmountBeforeTax ל-75, אבל לאחר מכן התקרה מפחיתה אותו ל-60.
  2. במבצע של second יהיו הנחה של AmountBeforeTax בין 60 ל-35. היא מתחת לתקרה של 90, כך שהתקרה השנייה לא מוחלת. התעריף הסופי הוא 35.

העובדה ש-60 היא תקרה כוללת מחמירה יותר אינה רלוונטית כי היא תקפה רק לקידום של עצמה, ולא יכולה להיות תקרה אחת שמתפרשת על פני כל מקבץ המבצעים.

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

הסכום המקסימלי שאפשר להגדיר לפי תעריף ללילה אחרי החלת ההנחה.

אם מציינים גם רכיב <Floor>, צריך להגדיר אותו לערך שגדול יותר מהמאפיין amount_per_night ב-<Floor> או שווה לו.

המאפיין amount_per_night חל על מיסים ועמלות כשהם כלולים בתעריף ללילה באמצעות AmountAfterTax, אבל לא על המיסים שצוינו באמצעות TaxFeeInfo.

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

המדיניות הזו מגדירה הגבלות על הערך המינימלי שאפשר להגדיר לו תעריף לאחר החלת מבצעים.

במבצעים תמיד צריך לציין <Discount> או <BestDailyDiscount>, ולכן כדי ליצור מבצע שחל רק <Floor>, אפשרות אחת היא להגדיר <Discount> עם percentage של 0.

הלוגיקה של <Floor> עדיין רלוונטית להנחות של <FreeNights>, גם אם חלה עליו הנחה של 100% ללילה.

אם מגדירים מקבצים, יכול להיות שכמה מבצעים עם <Floor> יחולו על שהייה אחת. כל מבצע יחול על ההנחה שלו, ומיד אחריה יגיע המחיר המינימלי. הדוגמה הבאה ממחישה איך כל קומה תורמת לחישוב המבצע הבא במקבץ.

דוגמה:

מחירים של שהייה של לילה אחד, כשהסכום של AmountBeforeTax הוא 100, וערכתם של שני מבצעים:

  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 מאגר בטווח תאריכים אחד או יותר שמגדירים מתי צריך לבצע צ'ק-אין כדי שהמבצע יחול.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

טווח תאריכים שמציין מתי צריך להתבצע צ'ק-אין כדי להפעיל את המבצע. אין צורך ברכיב הזה אם מוחקים מבצע אחד או יותר.

יש תמיכה גם בפורמט YearlessDate.

  • אם אחד מהתאריכים start או end הוא תאריך ללא שנה, יש לאכלס את שניהם כתאריכים ללא שנה.
  • טווחי תאריכים ללא שנים לא יכולים לכלול את השנה החדשה. במקום זאת, אפשר לייצג את הטווח כשני טווחי תאריכים סמוכים. לדוגמה, אפשר לייצג את {"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 כדי להחיל את המבצע צריך להופיע מאגר בטווח תאריכים אחד או יותר, שקובע מתי יתבצע הצ'ק-אאוט.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

טווח תאריכים שמציין מתי צריך לחול צ'ק-אאוט כדי שהמבצע יחול. הרכיב הזה לא נדרש אם מוחקים מבצע אחד או יותר.

יש תמיכה גם בפורמט YearlessDate.

  • אם אחד מהתאריכים start או end הוא תאריך ללא שנה, יש לאכלס את שניהם כתאריכים ללא שנה.
  • טווחי תאריכים ללא שנים לא יכולים לכלול את השנה החדשה. במקום זאת, אפשר לייצג את הטווח כשני טווחי תאריכים סמוכים. לדוגמה, אפשר לייצג את {"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 מגדיר סוג אחד של מכשיר משתמש שזכאי למבצע.
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 * (0.2 - 1)

  • אם הערך של 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). ההנחה היא שהמחיר הוא באותו מטבע של המחירים ללילה. אם הערך הזה גדול יותר מהסכום של התעריפים ללילה, הערך שמתקבל הוא אפס.

דוגמאות:

  • אם אנחנו מתמחרים שהייה של לילה אחד, שבו AmountBeforeTax הוא 90, הערך של AmountAfterTax הוא 100 והערך של fixed_amount הוא 20, אז

    שיעור המבצע = AmountAfterTax – הנחה קבועה

    80.00 = 100 - 20

  • אם אנחנו מתמחרים שהייה של לילה אחד, שבה הערך של AmountBeforeTax הוא 100, הערך של fixed_amount הוא 20 וב-TaxFeeInfo מצוין מס של 8%, ואז

    שיעור המבצע = (AmountBeforeTax – הנחה קבועה) * (1 + מס באחוזים)

    86.40 = (100 - 20) * 1.08

  • אם אנחנו מתמחרים שהייה של לילה אחד, במקום AmountBeforeTax הוא 50, הערך של fixed_amount הוא 60, וב-TaxFeeInfo מצוין מס של 10, ואז

    שיעור המבצע = (AmountBeforeTax - הנחה קבועה) * מס

    10.00 = 0 + 10

  • אם אנו מתמחרים שהייה של 3 לילות, כאשר ערכי AmountAfterTax הם 100, 110 ו-120; ו-fixed_amount הוא 150, אז

    שיעור המבצע = סכום(AmountAfterTax) - (הנחה קבועה)

    180.00 = (100 + 110 + 120) - 150

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

רק אחד מהערכים האלה הוא percentage, fixed_amount, fixed_amount_per_night, fixed_price או fixed_price_per_night.

הנחה קבועה שחלה על כל אחד מהתעריפים ללילה אחד (AmountAfterTax) (או המחיר הזול ביותר אם צוין applied_nights). אם לא מציינים את AmountAfterTax, הוא חל על AmountBeforeTax. ההנחה היא שהמחיר הוא באותו מטבע של המחירים ללילה. אם המחיר של fixed_amount_per_night גבוה מהתעריף ללילה, המחיר ללילה יופחת לאפס. ההנחה לא יכולה לגרום למחיר ללילה להפוך לשלילי.

דוגמאות:

  • אם אנו מתמחרים שהייה של 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) + (20 - 100))

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 כדי לציין את המיסים והעמלות של הנכס.

דוגמאות:

  • אם אנחנו מתמחרים שהייה של לילה אחד, שהערך של AmountBeforeTax הוא 90, הערך של AmountAfterTax הוא 100 והערך של fixed_price הוא 80, אז מחיר המבצע הוא 80.
  • אם אנחנו מתמחרים שהייה של לילה אחד, שבה הערך של 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 מוגדר כ-true), יש שני קטעים של שהייה בלילה: לילות ראשון עד 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 עד 4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer מקצה למבצע הזה דירוג ומוסיפה אותו לבחירה עם דירוג. רק קידום המכירות עם הדירוג הנמוך ביותר ייבחר. הערכים חייבים להיות בין 1 ל-99, כולל. אם לכמה מבצעים יש דירוג זהה, המערכת תבחר אחד ותחיל אותו באופן שרירותי.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

יש לציין בדיוק אחד מהערכים Discount או BestDailyDiscount.

מציינת הנחה יומית שעשויה לחול על לילה של שהייה. זאת בניגוד לתרחיש Discount, שבו חלות הנחות על כל שהיות.

בכל נכס יכולה להיות קבוצה אחת של מבצעים שנחשבים כ'הכי טוב מדי יום'. כלומר, על כל לילה של שהייה ייבחר המבצע היחיד 'הכי טוב ליום' שעומד בדרישות ויניב את ההנחה הגבוהה ביותר לאותו לילה, ואפשר יהיה להחיל אותו.

אי אפשר לציין את Stacking עם BestDailyDiscount. ההנחות 'הכי טובות ליום' שמניבות את ההנחה העמוקה ביותר לכל לילה משולבות ומטופלות כהנחה לשהייה אחת (למשל, Discount) כשסוג הערימה מוגדר ל-base. אפשר להשוות את ההנחה המשולבת למבצעי <Discount> אחרים שעומדים בדרישות, כדי למצוא את ההנחה המשולבת או את השילוב שמניב את ההנחה הכי גבוהה. צריך לבחור את השילוב של BestDailyDiscount או את הערך Discount אחד, לפי שיניב את המחיר הנמוך יותר, ולהחיל אותו על סוג הערימה base.

אפשר לציין את StayDates בסוג ההנחה הזה, אבל צריך להגדיר את הערך overlap בשדה application

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

רק אחד מהערכים האלה הוא percentage, fixed_amount או fixed_price.

ערך עשרוני מ-0 עד 100 שמציין את אחוז ההנחה. הוא חל על AmountAfterTax (או על AmountBeforeTax אם לא מציינים את AmountAfterTax).

דוגמאות:

  • אם הערך של AmountAfterTax ללילה שהייה הוא 100 והערך של percentage הוא 20, אז

    שיעור המבצע = AmountAfterTax * (1 פחות ההנחה)

    80.00 = 100 * (0.2 - 1)

  • אם הערך של 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). ההנחה היא שהמחיר הוא באותו מטבע של המחירים ללילה. אם הערך הזה גדול יותר מהסכום של התעריפים ללילה, הערך שמתקבל הוא אפס.

דוגמאות:

  • אם הערך של AmountBeforeTax ללילה אחד הוא 90, הערך של AmountAfterTax הוא 100 והערך של fixed_amount הוא 20, אז

    שיעור המבצע = AmountAfterTax – הנחה קבועה

    80.00 = 100 - 20

  • אם הערך של AmountBeforeTax ללילה אחד הוא 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 ללילה אחד הוא 90, הערך של AmountAfterTax הוא 100 והערך של fixed_price הוא 80, אז שיעור המבצע הוא 80.
  • אם הערך של AmountBeforeTax ללילה אחד הוא 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

מאגר של כלל מחיר המינוי שמפעיל טיפול ספציפי בממשק המשתמש עבור ההנחה המשויכת.

אין לציין את הרכיב הזה אלא אם מציינים גם את הערך <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 (נתוני נכס), ובמאפיין RatePlanCode ב-<StatusApplicationControl> בהודעות <OTA_HotelRateAmountNotifRQ> וב-<OTA_HotelAvailNotifRQ>. אפשר להזין עד 50 תווים.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes מאגר לרשימת סוגי החדרים שעליהם חל המבצע. המבצע יחול על כל <RoomType> שצוין. אם לא תציינו <RoomTypes>, המבצע יחול על כל החדרים.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType מציין את סוג החדר. סוג חדר מוגדר ברכיב <RoomData> בהודעה Transaction (נתוני נכס) והפניה אליו מתבצעת באמצעות הערך <RoomID> שלו. (בהודעות OTA_HotelRateAmountNotifRQ יש הפניה גם לערך <RoomID> של המאפיין InvTypeCode).
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string המזהה הייחודי של המלאי (סוג החדר). הערך הזה ממופה אל <RoomID> בהודעה של עסקה (נתוני נכס). אפשר להזין עד 50 תווים.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking מציינת איך אפשר לשלב מבצעים. אם לא צוין סוג, ההנחה היא שהסוג הוא 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 מאגר לטווח תאריכים אחד או יותר שקובע איך המבצע יחול, למשל כדי להתאים להנחות עונתיות.
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 הוא תאריך ללא שנה, יש לאכלס את שניהם כתאריכים ללא שנה.
  • טווחי תאריכים ללא שנים לא יכולים לכלול את השנה החדשה. במקום זאת, אפשר לייצג את הטווח כשני טווחי תאריכים סמוכים. לדוגמה, אפשר לייצג את {"12-29", "01-05"} באמצעות {"12-29", "12-31"} וגם {"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate תאריך ההתחלה (על סמך אזור הזמן של הנכס), כולל, בטווח התאריכים. התאריך הזה חייב להיות לפני התאריך של end, או זהה לו. אם לא מציינים את האפשרות start, למעשה טווח התאריכים בלתי מוגבל מבחינת תאריך ההתחלה.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate תאריך הסיום (על סמך אזור הזמן של הנכס), כולל, בטווח התאריכים. התאריך הזה חייב להיות זהה לתאריך של start או אחריו. אם לא מציינים את התאריך end, בפועל טווח התאריכים לא מוגבל מבחינת תאריך סיום.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

הימים בשבוע שמותרים בטווח התאריכים. אם לא מציינים זאת, כל הימים מותרים בטווח התאריכים. כל תו במחרוזת מציין יום. לדוגמה, הערך MTWHF מציין שימי חול מותרים בטווח התאריכים.

התווים החוקיים הם:

  • M ליום שני
  • T ביום שלישי
  • W ליום רביעי
  • H ליום חמישי
  • F ליום שישי
  • S ליום שבת
  • U ביום ראשון

כל שילוב תווים חוקי.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries מאגר שבו מפורטים מיקומי המשתמשים (מדינות) שבהם אפשר להשתתף במבצע. אם צוין, רק משתמשים שעומדים בדרישות במדינות הרשומות יקבלו את התעריף המוזל. אם לא מציינים זאת, משתמשים שעומדים בדרישות בכל מדינה יקבלו את התעריף המוזל.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum סוג המפרט UserCountries (ארצות הברית).

הערכים החוקיים הם include ו-exclude.

אם המדיניות type מוגדרת בתור include, המבצע יחול על משתמשים מהמדינות שצוינו.

אם מדינות המשתמש type הן exclude, המבצע חל על משתמשים מחוץ למדינות שצוינו.

אם המדיניות type לא מוגדרת, המערכת תתייחס אליה כאל include והמבצע יחול על משתמשים מהמדינות שצוינו.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country מגדיר מדינה אחת שבה המשתמשים זכאים למבצע.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string קוד מדינה במאגר CLDR, כמו DE או FR. חשוב לשים לב שבמדינות מסוימות, קוד המדינה במאגר CLDR שונה מקוד המדינה בן 2 האותיות לפי תקן ISO. בנוסף, אין תמיכה בקודי אזורים במאגר CLDR.

דוגמאות

הודעה בסיסית

בדוגמה הבאה מוצגת הודעת Promotions בסיסית:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <Discount percentage="20" applied_nights="2"/>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <Stacking type="base"/>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>


מצב מלאי

בדוגמה הבאה תוכלו לראות איך ליצור הנחה אם יש מלאי עודף קרוב לתאריך ההגעה:

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


מחיקת קידום מכירות אחד

בדוגמה הבאה תוכלו לראות איך למחוק קידום מכירות אחד לנכס:

<?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> לנכס באמצעות קידום מכירות חדש אחד או יותר. כשהערך הוא 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 סוגי מקבצים שונים

הדוגמה הבאה מציגה מקרה שבו יחולו שלושה מבצעים שונים (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 ביום השני לפני ההגעה, או לאחר מכן.

<?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 ב-2 ביולי 2020.

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


טווחי תאריכים ללא שנים

הדוגמה הבאה מציגה מקרה שבו הרכיב CheckInDates מכיל את DateRanges שיש בהם את השדות start ו-end ללא שנים. בדוגמה הזו, המבצע חל על תאריכי הצ'ק-אין בין 29 בנובמבר ל-1/2, ללא קשר לשנה. טווחי תאריכים ללא שנים שחוצים את גבולות השנה החדשה לא חוקיים, ולכן ה-DateRange מופיע כשני טווחי תאריכים סמוכים.

<?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% לכל ארבעה לילות לשהייה בטווח התאריכים שצוין. למסלול של עשרה לילות, ארבעה לילות סה"כ יקבלו הנחה 50%.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
        <DateRange start="2022-01-01" end="2022-05-31"/>
      </BookingDates>
      <Discount>
        <FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>

בדוגמה הבאה הנחות של 50% ללילה אחד לכל שלושה לילות לטווחי השהייה שצוינו. רק הלילות החופפים של השהייה נספרים עד לקבלת ההנחה. במסלול הנסיעה הבא עם צ'ק-אין ב-1 בינואר 2022 וצ'ק אאוט ב-7 בינואר 2022, ההנחות והלילות הרלוונטיות לשהייה יחולו כמפורט למטה.

  • 01.01-2022 (שהייה)
  • 02-01-2022 (שהייה)
  • 2022-01-03
  • 04.01.2022 (בהנחה)
  • 5.01.2022 (שהייה)
  • 06.01.2022 (שהייה)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <StayDates application="overlap">
        <DateRange start="2022-01-01" end="2022-01-02"/>
        <DateRange start="2022-01-04" end="2022-01-06"/>
      </StayDates>
      <Discount>
        <FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>


מבחר מדורג

בדוגמה הבאה מוצעות שתי הנחות, אחת ל-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

בדוגמה הבאה מוזלת שהייה של שני לילות באמצעות החלת 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>

למשל, שהייה של שני לילות מ-30 באפריל 2023 עד 2 במאי 2023. לחישוב, השילוב של ההנחות היומיות הטובות ביותר שמוביל להנחה הגדולה ביותר נמצא ראשון.

ללילה הראשון, המבצע ה "כללי" הוא הסכום היחיד שאפשר לקבל עם הנחה קבועה של 20.

עבור הלילה השני, המבצע 'יכול' מציע הנחה עמוקה יותר מההנחה ה'כללית'. לכן, כשבוחרים באפשרות 'May', סכום ההנחה הקבוע הוא 50.

לאחר מכן, המחיר כולל הנחה של 5 ללילה על ה"חגיגה", או 10 בסה"כ. אפשר לשלב אותו עם השילוב של ההנחות היומיות הכי טובות כי סוג הערימה של 'חגיגה' מוגדר ל-any. אם היא הוגדרה לערך base, יוחל רק השילוב של ההנחות היומיות הטובות ביותר או הנחת ה'חגיגה'. למידע נוסף, ראו תיאור של Stacking.

'סה"כ, מחיר השהייה מקבל הנחה של 20 + 50 + 10 = 80 בסכום קבוע.

תשובות

תחביר

ההודעה PromotionsResponse מבוססת על התחביר הבא:

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues are populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code"
           status="issue_type">
      issue_description
    </Issue>
  </Issues>
</PromotionsResponse>

רכיבים ומאפיינים

הודעת PromotionsResponse כוללת את הרכיבים והמאפיינים הבאים:

רכיב / @Attribute אירועים סוג תיאור
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 מאגר תגים של בעיה אחת או יותר שהתגלו במהלך עיבוד ההודעה 'קידומי מכירות'.

כל הודעה כוללת את <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>