Error "...FQTV DATA NOT SUPPORTED.." to Add Frequent Flyer Using PassengerDetailsRQ - sabre

I would like to add a frequent flyer using PassengerDetails as follow...
<PassengerDetailsRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.0.0">
<PostProcessing RedisplayReservation="true" xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<EndTransactionRQ>
<EndTransaction Ind="true" />
<Source ReceivedFrom="AddingFF" />
</EndTransactionRQ>
</PostProcessing>
<PreProcessing xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<UniqueID ID="XXXXXX" />
</PreProcessing>
<SpecialReqDetails xmlns="http://webservices.sabre.com/sabreXML/2011/10" />
<TravelItineraryAddInfoRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<CustomerInfo>
<CustLoyalty MembershipID="123456789" NameNumber="1.1" ProgramID="AV" SegmentNumber="1" />
</CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
But in the response, I received this error
.SEGMENT SPECIFIC FQTV DATA NOT SUPPORTED FOR THESE AIRLINES
However, I looked the list (command PT*) and it has the airline AV.
So, I didn't understand that error.
Does anybody got this error?
And other question, what does FQTV mean?

Without the complete information is hard to give a complete response, for which you might want to check with the helpdesk.
Anyway, you might need to put the carrier the person is actually traveling by adding TravelingCarrierCode="YY"
<CustLoyalty MembershipID="123456789" NameNumber="1.1" ProgramID="AV" SegmentNumber="1" TravelingCarrierCode="YY"/>
Regarding your FQTV question, it means Frequent Traveler

