public ReceiptSetup(PharmaceuticalReceipt r)
 {
     receipt = r;
     InitializeComponent();
     SiteName.Text    = r.SiteName;
     SiteAddress.Text = r.SiteAddress;
     SiteFax.Text     = r.Fax;
     SitePhone.Text   = r.Phone;
     SiteEmail.Text   = r.Email;
 }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // set up references to sub-pages (i.e. the tabs)
            setup  = (Setup)SetupFrame.Content;
            claim  = (Claim)ClaimFrame.Content;
            eftpos = (Eftpos)EftposFrame.Content;
            quote  = (Claim)QuoteFrame.Content;
            cancel = (Cancel)CancelFrame.Content;

            Debug.WriteLine("PrintReceiptCancelClaim: " + Settings.Default.PrintReceiptCancelClaim);

            // put the quote tab into quote mode
            quote.enterQuoteMode();

            // create a cache object
            cache = new HicapsCacheManager();

            claimLog = new ClaimLog(null);

            // create the HicapsConnectControl.
            hicaps = new HicapsConnectControl.HicapsConnectControl();
            hicaps.DisplayStatusWindow(false);
            hicaps.TerminalListChanged += new HicapsConnectControl.TerminalListChangedEventHandler(hicaps_termListChanged);


            // Create a host for the winforms control
            // var host = new System.Windows.Forms.Integration.WindowsFormsHost {Child = hicaps};

            // add HicapsConnectControl to window via host
            //this.HiddenHicapsControl.Children.Add(host);

            if (!PharmaceuticalReceipt.siteInfoExists())
            {
                new PharmaceuticalReceipt().receiptSetup();
            }


            // select terminal from dispatcher rather than Window_Loaded
            // to prevent weird combobox behaviour. Select after 5 seconds
            // to allow time for terminal auto-selection.
            var timer = new DispatcherTimer(DispatcherPriority.Normal, Dispatcher)
            {
                Interval = new TimeSpan(0, 0, 5)
            };

            timer.Tick += (s, a) =>
            {
                if (currentTerminal == null)
                {
                    SelectTerminal();
                }
                var dispatcherTimer = s as DispatcherTimer;
                if (dispatcherTimer != null)
                {
                    dispatcherTimer.Stop();
                }
                //NewUpdateItemFields();
                //SyncTerminal(true);
            };
            timer.Start();
        }
        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;
        }
Exemple #4
0
 public ReportPreview(PharmaceuticalReceipt r)
 {
     receipt = r;
     InitializeComponent();
     _reportViewer.Load += ReportViewer_Load;
 }
Exemple #5
0
        private bool sendCancel(string RRN, string provider, decimal transAmount)
        {
            main.hicaps.DisplayStatusWindow(true);

            HicapsConnectControl.HicapsConnectControl.ClaimCancelRequest request
                = new HicapsConnectControl.HicapsConnectControl.ClaimCancelRequest();

            // set provider
            request.ProviderNumberId = Utils.getProviderNumberId(provider);
            if (request.ProviderNumberId == null)
            {
                // inform user that a correct provider is needed
                MessageBox.Show("The selected provider is not valid. Please select another one.");
                return(false);
            }

            request.PmsKey             = Utils.PMSKey;
            request.SoftwareVendorName = Utils.VendorName;

            // set RRN
            request.RrnNumber         = RRN;
            request.TransactionAmount = transAmount;

            request.PrintReceiptOnTerminal = Properties.Settings.Default.PrintReceiptCancelClaim;
            request.ServerUrl = main.currentTerminal;

            // send request
            main.SyncStatus("Sending Claim Cancel Request");
            HicapsConnectControl.HicapsConnectControl.ClaimCancelResponse response
                = main.hicaps.sendClaimCancelRequest(request);
            main.ResetStatus();

            if (response.ResponseCode != "00")
            {
                new ResponseError(response.ResponseCode, response.ResponseText).Show();
            }


            if (Settings.Default.PrintProviderCancelReceiptLocal)
            {
                //Display wait window
                wait.Visibility = Visibility.Visible;
                ForceUIToUpdate();

                var r = new PharmaceuticalReceipt(response, ReceiptFor.Provider, getSelectedResponse());
                //Close wait window
                wait.Visibility = Visibility.Collapsed;

                r.printReport(true);
            }

            // print customer receipt if needed
            if (Settings.Default.PrintCustomerCancelReceiptLocal)
            {
                var r = new PharmaceuticalReceipt(response, ReceiptFor.Customer, getSelectedResponse());
                r.printReport(false);
            }

            main.hicaps.DisplayStatusWindow(false);

            if (response.ResponseCode == "00")
            {
                var claim = main.claimLog.Log.FirstOrDefault(r => r.RrnNumber == RRN);
                main.claimLog.LogCancelledClaim(claim);
                main.claimLog.Log.Remove(claim);
                main.claimLog.SaveLogFile();
            }
            UpdateTransactions();
            return(response.ResponseCode == "00");
        }