public override Document Parse(string file, Document document)
        {
            var match = regex.Match(file);

            document.ProviderDocumentId = match.Groups["pd"].Value;
            document.DocumentDate       = DateTime.Today;
            document.SetInvoice().BuyerName    = match.Groups["bn"].Value;
            document.SetInvoice().BuyerAddress = match.Groups["ba"].Value;

            SetIndexes();
            using (var reader = new StreamReader(file, Encoding.GetEncoding(866))) {
                using (var parser = new HeaderBodyParser(reader, CommentMark)) {
                    foreach (var body in parser.Lines())
                    {
                        ReadBody(document, body);
                    }
                }
            }
            return(document);
        }
示例#2
0
        public static bool CheckFileFormat(string file)
        {
            bool isHeader = false;
            bool isBody   = false;
            int  counter  = 0;

            using (var parser = new HeaderBodyParser(file, null)) {
                var content = parser.Lines();

                foreach (var line in content)
                {
                    if (line.ToLower() == "[заголовок]")
                    {
                        isHeader = true;
                        continue;
                    }
                    if (line.ToLower() == "[таблица]")
                    {
                        isBody = true;
                        continue;
                    }
                    var parts = line.Split(';');
                    if (parts.Length < 2)
                    {
                        return(false);
                    }

                    if (parts[0].ToLower().Contains("продавец") ||
                        parts[0].ToLower().Contains("номер накладной") ||
                        parts[0].ToLower().Contains("дата накладной") ||
                        parts[0].ToLower().Contains("номер с/ф") ||
                        parts[0].ToLower().Contains("дата с/ф"))
                    {
                        counter++;
                    }
                }
            }
            return(isHeader & isBody & (counter == 5));
        }