I am just starting to look into the wonderful world of email acknowledgments from the Tessitura Client, and am looking for advice, examples, whatever.
I need to be able to put information about the performances (lineitem rows) and specific tickets (sub_lineitem rows) in addition to the order information in the confirmation. I see that these fields are not included in the dataset that is documented in Appendix D of the API documentation. However, I have heard rumors of addition available fields (the cartdocument dataset?). While using undocumented things is generaly a bad idea, I'd be interesting in hearing people's thoughts on this.
Would anyone be willing to share examples of their Client based ack email .asmx file? I don't need anything fancy, just order, performances and seats.
Thanks!
Hi David, I have done this before. I can post my template a little later in the day. Basically what you do is call the ExecuteLocalProcedure web api method. Then I take the dataset and update and add xml nodes to the OrderdataXML. Once this is done it can be used in the transform.
Regards,
Jon
David -
I'm not sure this is exactly what you are lookig for, but I've been successful pulling lineitem and sublineitem information using some of the example data structure that were included in the sample templates (particularly in the subscription section). In particular GetOrderDetailsInfoResults which you can pull both lineitem and sublineitems info. (Look at the sample template for an example)
Having said that, I'm only dabbling so far and haven't gotten very far, but I've been able to get some of that information!
Good luck,
HeatherSeattle Repertory Theatre
I just posted my samples to my TessituraNetwork profile under "My Files".
I had one issue with the sample that was provided with Tessitura in that any negative amount for payments showed up as an donation like a return ticket. The sample I have accounts for that and we do donations to multiple on account payment methods since we are an consortium so you should be able to see that in the code.
Marty
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Heather Kraft Sent: Friday, December 04, 2009 12:06 PM To: Martin A. Jones Subject: Re: [Tessitura Technical Forum] Email Confirmation/Acknowledgement Questions
Heather Seattle Repertory Theatre
From: David Woodall <bounce-davidwoodall1530@tessituranetwork.com> Sent: 12/4/2009 10:15:39 AM
This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!
Hi David,
Attached is our template and the xsl. Please let me know if you have any issues opening the attachment.
The part that pulls in addional information from tessitura looks like:
Tessitura.WebAPI.Tessitura tess = new Tessitura.WebAPI.Tessitura(); string sessionkey = tess.GetNewSessionKey(""); string lsal = ""; DataSet ds = tess.ExecuteLocalProcedure(sessionkey, 1, "@ORDER_NO=" + OrderData.OrderNumber);
for (int i = 0; i < ds.Tables[0].Rows.Count; ++i) { string superPkgNo = ds.Tables[0].Rows[i]["super_pkg_no"].ToString(); string superPkgDesc = ds.Tables[0].Rows[i]["description"].ToString(); string totPurAmt = ds.Tables[0].Rows[i]["tot_pur_amt"].ToString(); string totRetAmt = ds.Tables[0].Rows[i]["tot_ret_amt"].ToString(); string numPur = ds.Tables[0].Rows[i]["num_seats_pur"].ToString(); string numRet = ds.Tables[0].Rows[i]["num_seats_ret"].ToString(); string li_seq_no = ds.Tables[0].Rows[i]["li_seq_no"].ToString();
XmlNode xm = OrderData.CartDocument.SelectSingleNode("//LineItem[li_seq_no=" + li_seq_no + "]");
if (xm != null) {
XmlElement xePkgNo = OrderData.CartDocument.CreateElement("super_pkg_no"); xePkgNo.InnerText = superPkgNo;
XmlElement xePkgDesc = OrderData.CartDocument.CreateElement("super_pkg_desc"); xePkgDesc.InnerText = superPkgDesc;
XmlElement xeTotPurAmt = OrderData.CartDocument.CreateElement("tot_pur_amt"); xeTotPurAmt.InnerText = totPurAmt;
XmlElement xeTotRetAmt = OrderData.CartDocument.CreateElement("tot_ret_amt"); xeTotRetAmt.InnerText = totRetAmt;
XmlElement xeNumPur = OrderData.CartDocument.CreateElement("num_seats_pur"); xeNumPur.InnerText = numPur; XmlElement xeNumRet = OrderData.CartDocument.CreateElement("num_seats_ret"); xeNumRet.InnerText = numRet; xm.AppendChild(xePkgDesc); xm.AppendChild(xePkgNo); xm.AppendChild(xeTotPurAmt); xm.AppendChild(xeTotRetAmt); xm.AppendChild(xeNumRet); xm.AppendChild(xeNumPur);
}
This makes a wepapi execute local procedure call , which pulls back extra information on the line item. It then loops through the data set, search the order data xml for the matching node. When it finds it , the additional is appended to the xml. This is all done before calling the transform, so that it will be there when doing the xsl transform.
If you have any questions please let me know.
Thanks Heather, Marty and Jon! It is all starting to make sense.