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