Issue solved.
In this case, the problem was the segment number.
I can't send it for any cias.
To solve my problem I just needed to send the request without the segment number attribute.
To know if it is necessary to send the segment number or not just execute the following command PT*{cia} (PT*AV).
Example to cia AV:
PT*AV
FQTV PARTICIPATING AIRLINE EXCHANGE/PARTNERSHIP AGREEMENTS
----------------------------------------------------------
USE. FF(OC)(FF NUMBER)/(RC)-N.N TO TRANSMIT FLIGHT INFO
OC-OWNING RC-RECEIVING
CARRIER CARRIER
/*/ SEGMENT SPECIFIC ALLOWED
AV-134 AVIANCA
ACCEPTS FF ACCOUNT NUMBERS IN THE PROGRAMS LISTED
AC AI AM AV A3* BR CA CM ET* IB* LH LR* NH*
NZ* OS OZ SA* SK SQ* TA* TG* TK* TP UA

Related

Not Receiving ShelvesDefinitions in BFM

I am trying to get UTA's inside Bargain Finder Max.
<PriceRequestInformation NegotiatedFaresOnly="false" CurrencyCode="CAD" >.
<TPA_Extensions>
<Priority>
<Price Priority="1"/>
<DirectFlights Priority="2"/>
<Time Priority="3"/>
<Vendor Priority="4"/>
</Priority>
<ShelvesIndicators Mode="NAS"/>
<BrandedFareIndicators SingleBrandedFare="true" MultipleBrandedFares="true"/>
</TPA_Extensions>
</PriceRequestInformation>
While I pass the ShelvesIndicators inside OTA_AirLowFareSearchRQ, when I put it at the end, I get a proper response without ShelvesDefinitions. When I put it in the middle or beginning, I receive an error regarding the node that comes after it.
For example
cvc-complex-type.2.4.a: Invalid content was found starting with element 'BrandedFareIndicators'. One of '{"http://www.opentravel.org/OTA/2003/05":BundledOffers}' is expected.
I tried this on BFM 6.3.0, 6.4.0, and 6.5.0.
Thank you for helping out

InvalidEbXmlMessage error from GetMarketingTextRQ

I was trying to use GetMarketingTextRQ service, but got error message "Unable to internalize message".
Please review my logs below.
the request:
the response:
<GetMarketingTextRQ version="1.0.0" xmlns="http://stl.sabre.com/Merchandising/v1">
<BrandsMarketingTextRequest>
<RequestSource clientID="AVL" geoLocation="HDQ" pseudoCityCode="HDQ" requestingCarrierGDS="PG"/>
<MarketingTextCriteria carrier="PG" language="EN"/>
</BrandsMarketingTextRequest>
</GetMarketingTextRQ>
There are some adjustments needing to be made.
Following is a working request:
<GetMarketingTextRQ version="1.0.0" xmlns="http://stl.sabre.com/Merchandising/v1">
<BrandsMarketingTextRequest>
<RequestSource clientID="SHP" geoLocation="BER" pseudoCityCode="XXXX" requestingCarrierGDS="1S"/>
<MarketingTextCriteria carrier="LX" language="EN"/>
</BrandsMarketingTextRequest>
</GetMarketingTextRQ>
You should change:
clientID="SHP" - looking for availability is not working
geoLocation="BER" - defines the IATA city of your PCC
pseudoCityCode="XXXX" - this is the PCC of your account with Sabre not an IATA City
requestingCarrierGDS="1S" - this is the GDS of the Airline 1S=Sabre, 1B=Abacus, 1F=Infini, 1J=Axess ( most likely it will be 1S)
Tested this with LX as i know this is a DCA carrier with Sabre. Not sure about PG.

Accessing XML data in R that is several layers embedded

I'm working with a well-structured XML file. So far, I have successfully accessed elements of this dataset that are only one layer/subfield deep. However, now I need to access one type of data that is more deeply embedded within this data structure, and the expected method is not working...
Excerpt from the XML data; this is the "target" field that I need to access, where each node (i.e. drug) can have between 0 and N targets (I am arbitrarily setting N to 20 for now, since I'm not sure what this value is for the entire dataset):
<targets> --> 51st field in each node
<target> --> there are a variable number of targets per drug
<id>BE0000048</id> --> this is the value I want for each Target
<name>Prothrombin</name>
<organism>Human</organism>
<actions>
<action>inhibitor</action>
</actions>
<references>
<articles>
<article>
<pubmed-id>10505536</pubmed-id>
<citation>Turpie AG: Anticoagulants in acute coronary syndromes.
...
I have determined that the main Target field that I need is Field 51 within each node's structure, thus the hardcoded value below. I would think that accessing the i'th node's id value within the j'th target within the node's Target field should have an index of [[i]][[51]][[j]][[1]] or [[i]][[51]][[j]][['id']]:
This is my code that isn't working as expected:
Target <- array(1:NumNodes, dim=c(1,NumNodes,MaxTargets))
for (i in 1:NumNodes){
for (j in 1:MaxTargets){
Target[i][j] <- Data[[i]][[51]][[j]][[1]]
}
}
The behavior I'm seeing is that I can extend the subscripts out numerous levels on the command line, and never narrow the result any more than the following:
> Data[[1]][[51]][[1]][[1]][[1]][[1]][[1]][[1]][[1]][[1]]
[1] "BE0000048ProthrombinHumaninhibitor10505536Turpie AG: Anticoagulants...
It doesn't seem to matter how many subscripts I add; all of the fields in the Target subfield are always conjoined and don't seem to be able to be separated...
Confusingly, when I run my code, I get the following error message:
Error in Data[[i]][[51]][[1]] : subscript out of bounds
... which doesn't seem to make sense, given that I am limiting i to the number of nodes, and that there is no error thrown for even the ridiculously long list of subscripts show above, when I query that phrase on the command line...
Thanks in advance for any insights you can provide.
Thanks for your suggestion, cderv; I will plan to check out the xml2 package and XPATH. I really appreciate your willingness to provide an example.
I am pasting what should be a functional subset of my XML file; however, now instead of the "targets" field being the 51st field, it is the sixth. Again, it is the targets --> target --> id value that I want to report for each target, with each node having a variable number of target values. My code follows the XML content.
<?xml version="1.0" encoding="UTF-8"?>
<drugbank xmlns="http://www.drugbank.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.drugbank.ca http://www.drugbank.ca/docs/drugbank.xsd" version="5.0" exported-on="2017-07-06">
<drug type="biotech" created="2005-06-13" updated="2016-08-17">
<drugbank-id primary="true">DB00001</drugbank-id>
<drugbank-id>BTD00024</drugbank-id>
<drugbank-id>BIOD00024</drugbank-id>
<name>Lepirudin</name>
<description>Lepirudin is identical to natural hirudin except for substitution of leucine for isoleucine at the N-terminal end of the molecule and the absence of a sulfate group on the tyrosine at position 63. It is produced via yeast cells. Bayer ceased the production of lepirudin (Refludan) effective May 31, 2012.</description>
<targets>
<target>
<id>BE0000048</id>
<name>Prothrombin</name>
<organism>Human</organism>
<actions>
<action>inhibitor</action>
</actions>
<references>
<articles>
<article>
<pubmed-id>10505536</pubmed-id>
<citation>Turpie AG: Anticoagulants in acute coronary syndromes. Am J Cardiol. 1999 Sep 2;84(5A):2M-6M.</citation>
</article>
<article>
<pubmed-id>10912644</pubmed-id>
<citation>Warkentin TE: Venous thromboembolism in heparin-induced thrombocytopenia. Curr Opin Pulm Med. 2000 Jul;6(4):343-51.</citation>
</article>
</articles>
</references>
<known-action>yes</known-action>
</target>
</targets>
</drug>
</drugbank>
Now that I have significantly truncated the above file, my code is now giving an error message that any subscripts above Data[[1]][[1]] are out of bounds, but hopefully this code gives you an idea of what I'm aiming to do...
library(XML)
# Save the database file as a tree structure
xmldata = xmlRoot(xmlTreeParse("DrugBank_TruncatedDatabase_v4_Tiny.xml"))
# Number of nodes in the entire database file
NumNodes <- xmlSize(xmldata)
MaxTargets <- 20
Data <- xmlSApply(xmldata, function(x) xmlSApply(x, xmlValue))
Target <- array(1:NumNodes, dim=c(1,NumNodes,MaxTargets))
for (i in 1:NumNodes){
for (j in 1:MaxTargets){
Target[i][j] <- Data[[i]][[5]][[j]][[1]]
}
}
Thanks for your input!

A4SWIFT on BizTalk: Generating a valid MT103; How to understand why a message isn't being generated?

We're working on using BizTalk generate a valid SWIFT message (initially MT 103) and dropping it onto an endpoint. However, we're struggling to generate a valid message.
(Similar, but different question, at this StackOverflow post. I broke the questions up because they are materially different.)
Given a populated A4SWIFT MT103 schema (namespace: http://schemas.microsoft.com/BizTalk/Solutions/FinancialServices/SWIFT/Categroy1/MT103), we're passing that through the SWIFT Assembler on a Pipeline, out of which we get a "flat" SWIFT MT 103 message.
We get a SWIFT message like that below (obviously false):
{1:F01ABCDEFGXAXXX0000000000}{2:I103ABCDEFGHXXXXN}{3:{108:143136}
:20:ABCDEF123456
:23B:CRED
:32A:170607USD500,1
:33B:USD500,1
:50F:/0000000000
Bible Baggins
1 Bag End
Hobbiton
ME1
:53A:/00000000
ABCDEFGXXXX
:57A:ABCDEF
:59F:/00000000000000
CashYourJewelleryFast.com
:71A:OUR
-}
Notice that Block 3 hasn't been terminated correctly and that Block 4 doesn't start correctly.
I'm missing the characters: }{4:
Dijkgraaf asked for the original XML. This is shown below (anonymised as best as I can to match the example):
<ns1:SWIFT_CATEGORY1_MT103_Interchange
xmlns:ns1="http://schemas.microsoft.com/BizTalk/Solutions/FinancialServices/SWIFT/Category1/MT103"
xmlns:ns0="http://schemas.microsoft.com/BizTalk/Solutions/FinancialServices/SWIFT/BaseTypes"
xmlns:ns2="http://schemas.microsoft.com/BizTalk/Solutions/FinancialServices/SWIFT/DataTypes">
<SWIFTHeader>
<BasicHeaderBlock>
<ApplicationIdentifier>F</ApplicationIdentifier>
<ServiceIdentifier>01</ServiceIdentifier>
<LTAddress>ABCDEFGXAXXX</LTAddress>
<SessionNumber>0000</SessionNumber>
<SequenceNumber>000000</SequenceNumber>
</BasicHeaderBlock>
<ApplicationHeaderBlock_Input>
<MessageType>103</MessageType>
<DestinationAddress>ABCDEFGHXXXX</DestinationAddress>
<MessagePriority>N</MessagePriority>
</ApplicationHeaderBlock_Input>
<UserHeaderBlock>
<MessageUserReference_108>
<Reference>143136</Reference>
</MessageUserReference_108>
</UserHeaderBlock>
</SWIFTHeader>
<SWIFT_CATEGORY1_MT103>
<SendersReference_20>
<Reference>ABCDEF123456</Reference>
</SendersReference_20>
<BankOperationCode_23B>
<Type>CRED</Type>
</BankOperationCode_23B>
<ValueDateCurrencyInterbankSettledAmount_32A>
<Date>170607</Date>
<Currency>USD</Currency>
<Amount>500,1</Amount>
</ValueDateCurrencyInterbankSettledAmount_32A>
<CurrencyInstructedAmount_33B>
<Currency>USD</Currency>
<Amount>500,1</Amount>
</CurrencyInstructedAmount_33B>
<OrderingCustomer_50F>
<OrderingCustomerIdentification_1>
<Account>0000000000</Account>
</OrderingCustomerIdentification_1>
<NameAndAddress>
<Line1>
<nameAndAddressLineType_1>Bilbo Baggins</nameAndAddressLineType_1>
</Line1>
<Line2>
<nameAndAddressLineType_1>1 Bag End</nameAndAddressLineType_1>
</Line2>
<Line3>
<nameAndAddressLineType_1>Hobbiton</nameAndAddressLineType_1>
</Line3>
<Line4>
<nameAndAddressLineType_1>ME1</nameAndAddressLineType_1>
</Line4>
</NameAndAddress>
</OrderingCustomer_50F>
<SendersCorrespondent_53A>
<PartyIdentifier>
<Identifier>00000000</Identifier>
</PartyIdentifier>
<BankIdentifierCode>
<BankCode>ABCD</BankCode>
<CountryCode>EF</CountryCode>
<AreaCode>GH</AreaCode>
<BranchCode>XXX</BranchCode>
</BankIdentifierCode>
</SendersCorrespondent_53A>
<AccountWithInstitution_57A>
<BankIdentifierCode>
<BankCode>ABCD</BankCode>
<CountryCode>EF</CountryCode>
<AreaCode>EF</AreaCode>
<BranchCode>XXX</BranchCode>
</BankIdentifierCode>
</AccountWithInstitution_57A>
<BeneficiaryCustomer_59F>
<Account>
<Account>00000000000000</Account>
<NameAndAddress>
<Line1>
<nameAndAddressLineType_1>CashYourJewelleryFast.com</nameAndAddressLineType_1>
</Line1>
</NameAndAddress>
</Account>
</BeneficiaryCustomer_59F>
<DetailsOfCharges_71A>
<Code>OUR</Code>
</DetailsOfCharges_71A>
</SWIFT_CATEGORY1_MT103>
</ns1:SWIFT_CATEGORY1_MT103_Interchange>
I've checked the generated MT 103 message with known valid MT 103 messages generated in other systems and I'm confidence the details are present and in the correct format.
I suspect BizTalk/A4SWIFT have a bit of a fit when something is wrong and generates a half-created message.
Is there something I am missing? Where can I find actual errors associated with this, as opposed to just the counts? I can generate <UnparsedMessages /> and can route errors around based on the promoted properties but they don't contain any useful information.

XSL, comparing dates to exclude any past events

I have an RSS of an events feed. I would like to hide previous events.
Assuming XML data subset of
<Navigation Name="ItemList" Type="Children">
<Page ID="x32444" URL="..." Title="Class..."
EventStartDate="20090831T23:00:00" EventEndDate="20090904T23:00:00"
EventStartTime="20090830T15:30:00" EventEndTime="20090830T18:30:00" Changed="20090830T20:28:31" CategoryIds="" Schema="Event"
Name="Class of 2010 BAKE SALE"/>
<Page ID="x32443" URL="x32443.xml?Preview=true&Site=&UserAgent=&IncludeAllPages=true&tfrm=4" Title="Class of 2010 BAKE SALE"
Abstract="Treat yourself with our famous 10-star FRIED ICE CREAM!" EventStartDate="20090831T23:00:00" EventEndDate="20090904T23:00:00"
EventStartTime="20090830T15:30:00" EventEndTime="20090830T18:30:00" Changed="20090830T20:25:35" CategoryIds="" Schema="Event"
Name="Class of 2010 BAKE SALE"/>
<Page ID="x32426" URL="x32426.xml?Preview=true&Site=&UserAgent=&IncludeAllPages=true&tfrm=4" Title="Tribute to ..."
Abstract="Event to recognize and celebrate the lifetime of leadership and service ..."
EventStartDate="20091206T00:00:00" EventEndDate="20091206T00:00:00" EventStartTime="20090828T23:00:00" EventEndTime="20090828T04:00:00"
Changed="20090828T22:09:54" CategoryIds="" Schema="Event" Name="Tribute to ...."/>
</Navigation>
How would I not include anything past today's date
<xsl:apply-template select="Page[#EventStartDate=notBeforeToday()]"/>
Easiest with XSL parameters that you set from outside.
<xsl:param name="today" select="'undefined'" />
<!-- time passes... -->
<xsl:apply-templates select="Page[#EventStartDate < $today]"/>
Your date format is such that you can compare it using string comparison, unless there are different timezones involved. You would simply set
20091001T00:00:00
as the param value for $today. Have a look into your XSLT processor's documentation to see how.
The alternative would be to use an extension function. Here it depends on which extension functions your XSLT processor supports, so this approach won't be portable.
For this purpose, i usually add an extra date attribute in the XML which contains the day number since year 1900.
for example #dateid='9876543' or #seconds="9876675446545"
then i can can easily compare with today or another variable in the XSL.
You can also use this technique to compare times using "Unix time" for example

Resources