private static void WriteToReceiptFile(RecordType01 rec01, RecordType05[] rec05) { try { using (StreamWriter receiptWriter = CreateReceiptFile()) { receiptWriter.Write(rec01.RecordLine()); for (int i = 0; i < rec05.Length; i++) { string currentRecord = rec05[i].RecordLine(); if (currentRecord.Length == record05Length) // and predepositstatus is null or released******************************* { receiptWriter.Write(currentRecord); } //else LogErrorColumns(rec05[i]); // no need to log it has already been logged above but // record05 contains all receipts that's why we check // again. } receiptWriter.Close(); } } catch { throw; } }
private static void ProcessRecords() { List <Receipt> allReceipts = GetReceiptList().OrderBy(x => x.GlobalStubID).ToList <Receipt>(); Log.WriteLine(String.Format("GetReceipts() returned {0} records.{1}", allReceipts.Count, Environment.NewLine)); UnidentifiedReceipts(allReceipts); SkippedReceipts(allReceipts); /// NORMAL RECEIPTS List <Receipt> receipts = FilterReceipts(allReceipts, NotPredeposited).OrderBy(x => x.GlobalBatchID).ToList(); if (receipts.Count > 0) { RecordType01 rec01 = new RecordType01(CurrentDate); //header RecordType05[] rec05 = new RecordType05[receipts.Count]; //detail ProcessReceipts(receipts, rec01, rec05); } else { //no records found throw new CustomException("Receipt Export found " + receipts.Count + " to process", ExitCode.NoRecordsFound); } }
private static void RecordTotals(RecordType01 rec01) { Log.WriteLine("First Time Amount: " + rec01.FirstTimeAmount.ToString("C")); Log.WriteLine("Retransmitted Amount: " + rec01.RetransmittalAmount.ToString("C")); Log.WriteLine("Total Amount: " + rec01.TotalAmount.ToString("C")); Log.WriteLine("First Time Receipts: " + rec01.FirstTimeRecordCount.ToString()); Log.WriteLine("Retransmitted Receipts: " + rec01.RetransmittalRecordCount.ToString()); Log.WriteLine("Records Written to Receipt File: " + rec01.RecordCount); Log.WriteLine("Bad Records: " + badRecCount); Log.WriteLine("Total Records: " + totalProcessedRecords); Log.WriteLine(Environment.NewLine); }
private static void ProcessReceipts(List <Receipt> receipts, RecordType01 rec01, RecordType05[] rec05) { using (var db = new ReceiptDBContext()) { using (var tran = db.Database.BeginTransaction()) { try { int i = 0; #region Loop Receipts foreach (Receipt receipt in receipts) { rec05[i] = LoadRec05(receipt); if (rec05[i].RecordLine().Length == record05Length) { StubsDataEntry sde = db.StubsDataEntries.FirstOrDefault(x => x.GlobalStubID == receipt.GlobalStubID); if (sde != null) { sde.ExportedToCHARTSDate = CurrentDate; sde.SDUTranID = rec05[i].SduTranId; sde.CHARTSStubPrefix = rec05[i].SduTranId.Substring(0, 8); sde.ExportedAsUnidentified = receipt.ExportedAsUnidentified == 1 ? receipt.ExportedAsUnidentified : (receipt.PersonID.Trim() == "0" ? (byte)1 : (byte)0); sde.ExportedToCHARTS = 1; sde.ComplianceExemptionReason = GetComplianceExemptionReason(receipt); if (rec05[i].RetransmittalIndicator && rec05[i].PayorID != "AR00000000000") { sde.ResolvedDate = CurrentDate; } } else { Log.WriteLine("Stub not found, not updated. GlobalStubID: " + receipt.GlobalStubID); } //update vertical and horizontal tables //SqlParameter pGlobalStubID = new SqlParameter("globalStubID", receipt.GlobalStubID); //db.Database.ExecuteSqlCommand("proc_Custom_ReceiptExport_UpdateStubDE @GlobalStubID", pGlobalStubID); rec01.TotalAmount += rec05[i].Amount; if (rec05[i].RetransmittalIndicator) { rec01.RetransmittalRecordCount++; rec01.RetransmittalAmount += rec05[i].Amount; } else { rec01.FirstTimeRecordCount++; rec01.FirstTimeAmount += rec05[i].Amount; } rec01.RecordCount++; // records written to file count if ((i != 0) && (i % 200) == 0) { db.SaveChanges(); } } else { LogErrorColumns(rec05[i]); badRecCount++; } i++; // total record count } #endregion db.SaveChanges(); totalProcessedRecords = i; RecordTotals(rec01); WriteToReceiptFile(rec01, rec05); tran.Commit(); } catch { tran.Rollback(); throw; } } } }