public virtual Document Parse(string file, Document document) { SetIndexes(); using (var parser = new HeaderBodyParser(file, CommentMark)) { ReadHeader(document, parser.Header().First()); foreach (var body in parser.Body()) { ReadBody(document, body); } } return(document); }
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); }
public static bool CheckByHeaderPart(string file, IEnumerable <string> name, string commentMark) { if (!Path.GetExtension(file).Match(".txt")) { return(false); } using (var parser = new HeaderBodyParser(file, commentMark)) { var header = parser.Header().FirstOrDefault(); if (header == null) { return(false); } var parts = header.Split(';'); if (parts.Length < 4) { return(false); } if (name.All(n => !parts[3].Equals(n, StringComparison.CurrentCultureIgnoreCase))) { return(false); } if (GetString(parts[4]) != null && GetString(parts[4]).Contains("ЛИПЕЦК, *ЛИПЕЦКФАРМАЦИЯ Аптека")) { return(false); } var line = parser.Body().FirstOrDefault(); if (line == null) { return(false); } parts = line.Split(';'); if (GetDecimal(parts[6]) == null) { return(false); } return(true); } }
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)); }
public override Document Parse(string file, Document document) { SetIndexes(); using (var parser = new HeaderBodyParser(file, CommentMark)) { var lineCounter = 0; const int headerLinesCount = 23; foreach (var headline in parser.Header()) { var parts = headline.Split(';'); var key = parts[0].ToLower().Trim(); if (key.ToLower() == "номер накладной") { document.ProviderDocumentId = GetString(parts[1]); } if (key.ToLower() == "дата накладной") { if (!String.IsNullOrEmpty(parts[1])) { document.DocumentDate = Convert.ToDateTime(parts[1]); } } if (key.ToLower() == "номер с/ф") { document.SetInvoice().InvoiceNumber = GetString(parts[1]); } if (key.ToLower() == "дата с/ф") { if (!String.IsNullOrEmpty(parts[1])) { document.SetInvoice().InvoiceDate = Convert.ToDateTime(parts[1]); } } if (key.ToLower() == "продавец") { document.SetInvoice().SellerName = GetString(parts[1]); } if (key.ToLower() == "адрес продавца") { document.SetInvoice().SellerAddress = GetString(parts[1]); } if (key.ToLower() == "инн/кпп продавца") { if (parts[1].Contains("/")) { document.SetInvoice().SellerINN = GetString(parts[1].Split('/')[0]); document.SetInvoice().SellerKPP = GetString(parts[1].Split('/')[1]); } } if (key == "грузоотправитель и его адрес") { document.SetInvoice().ShipperInfo = GetString(parts[1]); } if (key == "грузополучатель и его адрес") { document.SetInvoice().RecipientAddress = GetString(parts[1]); } if (key == "к платежно-расчетному документу n") { document.SetInvoice().PaymentDocumentInfo = GetString(parts[1]); } if (key == "покупатель") { document.SetInvoice().BuyerName = GetString(parts[1]); } if (key == "адрес покупателя") { document.SetInvoice().BuyerAddress = GetString(parts[1]); } if (key == "инн/кпп покупателя") { if (parts[1].Contains("/")) { document.SetInvoice().BuyerINN = GetString(parts[1].Split('/')[0]); document.SetInvoice().BuyerKPP = GetString(parts[1].Split('/')[1]); } } if (key == "стоимость без ндс 0%") { document.SetInvoice().AmountWithoutNDS0 = GetDecimal(parts[1]); } if (key == "стоимость без ндс 10%") { document.SetInvoice().AmountWithoutNDS10 = GetDecimal(parts[1]); } if (key == "сумма ндс 10%") { document.SetInvoice().NDSAmount10 = GetDecimal(parts[1]); } if (key == "стоимость с ндс 10%") { document.SetInvoice().Amount10 = GetDecimal(parts[1]); } if (key == "стоимость без ндс 18%") { document.SetInvoice().AmountWithoutNDS18 = GetDecimal(parts[1]); } if (key == "сумма ндс 18%") { document.SetInvoice().NDSAmount18 = GetDecimal(parts[1]); } if (key == "стоимость с ндс 18%") { document.SetInvoice().Amount18 = GetDecimal(parts[1]); } if (key == "общая стоимость без ндс") { document.SetInvoice().AmountWithoutNDS = GetDecimal(parts[1]); } if (key == "общая сумма ндс") { document.SetInvoice().NDSAmount = GetDecimal(parts[1]); } if (key == "общая стоимость с ндс") { document.SetInvoice().Amount = GetDecimal(parts[1]); } if (++lineCounter == headerLinesCount) { break; } } foreach (var body in parser.Body()) { var line = body.Split(';'); int ival; if (!Int32.TryParse(line[0], out ival)) { continue; } ReadBody(document, body); } } return(document); }