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 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 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); }