/// <summary>
        ///
        /// </summary>
        /// <param name="voucherXml"></param>
        /// <returns>Total Voucher amount</returns>
        public static double CalculateAndFillInventoryEntryAmounts(XElement voucherXml)
        {
            float totalAmt = 0.0f;

            var allInventoryEntriesList = voucherXml.XPathSelectElements("./ALLINVENTORYENTRIES.LIST");

            foreach (var entry in allInventoryEntriesList)
            {
                float  inventoryEntryAmt;
                int    billedQty, actualQty;
                string isDeemedPositive;

                //Sum all the BatchAllocationsList values, and add them to the inventory entry xml...
                inventoryEntryAmt = entry.XPathSelectElements("./BATCHALLOCATIONS.LIST/AMOUNT")
                                    .Sum(x => float.Parse(x.Value));

                billedQty = entry.XPathSelectElements("./BATCHALLOCATIONS.LIST/BILLEDQTY")
                            .Sum(x => int.Parse(ComputationHelper.ExtractNumericQtyFromString(x.Value)));

                actualQty = entry.XPathSelectElements("./BATCHALLOCATIONS.LIST/ACTUALQTY")
                            .Sum(x => int.Parse(ComputationHelper.ExtractNumericQtyFromString(x.Value)));

                isDeemedPositive = ComputationHelper.IsDeemedPositive(inventoryEntryAmt);

                //...by filling all the {0} strings in the AllInventoryEntriesList xml
                entry.XPathSelectElement("./AMOUNT").Value =
                    string.Format(entry.XPathSelectElement("./AMOUNT").Value, inventoryEntryAmt.ToString("0.00"));

                entry.XPathSelectElement("./BILLEDQTY").Value =
                    string.Format(entry.XPathSelectElement("./BILLEDQTY").Value, billedQty.ToString());

                entry.XPathSelectElement("./ACTUALQTY").Value =
                    string.Format(entry.XPathSelectElement("./ACTUALQTY").Value, actualQty.ToString());

                entry.XPathSelectElement("./ISDEEMEDPOSITIVE").Value =
                    string.Format(entry.XPathSelectElement("./ISDEEMEDPOSITIVE").Value, isDeemedPositive);

                entry.XPathSelectElement("./ACCOUNTINGALLOCATIONS.LIST/AMOUNT").Value =
                    string.Format(entry.XPathSelectElement("./ACCOUNTINGALLOCATIONS.LIST/AMOUNT").Value, inventoryEntryAmt.ToString("0.00"));

                entry.XPathSelectElement("./ACCOUNTINGALLOCATIONS.LIST/ISDEEMEDPOSITIVE").Value =
                    string.Format(entry.XPathSelectElement("./ACCOUNTINGALLOCATIONS.LIST/ISDEEMEDPOSITIVE").Value, isDeemedPositive);


                //update the total voucher amount
                totalAmt += inventoryEntryAmt;
            }

            return(totalAmt);
        }