/// <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; } }
public override void SetupData(XmlDocument doc) { try { // In case GetStoreId fails Summa.ErrorLevelFile = FileLogger.LogErrorLevelFile.TransactionXMLFile; Summa.ErrorStrDetail = doc.DocumentElement.Attributes["id"].Name; // build unique filename FULLFILEPATH = GenerateCGFileName(doc); XmlNodeList products = null; XmlNodeList cards = null; products = doc.DocumentElement.SelectNodes("/Transaction/Receipt/Product"); cards = doc.DocumentElement.SelectNodes("/Transaction/Receipt/Member/MagCards/MagCard"); int counter = 0; foreach (XmlNode productNode in products) { foreach (XmlNode cardNode in cards) { csvData.Add(new List <string>()); csvData[counter].Add(SummaTransactionCommon.GetTransactionID(doc)); // txn id csvData[counter].Add(SummaTransactionCommon.GetCustomerId(doc)); // customer id csvData[counter].Add(GetTag(cardNode)); // card tag csvData[counter].Add(GetMemberNumber(doc)); // member number csvData[counter].Add(SummaTransactionProductCommon.GetProductId(productNode)); // product id //csvData[counter].Add(GetProxCard(doc)); // proc card csvData[counter].Add(GetProductName(productNode)); // product name csvData[counter].Add(SummaTransactionCommon.GetDateStamp(doc)); // Date Stamp //csvData[counter].Add(GetProxCard(doc)); // prox card counter++; csvLineData.Add(new StringBuilder()); } } } catch (Exception e) { SummaException se = new SummaException("Problem processing transaction detail", e); se.Data = doc.OuterXml; throw se; } }
/// <summary> /// /// </summary> /// <param name="inDoc"></param> /// <param name="inProductNode"></param> /// <returns></returns> string GetQty(XmlDocument inDoc, XmlNode inProductNode) { string transactionType = SummaTransactionCommon.GetTransactionType(inDoc); double qty = Convert.ToDouble(SummaTransactionProductCommon.GetQuantity(inProductNode)); switch (transactionType) { case @"1": return(string.Format("{0:#.00}", Math.Abs(qty))); // Purchase case @"2": return(string.Format("{0:#.00}", Math.Abs(qty) * -1)); // Refund default: return(string.Format("{0:#.00}", Math.Abs(qty))); } }
/// <summary> /// Deconstruct xml document and populate internal data fields /// </summary> /// <param name="doc"></param> public override void SetupData(XmlDocument doc) { FULLFILEPATH += SummaFileName.GetName(SummaFileName.SummaFileType.TransactionCheck, SummaTransactionCommon.GetStoreId(doc)); try { csvData.Add(new List <string>()); csvLineData.Add(new StringBuilder()); csvData[0].Add(SummaTransactionCommon.GetTransactionID(doc)); csvData[0].Add(SummaTransactionCommon.GetSalesTotalXTax(doc)); // Sales Total Excluding Tax //XmlNode productNode = doc.DocumentElement.SelectSingleNode("/Transaction/Receipt/Product"); XmlNodeList products = doc.DocumentElement.SelectNodes("/Transaction/Receipt/Product"); decimal summaNetXTax = 0; decimal quantity = 0; decimal unitPrice = 0; foreach (XmlNode productNode in products) { summaNetXTax += Convert.ToDecimal(SummaTransactionProductCommon.GetSummaNetXTax(productNode)); quantity += Convert.ToDecimal(SummaTransactionProductCommon.GetQuantity(productNode)); unitPrice += Convert.ToDecimal(SummaTransactionProductCommon.GetUnitPriceXGST(productNode)); } csvData[0].Add(string.Format("{0:#.00}", Math.Abs(summaNetXTax))); csvData[0].Add(string.Format("{0:#.00}", Math.Abs(quantity))); csvData[0].Add(string.Format("{0:#.00}", Math.Abs(unitPrice))); } catch (Exception e) { SummaException se = new SummaException("Problem processing transaction", e); se.Data = doc.OuterXml; throw se; } }
/// <summary> /// /// </summary> /// <param name="inProductNode"></param> /// <returns></returns> string GetGSTAmount(XmlNode inProductNode) { double gstAmount = Convert.ToDouble(SummaTransactionProductCommon.GetGSTAmount(inProductNode)); return(string.Format("{0:#.00}", Math.Abs(gstAmount))); }
/// <summary> /// /// </summary> /// <param name="inProductNode"></param> /// <returns></returns> string GetUnitPriceXGST(XmlNode inProductNode) { double unitPriceXTax = Convert.ToDouble(SummaTransactionProductCommon.GetUnitPriceXGST(inProductNode)); return(string.Format("{0:#.00}", Math.Abs(unitPriceXTax))); }