Difference between revisions of "Pricing (air tickets)"
I shaletin (talk | contribs) m (→Princile of operation) |
I shaletin (talk | contribs) |
||
Line 1: | Line 1: | ||
− | |||
==Purpose== | ==Purpose== | ||
− | '''Pricing''' module automates the process of | + | '''Pricing''' module automates the process of calculation of commissions and charges for air tickets, management of carrier's commission rules, agency fees and sub-agents' commissions. |
− | * allows you to quickly | + | |
− | * allows you to build a convenient and | + | * allows you to quickly set up even complex commission rules, |
− | * accurately comply with the | + | * allows you to build a convenient and clear pricing scheme, |
+ | * accurately comply with the difficult conditions provided by airlines, | ||
* guarantees correct calculations, | * guarantees correct calculations, | ||
− | * provides a tool | + | * provides a tool to control the correctness of calculations. |
− | == Principle of operation == | + | ==Principle of operation== |
− | The module is based on the pricing rules | + | The module's operation is based on the agency's pricing rules. |
− | '''Rule''' — | + | '''Rule''' — set of "commission and fee values" and "conditions of their application". <br /> |
− | ''' | + | '''Values of commissions and charges''' is:<br /> |
− | *airline | + | *commission from the airline, <br /> |
− | *airline bonus, <br /> | + | * airline bonus, <br /> |
*agency charge, <br /> | *agency charge, <br /> | ||
− | * | + | *commission for subagents. <br /> |
− | ''' | + | '''Condition of application for commissions and charges''' — a set of flight parameters to which the fees and charges of the rules will apply ("validating carrier", "GDS", "flight type", "passenger types", etc.). |
− | Pricing rules are | + | Pricing rules are defined in a table in an XLS or XLSX file, where: |
+ | * "Table string" - rule. <br /> | ||
+ | * " String cell" - parameter value. <br /> | ||
+ | * "Column header" - parameter name. <br /> Each line is a separate rule. <br /> ''For one flight, only one rule is selected by criteria and only one rule applies''. | ||
− | + | Before calculating the commissions, the pricing module determines the availability of the flight for the ticketing and the rule by which the commissions and fees are calculated, using the following algorithm: | |
− | |||
− | |||
− | + | # The module records which airline GDS has defined as the validating airline; | |
+ | # Finds all the rules for that airline in the pricing file; | ||
+ | # Selects the rules that match the flight by all parameters; | ||
+ | # Selects '''one''' of the appropriate rules by priority criteria; | ||
+ | # If the triggered rule does not contain an override of the validating carrier, the validating carrier obtained from the GDS is established. | ||
+ | # * If the triggered rule contains an override of the validating carrier, the overriding validating carrier is set. | ||
+ | # The rule applies. | ||
− | + | The agency may only issue online flights of '''contract airlines'''. An airline is considered a contract airline if it has at least 1 rule in its uploaded pricing file. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ''' | + | '''Attention!''' The flight '''cannot be ticketed''' if: |
− | * rules for | + | * there are no rules for the airline. It is recommended to delete such flights from the search results filter output "Airline is not contract". |
− | * rules are | + | * rules for the airline are established, but the flight parameters do not correspond to the rule parameters. |
− | + | <!--The module's working order is given in the diagram: | |
− | + | {| class="wikitable" | |
|- | |- | ||
− | |[[Файл: | + | |[[Файл:Схема_ценообразование.png|1000px]] |
|- | |- | ||
− | |Pricing module | + | |Workflow of the Pricing module |
− | |} --> | + | |}--> |
− | |||
− | Commissions and charges '''are calculated | + | Commissions and charges '''are calculated each time an order is updated according to the rules loaded into the system at the time of checking''': |
− | *when | + | * when the search results are generated, |
− | * | + | * at the time of booking, |
− | *when switching to payment and ticketing, | + | * when switching to payment and ticketing, |
− | *when | + | * when updating the order page. |
− | If '''''rules were changed''''' | + | If, during the period between booking and ticketing, '''''rules were changed''''', аfter bookingб the order the commissions will be calculated according to the new rules, so the price at the time of booking and the price at the ticketing may differ. The behavior of the system in case of such a situation is set by the parameter '''''Recalculate service charge''''' under System Settings → Background Processes → Synchronization Events. You can track the calculation of commissions valid at the time of booking in the logs on order. |
− | In the price details (on the order page) and in the itinerary receipt | + | In the price details (on the order page) and in the itinerary receipt information on the charges is provided in accordance with one of the '''modes of division of charges by passengers''': |
− | * Equally between non-zero ticket prices - agency and | + | * Equally divided between non-zero ticket prices - agency and subagency charges are divided equally between all passengers with fare and tax more than 0. This mode is selected by default. |
− | * | + | * Equivalent between all fares - agency and subagency charges are divided equally among all passengers. |
− | * | + | * Proportional to fares - agency and subagency charges are divided proportionally to the fare price for a particular passenger in the total amount of the order, i.e. the more the fare price is, the more part of the charge is allocated for it. |
− | * Only | + | * Only to the first type of passenger - agency and subagency charges are allocated to the first type of passenger. |
− | * | + | * Proportional to fares , except for infants - agency and subagency charges are divided proportionally to the fare price for a particular passenger in the total amount of the order, except for infants. |
− | + | ''The fees in the price details are presented with the division only if they are hidden in XP/XX taxes, otherwise they are displayed as a separate line without division.''<br> | |
− | + | You can find the setting in the '''Sales Management - Air Tickets - Pricing - Settings - Passenger Fee Splitting Mode'''. | |
− | === | + | === Commission calculation for non-contractual airlines === |
− | + | The agency may "issue tickets" to "non-contractual" airlines on "clean interline" terms between the airlines. | |
− | For example, | + | For example, |
− | * The agency | + | * The agency has no contract with "AA" airline. |
− | * The agency has a contract with | + | * The agency has a contract with "BB" airline. |
− | * | + | * There is an interline agreement between "AA" and "BB" companies, which allows issuing tickets for "AA" on "BB" form. |
− | + | To issue tickets for "AA" airline, the agency has a rule for "AA" airline, which specifies: | |
− | # | + | # Validating carrier: '''''«AA»''''', |
− | # | + | # redefined carrier: '''''«BB»''''', |
− | # share of interline segments: ''''' | + | # share of interline segments:'''''«1»''''', |
− | # airline commission: '' | + | # airline commission: ''specify the amount of commission provided by "BB" for tickets with 100% share of interline segments''. |
− | ''' | + | '''Attention!''' The Websky system does not monitor the presence of interline agreements between carriers. Responsibility for redefinition lies entirely with the agency. |
− | === | + | === Selecting the rule for calculation === |
− | Commissions for | + | Commissions for the flight are calculated by one rule. If several rules are suitable for the flight, the system chooses the rule for calculation by priority criteria. Rules are compared on the first criterion, if the criterion in this case does not work, on the second and so on, until one rule is defined. |
− | + | The order of comparing the rules to select the rule for the calculation: | |
− | #'''By | + | # '''By "Priority" column''' - if the triggered rules have a priority, the rule with the highest priority is selected. |
− | #'''By the presence of an | + | # '''By the presence of an overridden carrier''' - if several rules with the same priority are triggered (or the priority is not specified), the rule with the overridden VC is selected. |
− | #''' | + | # '''For a nonempty ''Commission'' cell''' - the priority of the rules with an established commission (even in 0%) is higher than that of the rules with an empty cell. |
− | + | # '''Extra priority''' - ''Manually set'' in the section '''Product control → Avia tickets → Pricing → Settings''' by the parameter '''''Extra priority''''': | |
− | #''' | + | # * ''''No''' - no additional priority is set. |
− | #*'''' | + | # * ''''Maximum commission from the airline''''' - the rule with the maximum commission from the airline is selected. |
− | #* | + | # *''''By the number of parameters in the rule''''' - the rule with the largest number of non-empty parameters is selected. |
− | #* | + | # '''Rule's ordinal number''' - if none of the priorities is applicable, the newer rule is considered the priority (the table below the others). |
− | #'''Rule | ||
− | == Testing and debugging rule triggering == | + | == Testing and debugging of rule triggering == |
− | All | + | All calculations at each stage of their application are logged and displayed in the debug table. The debug table is used to control how the rules work, providing information about how the rules apply to the selected flight. |
− | + | Link to the debug table is available to the manager and experts of the root agency: | |
− | * | + | * to display search results for each flight by the '''''Commission ''''' link, |
− | * on the order page, | + | * on the order page, in the flight price detail, by clicking on the amount of commission or charge. |
− | <!-- {| class="wikitable" | + | <!--{| class="wikitable" |
|- | |- | ||
|[[Файл:Ссылка на таблицу отладки на странице поиска.png|800px]] | |[[Файл:Ссылка на таблицу отладки на странице поиска.png|800px]] | ||
|- | |- | ||
|Link to debug table on the search page | |Link to debug table on the search page | ||
− | |} | + | |} |
− | + | {| class="wikitable" | |
|- | |- | ||
|[[Файл:Страница заказа.png|700px]] | |[[Файл:Страница заказа.png|700px]] | ||
|- | |- | ||
|Link to price details on the order page | |Link to price details on the order page | ||
− | |} | + | |} |
− | + | {| class="wikitable" | |
|- | |- | ||
|[[Файл:Детализация_стоимости.png|600px]] | |[[Файл:Детализация_стоимости.png|600px]] | ||
|- | |- | ||
− | |Links to | + | |Links to debug table on the price detail page |
− | |} --> | + | |}--> |
− | '''Table columns''' — pricing parameters <br /> | + | '''Table columns''' — pricing parameters. <br /> |
− | '''Column | + | '''Column header''' — values of pricing parameters for the flight being checked. <br /> |
− | ''' | + | '''Table rows''' — Pricing rules "for the validating carrier" of the flight. |
− | The table shows the order | + | The table shows the order in which parameters are checked. |
− | The parameters of each rule are compared | + | The parameters of each rule are compared in the flight parameters: |
# if they match: | # if they match: | ||
− | ## cell is highlighted green, | + | ## the cell is highlighted in green, |
− | ## the | + | ## the following parameter is checked; |
− | # if the flight parameter | + | # if the value of the flight parameter does not match the value of the rule parameter: |
− | ## cell is highlighted red, | + | ## the cell is highlighted in red, |
− | ## rule | + | ## rule check stops. |
− | '''If | + | '''If a rule matches all parameters, the rule applies, commissions and fees are highlighted with green light, and their calculated values are displayed next to each other.''' |
+ | |||
− | <!-- {| class="wikitable" | + | <!--{| class="wikitable" |
|- | |- | ||
|[[Файл:Таблица_отладки.png|1200px]] | |[[Файл:Таблица_отладки.png|1200px]] | ||
|- | |- | ||
|Debug table | |Debug table | ||
− | |} --> | + | |}--> |
− | == Enabling | + | == Enabling module. Rules Import and Export == |
+ | To enable the calculation of commissions using Pricing, enable the '''Commissions 2.0''' and '''Charges and Discounts 2.0''' options in Product control → Avia tickets → Pricing → Settings. | ||
− | To | + | To set the pricing rule: |
+ | # Go to Product control → Avia tickets → Pricing → Excel import/export. | ||
+ | # Press '''Upload in "xls" format''' or '''Upload in "xlsx" format'''. Open the file to edit. | ||
+ | # Set the rule: '''Fill in the string parameters'''. The format of data entry in each column must correspond to a strictly defined format (see Rules Import). <br /> Obligatory parameters to fill in: | ||
+ | #* '''''validating carrier'''. | ||
+ | #* '''''commission'' # | ||
+ | # Save the changes to the file. | ||
+ | # On the '''Excel import/export''' page in the Administration panel click '''Browse''', open the file. | ||
+ | # Click '''Send''' to upload the file to the system. | ||
− | + | During import, the system will validate all entered values. If a value is entered in a cell in an incorrect format, the system will report an error while saving all correctly defined rules. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <!--{| class="wikitable" | |
− | |||
− | <!-- {| class="wikitable" | ||
|- | |- | ||
|[[Файл:Ошибки_импорта_Ценообразование.png|500px]] | |[[Файл:Ошибки_импорта_Ценообразование.png|500px]] | ||
|- | |- | ||
− | | | + | |Errors at parameter validation |
− | |} --> | + | |}--> |
− | After validation, a table | + | After validation, the page displays a table showing all loaded rules in a compressed form. |
− | <!-- {| class="wikitable" | + | <!--{| class="wikitable" |
|- | |- | ||
|[[Файл:Правила ценообразования.png|900px]] | |[[Файл:Правила ценообразования.png|900px]] | ||
|- | |- | ||
|Pricing rules | |Pricing rules | ||
− | |} --> | + | |}--> |
− | |||
− | + | The table provides color-coded rules that are currently invalid: | |
− | * rules | + | * rules that have not yet come into effect (the sale start date is higher than the current date, see Parameters of Pricing Rules) are highlighted in orange, |
− | * expired | + | * the rules that have expired (the sale expiration date is greater than the current date) are highlighted in purple. |
− | == Pricing | + | == Pricing rule parameters == |
− | ''' | + | '''Template of file for entering pricing rules:'''<br/>[[File:CommImportExampleV1.0.5.xlsx]] |
− | ''' | + | '''Attention!''' It is forbidden to rename columns!<br/> But it is allowed to change columns and remove unnecessary columns. |
− | To | + | To view the description of parameters <span style="background-color:gold">expand the table</span>: |
{| class="wikitable mw-collapsible mw-collapsed" | {| class="wikitable mw-collapsible mw-collapsed" | ||
− | |colspan="5"| '''Pricing | + | |colspan="5"| '''Pricing rule parameters''' |
|- | |- | ||
− | ! scope="col" | | + | ! scope="col" | Title |
! scope="col" | Internal name | ! scope="col" | Internal name | ||
! scope="col" | Description | ! scope="col" | Description | ||
− | ! scope="col" | | + | ! scope="col" | Permissible values |
! scope="col" | Examples | ! scope="col" | Examples | ||
|- | |- | ||
| id | | id | ||
| <span id="id">id</span> | | <span id="id">id</span> | ||
− | | | + | | A unique record number from any external system (or database). Optional parameter. It does not participate in the calculation logic and is used for convenient rule identification. |
| any value | | any value | ||
| 123 | | 123 | ||
Line 210: | Line 207: | ||
| GDS validating carrier | | GDS validating carrier | ||
| <span id="valCompanyId">valCompanyId</span> | | <span id="valCompanyId">valCompanyId</span> | ||
− | | The airline for which the rule is set. Must be | + | | The airline for which the rule is set. Must be the contract airline of the agent. If it is necessary to make ticketing on the stock of another airline (by interline), the validating carrier is redefined (see Redefined validating carrier). If the validating carrier from GDS is unacceptable by specified pricing rules and is not overridden - the flight is considered unacceptable for ticketing and is removed from search results with appropriate settings of results filtering. |
| width="20%"| empty is ignored | | width="20%"| empty is ignored | ||
− | 2- | + | 2-digit IATA airline code |
| SU | | SU | ||
LH | LH | ||
|- | |- | ||
− | | | + | | redefined vc |
| <span id="manualVV">manualVV</span> | | <span id="manualVV">manualVV</span> | ||
− | | If the validating carrier proposed by the GDS is not | + | | If the validating carrier proposed by the GDS is not a contractual carrier or does not satisfy the commission agent, it can be overridden through this field. The VC field indicates the VC from GDS (or it is left empty), and this field indicates the carrier redefined by the agency. |
− | The | + | The agent is responsible for acceptance of replacement and adequacy of the flight price (which was calculated by GDS for the carrier offered to it). The priority for the rules with the redefinition is higher than for the rules without it. |
| empty is ignored | | empty is ignored | ||
− | 2- | + | 2-digit IATA airline code |
| SU | | SU | ||
LH | LH | ||
|- | |- | ||
− | | first segment | + | | first segment carriers |
| <span id="airlines">airlines</span> | | <span id="airlines">airlines</span> | ||
− | | A set of | + | | A set of acceptable marketing carriers of the first segment of the route. |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except) | ||
| SU,LH,BA | | SU,LH,BA | ||
Line 240: | Line 237: | ||
| carriers of any segment | | carriers of any segment | ||
| <span id="airlinesAny">airlinesAny</span> | | <span id="airlinesAny">airlinesAny</span> | ||
− | | A set of | + | | A set of acceptable marketing carriers (interlines) of any segment of the route. |
+ | |||
+ | Permissible input options: | ||
+ | * CODE,CODE,CODE : the rule applies if at least one marketing carrier from the flight is on the list. | ||
+ | * CODE,CODE,CODE! : the rule applies if each marketing carrier from the flight is found on the list | ||
+ | * <>CODE,CODE,CODE : the rule will not apply if at least one marketing carrier from the flight is found on the list | ||
+ | * <>CODE,CODE,CODE! : the rule will not apply if all marketing carriers from the flight are found on the list. | ||
− | + | | empty = any<br/>- one or more values (see description) | |
− | |||
− | |||
− | |||
− | |||
− | | empty = any<br/>- one or | ||
| SU,LH,BA<br/>SU,LH!<br/><>S7,SU<br/><>S7,BA! | | SU,LH,BA<br/>SU,LH!<br/><>S7,SU<br/><>S7,BA! | ||
|- | |- | ||
| code sharing | | code sharing | ||
| <span id="codeSharing">codeSharing</span> | | <span id="codeSharing">codeSharing</span> | ||
− | | | + | | Permissibility of a flight being operated by another (operating) airline |
− | | empty | + | | empty - all flights<br/>1 - code sharing is required <br/>0 - code sharing is prohibited |
| 0 | | 0 | ||
Line 260: | Line 258: | ||
| operators | | operators | ||
| <span id="operatingAirlines">operatingAirlines</span> | | <span id="operatingAirlines">operatingAirlines</span> | ||
− | | | + | | Permissible operating airlines (need to be tested on all segments). |
− | Input | + | Input options: |
− | * CODE,CODE,CODE : rule | + | * CODE, CODE, CODE : the rule applies if at least one operating carrier of the flight is found on the list. |
− | * CODE,CODE,CODE | + | * CODE,CODE,CODE : the rule applies if every operating carrier of the flight is found on the list. |
− | * <>CODE,CODE,CODE : rule | + | * <>CODE,CODE,CODE : the rule does not apply if at least one operating flight carrier is found on the list. |
− | * <>CODE,CODE,CODE | + | * <>CODE,CODE,CODE : the rule will not apply if all operating carriers of the flight are found on the list. |
− | | empty = any<br/>- one or | + | | empty = any<br/>- one or more values (see description) |
| SU,LH,BA<br/>SU,LH!<br/><>S7,SU<br/><>S7,BA! | | SU,LH,BA<br/>SU,LH!<br/><>S7,SU<br/><>S7,BA! | ||
|- | |- | ||
− | | share | + | | own segment share |
| <span id="ownPart">ownPart</span> | | <span id="ownPart">ownPart</span> | ||
− | | The minimum | + | | The minimum allowed share of own segments (segments where the validating carrier is equal to a marketing one) must be greater than or equal to a given value (any number from 0 to 1): |
− | * 1 | + | * 1 - all segments are own |
− | * 0.5 | + | * 0.5 - half or more of own segments |
− | * 0.25 | + | * 0.25 - a quarter or more of own segments |
− | * 0.01 | + | * 0.01 - there is at least one own segment |
− | * 0 | + | * 0 - all segments of interline |
| empty = any number<br/> | | empty = any number<br/> | ||
any number from 0 to 1 | any number from 0 to 1 | ||
| 0.88 | | 0.88 | ||
|- | |- | ||
− | | share | + | | interline segment share |
| <span id="interlinePart">interlinePart</span> | | <span id="interlinePart">interlinePart</span> | ||
− | | The minimum | + | | The minimum allowed percentage of nonproprietary segments (segments where the validating carrier is not equal to the marketing one) must be greater than or equal to the specified value (any number from 0 to 1). |
− | * 1 | + | * 1 - all segments of interline |
− | * 0.5 | + | * 0.5 - half or more segments of interlines |
− | * 0.25 | + | * 0.25 - a quarter or more segments of interlines |
− | * 0.01 | + | * 0.01 - there is at least one segment of the interline |
− | * 0 | + | * 0 - all segments are own |
| empty = any number<br/> | | empty = any number<br/> | ||
any number from 0 to 1 | any number from 0 to 1 | ||
Line 296: | Line 294: | ||
| contract type | | contract type | ||
| <span id="contractType">contractType</span> | | <span id="contractType">contractType</span> | ||
− | | | + | | BSP or TCH settlement system |
| empty = any,<br/>BSP<br/>TCH | | empty = any,<br/>BSP<br/>TCH | ||
| TCH | | TCH | ||
Line 302: | Line 300: | ||
| booking systems | | booking systems | ||
| <span id="gds">gds</span> | | <span id="gds">gds</span> | ||
− | | Global distribution system in which the flight / PCC of specific requisites / requisite package | + | | Global distribution system, in which the flight/ PCC of specific Websky requisites/ ID of the Websky requisite package was found. |
− | Listed in any | + | Listed in any sequence, you can mix different types. The "or" rule applies: if the whole Sabre is specified, you don’t need to specify all its PCC/packages. |
− | ''' | + | '''Attention!''' When specifying the name of the GDS, strictly follow the name format specified in the documentation. If the rule doesn’t match with the template, it will not apply! |
− | | empty = any<br/> | + | | empty = any<br/>ГРС: <code>SABRE, GALILEO, AMADEUS, SIRENA, SITA, SIG23</code><br/>PCC: [letters+digits]<br/>Package ID: [digits] |
| SABRE,670P,123 | | SABRE,670P,123 | ||
Line 313: | Line 311: | ||
SITA | SITA | ||
|- | |- | ||
− | | sale | + | | start of sale |
| <span id="paymentDateFrom">paymentDateFrom</span> | | <span id="paymentDateFrom">paymentDateFrom</span> | ||
− | | | + | | Minimum allowed date of order execution (not to be confused with the date of departure). To trigger the rule, the current date must be greater or equal to the specified one. |
| empty = ignored<br/> | | empty = ignored<br/> | ||
DD.MM.YYYY | DD.MM.YYYY | ||
Line 322: | Line 320: | ||
31.01.2010 | 31.01.2010 | ||
|- | |- | ||
− | | sale | + | | end of sale |
| <span id="paymentDateTo">paymentDateTo</span> | | <span id="paymentDateTo">paymentDateTo</span> | ||
− | | | + | | Maximum allowable date for placing an order. To trigger a rule, the current date must be less or equal to the specified date. |
| empty = ignored<br/>DD.MM.YYYY | | empty = ignored<br/>DD.MM.YYYY | ||
| 31.12.2022 | | 31.12.2022 | ||
Line 330: | Line 328: | ||
| flight type | | flight type | ||
| <span id="airlineType">airlineType</span> | | <span id="airlineType">airlineType</span> | ||
− | | International or domestic (all flights within | + | | International or domestic (all flights within the same country) flight. |
− | + | One value | |
| empty = any<br/>IA (international airlines)<br/>DA (domestic airlines) | | empty = any<br/>IA (international airlines)<br/>DA (domestic airlines) | ||
| IA<br/>DA | | IA<br/>DA | ||
Line 337: | Line 335: | ||
| flight numbers | | flight numbers | ||
| <span id="flightNumber">flightNumber</span> | | <span id="flightNumber">flightNumber</span> | ||
− | | | + | | Permissible flight numbers, can be specified with or without the code of the marketing company. |
Input variants: | Input variants: | ||
− | * NNN,NNN: rule | + | * NNN,NNN: the rule applies if at least one flight number from a flight from any segment is found on the list. |
− | * NNN, | + | * NNN,NNNN! : the rule shall apply if all flight numbers from all flight segments are found on the list. |
− | * <>NNN, | + | * <>NNN,NNNN : the rule will not apply if at least one flight number from any flight segment is found on the list. |
− | * <>NNN, | + | * <>NNN,NNNN! : the rule will not apply if all the flight numbers are found on the list. |
− | | empty = any<br/>- one or | + | | empty = any<br/>- one or more values (see description) |
| SU 123,SU 345<br/>123,345<br/><>LH 555 | | SU 123,SU 345<br/>123,345<br/><>LH 555 | ||
|- | |- | ||
| aircraft type | | aircraft type | ||
| <span id="aircraft">aircraft</span> | | <span id="aircraft">aircraft</span> | ||
− | | | + | | Permissible aircraft codes, must be specified in the same form as the codes returned by the GDS. |
Input variants: | Input variants: | ||
− | * CODE,CODE: rule | + | * CODE,CODE: the rule applies if at least one aircraft code from any segment matches one of the specified list. |
− | * CODE,CODE! : rule | + | * CODE,CODE! : the rule shall be applied if aircraft codes from all flight segments are in the list. |
− | * <>CODE,CODE : rule will not apply if at least one code from the flight is in the list. | + | * <>CODE,CODE : the rule will not apply if at least one aircraft code from the flight is in the list. |
− | * <>CODE,CODE | + | * <>CODE,CODE : the rule will not apply if all the codes from the flight are in the list. |
− | | empty = any<br/>- one or | + | |
+ | | empty = any<br/>- one or more values (see description) | ||
| 73C,DH4<br/>735 | | 73C,DH4<br/>735 | ||
|- | |- | ||
| fare codes | | fare codes | ||
| <span id="tariffs">tariffs</span> | | <span id="tariffs">tariffs</span> | ||
− | | | + | | Permissible tariff codes. At least one fare from the flight must coincide with one from the given list. If there is a rule with denial, there must be no matches. The match is not exact: the code from the rule may be contained in the code from the flight (for example, the entered S1GREY26 will match S1GREY26CH from the flight). |
Input variants: | Input variants: | ||
− | * CODE,CODE: rule | + | * CODE, CODE: the rule applies if at least one fare appears in the list. |
− | * CODE,CODE! : rule will | + | * CODE,CODE! : the rule will be applied if all the fares of the flight are in the list. |
− | * <>CODE,CODE : | + | * <>CODE,CODE : the rule won't be applied, if at least one fare is in the list. |
− | * <>CODE,CODE | + | * <>CODE,CODE : the rule doesn't apply, if all fares of the flight are in the list. |
− | You can | + | You can set a [http://ru.wikipedia.org/wiki/Регулярные_выражения regular expression]. To do this, write the parameter in /XXX/ format. Examples: |
− | * /ABC/ — code must contain "..ABC..", for example "NBABCS" | + | * /ABC/ — code must contain "..ABC..", for example, "NBABCS" |
− | * /abc/i — case | + | * /abc/i — case insensitive check, the code can contain characters in any case, for example "NBABCS" or "Abcof" |
* /'''^'''TN/ — code must begin with "TN..", for example "TNQRTY" | * /'''^'''TN/ — code must begin with "TN..", for example "TNQRTY" | ||
− | * /OW'''$'''/ — code must end with "..OW", for example "SRSOW" | + | * /OW'''$'''/ — the code must end with "..OW", for example "SRSOW" |
− | * /'''^.'''L/ — first letter - any ( '''.''' — any symbol), the second letter in the fare code must be L, for example "QLFST" | + | * /'''^.'''L/ — first letter - any ( '''.''' — any symbol ), the second letter in the fare code must be L, for example "QLFST" |
− | * /OK'''.*'''RT/ — ( '''.*''' = any number of any | + | * /OK'''.*'''RT/ — ( '''.*''' = any number of any characters) "..OK..RT..", for example "ANOKURTN" |
− | | empty = any<br/>- one or | + | | empty = any<br/>- one or more values (see description) |
| WRUTH9PL,ARUTH9PL | | WRUTH9PL,ARUTH9PL | ||
<br/>/TN.*OW/ | <br/>/TN.*OW/ | ||
Line 384: | Line 383: | ||
| maximum fare | | maximum fare | ||
| <span id="maxTariff">maxTariff</span> | | <span id="maxTariff">maxTariff</span> | ||
− | | Restriction on the maximum price value of the "base | + | | Restriction on the maximum price value of the "base price" (the sum of all fares from the carriers on the flight or the price from GDS minus taxes). If the parameter is set, the rule written in the line is triggered only if the flight fare is less than or equal to the specified value. |
− | | empty = no | + | | empty = no limit<br/>xxxCODE (see examples) |
| 10000RUB<br> | | 10000RUB<br> | ||
300EUR | 300EUR | ||
|- | |- | ||
− | | | + | | Private fare |
| <span id="privateFare">privateFare</span> | | <span id="privateFare">privateFare</span> | ||
− | | To trigger the rule, the flight must have a fare with the | + | | To trigger the rule, the flight must have a fare with the sign of confidential (private). This information is provided by GDS. If it's enough to indicate a specific code of a private fare to unambiguously define the rule, it's not necessary to set the sign. |
− | | empty = any fares<br/>1 — private | + | | empty = any fares<br/>1 — a private one must be present<br/>0 — there must be no private fares |
| 0<br/>1 | | 0<br/>1 | ||
|- | |- | ||
| tax codes | | tax codes | ||
| <span id="taxes">taxes</span> | | <span id="taxes">taxes</span> | ||
− | | | + | | Permissible tax codes |
− | |||
Input variants: | Input variants: | ||
− | * CODE,CODE: | + | * CODE, CODE: the rule will apply if any tax from the flight is in the list. |
− | * CODE,CODE! : | + | * CODE,CODE! : the rule will apply if all the flight taxes are in the list. |
− | * <>CODE,CODE : | + | * <>CODE,CODE : the rule will not apply if any flight tax is in the list. |
− | * <>CODE,CODE | + | * <>CODE,CODE : the rule will not apply if all the flight tax are in the list. |
− | where CODE | + | where CODE is a set of capital Latin letters. |
− | | empty = any<br/>- one or | + | | empty = any<br/>- one or more values (see description) |
| YQ,YR<br/><>YQ! | | YQ,YR<br/><>YQ! | ||
|- | |- | ||
| price confirmed | | price confirmed | ||
| <span id="priceIsActual">priceIsActual</span> | | <span id="priceIsActual">priceIsActual</span> | ||
− | | | + | | An attribute of a confirmed flight price. The flight price after search is considered unconfirmed, its status changes to "confirmed" ("actual") after creating a real PNR or after requesting price update within Nemo Connect web services (before creating a PNR). |
− | | empty = any flights<br/>1 — | + | | empty = any flights<br/>1 — flight in the PNR or its price is checked in advance <br/>0 — flight has just been retrieved from search results |
| 0<br/>1 | | 0<br/>1 | ||
|- | |- | ||
− | | | + | | availability of VC segments for all fares |
| <span id="valSegmentsInTariff">valSegmentsInTariff</span> | | <span id="valSegmentsInTariff">valSegmentsInTariff</span> | ||
− | | Verification: | + | | Verification: any fare segment must have a validating carrier segment (minimum one). |
− | | empty or 0 = any fares<br/>1 | + | | empty or 0 = any fares<br/>1 - condition must be met |
| 0<br/>1 | | 0<br/>1 | ||
|- | |- | ||
| service classes | | service classes | ||
| <span id="serviceClass">serviceClass</span> | | <span id="serviceClass">serviceClass</span> | ||
− | | | + | | Permissible service class categories. |
− | Input | + | Input options (one- or two-letter values are entered): |
− | * CODE,CODE: rule | + | * CODE: The rule applies if the class is in the list. |
− | * CODE,CODE! : rule | + | * CODE: this rule is applied if a combination of classes is in the list. |
− | * <>CODE,CODE : rule will not apply if a class from any segment | + | * CODE, CODE: a rule is applied if a class from any segment is in the list. |
− | * <>CODE,CODE | + | * CODE,CODE! : the rule applies if all classes from all flight segments are in the list. |
− | where CODE: | + | * <>CODE,CODE : the rule will not apply if a class from any segment is in the list. |
+ | * <>CODE,CODE : the rule will not apply if all classes from all flight segments are in the list. | ||
+ | where the CODE: | ||
* B - business | * B - business | ||
− | * E - economy | + | * E - economy |
− | * F - first | + | * F - first |
* EB - combination of economy + business | * EB - combination of economy + business | ||
* EF - combination of economy + first | * EF - combination of economy + first | ||
* BF - combination of business + first | * BF - combination of business + first | ||
− | | empty = any<br/>- one or | + | |
+ | | empty = any<br/>- one or more values (see description) | ||
| B,E<br/>F<br/>EB,EF,F | | B,E<br/>F<br/>EB,EF,F | ||
|- | |- | ||
| booking classes (codes) | | booking classes (codes) | ||
| <span id="bookingClass">bookingClass</span> | | <span id="bookingClass">bookingClass</span> | ||
− | | Allowed | + | | Allowed letters (one-letter codes) of booking classes. Must be Latin letters, Cyrillic letters are allowed only for Sirena supplier rules. |
Input variants: | Input variants: | ||
− | * CODE,CODE: rule | + | * CODE, CODE: the rule applies if at least one class from any segment is in the list. |
− | * CODE,CODE! : rule | + | * CODE,CODE! : the rule applies if the classes from all flight segments are in the list. |
− | * <>CODE,CODE : rule will not apply if at least one class from any segment | + | * <>CODE,CODE : the rule will not apply if at least one class from any segment is in the list. |
− | * <>CODE,CODE | + | * <>CODE,CODE : the rule will not apply if the classes from all flight segments are in the list. |
− | | empty = any<br/>- one or | + | | empty = any<br/>- one or more values (see description) |
| A,B,C<br/><>A,B,C | | A,B,C<br/><>A,B,C | ||
|- | |- | ||
− | | carriers and classes | + | | carriers and classes |
| <span id="airlinesAndClasses">airlinesAndClasses</span> | | <span id="airlinesAndClasses">airlinesAndClasses</span> | ||
− | | | + | | Set of "marketing carrier" + "booking class" pairs of any segment of the route. |
+ | |||
+ | Permissible input options: | ||
− | + | * CODE:CODE,CODE:CODE,CODE:CODE : the rule applies if at least one flight segment matches one of the listed ones. | |
+ | * CODE:CODE,CODE:CODE,CODE:CODE! : the rule will apply if all the flight segments are in the list. | ||
+ | * <>CODE:CODE,CODE:CODE,CODE:CODE : the rule will not apply if at least one flight segment would match any of the segments in the list. | ||
+ | * <>CODE:CODE,CODE:CODE,CODE:CODE! : the rule will not apply if all flight segments are in the list. | ||
− | + | | empty = any<br/>- one or more values (see description) | |
− | |||
− | |||
− | |||
− | | empty = any<br/>- one or | ||
| SU:A,LH:B,BA:C<br/> | | SU:A,LH:B,BA:C<br/> | ||
Line 468: | Line 470: | ||
<>S7:A,BA:B! | <>S7:A,BA:B! | ||
|- | |- | ||
− | | zones | + | | zones |
| <span id="zones">zones</span> | | <span id="zones">zones</span> | ||
− | | | + | | Geographical zones of the flight. The whole flight must not exceed one of the specified zones for the rule to be triggered. [http://www.geonames.org/countries/ division of countries by specified zones]. |
* AF - Africa, | * AF - Africa, | ||
* AN - Antarctica | * AN - Antarctica | ||
Line 486: | Line 488: | ||
* AFNA - Africa + North America | * AFNA - Africa + North America | ||
* ASNA - Asia + North America | * ASNA - Asia + North America | ||
− | * EUAN - Europe + | + | * EUAN - Europe + Antarctic |
* AFAS - Africa + Asia | * AFAS - Africa + Asia | ||
− | * AFAN - Africa + Antarctica | + | * AFAN - Africa + Antarctica |
* AFOC - Africa + Australia and Oceania | * AFOC - Africa + Australia and Oceania | ||
* AFSA - Africa + South America | * AFSA - Africa + South America | ||
− | * ANNA - | + | * ANNA - Antarctic + North America |
− | * ANOC - | + | * ANOC - Antarctic + Australia and Oceania |
− | * ANSA - | + | * ANSA - Antarctic + South America |
* ASAN - Asia + Antarctica | * ASAN - Asia + Antarctica | ||
* NASA - North America + South America | * NASA - North America + South America | ||
Line 500: | Line 502: | ||
* NAOC - North America + Australia and Oceania | * NAOC - North America + Australia and Oceania | ||
* OCAS - Australia and Oceania + Asia | * OCAS - Australia and Oceania + Asia | ||
− | Only the listed combinations | + | Only the listed zone combinations are allowed! |
− | |||
− | - one or | + | | empty = any<br/>- one or more values |
| AS,EU<br/>SA<br/>EUSA, EUNA | | AS,EU<br/>SA<br/>EUSA, EUNA | ||
|- | |- | ||
| country zone | | country zone | ||
| <span id="countryZones">countryZones</span> | | <span id="countryZones">countryZones</span> | ||
− | | The | + | | The above country codes form an area beyond which an aircraft must not land and take off. |
− | | empty = any | + | | empty = any<br/>CODE,CODE... |
− | CODE,CODE... | ||
| RU,IT,DE,FR | | RU,IT,DE,FR | ||
|- | |- | ||
− | | departure | + | | countries of departure |
| <span id="depCountries">depCountries</span> | | <span id="depCountries">depCountries</span> | ||
− | | | + | | Permissible countries of departure for the flight (only the country of departure of the first segment of the route is checked). |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | ||
| RU<br/><>LV,LT | | RU<br/><>LV,LT | ||
|- | |- | ||
− | | | + | | countries of destination |
| <span id="arrCountries">arrCountries</span> | | <span id="arrCountries">arrCountries</span> | ||
− | | The destination country is | + | | The destination country is checked (for OW and CR: this is the last country of the last segment, for RT: this is the last country of the first leg of the route). For example, for MOW-PAR-MOW flight, the destination country is FR, for MOW-PAR-LON - GB. '''Country of departure=RU, country of destination=RU does not mean a local flight''' - do not forget to specify the flight type DA. |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | ||
| RU<br/><>LV,LT | | RU<br/><>LV,LT | ||
Line 527: | Line 527: | ||
| direct flight | | direct flight | ||
| <span id="isDirect">isDirect</span> | | <span id="isDirect">isDirect</span> | ||
− | | | + | | Direct flight attribute |
− | | empty = any<br/>0 — with transfers | + | | empty = any<br/>0 — only with transfers<br/>1 — direct only<br/> |
− | + | additionally:<br/>2 — initial flight is direct <br/>3 — initial flight is with transfers | |
| 0<br/>1 | | 0<br/>1 | ||
|- | |- | ||
| route type | | route type | ||
| <span id="routeType">routeType</span> | | <span id="routeType">routeType</span> | ||
− | | You can leave the field | + | | You can leave the field blank or specify a single value: |
− | * One- | + | * One Way - OW, |
− | * Round Trip | + | * Round Trip - RT, |
− | * Complex Route | + | * Complex Route - CR. |
− | | empty = any<br/> | + | | empty = any<br/>CODE (see examples) |
| OW<br/>RT<br/>CR | | OW<br/>RT<br/>CR | ||
|- | |- | ||
| routes | | routes | ||
| <span id="routeFull">routeFull</span> | | <span id="routeFull">routeFull</span> | ||
− | | | + | | Chain of IATA codes of cities or airports, describing the entire route of the flight, taking into account transfers, without breaks and repetitions. Always use the IATA code of the city, if it is available (aggregation airport). For example, a VKO-ORY, ORY-VKO flight is turned to the MOW-PAR-MOW route. |
− | |||
| empty = any<br/>CODE-CODE,CODE-CODE,...<br/><>CODE-CODE,CODE-CODE,...(except for) | | empty = any<br/>CODE-CODE,CODE-CODE,...<br/><>CODE-CODE,CODE-CODE,...(except for) | ||
| MOW-LON,LON-MOW<br/><>MOW-BER-PAR | | MOW-LON,LON-MOW<br/><>MOW-BER-PAR | ||
Line 550: | Line 549: | ||
| contains routes | | contains routes | ||
| <span id="routePart">routePart</span> | | <span id="routePart">routePart</span> | ||
− | | | + | | Only part of the route compiled similarly to the previous one is specified. |
| empty = any<br/>CODE-CODE,<br/>-CODE-,...<br/><>-CODE-,...(except for) | | empty = any<br/>CODE-CODE,<br/>-CODE-,...<br/><>-CODE-,...(except for) | ||
| -CAI-<br/><>-PRG-,PRG-SVX | | -CAI-<br/><>-PRG-,PRG-SVX | ||
Line 556: | Line 555: | ||
| routes (from airports) | | routes (from airports) | ||
| <span id="routeAirportsFull">routeAirportsFull</span> | | <span id="routeAirportsFull">routeAirportsFull</span> | ||
− | | Use the | + | | Use the codes of airports (not cities) in the IATA rule. The rest is similar to the "routes". |
− | | see | + | | see "routes" parameter description. |
− | | see | + | | see "routes" parameter description. |
|- | |- | ||
| contains routes (from airports) | | contains routes (from airports) | ||
| <span id="routeAirportsPart">routeAirportsPart</span> | | <span id="routeAirportsPart">routeAirportsPart</span> | ||
− | | Use the | + | | Use the codes of airports (not cities) in the IATA rule. The rest is similar to the "contains routes". |
− | | see "contains routes" | + | | see "contains routes" parameter description. |
− | | see "contains routes" | + | | see "contains routes" parameter description. |
|- | |- | ||
| departure (airports, cities) | | departure (airports, cities) | ||
| <span id="depAirports">depAirports</span> | | <span id="depAirports">depAirports</span> | ||
− | | Only the departure airport of the first segment is checked. When | + | | Only the departure airport of the first segment is checked. When you specify airport codes, you need an exact match. While specifying the codes of cities (aggregation of airports), the comparison is made according to the internal glossary of airports. It is recommended to specify the codes of specific airports. |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | ||
| MOW,PAR,BER <>VKO,LON | | MOW,PAR,BER <>VKO,LON | ||
|- | |- | ||
− | | | + | | arrival (airports, cities) |
| <span id="arrAirports">arrAirports</span> | | <span id="arrAirports">arrAirports</span> | ||
− | | The arrival | + | | The airport of arrival is defined similarly to the "country of destination". The check for comparison is made similarly to "departure (airports, cities)". |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | ||
| MOW,PAR,BER <>VKO,LON | | MOW,PAR,BER <>VKO,LON | ||
|- | |- | ||
− | | start of | + | | start of flight |
| <span id="dateBegin">dateBegin</span> | | <span id="dateBegin">dateBegin</span> | ||
− | | | + | | The departure date of the first segment must be greater than or equal to the specified date. |
− | | empty = | + | | empty = ignored<br/>DD.MM.YYYY |
− | DD.MM.YYYY | ||
| 01.01.2012 | | 01.01.2012 | ||
− | |||
31.01.2010 | 31.01.2010 | ||
|- | |- | ||
− | | | + | | departure in (hours) |
| <span id="dateBegin">dateDepartureAfter</span> | | <span id="dateBegin">dateDepartureAfter</span> | ||
− | | | + | | The maximum value or range of departure is set from the current date. For example, if you want to select flights no later than 5 days before departure, the range [0,120] shall be set. |
| empty = no restriction <br/> maximum value <br/>[X,X] — range | | empty = no restriction <br/> maximum value <br/>[X,X] — range | ||
| 13 | | 13 | ||
− | |||
[10,100] | [10,100] | ||
|- | |- | ||
− | | end of | + | | end of flight |
| <span id="dateEnd">dateEnd</span> | | <span id="dateEnd">dateEnd</span> | ||
− | | The departure | + | | The date of departure of the first segment should be less or equal to the specified date |
− | | empty = ignored<br/> | + | | empty = ignored<br/>DD.MM.YYYY |
− | DD.MM.YYYY | ||
| 31.12.2022 | | 31.12.2022 | ||
|- | |- | ||
| return not earlier than | | return not earlier than | ||
| <span id="dateBackBegin">dateBackBegin</span> | | <span id="dateBackBegin">dateBackBegin</span> | ||
− | | | + | | The departure date of the last route segment should be greater than or equal to the specified date |
− | | empty = ignored<br/> | + | | empty = ignored<br/>DD.MM.YYYY |
− | DD.MM.YYYY | ||
| 31.12.2022 | | 31.12.2022 | ||
|- | |- | ||
| return not later than | | return not later than | ||
| <span id="dateBack">dateBack</span> | | <span id="dateBack">dateBack</span> | ||
− | | | + | | The departure date of the last route segment should be less than or equal to the specified date |
− | | empty = ignored<br/> | + | | empty = ignored<br/>DD.MM.YYYY |
− | DD.MM.YYYY | ||
| 31.12.2022 | | 31.12.2022 | ||
|- | |- | ||
| duration in days | | duration in days | ||
| <span id="daysDuration">daysDuration</span> | | <span id="daysDuration">daysDuration</span> | ||
− | | | + | | Restriction on the maximum gap in days between the first flight date and the end of the route. You can specify a range. |
− | Duration in days is calculated as a mathematical | + | |
− | | empty = no restriction<br/>number of days | + | Duration in days is calculated as a mathematical difference in dates. If the departure and return are in one day, the duration will be equal to 0 days. |
+ | | empty = no restriction<br/>number of days - maximum value (inclusive)<br/>[X,X] — range | ||
| 13<br/> | | 13<br/> | ||
[3,13] | [3,13] | ||
|- | |- | ||
− | | | + | | days of the week |
| <span id="dayOfWeek">dayOfWeek</span> | | <span id="dayOfWeek">dayOfWeek</span> | ||
− | | | + | | Permissible days of the week for the departure date of the route's first segment. Values are specified by the number corresponding to the order of the day of the week, starting from Monday. |
− | | empty = ignored<br/> | + | | empty = ignored<br/>1 — Monday<br/>...<br/>7 — Sunday<br/>- one or more values |
− | 1 — Monday<br/>...<br/>7 — Sunday<br/>- one or | ||
| 2<br/>3,5 | | 2<br/>3,5 | ||
|- | |- | ||
| passenger types | | passenger types | ||
| <span id="passengers">passengers</span> | | <span id="passengers">passengers</span> | ||
− | | | + | | Permissible types of passengers on the flight. For the rule to work, all the listed types of passengers must be present in the flight. |
− | | empty = any<br/>ADT — adult<br/>CLD — child (2-12)<br/>INF — infant (0-2)<br/>INS — infant with seat (0-2)<br/>- one or | + | | empty = any<br/>ADT — adult<br/>CLD — child(2-12)<br/>INF — infant(0-2)<br/>INS — infant with seat (0-2)<br/>- one or more values |
| INF<br/>ADT,CLD | | INF<br/>ADT,CLD | ||
|- | |- | ||
| flight mask | | flight mask | ||
| | | | ||
− | | | + | | Formalized flight description in text format, to create complex rules<br/> Will be added to the next version of the program |
| | | | ||
| | | | ||
Line 645: | Line 638: | ||
| priority | | priority | ||
| <span id="priority">priority</span> | | <span id="priority">priority</span> | ||
− | | If several rules are triggered, | + | | If several rules are triggered, one with the highest priority is selected. If there are several rules with the same priority (or no priority is specified), the newer rule is selected (located below in the imported table). |
− | | | + | | integral number<br/>empty = 0 |
| 1<br/>2 | | 1<br/>2 | ||
|- | |- | ||
− | | | + | | promotional code |
| | | | ||
− | | Unique promotion code. It is created in the | + | | Unique promotion code. It is created in the Administration panel in the section {{Menu|Product control|Modules|Loyalty program|Promotions and promotional codes.}} |
− | | any set of letters/ | + | | any set of letters/digits/symbols |
| 12022014_Promo | | 12022014_Promo | ||
|- | |- | ||
| utm source | | utm source | ||
| <span id="utmSource">utmSource</span> | | <span id="utmSource">utmSource</span> | ||
− | | Transition source ID, which is displayed in the " | + | | Transition source ID, which is displayed in the "№" field of the transition sources table in the metric.<br/> Multiple sources are allowed. |
| empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | | empty = any<br/>CODE,CODE...<br/><>CODE,CODE...(except for) | ||
| 123,456<br/><>123,456 | | 123,456<br/><>123,456 | ||
Line 663: | Line 656: | ||
| airline commission | | airline commission | ||
| <span id="commission">commission</span> | | <span id="commission">commission</span> | ||
− | | Agent profit received from the airline for tickets | + | | Agent's profit, received from the airline for sold tickets. The field required for filling in must strictly correspond to the value indicated in the contract. The value is transferred to the GDS upon ticketing. It can be specified in percentage of the fare or in absolute value. Commission is always calculated for each passenger. |
− | Rules with | + | Rules with specified zero commission have higher priority over rules with empty commission. |
| "xxxCODE" (currency code) or "XX%" | | "xxxCODE" (currency code) or "XX%" | ||
| 100RUB<br/>13% | | 100RUB<br/>13% | ||
|- | |- | ||
− | | commission | + | | subagent commission |
| <span id="agencyCommission">agencyCommission</span> | | <span id="agencyCommission">agencyCommission</span> | ||
− | | | + | | Commission to a subagent is a part of the airline's profit which the agent sends to the subagents. The value of the commission acts as a discount for subagents, reducing the price of air tickets. Commission is always calculated for each passenger fare is not equal to 0. |
− | '''Commission | + | '''Commission assignment formats for subagents: ''' |
For all subagents:<br/> | For all subagents:<br/> | ||
* Fixed amount: <code>XRUB</code>, where: | * Fixed amount: <code>XRUB</code>, where: | ||
− | ** ''X'' - commission amount, integer or decimal fraction | + | ** ''X'' - commission amount, integer or decimal fraction with dot as a separator: <code>60</code>, <code>-3</code>, <code>0.5</code> |
− | ** ''RUB'' - IATA code of the currency:<code>EUR</code>, <code>UAH</code>. | + | ** ''RUB'' - IATA code of the currency: <code>EUR</code>, <code>UAH</code>. |
− | * Percentage of the fare: <code>X%</code>, | + | * Percentage of the fare: <code>X%</code>, |
− | **where ''X'' - percentage of the fare, integer or decimal fraction | + | **where ''X'' - a percentage of the fare, an integer or a decimal fraction with a point separator: <code>60}</code>, <code>-3</code>, <code>0.5</code>. |
− | For | + | For selected subagents or groups of subagents: <br/> |
− | * <code>(ID:value),(ID:value),(ID:value),...</code>, where ''ID'' - | + | * <code>(ID:value),(ID:value),(ID:value),...</code>, where ''ID'' - subagent’s (group’s) number in Websky, ''value'' - the size of the commission for this subagency (group) in the following format: <code>X%</code> or <code>XRUB</code>. |
− | In one rule, you can combine the commission for all subagents and the commission for the specified subagents in | + | In one rule, you can combine the commission for all subagents and the commission for the specified subagents in a format: |
− | * <code>XX | + | * <code>XX,(ID:YY),(ID:YY),..., where: |
** XX - commission for all subagents in the format described above, | ** XX - commission for all subagents in the format described above, | ||
− | ** YY - commission for | + | ** YY - commission for the specified subagent in the format described above. |
+ | |||
+ | In this case the size of the commission will be calculated: | ||
+ | * for all subagents, except the specified: XX, | ||
+ | * for the specified: XX + YY. | ||
− | |||
− | |||
− | |||
'''Example:''' <br/> | '''Example:''' <br/> | ||
<pre>5%,(123:2%),(345:3%)</pre>. | <pre>5%,(123:2%),(345:3%)</pre>. | ||
− | *Subagent | + | * Subagent commission under the number 123 is: 5% + 2% = 7% of the fare. <br/> |
− | *Subagent | + | * Subagent commission number 345: 5% + 3% = 8% of the fare. |
− | |||
− | + | If the sum of the decimal is to be entered, the decimal part is separated with "." , for example: <code>0.5%</code> | |
+ | |||
+ | '''Attention!''' In case your agency plans to create a large number of individual pricing rules, each of which will specify the value of the subagent commission for individual subagents / groups / users, the recommended form of entry is as follows: (12345,12346,12347:3%) instead of (12345:3%), (12346:3%), (12347:3%). Which means using a grouping of the same values. | ||
| see description | | see description | ||
Line 711: | Line 706: | ||
|- | |- | ||
− | | | + | | segmental commission calculation |
| <span id="modeForSegment">modeForSegment</span> | | <span id="modeForSegment">modeForSegment</span> | ||
− | | Attribute of | + | | Attribute of commission or bonus being applied for each flight segment. For example, 100 rubles for each flight segment. |
− | | empty = 0<br/>0 — one commission for the entire flight <br/>1 — | + | | empty = 0<br/>0 — there is one commission for the entire flight<br/>1 — commission should be multiplied by the number of segments |
| 0<br/>1 | | 0<br/>1 | ||
|- | |- | ||
| airline bonus | | airline bonus | ||
| <span id="bonus">bonus</span> | | <span id="bonus">bonus</span> | ||
− | | | + | | Additional agent profit that the agency receives from the airline, but it is not taken into account in requests to the GDS. It is set and calculated in the same way as commissions (the parameter "segment commission calculation" is taken into account when calculating). It is used to calculate the "profitability" of air travel, affects the mixer and can affect the fee when setting the "minimum profit" parameter. |
− | |||
− | Of all the rules | + | Of all the triggered rules, the bonus will be taken into account only from one by the following priority: |
− | * Maximum priority for triggered commission rule | + | * Maximum priority for the triggered commission rule |
− | * If there is no bonus in the commission rule, | + | * If there is no bonus in the commission rule, a bonus from another triggered ''non-commission'' rule (an additional rule with an empty commission) will be used. If there are several such rules, the rule with the highest identifier (below in the table) will be used. |
| "xxxCODE" (currency code) or "XX%" | | "xxxCODE" (currency code) or "XX%" | ||
| 100RUB<br/>13% | | 100RUB<br/>13% | ||
|- | |- | ||
− | | segment bonus ( | + | | segment bonus (allowed for airlines) |
| <span id="modeForAirlines">modeForAirlines</span> | | <span id="modeForAirlines">modeForAirlines</span> | ||
− | | Setting the current parameter | + | | Setting the current parameter forcibly enables the mode of bonus calculation for each flight segment (for absolutely specified bonus), but only segments with validating or interline carriers from the list specified here are taken into account. |
− | | empty<br/> | + | | empty<br/>CODE (airline code)<br/> |
− | CODE (airline code)<br/> | + | CODE,CODE... |
− | CODE,CODE ... | ||
| SU<br/> | | SU<br/> | ||
SU,FV | SU,FV | ||
Line 739: | Line 732: | ||
| agency charge | | agency charge | ||
| <span id="charge">charge</span> | | <span id="charge">charge</span> | ||
− | | All markups/discounts that will be applied to the flight described by the rule are | + | | All markups/discounts that will be applied to the flight described by the rule are specified here. You can specify several price rules in one field by dividing them by user types.<br/> |
− | format = (subject: | + | format = (subject:sum), (subject:sum), (subject:sum)...<br/> subject = group ID, user ID and two "B2C", "B2B" values with the possibility of <>rejection<br/> sum = subclause + subclause + subclause. ...[restriction]<br/>restriction = range of the total charge, set as [price, price]<br/> sum = price*multiplier*multiplier...<br/>price = "xxCODE" (currency code) or "XX%" (percentage of the total price (fare+taxes) of GDS)<br/> multiplier = one of the values: |
− | * PAS | + | * PAS - total number of passengers (including INF) |
− | * ADT | + | * ADT - number of adults |
− | * CLD | + | * CLD - number of children (2-12) |
− | * INF | + | * INF - number of infants (0-2) |
− | * INS | + | * INS - number of infants with seat (0-2) |
− | * SEG | + | * SEG - number of flight segments (flight from A to B with 1 transfer => 2 segments) |
− | * LEG | + | * LEG - number of legs (flight from A to B with 1 transplant => 1 shoulder) |
− | * TRF | + | * TRF - to get the fare price equal to the fare sum |
− | * SGV | + | * SGV - number of segments of the validating carrier |
Examples: | Examples: | ||
− | * 100RUB*SEG : plus 100 rubles to | + | * 100RUB*SEG : plus 100 rubles to order value for each segment |
− | * 150RUB*SEG*PAS;: plus 150 rubles for each segment, for each passenger. For example: | + | * 150RUB*SEG*PAS;: plus 150 rubles for each segment, for each passenger. For example: flight with two segments and two passengers = 600 rubles. |
− | * -10%*TRF : 10% discount from | + | * -10%*TRF : 10% discount from the fare. |
* 50RUB*LEG*ADT[,1000RUB] : 50 rubles for each adult ticket on each flight leg, but not more than 1000RUB | * 50RUB*LEG*ADT[,1000RUB] : 50 rubles for each adult ticket on each flight leg, but not more than 1000RUB | ||
− | * (<>123,345: 100RUB), (123,345: -100RUB) : subjects 123 and 345 will receive a discount of 100 rubles | + | * (<>123,345: 100RUB), (123,345: -100RUB) : subjects 123 and 345 will receive a discount of 100 rubles, the rest of the markup is 100 rubles. |
− | * (B2B: 1000RUB*ADT | + | * (B2B: 1000RUB*ADT - 100RUB*CLD[-10%,-1%]), (B2C: 10% [10USD,]), (123: -1000RUB) : B2B users will get a markup of 1000 rubles for each adult ticket and 100 rubles discount for each child ticket, but not less than 1% of the total cost and not more than 10%. B2C users receive a 10% surcharge, but not less than $10. User ID=123 will receive a discount of 1000 rubles. |
− | If several price rules | + | If several price rules, listed by comma, are triggered, their amount is taken. If this is not suitable behavior, divide the price rules into separate flight rules (rows), they can be adjusted by priority. |
− | + | '''Attention!''' In case you plan to create a large number of individual pricing rules for your agency, each of which will specify the value of the agency fee for individual subagents / groups / users, the recommended form of entry is as follows: (12345,12346,12347:3%) instead of (12345:3%), (12346:3%), (12347:3%). Which means using a grouping of the same values. | |
− | If you | + | If you need to enter the amount as a decimal fraction, the fraction is separated with "." , for example: <code>0.5%</code> |
| see description | | see description | ||
| see description | | see description | ||
|- | |- | ||
− | | | + | | Metasearch commission |
− | |MetasearchCommission | + | | MetasearchCommission |
− | | | + | | Commission, charged by the meta-search system (for Websky at the moment it is only Aviasales) and calculated at the search stage. The value should be specified as decimal representation of the interest rate - it is a fraction of 1, for example, if you set 0.05 - 5%. It is possible to specify with/without the sign "%". Commission is calculated from the amount = flight price from supplier + fees/discounts + additional fees + min. profit. The calculated value is rounded to 2 characters after the separator. |
− | |||
| see description | | see description | ||
− | |0.05 | + | | 0.05 |
0.025% | 0.025% | ||
|- | |- | ||
− | | attribute | + | | extra charge attribute |
| <span id="chargeExt">chargeExt</span> | | <span id="chargeExt">chargeExt</span> | ||
− | | The setting allows you to change the procedure | + | | The setting allows you to change the charge calculation procedure by adding additional calculation rules to the final result. |
− | * 0 | + | * 0 - Standard fee (default value). Of all the fees specified, one will be applied by priority. |
− | * 1 | + | * 1 - Additional fee. Fees specified as additional fees are checked separately. In the same way, one extra charge with maximum priority is applied. |
− | * 2 | + | * 2 - Obligatory fee. It will be obligatory to apply if all collection parameters are satisfied. Priority is ignored. |
| empty = 0<br/> | | empty = 0<br/> | ||
1<br/> | 1<br/> | ||
Line 788: | Line 780: | ||
| minimum profit | | minimum profit | ||
| <span id="minProfit">minProfit</span> | | <span id="minProfit">minProfit</span> | ||
− | | | + | | Minimum profit that the agency will receive for the order. If the calculated agency profit is less than the minimum profit, the fee will be increased to the required value. |
− | The format is similar to | + | The format is similar to that of an agency. For calculations, the value from the rule by which the airline commission will be determined will be applied. If you need to change this behavior, you should set the "priority of the min. profit" parameter (see below). |
| see description | | see description | ||
| 50RUB*LEG*PAS | | 50RUB*LEG*PAS | ||
|- | |- | ||
− | | | + | | minimum profit priority |
| <span id="minProfitPriority">minProfitPriority</span> | | <span id="minProfitPriority">minProfitPriority</span> | ||
− | | An additional parameter responsible for calculating the minimum profit. The rule with the highest priority will | + | | An additional parameter responsible for calculating the minimum profit. The rule with the highest priority will be triggered, if the priority matches, the rule below will be used. |
| Positive numeric values. | | Positive numeric values. | ||
| 1, 2, ... | | 1, 2, ... | ||
|- | |- | ||
− | | | + | | roundoff |
| <span id="chargeRounding">chargeRounding</span> | | <span id="chargeRounding">chargeRounding</span> | ||
− | | | + | | The procedure of arithmetic rounding of the charge |
− | | empty = 0,<br/>0 = to | + | | empty = 0,<br/>0 = to integer vaue,<br/>0.1 = to tenths,<br/>0.01 = to hundredths |
| 0.1<br/>0.01 | | 0.1<br/>0.01 | ||
|- | |- | ||
Line 812: | Line 804: | ||
|} | |} | ||
− | == Additional rule | + | == Additional rule parameters for Websky platform == |
− | Parameters for private (confidential) fares | + | Parameters for working with private (confidential) fares. |
− | To view the description | + | To view the options description <span style="background-color:gold">expand the table</span>: |
{| class="wikitable mw-collapsible mw-collapsed" | {| class="wikitable mw-collapsible mw-collapsed" | ||
− | |colspan="5"| ''' | + | |colspan="5"| '''additional rule parameters''' |
|- | |- | ||
− | ! scope="col" | | + | ! scope="col" | Title<br/> |
! scope="col" | Internal name<br/> | ! scope="col" | Internal name<br/> | ||
! scope="col" | Description<br/> | ! scope="col" | Description<br/> | ||
− | ! scope="col" | | + | ! scope="col" | Permissible values<br/> |
! scope="col" | Examples<br/> | ! scope="col" | Examples<br/> | ||
|- | |- | ||
| tour code | | tour code | ||
| <span id="id">gdsTourCode</span> | | <span id="id">gdsTourCode</span> | ||
− | | | + | | Тур код<br/> |
− | | any value | + | | any value<br/> On the example of Amadeus: if it is not necessary to specify PAX (passengerType), we specify only the RU084P tourcode, before the tourcode on the supplier side, * (asterisk) is always added, and the entered command in the terminal looks as FT *RU084P. If it is necessary to specify PAX (passengerType), you need to to specify it with the tourcode without space PAXRU084P, in the terminal, the entered command looks like FT PAX *RU084P. |
− | | 15ZU | + | | 15ZU<br/> RU084P |
|- | |- | ||
| ticket designator | | ticket designator | ||
Line 842: | Line 834: | ||
| <span id="id">gdsEndorsment</span> | | <span id="id">gdsEndorsment</span> | ||
| Endorsements<br/> | | Endorsements<br/> | ||
− | | any value<br/> or %VAT_VALUE% to transfer the VAT | + | | any value<br/> or %VAT_VALUE% to transfer the value of VAT in the endorsement only for GDS Amadeus, Sabre, Galileo, GalileouAPI and S7 NDC; for Sabre, the value is transferred to the GDS, but not to the Itinerary Receipt |
| Non-Endorsable/Valid on BA/IB only/Refund only to issuing agent; %VAT_VALUE% | | Non-Endorsable/Valid on BA/IB only/Refund only to issuing agent; %VAT_VALUE% | ||
|- | |- | ||
Line 849: | Line 841: | ||
| Agent's own profit<br/> | | Agent's own profit<br/> | ||
| "xxxCODE" (currency code) or "XX%" Only integer values are allowed | | "xxxCODE" (currency code) or "XX%" Only integer values are allowed | ||
− | | 100RUB<br/>2% | + | | 100RUB<br/>2% |
|- | |- | ||
− | | discount subject | + | | tour code discount subject |
| <span id="id">corpClient</span> | | <span id="id">corpClient</span> | ||
− | | ID of the subject who will | + | | ID of the subject who will be given a discount on the tourcode |
| ID,ID | | ID,ID | ||
<>ID,ID | <>ID,ID | ||
Line 859: | Line 851: | ||
<>2786,2361 | <>2786,2361 | ||
|- | |- | ||
− | | discount by | + | | discount by tourcode |
| <span id="id">discount</span> | | <span id="id">discount</span> | ||
− | | | + | | Discount <br/> |
| "xxxCODE" (currency code) or "XX%" | | "xxxCODE" (currency code) or "XX%" | ||
| 100RUB<br/>13% | | 100RUB<br/>13% | ||
|- | |- | ||
− | | | + | | authorisation code |
| <span id="id">authCode</span> | | <span id="id">authCode</span> | ||
− | | | + | | Authorisation code<br/> |
| any value | | any value | ||
| MB10 | | MB10 | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== EMD == | == EMD == | ||
EMD - electronic multi-purpose document or voucher. | EMD - electronic multi-purpose document or voucher. | ||
− | In the "Product control → | + | In the section "Product control → Avia tickets → Pricing → Settings", there is an option '''Issue EMD by order charge value'''. It is responsible for issuing the EMD for the agency's charge (available only to Sirena Travel). Principle of operation: if, for the agency which buys the ticket there is an agency charge in the pricing rules for the validating air carrier company, then, when issuing an order in addition to the itinerary receipt and EMD for additional services, a separate EMD will be issued for agency charge . If there are several people in the order, the charge will be divided between them, the total amount of the fee will not be increased. |
− | + | ||
− | * [[ | + | == See also == |
− | * [[ | + | * [[Pricing for subagents]] |
+ | * [[Currency]] |
Revision as of 22:00, 28 September 2020
Contents
Purpose
Pricing module automates the process of calculation of commissions and charges for air tickets, management of carrier's commission rules, agency fees and sub-agents' commissions.
- allows you to quickly set up even complex commission rules,
- allows you to build a convenient and clear pricing scheme,
- accurately comply with the difficult conditions provided by airlines,
- guarantees correct calculations,
- provides a tool to control the correctness of calculations.
Principle of operation
The module's operation is based on the agency's pricing rules.
Rule — set of "commission and fee values" and "conditions of their application".
Values of commissions and charges is:
- commission from the airline,
- airline bonus,
- agency charge,
- commission for subagents.
Condition of application for commissions and charges — a set of flight parameters to which the fees and charges of the rules will apply ("validating carrier", "GDS", "flight type", "passenger types", etc.).
Pricing rules are defined in a table in an XLS or XLSX file, where:
- "Table string" - rule.
- " String cell" - parameter value.
- "Column header" - parameter name.
Each line is a separate rule.
For one flight, only one rule is selected by criteria and only one rule applies.
Before calculating the commissions, the pricing module determines the availability of the flight for the ticketing and the rule by which the commissions and fees are calculated, using the following algorithm:
- The module records which airline GDS has defined as the validating airline;
- Finds all the rules for that airline in the pricing file;
- Selects the rules that match the flight by all parameters;
- Selects one of the appropriate rules by priority criteria;
- If the triggered rule does not contain an override of the validating carrier, the validating carrier obtained from the GDS is established.
- * If the triggered rule contains an override of the validating carrier, the overriding validating carrier is set.
- The rule applies.
The agency may only issue online flights of contract airlines. An airline is considered a contract airline if it has at least 1 rule in its uploaded pricing file.
Attention! The flight cannot be ticketed if:
- there are no rules for the airline. It is recommended to delete such flights from the search results filter output "Airline is not contract".
- rules for the airline are established, but the flight parameters do not correspond to the rule parameters.
Commissions and charges are calculated each time an order is updated according to the rules loaded into the system at the time of checking:
- when the search results are generated,
- at the time of booking,
- when switching to payment and ticketing,
- when updating the order page.
If, during the period between booking and ticketing, rules were changed, аfter bookingб the order the commissions will be calculated according to the new rules, so the price at the time of booking and the price at the ticketing may differ. The behavior of the system in case of such a situation is set by the parameter Recalculate service charge under System Settings → Background Processes → Synchronization Events. You can track the calculation of commissions valid at the time of booking in the logs on order.
In the price details (on the order page) and in the itinerary receipt information on the charges is provided in accordance with one of the modes of division of charges by passengers:
- Equally divided between non-zero ticket prices - agency and subagency charges are divided equally between all passengers with fare and tax more than 0. This mode is selected by default.
- Equivalent between all fares - agency and subagency charges are divided equally among all passengers.
- Proportional to fares - agency and subagency charges are divided proportionally to the fare price for a particular passenger in the total amount of the order, i.e. the more the fare price is, the more part of the charge is allocated for it.
- Only to the first type of passenger - agency and subagency charges are allocated to the first type of passenger.
- Proportional to fares , except for infants - agency and subagency charges are divided proportionally to the fare price for a particular passenger in the total amount of the order, except for infants.
The fees in the price details are presented with the division only if they are hidden in XP/XX taxes, otherwise they are displayed as a separate line without division.
You can find the setting in the Sales Management - Air Tickets - Pricing - Settings - Passenger Fee Splitting Mode.
Commission calculation for non-contractual airlines
The agency may "issue tickets" to "non-contractual" airlines on "clean interline" terms between the airlines.
For example,
- The agency has no contract with "AA" airline.
- The agency has a contract with "BB" airline.
- There is an interline agreement between "AA" and "BB" companies, which allows issuing tickets for "AA" on "BB" form.
To issue tickets for "AA" airline, the agency has a rule for "AA" airline, which specifies:
- Validating carrier: «AA»,
- redefined carrier: «BB»,
- share of interline segments:«1»,
- airline commission: specify the amount of commission provided by "BB" for tickets with 100% share of interline segments.
Attention! The Websky system does not monitor the presence of interline agreements between carriers. Responsibility for redefinition lies entirely with the agency.
Selecting the rule for calculation
Commissions for the flight are calculated by one rule. If several rules are suitable for the flight, the system chooses the rule for calculation by priority criteria. Rules are compared on the first criterion, if the criterion in this case does not work, on the second and so on, until one rule is defined.
The order of comparing the rules to select the rule for the calculation:
- By "Priority" column - if the triggered rules have a priority, the rule with the highest priority is selected.
- By the presence of an overridden carrier - if several rules with the same priority are triggered (or the priority is not specified), the rule with the overridden VC is selected.
- For a nonempty Commission cell - the priority of the rules with an established commission (even in 0%) is higher than that of the rules with an empty cell.
- Extra priority - Manually set in the section Product control → Avia tickets → Pricing → Settings by the parameter Extra priority:
- * 'No - no additional priority is set.
- * 'Maximum commission from the airline - the rule with the maximum commission from the airline is selected.
- *'By the number of parameters in the rule - the rule with the largest number of non-empty parameters is selected.
- Rule's ordinal number - if none of the priorities is applicable, the newer rule is considered the priority (the table below the others).
Testing and debugging of rule triggering
All calculations at each stage of their application are logged and displayed in the debug table. The debug table is used to control how the rules work, providing information about how the rules apply to the selected flight.
Link to the debug table is available to the manager and experts of the root agency:
- to display search results for each flight by the Commission link,
- on the order page, in the flight price detail, by clicking on the amount of commission or charge.
Table columns — pricing parameters.
Column header — values of pricing parameters for the flight being checked.
Table rows — Pricing rules "for the validating carrier" of the flight.
The table shows the order in which parameters are checked.
The parameters of each rule are compared in the flight parameters:
- if they match:
- the cell is highlighted in green,
- the following parameter is checked;
- if the value of the flight parameter does not match the value of the rule parameter:
- the cell is highlighted in red,
- rule check stops.
If a rule matches all parameters, the rule applies, commissions and fees are highlighted with green light, and their calculated values are displayed next to each other.
Enabling module. Rules Import and Export
To enable the calculation of commissions using Pricing, enable the Commissions 2.0 and Charges and Discounts 2.0 options in Product control → Avia tickets → Pricing → Settings.
To set the pricing rule:
- Go to Product control → Avia tickets → Pricing → Excel import/export.
- Press Upload in "xls" format or Upload in "xlsx" format. Open the file to edit.
- Set the rule: Fill in the string parameters. The format of data entry in each column must correspond to a strictly defined format (see Rules Import).
Obligatory parameters to fill in:- validating carrier.
- commission #
- Save the changes to the file.
- On the Excel import/export page in the Administration panel click Browse, open the file.
- Click Send to upload the file to the system.
During import, the system will validate all entered values. If a value is entered in a cell in an incorrect format, the system will report an error while saving all correctly defined rules.
After validation, the page displays a table showing all loaded rules in a compressed form.
The table provides color-coded rules that are currently invalid:
- rules that have not yet come into effect (the sale start date is higher than the current date, see Parameters of Pricing Rules) are highlighted in orange,
- the rules that have expired (the sale expiration date is greater than the current date) are highlighted in purple.
Pricing rule parameters
Template of file for entering pricing rules:
File:CommImportExampleV1.0.5.xlsx
Attention! It is forbidden to rename columns!
But it is allowed to change columns and remove unnecessary columns.
To view the description of parameters expand the table:
Pricing rule parameters | ||||
Title | Internal name | Description | Permissible values | Examples |
---|---|---|---|---|
id | id | A unique record number from any external system (or database). Optional parameter. It does not participate in the calculation logic and is used for convenient rule identification. | any value | 123 |
GDS validating carrier | valCompanyId | The airline for which the rule is set. Must be the contract airline of the agent. If it is necessary to make ticketing on the stock of another airline (by interline), the validating carrier is redefined (see Redefined validating carrier). If the validating carrier from GDS is unacceptable by specified pricing rules and is not overridden - the flight is considered unacceptable for ticketing and is removed from search results with appropriate settings of results filtering. | empty is ignored
2-digit IATA airline code |
SU
LH |
redefined vc | manualVV | If the validating carrier proposed by the GDS is not a contractual carrier or does not satisfy the commission agent, it can be overridden through this field. The VC field indicates the VC from GDS (or it is left empty), and this field indicates the carrier redefined by the agency.
The agent is responsible for acceptance of replacement and adequacy of the flight price (which was calculated by GDS for the carrier offered to it). The priority for the rules with the redefinition is higher than for the rules without it. |
empty is ignored
2-digit IATA airline code |
SU
LH |
first segment carriers | airlines | A set of acceptable marketing carriers of the first segment of the route. | empty = any CODE,CODE... <>CODE,CODE...(except) |
SU,LH,BA
<>S7,SU |
carriers of any segment | airlinesAny | A set of acceptable marketing carriers (interlines) of any segment of the route.
Permissible input options:
|
empty = any - one or more values (see description) |
SU,LH,BA SU,LH! <>S7,SU <>S7,BA! |
code sharing | codeSharing | Permissibility of a flight being operated by another (operating) airline | empty - all flights 1 - code sharing is required 0 - code sharing is prohibited |
0
1 |
operators | operatingAirlines | Permissible operating airlines (need to be tested on all segments).
Input options:
|
empty = any - one or more values (see description) |
SU,LH,BA SU,LH! <>S7,SU <>S7,BA! |
own segment share | ownPart | The minimum allowed share of own segments (segments where the validating carrier is equal to a marketing one) must be greater than or equal to a given value (any number from 0 to 1):
|
empty = any number any number from 0 to 1 |
0.88 |
interline segment share | interlinePart | The minimum allowed percentage of nonproprietary segments (segments where the validating carrier is not equal to the marketing one) must be greater than or equal to the specified value (any number from 0 to 1).
|
empty = any number any number from 0 to 1 |
0.88 |
contract type | contractType | BSP or TCH settlement system | empty = any, BSP TCH |
TCH |
booking systems | gds | Global distribution system, in which the flight/ PCC of specific Websky requisites/ ID of the Websky requisite package was found.
Listed in any sequence, you can mix different types. The "or" rule applies: if the whole Sabre is specified, you don’t need to specify all its PCC/packages. Attention! When specifying the name of the GDS, strictly follow the name format specified in the documentation. If the rule doesn’t match with the template, it will not apply! |
empty = any ГРС: SABRE, GALILEO, AMADEUS, SIRENA, SITA, SIG23 PCC: [letters+digits] Package ID: [digits] |
SABRE,670P,123
AMADEUS,GALILEO SITA |
start of sale | paymentDateFrom | Minimum allowed date of order execution (not to be confused with the date of departure). To trigger the rule, the current date must be greater or equal to the specified one. | empty = ignored DD.MM.YYYY |
01.01.2012
31.01.2010 |
end of sale | paymentDateTo | Maximum allowable date for placing an order. To trigger a rule, the current date must be less or equal to the specified date. | empty = ignored DD.MM.YYYY |
31.12.2022 |
flight type | airlineType | International or domestic (all flights within the same country) flight.
One value |
empty = any IA (international airlines) DA (domestic airlines) |
IA DA |
flight numbers | flightNumber | Permissible flight numbers, can be specified with or without the code of the marketing company.
Input variants:
|
empty = any - one or more values (see description) |
SU 123,SU 345 123,345 <>LH 555 |
aircraft type | aircraft | Permissible aircraft codes, must be specified in the same form as the codes returned by the GDS.
Input variants:
|
empty = any - one or more values (see description) |
73C,DH4 735 |
fare codes | tariffs | Permissible tariff codes. At least one fare from the flight must coincide with one from the given list. If there is a rule with denial, there must be no matches. The match is not exact: the code from the rule may be contained in the code from the flight (for example, the entered S1GREY26 will match S1GREY26CH from the flight).
Input variants:
You can set a regular expression. To do this, write the parameter in /XXX/ format. Examples:
|
empty = any - one or more values (see description) |
WRUTH9PL,ARUTH9PL
|
maximum fare | maxTariff | Restriction on the maximum price value of the "base price" (the sum of all fares from the carriers on the flight or the price from GDS minus taxes). If the parameter is set, the rule written in the line is triggered only if the flight fare is less than or equal to the specified value. | empty = no limit xxxCODE (see examples) |
10000RUB 300EUR |
Private fare | privateFare | To trigger the rule, the flight must have a fare with the sign of confidential (private). This information is provided by GDS. If it's enough to indicate a specific code of a private fare to unambiguously define the rule, it's not necessary to set the sign. | empty = any fares 1 — a private one must be present 0 — there must be no private fares |
0 1 |
tax codes | taxes | Permissible tax codes
Input variants:
where CODE is a set of capital Latin letters. |
empty = any - one or more values (see description) |
YQ,YR <>YQ! |
price confirmed | priceIsActual | An attribute of a confirmed flight price. The flight price after search is considered unconfirmed, its status changes to "confirmed" ("actual") after creating a real PNR or after requesting price update within Nemo Connect web services (before creating a PNR). | empty = any flights 1 — flight in the PNR or its price is checked in advance 0 — flight has just been retrieved from search results |
0 1 |
availability of VC segments for all fares | valSegmentsInTariff | Verification: any fare segment must have a validating carrier segment (minimum one). | empty or 0 = any fares 1 - condition must be met |
0 1 |
service classes | serviceClass | Permissible service class categories.
Input options (one- or two-letter values are entered):
where the CODE:
|
empty = any - one or more values (see description) |
B,E F EB,EF,F |
booking classes (codes) | bookingClass | Allowed letters (one-letter codes) of booking classes. Must be Latin letters, Cyrillic letters are allowed only for Sirena supplier rules.
Input variants:
|
empty = any - one or more values (see description) |
A,B,C <>A,B,C |
carriers and classes | airlinesAndClasses | Set of "marketing carrier" + "booking class" pairs of any segment of the route.
Permissible input options:
|
empty = any - one or more values (see description) |
SU:A,LH:B,BA:C SU:A,LH:B! |
zones | zones | Geographical zones of the flight. The whole flight must not exceed one of the specified zones for the rule to be triggered. division of countries by specified zones.
the flight must be in both zones ("EUSA, EUNA" - transatlantic flight):
Only the listed zone combinations are allowed! |
empty = any - one or more values |
AS,EU SA EUSA, EUNA |
country zone | countryZones | The above country codes form an area beyond which an aircraft must not land and take off. | empty = any CODE,CODE... |
RU,IT,DE,FR |
countries of departure | depCountries | Permissible countries of departure for the flight (only the country of departure of the first segment of the route is checked). | empty = any CODE,CODE... <>CODE,CODE...(except for) |
RU <>LV,LT |
countries of destination | arrCountries | The destination country is checked (for OW and CR: this is the last country of the last segment, for RT: this is the last country of the first leg of the route). For example, for MOW-PAR-MOW flight, the destination country is FR, for MOW-PAR-LON - GB. Country of departure=RU, country of destination=RU does not mean a local flight - do not forget to specify the flight type DA. | empty = any CODE,CODE... <>CODE,CODE...(except for) |
RU <>LV,LT |
direct flight | isDirect | Direct flight attribute | empty = any 0 — only with transfers 1 — direct only additionally: |
0 1 |
route type | routeType | You can leave the field blank or specify a single value:
|
empty = any CODE (see examples) |
OW RT CR |
routes | routeFull | Chain of IATA codes of cities or airports, describing the entire route of the flight, taking into account transfers, without breaks and repetitions. Always use the IATA code of the city, if it is available (aggregation airport). For example, a VKO-ORY, ORY-VKO flight is turned to the MOW-PAR-MOW route. | empty = any CODE-CODE,CODE-CODE,... <>CODE-CODE,CODE-CODE,...(except for) |
MOW-LON,LON-MOW <>MOW-BER-PAR |
contains routes | routePart | Only part of the route compiled similarly to the previous one is specified. | empty = any CODE-CODE, -CODE-,... <>-CODE-,...(except for) |
-CAI- <>-PRG-,PRG-SVX |
routes (from airports) | routeAirportsFull | Use the codes of airports (not cities) in the IATA rule. The rest is similar to the "routes". | see "routes" parameter description. | see "routes" parameter description. |
contains routes (from airports) | routeAirportsPart | Use the codes of airports (not cities) in the IATA rule. The rest is similar to the "contains routes". | see "contains routes" parameter description. | see "contains routes" parameter description. |
departure (airports, cities) | depAirports | Only the departure airport of the first segment is checked. When you specify airport codes, you need an exact match. While specifying the codes of cities (aggregation of airports), the comparison is made according to the internal glossary of airports. It is recommended to specify the codes of specific airports. | empty = any CODE,CODE... <>CODE,CODE...(except for) |
MOW,PAR,BER <>VKO,LON |
arrival (airports, cities) | arrAirports | The airport of arrival is defined similarly to the "country of destination". The check for comparison is made similarly to "departure (airports, cities)". | empty = any CODE,CODE... <>CODE,CODE...(except for) |
MOW,PAR,BER <>VKO,LON |
start of flight | dateBegin | The departure date of the first segment must be greater than or equal to the specified date. | empty = ignored DD.MM.YYYY |
01.01.2012
31.01.2010 |
departure in (hours) | dateDepartureAfter | The maximum value or range of departure is set from the current date. For example, if you want to select flights no later than 5 days before departure, the range [0,120] shall be set. | empty = no restriction maximum value [X,X] — range |
13
[10,100] |
end of flight | dateEnd | The date of departure of the first segment should be less or equal to the specified date | empty = ignored DD.MM.YYYY |
31.12.2022 |
return not earlier than | dateBackBegin | The departure date of the last route segment should be greater than or equal to the specified date | empty = ignored DD.MM.YYYY |
31.12.2022 |
return not later than | dateBack | The departure date of the last route segment should be less than or equal to the specified date | empty = ignored DD.MM.YYYY |
31.12.2022 |
duration in days | daysDuration | Restriction on the maximum gap in days between the first flight date and the end of the route. You can specify a range.
Duration in days is calculated as a mathematical difference in dates. If the departure and return are in one day, the duration will be equal to 0 days. |
empty = no restriction number of days - maximum value (inclusive) [X,X] — range |
13 [3,13] |
days of the week | dayOfWeek | Permissible days of the week for the departure date of the route's first segment. Values are specified by the number corresponding to the order of the day of the week, starting from Monday. | empty = ignored 1 — Monday ... 7 — Sunday - one or more values |
2 3,5 |
passenger types | passengers | Permissible types of passengers on the flight. For the rule to work, all the listed types of passengers must be present in the flight. | empty = any ADT — adult CLD — child(2-12) INF — infant(0-2) INS — infant with seat (0-2) - one or more values |
INF ADT,CLD |
flight mask | Formalized flight description in text format, to create complex rules Will be added to the next version of the program |
|||
priority | priority | If several rules are triggered, one with the highest priority is selected. If there are several rules with the same priority (or no priority is specified), the newer rule is selected (located below in the imported table). | integral number empty = 0 |
1 2 |
promotional code | Unique promotion code. It is created in the Administration panel in the section Template:Menu | any set of letters/digits/symbols | 12022014_Promo | |
utm source | utmSource | Transition source ID, which is displayed in the "№" field of the transition sources table in the metric. Multiple sources are allowed. |
empty = any CODE,CODE... <>CODE,CODE...(except for) |
123,456 <>123,456 |
airline commission | commission | Agent's profit, received from the airline for sold tickets. The field required for filling in must strictly correspond to the value indicated in the contract. The value is transferred to the GDS upon ticketing. It can be specified in percentage of the fare or in absolute value. Commission is always calculated for each passenger.
Rules with specified zero commission have higher priority over rules with empty commission. |
"xxxCODE" (currency code) or "XX%" | 100RUB 13% |
subagent commission | agencyCommission | Commission to a subagent is a part of the airline's profit which the agent sends to the subagents. The value of the commission acts as a discount for subagents, reducing the price of air tickets. Commission is always calculated for each passenger fare is not equal to 0.
Commission assignment formats for subagents: For all subagents:
For selected subagents or groups of subagents:
In one rule, you can combine the commission for all subagents and the commission for the specified subagents in a format:
|
see description | 100RUB
|
segmental commission calculation | modeForSegment | Attribute of commission or bonus being applied for each flight segment. For example, 100 rubles for each flight segment. | empty = 0 0 — there is one commission for the entire flight 1 — commission should be multiplied by the number of segments |
0 1 |
airline bonus | bonus | Additional agent profit that the agency receives from the airline, but it is not taken into account in requests to the GDS. It is set and calculated in the same way as commissions (the parameter "segment commission calculation" is taken into account when calculating). It is used to calculate the "profitability" of air travel, affects the mixer and can affect the fee when setting the "minimum profit" parameter.
Of all the triggered rules, the bonus will be taken into account only from one by the following priority:
|
"xxxCODE" (currency code) or "XX%" | 100RUB 13% |
segment bonus (allowed for airlines) | modeForAirlines | Setting the current parameter forcibly enables the mode of bonus calculation for each flight segment (for absolutely specified bonus), but only segments with validating or interline carriers from the list specified here are taken into account. | empty CODE (airline code) CODE,CODE... |
SU SU,FV |
agency charge | charge | All markups/discounts that will be applied to the flight described by the rule are specified here. You can specify several price rules in one field by dividing them by user types. format = (subject:sum), (subject:sum), (subject:sum)...
Examples:
If several price rules, listed by comma, are triggered, their amount is taken. If this is not suitable behavior, divide the price rules into separate flight rules (rows), they can be adjusted by priority. Attention! In case you plan to create a large number of individual pricing rules for your agency, each of which will specify the value of the agency fee for individual subagents / groups / users, the recommended form of entry is as follows: (12345,12346,12347:3%) instead of (12345:3%), (12346:3%), (12347:3%). Which means using a grouping of the same values. If you need to enter the amount as a decimal fraction, the fraction is separated with "." , for example: |
see description | see description |
Metasearch commission | MetasearchCommission | Commission, charged by the meta-search system (for Websky at the moment it is only Aviasales) and calculated at the search stage. The value should be specified as decimal representation of the interest rate - it is a fraction of 1, for example, if you set 0.05 - 5%. It is possible to specify with/without the sign "%". Commission is calculated from the amount = flight price from supplier + fees/discounts + additional fees + min. profit. The calculated value is rounded to 2 characters after the separator. | see description | 0.05
0.025% |
extra charge attribute | chargeExt | The setting allows you to change the charge calculation procedure by adding additional calculation rules to the final result.
|
empty = 0 1 |
0 |
minimum profit | minProfit | Minimum profit that the agency will receive for the order. If the calculated agency profit is less than the minimum profit, the fee will be increased to the required value.
The format is similar to that of an agency. For calculations, the value from the rule by which the airline commission will be determined will be applied. If you need to change this behavior, you should set the "priority of the min. profit" parameter (see below). |
see description | 50RUB*LEG*PAS |
minimum profit priority | minProfitPriority | An additional parameter responsible for calculating the minimum profit. The rule with the highest priority will be triggered, if the priority matches, the rule below will be used. | Positive numeric values. | 1, 2, ... |
roundoff | chargeRounding | The procedure of arithmetic rounding of the charge | empty = 0, 0 = to integer vaue, 0.1 = to tenths, 0.01 = to hundredths |
0.1 0.01 |
Additional rule parameters for Websky platform
Parameters for working with private (confidential) fares.
To view the options description expand the table:
additional rule parameters | ||||
Title |
Internal name |
Description |
Permissible values |
Examples |
---|---|---|---|---|
tour code | gdsTourCode | Тур код |
any value On the example of Amadeus: if it is not necessary to specify PAX (passengerType), we specify only the RU084P tourcode, before the tourcode on the supplier side, * (asterisk) is always added, and the entered command in the terminal looks as FT *RU084P. If it is necessary to specify PAX (passengerType), you need to to specify it with the tourcode without space PAXRU084P, in the terminal, the entered command looks like FT PAX *RU084P. |
15ZU RU084P |
ticket designator | gdsTicketDesignator | Ticket designator |
any value | PP08 |
endorsement | gdsEndorsment | Endorsements |
any value or %VAT_VALUE% to transfer the value of VAT in the endorsement only for GDS Amadeus, Sabre, Galileo, GalileouAPI and S7 NDC; for Sabre, the value is transferred to the GDS, but not to the Itinerary Receipt |
Non-Endorsable/Valid on BA/IB only/Refund only to issuing agent; %VAT_VALUE% |
agent's own profit | comAgentProfit | Agent's own profit |
"xxxCODE" (currency code) or "XX%" Only integer values are allowed | 100RUB 2% |
tour code discount subject | corpClient | ID of the subject who will be given a discount on the tourcode | ID,ID
<>ID,ID |
2772,2653
<>2786,2361 |
discount by tourcode | discount | Discount |
"xxxCODE" (currency code) or "XX%" | 100RUB 13% |
authorisation code | authCode | Authorisation code |
any value | MB10 |
EMD
EMD - electronic multi-purpose document or voucher. In the section "Product control → Avia tickets → Pricing → Settings", there is an option Issue EMD by order charge value. It is responsible for issuing the EMD for the agency's charge (available only to Sirena Travel). Principle of operation: if, for the agency which buys the ticket there is an agency charge in the pricing rules for the validating air carrier company, then, when issuing an order in addition to the itinerary receipt and EMD for additional services, a separate EMD will be issued for agency charge . If there are several people in the order, the charge will be divided between them, the total amount of the fee will not be increased.