예제 #1
0
        /// <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;
            }
        }