private void OnSearch()
        {
            PopupWindow<DishonourReversalReceiptSearchBase> popupWindow;

            IsBusy = true;
            DelegateSearchFilter<DishonourReversalReceiptSearchBase> receiptSearch = new DelegateSearchFilter<DishonourReversalReceiptSearchBase>(DishonourReversalFunctions.SearchDishonourReversalReceipts);            
            popupWindow = new PopupWindow<DishonourReversalReceiptSearchBase>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<DishonourReversalReceiptSearchBase>(receiptSearch, "Search Receipt", (int)batchType, BankAccountID), true);

            Popup.Raise(popupWindow, (popupCallBack) =>
            {
                if (popupCallBack.ReturnValue != null)
                {
                    DishonourReversalReceiptSearchBase receipt = (DishonourReversalReceiptSearchBase)popupCallBack.ReturnValue;                    
                    OriginalReceiptID = receipt.ReceiptID;
                }
            });

            IsBusy = false;
        }
        private void OnSearch()
        {
            IsBusy = true;
            switch (receiptApplyTo)
            {
                case ReceiptApplyTo.Client:
                    PopupWindow<ClientSearch> clientPopup;
                    DelegateSearch<ClientSearch> clientSearch = new DelegateSearch<ClientSearch>(business.ClientFunctions.Search);
                    clientPopup = new PopupWindow<ClientSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<ClientSearch>(clientSearch, "Search Client"), true);

                    Popup.Raise(clientPopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            ClientSearch client = (ClientSearch)popupCallBack.ReturnValue;                        
                            ApplyToObjectID = client.ClientNo;
                            ClientName = client.LegalName;
                            RaisePropertyChanged("ApplyToObjectID");
                        }
                    });
                    break;
                case ReceiptApplyTo.Contract:
                    PopupWindow<ContractSearch> contractPopup;
                    DelegateSearch<ContractSearch> contractSearch;
                    DelegateSearchFilter<ContractSearch> ddccContractSearch;
                    object[] filter;

                    if (batchType == ReceiptBatchType.DirectDebit || batchType == ReceiptBatchType.CreditCard || batchType == ReceiptBatchType.AutoReceipts)
                    {
                        if (batchType == ReceiptBatchType.DirectDebit)
                        {
                            filter = new object[] { (int)SCPaymentTypes.DirectDebit, (int)SCPaymentTypes.DirectDebit50 };
                        }
                        else if (batchType == ReceiptBatchType.CreditCard)
                        {
                            filter = new object[] { (int)SCPaymentTypes.CreditCard };
                        }
                        else
                        {
                            filter = new object[] { (int)SCPaymentTypes.AutoReceipt };
                        }

                        ddccContractSearch = new DelegateSearchFilter<ContractSearch>(DDCCBatchFunctions.ContractSearch);
                        contractPopup = new PopupWindow<ContractSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<ContractSearch>(ddccContractSearch, "Search Contract", filter), true);
                    }
                    else
                    {
                        contractSearch = new DelegateSearch<ContractSearch>(ContractFunctions.Search);
                        contractPopup = new PopupWindow<ContractSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<ContractSearch>(contractSearch, "Search Contract"), true);
                    }

                    Popup.Raise(contractPopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            ContractSearch contract = (ContractSearch)popupCallBack.ReturnValue;                            
                            ApplyToObjectID = contract.ContractID;
                            ClientName = contract.ClientName;
                            RaisePropertyChanged("ApplyToObjectID");
                        }

                        popupCallBack = null;
                    });
                    break;

                case ReceiptApplyTo.Invoice:
                    PopupWindow<InvoiceSearch> invoicePopup;
                    DelegateSearch<InvoiceSearch> invoiceSearch = new DelegateSearch<InvoiceSearch>(business.InvoiceFunctions.Search);
                    invoicePopup = new PopupWindow<InvoiceSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<InvoiceSearch>(invoiceSearch, "Search Invoice"), true);

                    Popup.Raise(invoicePopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            InvoiceSearch invoice = (InvoiceSearch)popupCallBack.ReturnValue;                            
                            ApplyToObjectID = invoice.InvoiceNo;
                            ClientName = invoice.CustomerName;
                            RaisePropertyChanged("ApplyToObjectID");
                        }
                    });
                    break;
                case ReceiptApplyTo.Quote:
                    PopupWindow<QuoteSearch> quotePopup;
                    DelegateSearch<QuoteSearch> quoteSearch = new DelegateSearch<QuoteSearch>(business.QuoteFunctions.Search);
                    quotePopup = new PopupWindow<QuoteSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<QuoteSearch>(quoteSearch, "Search Quote"), true);

                    Popup.Raise(quotePopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            QuoteSearch quote = (QuoteSearch)popupCallBack.ReturnValue;
                            
                            ApplyToObjectID = quote.QuoteNo;
                            ClientName = quote.ClientName;
                            RaisePropertyChanged("ApplyToObjectID");
                        }

                    });
                    break;
            }
            IsBusy = false;
        }
        private void Search()
        {
            IsBusy = true;
            switch (SelectFrom)
            {
                case (int)ReceiptBatchSelectList.Contract:
                    PopupWindow<ContractReceiptSearch> contractPopup;
                    DelegateSearchFilter<ContractReceiptSearch> contractSearch;

                    contractSearch = new DelegateSearchFilter<ContractReceiptSearch>(receipts.ContractFunctions.SearchContractReceipt);
                    contractPopup = new PopupWindow<ContractReceiptSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<ContractReceiptSearch>(contractSearch, "Search Contract", batchType), true);

                    Popup.Raise(contractPopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            ContractReceiptSearch contract = (ContractReceiptSearch)popupCallBack.ReturnValue;                            
                            SelectFromObjectID = contract.ContractID;                           
                        }

                        popupCallBack = null;
                    });
                    break;
                case (int)ReceiptBatchSelectList.Quote:
                    PopupWindow<QuoteReceiptSearch> quotePopup;
                    DelegateSearchFilter<QuoteReceiptSearch> quoteSearch;

                    quoteSearch = new DelegateSearchFilter<QuoteReceiptSearch>(receipts.QuoteFunctions.SearchQuoteReceipt);
                    quotePopup = new PopupWindow<QuoteReceiptSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<QuoteReceiptSearch>(quoteSearch, "Search Quote", batchType), true);

                    Popup.Raise(quotePopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            QuoteReceiptSearch quote = (QuoteReceiptSearch)popupCallBack.ReturnValue;                            
                            SelectFromObjectID = quote.QuoteNo;
                        }

                        popupCallBack = null;
                    });
                    break;
                case (int)ReceiptBatchSelectList.Client:
                    PopupWindow<ClientReceiptSearch> clientPopup;
                    DelegateSearchFilter<ClientReceiptSearch> clientSearch;

                    clientSearch = new DelegateSearchFilter<ClientReceiptSearch>(receipts.ClientFunctions.SearchClientReceipt);
                    clientPopup = new PopupWindow<ClientReceiptSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<ClientReceiptSearch>(clientSearch, "Search Client", batchType), true);

                    Popup.Raise(clientPopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            ClientReceiptSearch client = (ClientReceiptSearch)popupCallBack.ReturnValue;                            
                            SelectFromObjectID = client.ClientNo;
                        }

                        popupCallBack = null;
                    });
                    break;
                case (int)ReceiptBatchSelectList.Batch:
                    PopupWindow<BatchReceiptSearch> batchPopup;
                    DelegateSearchFilter<BatchReceiptSearch> batchSearch;

                    batchSearch = new DelegateSearchFilter<BatchReceiptSearch>(ReceiptBatchFunctions.SearchBatchReceipt);
                    batchPopup = new PopupWindow<BatchReceiptSearch>(ViewAssemblies.ViewCommonAssembly, "Controls.Search", new SearchViewModel<BatchReceiptSearch>(batchSearch, "Search Receipt Batch", batchType), true);

                    Popup.Raise(batchPopup, (popupCallBack) =>
                    {
                        if (popupCallBack.ReturnValue != null)
                        {
                            BatchReceiptSearch batch = (BatchReceiptSearch)popupCallBack.ReturnValue;                            
                            SelectFromObjectID = batch.BatchNo;
                        }

                        popupCallBack = null;
                    });
                    break;
            }

            IsBusy = false;
        }