/// <summary> /// Process Linked InfoCodes for TenderLineItem /// </summary> /// <param name="posTransaction"></param> /// <param name="tenderLineItem"></param> /// <param name="storeId"></param> /// <param name="tableRefId"></param> /// <param name="infoCodeType"></param> public void ProcessLinkedInfoCodes(IPosTransaction posTransaction, ITenderLineItem tenderLineItem, string storeId, InfoCodeTableRefType tableRefId, InfoCodeType infoCodeType) { TenderLineItem lineItem = tenderLineItem as TenderLineItem; if (lineItem == null) { NetTracer.Warning("tenderLineItem parameter is null"); throw new ArgumentNullException("tenderLineItem"); } //Loop while a linkedInfoCode is found int i = 0; //Set as a stop for a infinite loop LinkedListNode <InfoCodeLineItem> infoCodeItem = lineItem.InfoCodeLines.Last; if (infoCodeItem != null) { while (!string.IsNullOrEmpty(infoCodeItem.Value.LinkedInfoCodeId) && (i < 10)) { ProcessInfoCode(posTransaction, 0, lineItem.Amount, storeId, lineItem.TenderTypeId, lineItem.CurrencyCode, tableRefId, infoCodeItem.Value.LinkedInfoCodeId, infoCodeItem.Value, infoCodeType); // This is to prevent an infinite loop when infocodes link to themselves.. if (infoCodeItem.Value.LinkedInfoCodeId == lineItem.InfoCodeLines.Last.Value.LinkedInfoCodeId) { break; } infoCodeItem = lineItem.InfoCodeLines.Last; i++; } } }
public void PrintCreditMemo(FormType formType, IPosTransaction posTransaction, ITenderLineItem tenderLineItem, bool copyReceipt) { //PrintingActions.Print(formType, copyReceipt, true, // delegate(FormModulation formMod, FormInfo formInfo) // { // return formMod.GetTransformedTender(formInfo, (TenderLineItem)tenderLineItem, (RetailTransaction)posTransaction); // }); }