public static PaymentRecord TryParseStringToPaymentRecord(String str) { PaymentRecord record = new PaymentRecord(); String[] splitResult = str.Split(new String [] { " " }, StringSplitOptions.RemoveEmptyEntries); if (splitResult.Length != FIELD_NUM) { return(null); } try { record.documentDate = DateTime.Parse(splitResult[(int)Fields.documentDate]); record.documentNumber = splitResult[(int)Fields.documentNumber]; record.operationCode = Int32.Parse(splitResult[(int)Fields.operationCode]); record.correspondentCode = Int32.Parse(splitResult[(int)Fields.correspondentCode]); record.correspondentAccount = splitResult[(int)Fields.correspondentAccount]; record.ratingDebit = splitResult[(int)Fields.ratingDebit]; record.ratingCredit = splitResult[(int)Fields.ratingCredit]; if (record.ratingCredit == "0.00") { throw new Exception(); } } catch (Exception) { return(null); } return(record); }
public static PaymentRecord TryParseStringToPaymentRecord(String str) { PaymentRecord record = new PaymentRecord(); String[] splitResult = str.Split(new String [] {" "}, StringSplitOptions.RemoveEmptyEntries); if (splitResult.Length != FIELD_NUM) return null; try { record.documentDate = DateTime.Parse(splitResult[(int)Fields.documentDate]); record.documentNumber = splitResult[(int)Fields.documentNumber]; record.operationCode = Int32.Parse(splitResult[(int)Fields.operationCode]); record.correspondentCode = Int32.Parse(splitResult[(int)Fields.correspondentCode]); record.correspondentAccount = splitResult[(int)Fields.correspondentAccount]; record.ratingDebit = splitResult[(int)Fields.ratingDebit]; record.ratingCredit = Convert.ToDouble(splitResult[(int)Fields.ratingCredit], Program.cultureInfo); if (record.ratingDebit != "0.00") throw new Exception(); } catch (Exception) { return null; } return record; }
private static double FindCreditForRecord(PaymentRecord record, int filial) { double credit = -1; DataRow[] rows = registerPart.Select("[" + registerPart.Columns[0].ColumnName + "] like '%" + record.documentNumber + "%'"); try { if (rows.Length == 1) { credit = Convert.ToDouble(rows.First()[filial + filialRegisterIndent], cultureInfo); generalSumDictionary[record.documentNumber] -= credit; } else { // один раз select как-то криво отработал. хз почему. поэтому добавила этот кусок. всегда только одна запись с таким номером документа foreach (DataRow r in rows) { if (r[0].ToString() == record.documentNumber) { credit = Convert.ToDouble(r[filial + filialRegisterIndent], cultureInfo); generalSumDictionary[record.documentNumber] -= credit; } } } } catch (Exception) { } return(credit); }
private static String FindCreditForRecord(PaymentRecord record, int filial) { String credit = String.Empty; DataRow[] rows = registerPart.Select("[" + registerPart.Columns[0].ColumnName + "] like '%" + record.documentNumber + "%'"); if (rows.Length == 1) { credit = rows.First()[filial + filialRegisterIndent].ToString(); } return(credit); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { result += String.Format("{0, 10}", filialCodes[filial]); } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { result += String.Format(standard, record.ratingCredit); if (previousWasMoved == 1) { previousWasMoved = 0; } return(result); } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } String credit = FindCreditForRecord(record, filial); if (credit.Equals(String.Empty)) { Clipboard.SetText(record.documentNumber); throw new Exception("Обнаружено несоответствие. Не найдена запись в реестре для:\nНомер док.: " + record.documentNumber + "\nФилиал: " + filialNames[filial]); } record.ratingCredit = credit + ".00"; result += String.Format(indent + " {1}", record.ratingCredit, filialShortNames[filial]); return(result); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { result += String.Format("{0, 10}", filialCodes[filial]); } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { result += String.Format(standard, record.ratingCredit); if (previousWasMoved == 1) { previousWasMoved = 0; } return(result); } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } result += String.Format(indent + " {1}", record.ratingCredit, filialShortNames[filial]); return(result); }
public static List <PaymentRecord> ParseOrderFile(StreamReader reader, out string prologue, out string epilogue) { List <PaymentRecord> document = new List <PaymentRecord>(); prologue = ""; epilogue = ""; String line; PaymentRecord record; bool foundContent = false; while ((line = reader.ReadLine()) != null) { record = PaymentRecord.TryParseStringToPaymentRecord(line); if (record == null) { if (foundContent) { epilogue += line + "\r\n"; } else { prologue += line + "\r\n"; } } else { if (!foundContent) { foundContent = true; } document.Add(record); } } return(document); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool additionalCode) { return ChangedPaymentRecord(record, filial, false, false, additionalCode, -1); }
private static String FindCreditForRecord(PaymentRecord record, int filial) { String credit = String.Empty; DataRow[] rows = registerPart.Select("[" + registerPart.Columns[0].ColumnName + "] like '%" + record.documentNumber +"%'"); if (rows.Length == 1) credit = rows.First()[filial + filialRegisterIndent].ToString(); return credit; }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode, int paperAccountIndex) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { if (paperAccountIndex != -1 && CheckPaperFilial(paperAccountIndex, filial, record.documentNumber)) result += String.Format("{0, 10}", paperAdditionalCodes[paperAccountIndex][paperFilials[paperAccountIndex].IndexOf(filialNames[filial])]); else result += String.Format("{0, 10}", filialCodes[filial]); } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { if(generalSumDictionary.Keys.Contains(record.documentNumber)) { generalSumDictionary[record.documentNumber] -= record.ratingCredit; } result += String.Format(cultureInfo, standard, record.ratingCredit); if (previousWasMoved == 1) previousWasMoved = 0; return result; } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } if (paperAccountIndex != -1 || record.debtor) { if (!generalSumDictionary.ContainsKey(record.documentNumber)) // если сумма с нескольких филиалов generalSumDictionary.Add(record.documentNumber, 0); // записей на филиалы Сморгонь и Волковыск в реестре нету + нет должников } else { double credit = FindCreditForRecord(record, filial); if (credit == -1) { Clipboard.SetText(record.documentNumber); throw new Exception("Обнаружено несоответствие. Не найдена запись в реестре для:\nНомер док.: " + record.documentNumber + "\nФилиал: " + filialNames[filial]); } record.ratingCredit = credit; } result += String.Format(cultureInfo, indent + " {1}", record.ratingCredit, filialShortNames[filial]); return result; }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode, int paperAccountIndex) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { if (paperAccountIndex != -1 && CheckPaperFilial(paperAccountIndex, filial, record.documentNumber)) { result += String.Format("{0, 10}", paperAdditionalCodes[paperAccountIndex][paperFilials[paperAccountIndex].IndexOf(filialNames[filial])]); } else { result += String.Format("{0, 10}", filialCodes[filial]); } } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { if (generalSumDictionary.Keys.Contains(record.documentNumber)) { generalSumDictionary[record.documentNumber] -= record.ratingCredit; } result += String.Format(cultureInfo, standard, record.ratingCredit); if (previousWasMoved == 1) { previousWasMoved = 0; } return(result); } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } if (paperAccountIndex != -1 || record.debtor) { if (!generalSumDictionary.ContainsKey(record.documentNumber)) // если сумма с нескольких филиалов { generalSumDictionary.Add(record.documentNumber, 0); } // записей на филиалы Сморгонь и Волковыск в реестре нету + нет должников } else { double credit = FindCreditForRecord(record, filial); if (credit == -1) { Clipboard.SetText(record.documentNumber); throw new Exception("Обнаружено несоответствие. Не найдена запись в реестре для:\nНомер док.: " + record.documentNumber + "\nФилиал: " + filialNames[filial]); } record.ratingCredit = credit; } result += String.Format(cultureInfo, indent + " {1}", record.ratingCredit, filialShortNames[filial]); return(result); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { return(ChangedPaymentRecord(record, filial, complex, firstInComplex, additionalCode, -1)); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool additionalCode, int paperAccountIndex) { return(ChangedPaymentRecord(record, filial, false, false, additionalCode, paperAccountIndex)); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { result += String.Format("{0, 10}", filialCodes[filial]); } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { result += String.Format(standard, record.ratingCredit); if (previousWasMoved == 1) previousWasMoved = 0; return result; } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } result += String.Format(indent + " {1}", record.ratingCredit, filialShortNames[filial]); return result; }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool additionalCode, int paperAccountIndex) { return ChangedPaymentRecord(record, filial, false, false, additionalCode, paperAccountIndex); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { return ChangedPaymentRecord(record, filial, complex, firstInComplex, additionalCode, -1); }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool additionalCode) { return(ChangedPaymentRecord(record, filial, false, false, additionalCode)); }
private static double FindCreditForRecord(PaymentRecord record, int filial) { double credit = -1; DataRow[] rows = registerPart.Select("[" + registerPart.Columns[0].ColumnName + "] like '%" + record.documentNumber + "%'"); try { if (rows.Length == 1) { credit = Convert.ToDouble(rows.First()[filial + filialRegisterIndent], cultureInfo); generalSumDictionary[record.documentNumber] -= credit; } else { // один раз select как-то криво отработал. хз почему. поэтому добавила этот кусок. всегда только одна запись с таким номером документа foreach (DataRow r in rows) { if (r[0].ToString() == record.documentNumber) { credit = Convert.ToDouble(r[filial + filialRegisterIndent], cultureInfo); generalSumDictionary[record.documentNumber] -= credit; } } } } catch (Exception) { } return credit; }
private static String ChangedPaymentRecord(PaymentRecord record, int filial, bool complex, bool firstInComplex, bool additionalCode) { string result = String.Format("{0, -12}{1, 7}{2, 3}", record.documentDate.ToString("dd.MM.yyyy"), record.documentNumber, record.operationCode); if (additionalCode) { result += String.Format("{0, 10}", filialAdditionalCodes[filial]); } else { result += String.Format("{0, 10}", filialCodes[filial]); } result += String.Format("{0}{1, 15}{2, 29}", record.correspondentCode, record.correspondentAccount, record.ratingDebit); if ((filial == (int)Filials.Minsk && !complex) || additionalCode) { result += String.Format(standard, record.ratingCredit); if (previousWasMoved == 1) previousWasMoved = 0; return result; } if (firstInComplex || !complex) { indent = indents[previousWasMoved]; previousWasMoved++; previousWasMoved %= 2; } String credit = FindCreditForRecord(record, filial); if (credit.Equals(String.Empty)) { Clipboard.SetText(record.documentNumber); throw new Exception("Обнаружено несоответствие. Не найдена запись в реестре для:\nНомер док.: " + record.documentNumber + "\nФилиал: " + filialNames[filial]); } record.ratingCredit = credit + ".00"; result += String.Format(indent + " {1}", record.ratingCredit, filialShortNames[filial]); return result; }