תוכן מקודם

סקירה כללית

ה-API הזה מאפשר לציין הנחות אפשריות. מתוך המבצעים שצוינו, Google מחילה את המבצע או קבוצת המבצעים שעומדים בדרישות שמובילים אל המחיר הנמוך ביותר. אם אתם מחפשים API שתומך בשיעור שרירותי התאמות שיכולות להעלות או להוריד את המחיר כאשר מתקיימים ומרוצה להסתכל על Rate Changes 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, A 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 נכון), ואחר כך יש שני לילות לשהייה קטעים: הלילות הראשון עד הרביעי והלילות החמישיים עד השמיניים. ה לילות 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. צריך להגדיר אותן לאחת מהאפשרויות הבאות base או none. הדוח 'הכי טוב יומי' הנחות שמניבות את ההנחה העמוקה ביותר לכל לילה, משולבות ומטופלות הנחה לשהייה אחת (למשל, Discount) סוג הערימה שהוגדר. יש השוואה בין ההנחה המשולבת לעומת מוצרים אחרים שעומדים בדרישות <Discount>, ואפשר לערום אותם כדי למצוא את השילוב או את השילוב שמספקים בהנחה. השילוב של BestDailyDiscount או Discount האחד, אשר מניב את המחיר הנמוך ביותר, הוא נבחר והוחל על סוג הערימה base.

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

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

בדיוק אחד מתוך percentage, השדה fixed_amount או fixed_price הוא שדה חובה.

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

דוגמאות:

  • אם AmountAfterTax ללילה של שהייה הוא 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 (Property Data), ובמאפיין RatePlanCode ב-<StatusApplicationControl> בשתי ההודעות <OTA_HotelRateAmountNotifRQ> ו-<OTA_HotelAvailNotifRQ>. מספר התווים המקסימלי הוא 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes מאגר לרשימת סוגי החדרים שעליהם חל המבצע. המבצע יחול על כל <RoomType> שצוין. אם לא מציינים את הערך של <RoomTypes>, המבצע חל על כל החדרים.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType מציין את סוג החדר. סוג חדר מוגדר רכיב <RoomData> בתוך ההודעה עסקה (נתוני נכס) והיא מפנה באמצעות הערך <RoomID> שלו. ( גם לערך <RoomID> יש הפניה באמצעות המאפיין מאפיין InvTypeCode ב-OTA_HotelRateAmountNotifRQ messages.)
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"}.

אם רוצים להגדיר את הטווח של StayDates לערך לאפשר את המבצע בימים ספציפיים בשבוע, עליכם להגדיר את start הוא התאריך הנוכחי ללא end, לכן שתוקף המבצע לא פג.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate תאריך ההתחלה (לפי אזור הזמן של הנכס), כולל טווח התאריכים. התאריך הזה חייב להיות לפני, או זהה לתאריך תאריך: end. אם לא צוין start, התאריך בפועל אינו מוגבל מבחינת תאריך ההתחלה.

צריך לציין את הערך של start אם לא צוין הערך של end.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate תאריך הסיום (על סמך אזור הזמן של הנכס), כולל טווח תאריכים. התאריך הזה חייב להיות זהה לתאריך start או מאוחר ממנו. אם לא צוין end, התאריך בפועל, הטווח הזה אינו מוגבל מהתאריך start ואילך.

צריך לציין ערך של end אם לא צוין ערך מסוג start.

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

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

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

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

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

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

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

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

אם מדינות המשתמש type הן exclude, המבצע תקף למשתמשים שלא נכללים ברשימה מדינות.

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

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

דוגמאות

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

הודעה בסיסית

בדוגמה הבאה מוצגת הודעת 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" הוא 1, כל קידומי המכירות השמורים נמחקים לפני שמאוחסנים קידומי המכירות שצוינו בהודעה הנוכחית:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" 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 לא יהיה מאחר שמבצעים אחרים מעניקים הנחה טובה יותר. אם המחיר המקורי היה 400 ש"ח, המחיר המוזל יהיה 300 ש"ח.

<?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 בדצמבר ל-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 (בהנחה)
  • 2022-01-05 (שהייה)
  • 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.

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