예제 #1
0
        public Task <ExpenseDetail> GetExpenseDetail(string expenseDetailText)
        {
            ExtractedExpenseDetail parsedData = _messageParser.ExtractExpenseData(expenseDetailText);

            if (!parsedData.Success)
            {
                throw new ApplicationException(parsedData.ValidationMessage);
            }

            //cost
            decimal total;

            if (!decimal.TryParse(parsedData.Total, out total))
            {
                throw new ApplicationException("Total is not a valid decimal amount");
            }

            //Get Details

            GstDetail gstDetail = Calculation.Calculator.CalculateGstDetailFromGstInclusiveAmount(total);

            return(Task.FromResult(new ExpenseDetail
            {
                CostCentre = parsedData.CostCentre ?? ServiceConstants.DefaultCostCentre,
                Total = gstDetail.AmountIncludingGst,
                TotalExcludingGst = gstDetail.AmountExcludingGst,
                Gst = gstDetail.GstAmount,
                Description = parsedData.Description,
                Date = parsedData.Date,
                PaymentMethod = parsedData.PaymentMethod,
                Vendor = parsedData.Vendor
            }));
        }
예제 #2
0
        private ExtractedExpenseDetail ExtractData(List <string> fieldsToExtract, string text)
        {
            var extractedDetail = new ExtractedExpenseDetail();

            if (fieldsToExtract.Contains(Constants.TotalTag))
            {
                extractedDetail.Total = DoDataExtraction(Constants.TotalTag, text);
            }

            if (fieldsToExtract.Contains(Constants.CostCentreTag))
            {
                extractedDetail.CostCentre = DoDataExtraction(Constants.CostCentreTag, text);
            }

            if (fieldsToExtract.Contains(Constants.PaymentMethodTag))
            {
                extractedDetail.PaymentMethod = DoDataExtraction(Constants.PaymentMethodTag, text);
            }

            if (fieldsToExtract.Contains(Constants.VendorTag))
            {
                extractedDetail.Vendor = DoDataExtraction(Constants.VendorTag, text);
            }

            if (fieldsToExtract.Contains(Constants.DescriptionTag))
            {
                extractedDetail.Description = DoDataExtraction(Constants.DescriptionTag, text);
            }

            if (fieldsToExtract.Contains(Constants.DateTag))
            {
                extractedDetail.Date = DoDataExtraction(Constants.DateTag, text);
            }

            extractedDetail.Success = true;
            return(extractedDetail);
        }