示例#1
0
        public void SetSalesOrderParserSettings(SalesOrderParserSettingsBlob settings)
        {
            SalesOrderParserSettings = BlobHandler.Compress(settings);

            if (_cache.Contains("ParserBlob"))
            {
                _cache.Remove("ParserBlob");
            }
        }
        private async Task <SalesOrderLine> GetSingleMultiDropSalesOrderLine(SalesOrderParserSettingsBlob settings)
        {
            var line = new SalesOrderLine();

            var drawingNumberMatches = _pdfParser.Find(settings.DrawingNumberExpr, settings.DrawingNumberOptions);

            if (string.IsNullOrEmpty(settings.DrawingNumberReplacementExpr))
            {
                line.DrawingNumber = drawingNumberMatches.Count == 0 ? "N/A" : drawingNumberMatches[0].Value;
            }
            else
            {
                if (drawingNumberMatches.Count == 0)
                {
                    line.DrawingNumber = "N/A";
                }
                else
                {
                    line.DrawingNumber = RegexReplace(
                        drawingNumberMatches[0].Value,
                        settings.DrawingNumberReplacementExpr,
                        settings.DrawingNumberReplacementValue,
                        settings.DrawingNumberReplacementOptions);
                }
            }

            line.Photo = await _photos.GetPhotoByDrawingNumber(line.DrawingNumber);

            line.Name = await _tricorn.GetNameByDrawingNumberAsync(line.DrawingNumber);

            var deliveryMatches = _pdfParser.Find(settings.MultiDropExpr, settings.MultiDropOptions);

            line.OriginalDeliveryDate = DateTime.MaxValue;

            foreach (Match match in deliveryMatches)
            {
                var quantityString = match.Groups["quantity"].Value;
                var deliveryString = match.Groups["delivery"].Value;

                var batch = new BatchDelivery
                {
                    DeliveryDate = DateTime.Parse(deliveryString),
                    Quantity     = int.Parse(quantityString)
                };

                line.BatchDeliveries.Add(batch);

                if (batch.DeliveryDate < line.OriginalDeliveryDate)
                {
                    line.OriginalDeliveryDate = batch.DeliveryDate;
                }
            }

            return(line);
        }
        private async Task <List <SalesOrderLine> > GetMultipleSalesOrderLines(SalesOrderParserSettingsBlob settings)
        {
            var lines = new List <SalesOrderLine>();

            var lineMatches = _pdfParser.Find(settings.MultiLineDrawingNumberAndDeliveryExpr,
                                              settings.MultiLineDrawingNumberAndDeliveryOptions);

            foreach (Match match in lineMatches)
            {
                var drawingNumber = match.Groups["drawing"].Value;
                var delivery      = match.Groups["delivery"].Value;

                var line = new SalesOrderLine();

                line.OriginalDeliveryDate = string.IsNullOrEmpty(delivery) ? DateTime.MinValue : DateTime.Parse(delivery);

                if (string.IsNullOrEmpty(settings.DrawingNumberReplacementExpr))
                {
                    line.DrawingNumber = string.IsNullOrEmpty(drawingNumber) ? "N/A" : drawingNumber;
                }
                else
                {
                    if (string.IsNullOrEmpty(drawingNumber))
                    {
                        line.DrawingNumber = "N/A";
                    }
                    else
                    {
                        line.DrawingNumber = RegexReplace(
                            drawingNumber,
                            settings.DrawingNumberReplacementExpr,
                            settings.DrawingNumberReplacementValue,
                            settings.DrawingNumberReplacementOptions);
                    }
                }

                line.Photo = await _photos.GetPhotoByDrawingNumber(line.DrawingNumber);

                line.Name = await _tricorn.GetNameByDrawingNumberAsync(line.DrawingNumber);

                lines.Add(line);
            }

            return(lines);
        }
        private async Task <SalesOrderLine> GetSingleSalesOrderLine(SalesOrderParserSettingsBlob settings)
        {
            var line = new SalesOrderLine();

            var deliveryMatches      = _pdfParser.Find(settings.DeliveryDateExpr, settings.DeliveryDateOptions);
            var drawingNumberMatches = _pdfParser.Find(settings.DrawingNumberExpr, settings.DrawingNumberOptions);

            if (string.IsNullOrEmpty(settings.DrawingNumberReplacementExpr))
            {
                line.DrawingNumber = drawingNumberMatches.Count == 0 ? "N/A" : drawingNumberMatches[0].Value;
            }
            else
            {
                if (drawingNumberMatches.Count == 0)
                {
                    line.DrawingNumber = "N/A";
                }
                else
                {
                    line.DrawingNumber = RegexReplace(
                        drawingNumberMatches[0].Value,
                        settings.DrawingNumberReplacementExpr,
                        settings.DrawingNumberReplacementValue,
                        settings.DrawingNumberReplacementOptions);
                }
            }

            line.Photo = await _photos.GetPhotoByDrawingNumber(line.DrawingNumber);

            line.Name = await _tricorn.GetNameByDrawingNumberAsync(line.DrawingNumber);

            line.OriginalDeliveryDate = deliveryMatches.Count == 0
                ? DateTime.MinValue
                : DateTime.Parse(deliveryMatches[0].Value);

            return(line);
        }