private void btnClear_Click(object sender, EventArgs e) { _bulkPayment = null; _log = null; txtContractCode.Clear(); txtCheckNo.Clear(); txtCheckAmount.Clear(); txtBatchHdrKey.Clear(); txtExcelFilename.Clear(); txtSummary.Clear(); flowLayoutPanel1.Controls.Clear(); flowLayoutPanel1.Refresh(); dgvDroppedPayments.DataSource = null; dgvDroppedPayments.Refresh(); dgvReturnedPayments.DataSource = null; dgvReturnedPayments.Refresh(); if (_impersonation != null) { RevertImpersonation(); } }
private void txtProcess_Click(object sender, EventArgs e) { if (_bulkPayment != null) { _bulkPayment = null; } try { ShowStatus("Processing", "Reading data please wait"); Application.DoEvents(); // prevents the UI from showing a hang or not responding string insurerContractCode = txtContractCode.Text; IBulkPayment bulkPayment; _user = new User(); EvaluateUserPermissions(_user, SecurityPermittedAccess.PayerFeeBatchCreate); //Authorization succeeded //Impersonate system user for permission if (_impersonation == null) { ImpersonateSystemUser(); } string filename; if (rbExistingBatch.Checked & txtBatchHdrKey.Text.Length > 0) { // existing batch int batchHeaderKey = int.Parse(txtBatchHdrKey.Text); IBulkPayment ibp = new BulkPayment((LedgerType)cboLedger1.SelectedIndex, batchHeaderKey); bulkPayment = ibp; DateTime checkDate = (DateTime)bulkPayment.Date; filename = DateTime.Now.ToString("yyyyMMdd_hh_mm_ss") + "_" + "BulkPosting_" + bulkPayment.Id + "_to_" + bulkPayment.LedgerType + "_" + checkDate.ToString("yyyyMMdd") + ".txt"; } else { // new batch double checkAmount = double.Parse(txtCheckAmount.Text); DateTime checkDate = DateTime.Parse(dtpCheckDate.Text); string checkNumber = txtCheckNo.Text; LedgerType ledgerType = (LedgerType)cboLedger1.SelectedIndex; IBulkPayment ibp = new BulkPayment(ledgerType , checkNumber, checkAmount, checkDate, _user); bulkPayment = ibp; filename = DateTime.Now.ToString("yyyyMMdd_hh_mm_ss") + "_" + "BulkPosting_" + checkNumber + "_to_" + ledgerType + "_" + checkDate.ToString("yyyyMMdd") + ".txt"; } //Begin logging _log = new Log(_logPath, filename); VerifyLogFileCreated(); WriteLogHeader(); bulkPayment.DefaultInsurerContractCode = insurerContractCode; //Revert back after data access is complete RevertImpersonation(); if (bulkPayment.DefaultInsurerContractKey == 0) { MessageBox.Show("Invalid Contract Code. Please update and try again."); bulkPayment = null; } else { //user needs to drag and drop columns to map Mapper mapper = CreateMapperObject(); LogBulkPaymentInformation(bulkPayment); LogMappingResults(mapper); DataTable dt = ReadPaymentsFromFile(mapper); // check for Excel office version -- old versions bool deleteFirstRow = false; string fileName = Path.GetFileName(txtExcelFilename.Text); if (fileName.ToLower().EndsWith(".xls")) { deleteFirstRow = true; } bulkPayment.ProcessPayments(dt, mapper, deleteFirstRow); //Display Dropped payments to user LogDroppedPayments(bulkPayment); //Provide summary to user LogSummaryInformation(bulkPayment); //bulkPayment.su //Display new payments to user LogListOfPayments(bulkPayment); _bulkPayment = bulkPayment; btnPostClaims.Enabled = true; ShowStatus(); } //Impersonate system user for permission if (_impersonation == null) { RevertImpersonation(); } } catch(Exception ex) { ErrorHandler(ex); } }
private void LogSummaryInformation(IBulkPayment bulkPayment) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("Total from Inputs: {0}" , bulkPayment.Total.ToString("$#,###.##")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); stringBuilder.AppendFormat("Total Dropped: {0}, #: {1}" , bulkPayment.SumDroppedPayments.ToString("$#,###.##"), bulkPayment.NumberDroppedPayments.ToString("#,###")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); stringBuilder.AppendFormat("Total Commission Payments: {0}, #: {1}" , bulkPayment.SumIdentifiedPayments.ToString("$#,###.##"), bulkPayment.CountIdentifiedPayments.ToString("#,###")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); stringBuilder.AppendFormat("Total Unidentified: {0}, #: {1}" , bulkPayment.SumUnidentifedPayments.ToString("$#,###.##"), bulkPayment.CountUnidentifiedPayments.ToString("#,###")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); stringBuilder.AppendFormat("Total Open Credit: {0}, #: {1}" , bulkPayment.SumOpenCreditPayments.ToString("$#,###.##"), bulkPayment.CountOpenCreditPayments.ToString("#,###")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); double ssTotal = bulkPayment.SumIdentifiedPayments + bulkPayment.SumUnidentifedPayments + bulkPayment.SumOpenCreditPayments; int ssNumber = bulkPayment.CountIdentifiedPayments + bulkPayment.CountUnidentifiedPayments + bulkPayment.CountOpenCreditPayments; stringBuilder.AppendFormat("Total From Batch: {0}, #: {1}", ssTotal.ToString("$#,###.##") , ssNumber.ToString("#,###")); stringBuilder.AppendLine(); stringBuilder.AppendLine(); //have not been able to figure out why this rounding here is necessary double diff = Math.Round(ssTotal - bulkPayment.Total, 2); string direction = "over"; if (diff < 0) { direction = "under"; } if (diff == 0) { stringBuilder.AppendFormat("Batch is in balance."); } else { stringBuilder.AppendFormat("Batch will be {0} by {1}.", direction, diff.ToString("$#,###.##")); } txtSummary.Text = stringBuilder.ToString(); _log.WriteLog(stringBuilder.ToString()); _log.WriteLog(""); }
private void LogListOfPayments(IBulkPayment bulkPayment) { //These are the remaining payments that will be part of the batch StringBuilder stringBuilder = new StringBuilder(); AimHealth.Safari.BulkPosting.Data.PaymentsDataTable dpo = new AimHealth.Safari.BulkPosting.Data.PaymentsDataTable(); foreach (IPayment payment in bulkPayment.Payments) { stringBuilder.AppendLine(); stringBuilder.AppendFormat( "Claim Identifier {0}, ClaimHeaderKey {1}, Amt {2}, Contract {3}: {4}, Balance {5}, Recovered {6}, Invoice {7} Closed? {8}, Note: {9}" , payment.GetClaimIdentifier() , payment.ClaimHeaderKey , payment.Amount , payment.InsurerContractKey, payment.InsurerContractCode , payment.InvoiceBalanceDue, payment.RefundRecoveredAmount , payment.InvoiceKey , payment.IsInvoiceClosed , payment.Note); dpo.AddRow(payment.GetClaimIdentifier(), payment.Amount, payment.InsurerContractCode, payment.InvoiceBalanceDue, payment.RefundRecoveredAmount, payment.InvoiceKey, payment.IsInvoiceClosed, payment.Note); } dgvReturnedPayments.DataSource = dpo.GetDataTable(); try { foreach (DataGridViewTextBoxColumn column in dgvReturnedPayments.Columns) { switch (column.Name) { case "Amount": case "Recovered": case "Balance": dgvReturnedPayments.Columns[column.Name].DefaultCellStyle.Format = "c"; dgvReturnedPayments.Columns[column.Name].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; break; case "Invoice": case "Contract": dgvReturnedPayments.Columns[column.Name].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; break; default: break; } } } catch { //do nothing } _log.WriteLog(stringBuilder.ToString()); _log.WriteLog(""); }
private void LogDroppedPayments(IBulkPayment bulkPayment) { StringBuilder stringBuilder = new StringBuilder(); AimHealth.Safari.BulkPosting.Data.DroppedPaymentsDataTable dpo = new AimHealth.Safari.BulkPosting.Data.DroppedPaymentsDataTable(); stringBuilder.AppendLine("Dropped Payments:"); foreach (IPayment payment in bulkPayment.DroppedPayments) { stringBuilder.AppendFormat( "Claim Identifier{0}, Amt {1}, Note: {2}" , payment.GetClaimIdentifier(), payment.Amount , payment.Note); dpo.AddRow(payment.GetClaimIdentifier(), payment.Amount, payment.Note); } dgvDroppedPayments.DataSource = dpo.GetDataTable(); foreach (DataGridViewTextBoxColumn column in dgvDroppedPayments.Columns) { if (column.Name == "Amount") { dgvDroppedPayments.Columns[column.Name].DefaultCellStyle.Format = "c"; } if (column.Name == "Note") { dgvDroppedPayments.Columns[column.Name].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; } } _log.WriteLog(stringBuilder.ToString()); _log.WriteLog(""); }
private void LogBulkPaymentInformation(IBulkPayment bulkPayment) { _log.WriteLog("Bulk Payment Information:"); _log.WriteLog("User: {0}" , bulkPayment.User.Login); _log.WriteLog("Ledger: {0}", bulkPayment.LedgerType); _log.WriteLog("Check Number: {0}", bulkPayment.Id); _log.WriteLog("Check Amount: {0}", bulkPayment.Total); _log.WriteLog("Check Date: {0}", bulkPayment.Date); _log.WriteLog(""); }