/// <summary> /// Setup internal data values for each product. /// </summary> /// <param name="doc"></param> public override void SetupData(XmlDocument doc) { XmlNodeList products = null; try { // In case GetStoreId fails Summa.ErrorLevelFile = FileLogger.LogErrorLevelFile.TransactionXMLFile; Summa.ErrorStrDetail = doc.DocumentElement.Attributes["id"].Name; FULLFILEPATH += SummaFileName.GetName(SummaFileName.SummaFileType.TransactionDetails, SummaTransactionCommon.GetStoreId(doc)); products = doc.DocumentElement.SelectNodes("/Transaction/Receipt/Product"); int counter = 0; foreach (XmlNode productNode in products) { csvData.Add(new List <string>()); #region Specs v1.2 csvData[counter].Add(GetTransactionDetailID(doc, productNode)); #endregion csvData[counter].Add(SummaTransactionCommon.GetTransactionID(doc)); csvData[counter].Add(SummaTransactionProductCommon.GetProductId(productNode)); csvData[counter].Add(GetQty(doc, productNode)); #region Old Specs //csvData[counter].Add(SummaTransactionProductCommon.GetUnitPrice(productNode)); //csvData[counter].Add(SummaTransactionProductCommon.GetDiscount(productNode)); #endregion #region Specs v1.2 // GST = Tax, in this context csvData[counter].Add(GetUnitPriceXGST(productNode)); csvData[counter].Add(GetGSTAmount(productNode)); csvData[counter].Add(SummaTransactionProductCommon.GetDiscountXGST(productNode)); csvData[counter].Add(SummaTransactionProductCommon.GetDiscountGSTAmount(productNode)); #endregion csvData[counter].Add(SummaTransactionProductCommon.GetPromotionId(productNode)); csvData[counter].Add(SummaTransactionProductCommon.GetBarcode(productNode)); csvData[counter].Add(SummaTransactionCommon.GetStoreId(doc)); counter++; csvLineData.Add(new StringBuilder()); } } catch (Exception e) { SummaException se = new SummaException("Problem processing transaction detail", e); se.Data = doc.OuterXml; throw se; } }