示例#1
0
        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;
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
 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);
 }
示例#4
0
        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;
                    }
                }
            }
        }