private static void dumpClaimResponseToDebug( HicapsConnectControl.HicapsConnectControl.ClaimResponse response) { Debug.WriteLine(Environment.NewLine + "Claim Response:"); string textString = ""; textString += "ResponseCode = " + (response.ResponseCode.NullTrim()) + Environment.NewLine; textString += "ResponseText = " + (response.ResponseText.NullTrim()) + Environment.NewLine; textString += "ExpiryDate = " + (response.ExpiryDate.NullTrim()) + Environment.NewLine; textString += "PrimaryAccountNumber = " + (response.PrimaryAccountNumber.NullTrim()) + Environment.NewLine; textString += "ProviderName = " + (response.ProviderName.NullTrim()) + Environment.NewLine; textString += "RrnNumber = " + (response.RrnNumber.NullTrim()) + Environment.NewLine; textString += "Merchant Id = " + (response.MerchantId.NullTrim()) + Environment.NewLine; textString += "Terminal Id = " + (response.TerminalId.NullTrim()) + Environment.NewLine; textString += "TransactionAmount = " + (response.TransactionAmount).ToCurrency() + Environment.NewLine; textString += "BenefitAmount = " + (response.BenefitAmount).ToCurrency() + Environment.NewLine; foreach (var ClaimDetailsLine in response.ClaimDetails) { textString += "ClaimDetailsLine = " + ClaimDetailsLine + Environment.NewLine; } foreach (var PatientNameDetailsLine in response.PatientNameDetails) { textString += "PatientNameDetailsLine = " + PatientNameDetailsLine + Environment.NewLine; } textString += "PatientNameDetailsStr = " + response.PatientNameDetailsStr.Aggregate("", (a, s) => a + s + ", ") + Environment.NewLine; textString += "Transaction Date = " + response.TransactionDate + Environment.NewLine; textString += "Response Time = " + response.ResponseTime + Environment.NewLine; textString += "Response Time = " + response.ResponseTime + Environment.NewLine; textString += "ServerURL = " + response.ServerUrl + Environment.NewLine; textString += "ClientVersion = " + response.ClientVersion + Environment.NewLine; textString += "ServerVersion = " + response.ServerVersion + Environment.NewLine; textString += "Membership Id = " + response.MembershipId + Environment.NewLine; Debug.Write(textString); }
private IEnumerable <object> getHubDetails() { List <object> l = new List <object>(); switch (receiptType) { case ReceiptType.Claim: case ReceiptType.Quote: // QuoteResponse is a subclass of ClaimResponse so we can do this. HicapsConnectControl.HicapsConnectControl.ClaimResponse c = claim; if (receiptType == ReceiptType.Quote) { c = quote; } l.Add(new { MerchantNumber = c.MerchantId, Cardnumber = c.PrimaryAccountNumber, Membership = c.MembershipId, Authnumber = c.RrnNumber, CreateDatetime = c.ResponseTime, TerminalNumber = c.TerminalId, HicapsCodeDescription = c.ResponseCode + " - " + c.ResponseText, // not in original RDLC file Fund = getFundShortName(c.PrimaryAccountNumber) }); break; case ReceiptType.Cancel: l.Add(new { MerchantNumber = cancel.MerchantId, Cardnumber = cancel.PrimaryAccountNumber, Membership = cancel.MembershipId, Authnumber = cancel.RrnNumber, CreateDatetime = cancel.ResponseTime, TerminalNumber = cancel.TerminalId, HicapsCodeDescription = cancel.ResponseCode + " - " + cancel.ResponseText, // not in original RDLC file Fund = getFundShortName(cancel.PrimaryAccountNumber) }); break; default: break; } return(l); }
private static HicapsConnectControl.HicapsConnectControl.ClaimResponse CreateInitialLatestResponseForTesting() { HicapsConnectControl.HicapsConnectControl.ClaimResponse response = new HicapsConnectControl.HicapsConnectControl.ClaimResponse { ResponseCode = "00", ResponseText = "APPROVED", ExpiryDate = "5012", PrimaryAccountNumber = "9036999801234567891", ProviderName = "DANIEL CHU", ProviderNumberId = "2288249B", RrnNumber = "000001006600", MerchantId = "33123433", TerminalId = "SE101A", TransactionAmount = 260, BenefitAmount = 115, TransactionDate = DateTime.Now, ResponseTime = DateTime.Now, ServerUrl = "10.1.2.6:11000:SE101A:COM1", ClientVersion = "1.0.3.26", ServerVersion = "1.0.3.26", MembershipId = "12345678" }; List <string> claimDetails = new List <string>(); claimDetails.Add("01002200240701000000250003"); claimDetails.Add("02053100240701000000500000"); claimDetails.Add("02053100240701000000500000"); List <string> nameDetails = new List <string>(); nameDetails.Add("01Peter Pig"); nameDetails.Add("02Pearl Pig"); nameDetails.Add("03Paddy Pig"); nameDetails.Add("04Patsy Pig"); response.PatientNameDetails = nameDetails; response.PatientNameDetailsStr = nameDetails.ToArray(); response.ClaimDetails = claimDetails; return(response); }
private void SendButton_Click(object sender, RoutedEventArgs e) { SendButton.IsEnabled = false; HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest request; //HicapsConnectControl.HicapsConnectControl.AllItemListRequest itemRequest; main.hicaps.DisplayStatusWindow(true); if (QuoteMode) { // fields of a QuoteRequest are filled identically to those of a ClaimRequest. request = new HicapsConnectControl.HicapsConnectControl.QuotePharmRequest(); } else { request = new HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest(); } // set provider request.ProviderNumberId = Utils.getProviderNumberId(ProviderCombo.Text); if (request.ProviderNumberId == null || request.ProviderNumberId == "00000000") { // inform user that a correct provider is needed MessageBox.Show("The selected provider is not valid. Please select another one."); SendButton.IsEnabled = true; return; } // add item details if (claimItems.Count < 1) { MessageBox.Show("There must be at least one claim item"); SendButton.IsEnabled = true; return; } int i = 0; foreach (ItemRow row in claimItems) { string rowNumber = "Row " + i + 1 + ": "; if (row.Dos == null) { MessageBox.Show(rowNumber + "Please select a date of service"); ClaimDetails.SelectedIndex = i; SendButton.IsEnabled = true; return; } try { if (row.ItemNumber.Length < 3) { MessageBox.Show(rowNumber + "Item Number must be 3 or greater characters"); ClaimDetails.SelectedIndex = i; SendButton.IsEnabled = true; return; } //else if (!row.ItemNumber.OnlyNumbers()) //{ // MessageBox.Show(rowNumber + "Item Number must consist of digits"); // ClaimDetails.SelectedIndex = i; // return; //} //GJ:Commented the old way to add the line as for the compound indicator should use the Compound column of each row instead of the UseAlternateBodyPart checkbox //request.addClaimPharmLine(row.PatientId, row.ItemNumber, row.ScriptNumber, UseAlternateBodyPart.IsChecked != null && UseAlternateBodyPart.IsChecked.Value, // row.Dos ?? DateTime.MinValue, // row.ItemFee.ParseCurrency() ?? 0); request.addClaimPharmLine(row.PatientId, row.ItemNumber, row.ScriptNumber, row.Compound == "Compound", row.Dos ?? DateTime.MinValue, row.ItemFee.ParseCurrency() ?? 0); } catch (Exception ex) { MessageBox.Show(ex.Message); SendButton.IsEnabled = true; return; } i++; } request.ServerUrl = main.currentTerminal; request.PmsKey = Utils.PMSKey; request.SoftwareVendorName = Utils.VendorName; request.PrintReceiptOnTerminal = Properties.Settings.Default.PrintClaimReceipt; // send request HicapsConnectControl.HicapsConnectControl.ClaimPharmResponse response; if (QuoteMode) { // converts the request to a QuoteRequest and the response to a ClaimResponse // while calling sendQuoteRequest main.SyncStatus("Sending Quote Request..."); response = main.hicaps.sendQuotePharmRequest((HicapsConnectControl.HicapsConnectControl.QuotePharmRequest)request); } else { main.SyncStatus("Sending Claim Request..."); response = main.hicaps.sendClaimPharmRequest(request); } main.ResetStatus(); if (response != null) { if (response.GetType() == typeof(HicapsConnectControl.HicapsConnectControl.ClaimPharmResponse)) { main.claimLog.LogClaim(response); } if (response.GetType() == typeof(HicapsConnectControl.HicapsConnectControl.QuotePharmResponse)) { main.claimLog.LogQuote((HicapsConnectControl.HicapsConnectControl.QuotePharmResponse)response); } main.cancel.UpdateTransactions(); _latestResponse = response; } dumpClaimResponseToDebug(response); if (response.ResponseCode != "00") { new ResponseError(response.ResponseCode, response.ResponseText).ShowDialog(); } else { // i.e. successful claim clearEntryFields(true); claimItems.Clear(); ClaimDetails.Items.Refresh(); } ////Display wait window //wait.Visibility = Visibility.Visible; //ForceUIToUpdate(); // print provider receipt if needed if (!QuoteMode && Settings.Default.PrintProviderClaimReceiptLocal) { //Display wait window wait.Visibility = Visibility.Visible; ForceUIToUpdate(); var rec = new PharmaceuticalReceipt(response, ReceiptFor.Provider); //Close wait window wait.Visibility = Visibility.Collapsed; rec.printReport(true); } // print customer receipt if needed bool shouldPrint = false; PharmaceuticalReceipt r; if (QuoteMode) { shouldPrint = Settings.Default.PrintQuoteReceiptLocal; var quoteResponse = (HicapsConnectControl.HicapsConnectControl.QuotePharmResponse)response; r = new PharmaceuticalReceipt(quoteResponse); } else { shouldPrint = Settings.Default.PrintCustomerClaimReceiptLocal; r = new PharmaceuticalReceipt(response, ReceiptFor.Customer); } if (shouldPrint) { r.printReport(false); } if (response.ResponseCode == "00") { // process claim-to-sale // todo: is gap really calculated this way? decimal gap = response.TransactionAmount - response.BenefitAmount; if (gap > 0 && !QuoteMode) { if (main.setup.ClaimToSale && main.setup.ClaimToSalePopup) { ClaimToSalePopup popup = new ClaimToSalePopup(gap); popup.Show(); } else if (main.setup.ClaimToSale && !main.setup.ClaimToSalePopup) { main.eftpos.doClaimToSale(); } else { // ClaimToSale is not checked. Do nothing } } } main.hicaps.DisplayStatusWindow(false); SendButton.IsEnabled = true; }