public ExecuteNewLoanExistCustomer( ProcessTenderController pTender, CashlinxDesktopSession c, TupleType <int, LoadTestInputVO, List <TupleType <int, string, double> > > tInput) : base(NAME) { this.tender = pTender; this.cds = c; this.input = tInput; }
/// <summary> /// Main execution function for SaleFlowExecutor /// </summary> /// <param name="inputData"></param> /// <returns></returns> private object executorFxn(object inputData) { if (inputData == null) { inputData = suspendedState; } SaleFlowState inputState = (SaleFlowState)inputData; switch (inputState) { case SaleFlowState.ItemSearch: if (GlobalDataAccessor.Instance.DesktopSession.ActiveRetail == null) { GlobalDataAccessor.Instance.DesktopSession.Sales.Add(new SaleVO()); GlobalDataAccessor.Instance.DesktopSession.DescribeItemPawnItemIndex = -1; } //ItemSearch itemSearchFrm = new ItemSearch(); if (GlobalDataAccessor.Instance.DesktopSession.HistorySession.HasFormName("ItemSearch")) { GlobalDataAccessor.Instance.DesktopSession.HistorySession.VisibleForm("ItemSearch"); } else { ShowForm itemSearchBlk = CommonAppBlocks.Instance.CreateItemSearchShowBlock(this.parentForm, this.itemSearchFormNavAction); if (!itemSearchBlk.execute()) { throw new ApplicationException("Cannot execute Item Search block"); } } break; case SaleFlowState.DescribeMerchandise: ShowForm describeMerchBlk = CommonAppBlocks.Instance.DescribeMerchandiseBlock(this.parentForm, this.describeMerchFormAction); if (!describeMerchBlk.execute()) { throw new ApplicationException("Cannot execute Describe Merchandise block"); } break; case SaleFlowState.DescribeItem: ShowForm describeItemBlk = CommonAppBlocks.Instance.DescribeItemBlock(this.parentForm, this.describeItemFormAction); if (!describeItemBlk.execute()) { throw new ApplicationException("Cannot execute Describe Item Block"); } break; case SaleFlowState.LookupCustomer: ShowForm lookupCustBlk = CommonAppBlocks.Instance.CreateLookupCustomerShowBlock(this.parentForm, this.lookupCustFormNavAction); if (!lookupCustBlk.execute()) { throw new ApplicationException("Cannot execute LookupCustomer block"); } break; case SaleFlowState.LookupCustomerResults: ShowForm lookupCustResBlk = CommonAppBlocks.Instance.CreateLookupCustomerResultsBlock(this.parentForm, this.lookupCustResultsFormNavAction); if (!lookupCustResBlk.execute()) { throw new ApplicationException("Cannot execute LookupCustomerResults block"); } break; case SaleFlowState.LookupVendorResults: ShowForm lookupVendResBlk = CommonAppBlocks.Instance.CreateLookupVendorResultsBlock(this.parentForm, this.lookupVendResultsFormNavAction); if (!lookupVendResBlk.execute()) { throw new ApplicationException("Cannot execute LookupVendorResults block"); } break; case SaleFlowState.AddCustomer: if (GlobalDataAccessor.Instance.DesktopSession.HistorySession.Trigger.Equals(Commons.TriggerTypes.NEWPAWNLOAN, StringComparison.OrdinalIgnoreCase)) { ShowForm manageCustBlk = CommonAppBlocks.Instance.CreateManagePawnApplicationBlock(this.parentForm, this.managePawnAppFormNavAction); if (!manageCustBlk.execute()) { throw new ApplicationException("Cannot execute Manage Pawn Application block"); } } else { ShowForm createCustBlk = CommonAppBlocks.Instance.CreateCreateCustomerBlock(this.parentForm, this.createCustomerFormNavAction); if (!createCustBlk.execute()) { throw new ApplicationException("Cannot execute CreateCustomer block"); } } break; case SaleFlowState.AddVendor: ShowForm createVendBlk = CommonAppBlocks.Instance.CreateCreateVendorBlock(this.parentForm, this.createVendFormNavAction); if (!createVendBlk.execute()) { throw new ApplicationException("Cannot execute Create Vendor block"); } break; case SaleFlowState.ExistingCustomer: ShowForm existCustBlk = CommonAppBlocks.Instance.CreateExistingCustomerBlock(this.parentForm, this.existCustomerFormNavAction); if (!existCustBlk.execute()) { throw new ApplicationException("Cannot execute ExistingCustomer block"); } break; case SaleFlowState.ManagePawnApplication: ShowForm managePawnAppBlk = CommonAppBlocks.Instance.CreateManagePawnApplicationBlock(this.parentForm, this.managePawnAppFormNavAction); if (!managePawnAppBlk.execute()) { throw new ApplicationException("Cannot execute ManagePawnApplication block"); } break; case SaleFlowState.ViewCustomerInformation: ShowForm viewCustInfoBlk = CommonAppBlocks.Instance.ViewCustomerInfoShowBlock(this.parentForm, this.viewCustInfoFormNavAction); if (!viewCustInfoBlk.execute()) { throw new ApplicationException("Cannot execute View Customer Information block"); } break; case SaleFlowState.ViewReadOnlyCustomerInformation: ShowForm viewCustInfoReadOnlyBlk = CommonAppBlocks.Instance.ViewCustomerInfoShowBlock(this.parentForm, this.viewCustInfoFormNavAction); if (!viewCustInfoReadOnlyBlk.execute()) { throw new ApplicationException("Cannot execute View customer information Read Only block"); } ((ViewCustomerInformation)viewCustInfoReadOnlyBlk.ClassForm).ShowReadOnly = true; break; case SaleFlowState.TenderIn: if (this.tenderInComplete) { GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); if (GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.LoanStatus == ProductStatus.LAY) { GlobalDataAccessor.Instance.DesktopSession.showProcessTender(ProcessTenderProcedures.ProcessTenderMode.LAYAWAY); } else { ProcessTenderController pCntrl = ProcessTenderController.Instance; //Perform the process tender process bool success = pCntrl.ExecuteProcessTender(ProcessTenderProcedures.ProcessTenderMode.RETAILSALE); if (success) { ReceiptConfirmation rcptConf = new ReceiptConfirmation(); rcptConf.ShowDialog(); } else { goto case SaleFlowState.CancelFlow; } } goto case SaleFlowState.CancelFlow; } else { if (GlobalDataAccessor.Instance.DesktopSession.HistorySession.Lookup("TenderIn")) { GlobalDataAccessor.Instance.DesktopSession.HistorySession.VisibleForm("TenderIn"); } else { ShowForm tenderInBlk = CommonAppBlocks.Instance.TenderInShowBlock(this.parentForm, this.TenderInFormAction); if (!tenderInBlk.execute()) { throw new ApplicationException("Cannot execute Tender In block"); } } } break; case SaleFlowState.CancelFlow: GlobalDataAccessor.Instance.DesktopSession.ClearCustomerList(); GlobalDataAccessor.Instance.DesktopSession.ClearLoggedInUser(); GlobalDataAccessor.Instance.DesktopSession.ClearSessionData(); if (this.endStateNotifier != null) { this.endStateNotifier.execute(); } break; case SaleFlowState.ExitFlow: break; default: throw new ApplicationException("Invalid sale flow state"); } return(true); }
private void customButtonVoid_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(comboBoxReason.Text)) { MessageBox.Show("You must Select a void Reason"); comboBoxReason.Focus(); return; } ProcessTenderProcedures.ProcessTenderMode mode; List <PurchaseVO> purchaseList = new List <PurchaseVO>(); purchaseList.Add(currentPurchase); bool transactionStarted = false; bool skipped; try { if ((voidBuyFlow && !voidVendorBuy) || voidReturnFlow) { if (currentPurchase.Receipts != null) { string rcptId; if (voidReturnFlow) { rcptId = (from receipt in currentPurchase.Receipts where (receipt.Event == ReceiptEventTypes.RET.ToString() && receipt.RefNumber == currentPurchase.TicketNumber.ToString()) select receipt).First().ReceiptDetailNumber; } else { rcptId = (from receipt in currentPurchase.Receipts where (receipt.Event == ReceiptEventTypes.PUR.ToString() && receipt.RefNumber == currentPurchase.TicketNumber.ToString()) select receipt).First().ReceiptDetailNumber; } VoidLoanForm.LoanVoidDetails lvd = new VoidLoanForm.LoanVoidDetails(); lvd.TickNum = labelTransactionNo.Text; lvd.StoreNum = GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber; lvd.OpRef = labelTransactionNo.Text; lvd.OpCode = voidReturnFlow ? "Return" : "Purchase"; lvd.OpCd = voidReturnFlow ? ReceiptEventTypes.VRET.ToString() : ReceiptEventTypes.VPR.ToString(); lvd.Amount = Utilities.GetDecimalValue(currentPurchase.Amount, 0.0M); lvd.HoldType = ""; lvd.RecId = Utilities.GetLongValue(rcptId); lvd.PfiEligDate = Utilities.GetDateTimeValue(currentPurchase.PfiEligible, DateTime.MaxValue); lvd.CreatedBy = Utilities.GetStringValue(currentPurchase.CreatedBy, string.Empty); //BZ # 512 lvd.VoidReason = Utilities.GetStringValue(comboBoxReason.Text, string.Empty); lvd.VoidComment = Utilities.GetStringValue(customTextBoxComment.Text, string.Empty); //BZ # 512 - end string errorCode; string errorText; var retValue = VoidProcedures.PerformVoid(lvd, out errorCode, out errorText); if (retValue) { MessageBox.Show(voidReturnFlow ? "Void purchase return completed successfully" : "Void purchase completed successfully"); } else { DialogResult dgr; dgr = MessageBox.Show("Void transaction failed. Do you want to retry?", "Void Error", MessageBoxButtons.OKCancel); if (dgr == DialogResult.OK) { return; } } GlobalDataAccessor.Instance.DesktopSession.ClearCustomerList(); GlobalDataAccessor.Instance.DesktopSession.ClearSessionData(); Close(); } else { MessageBox.Show("Error in void transaction processing"); FileLogger.Instance.logMessage(LogLevel.ERROR, this, "No receipts found for purchase " + currentPurchase.TicketNumber + " to void."); Close(); } } if (voidVendorBuy) { string errorCode; string errorText; int receiptNumber; mode = ProcessTenderProcedures.ProcessTenderMode.VOIDBUY; GlobalDataAccessor.Instance.beginTransactionBlock(); transactionStarted = true; bool retValue = VoidProcedures.VoidVendorPurchase(GlobalDataAccessor.Instance.OracleDA, Utilities.GetIntegerValue(labelTransactionNo.Text, 0), GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber, ShopDateTime.Instance.ShopDate.ToShortDateString(), ShopDateTime.Instance.ShopDate.ToShortDateString() + " " + ShopDateTime.Instance.ShopTime.ToString(), comboBoxReason.SelectedItem.ToString(), customTextBoxComment.Text, GlobalDataAccessor.Instance.DesktopSession.LoggedInUserSecurityProfile.UserName, out receiptNumber, out errorCode, out errorText); //here add receipt printing code //here call process tender to print void receipt // List <string> refDate = new List <string>(); List <string> refNumber = new List <string>(); List <string> refType = new List <string>(); List <string> refEvent = new List <string>(); List <string> refAmount = new List <string>(); List <string> refStore = new List <string>(); List <string> refTime = new List <string>(); refEvent.Add(ReceiptEventTypes.VPR.ToString()); refStore.Add(GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber); refType.Add("4"); refAmount.Add(currentPurchase.Amount.ToString()); refTime.Add(ShopDateTime.Instance.ShopTransactionTime); refNumber.Add(GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber.ToString()); ReceiptDetailsVO rdVo = new ReceiptDetailsVO(); rdVo.ReceiptDate = ShopDateTime.Instance.ShopDate; rdVo.RefNumbers = refNumber; rdVo.ReceiptNumber = receiptNumber.ToString(); rdVo.RefEvents = refEvent; rdVo.RefAmounts = refAmount; rdVo.RefStores = refStore; rdVo.RefTypes = refType; //NOTE: Only use process tender controller instance, do not allocate a new one ProcessTenderController pct = ProcessTenderController.Instance; pct.generatePurchaseReceipt(mode, GlobalDataAccessor.Instance.DesktopSession.UserName.ToLowerInvariant(), GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer, purchaseList, GlobalDataAccessor.Instance.DesktopSession.ActiveVendor != null ? GlobalDataAccessor.Instance.DesktopSession.ActiveVendor.Name : "", rdVo); if (!retValue) { GlobalDataAccessor.Instance.endTransactionBlock(EndTransactionType.ROLLBACK); transactionStarted = false; MessageBox.Show("Failed to void vendor purchase " + errorText); Close(); } GlobalDataAccessor.Instance.endTransactionBlock(EndTransactionType.COMMIT); transactionStarted = false; MessageBox.Show("Void vendor purchase completed successfully"); GlobalDataAccessor.Instance.DesktopSession.ClearSessionData(); this.Close(); } if (voidSaleFlow || voidSaleRefundFlow) { if (currentSale.Receipts != null) { string rcptId; if (voidSaleFlow) { rcptId = (from receipt in currentSale.Receipts where (receipt.Event == ReceiptEventTypes.SALE.ToString() && receipt.RefNumber == currentSale.TicketNumber.ToString()) select receipt).First().ReceiptDetailNumber; } else { rcptId = (from receipt in currentSale.Receipts where (receipt.Event == ReceiptEventTypes.REF.ToString() && receipt.RefNumber == currentSale.TicketNumber.ToString()) select receipt).First().ReceiptDetailNumber; } string errorCode; string errorText; int receiptNumber; GlobalDataAccessor.Instance.beginTransactionBlock(); transactionStarted = true; bool retValue; // = new ProcessTenderController.ProcessTenderMode(); if (voidSaleFlow) { mode = ProcessTenderProcedures.ProcessTenderMode.RETAILVOID; retValue = VoidProcedures.VoidSale(GlobalDataAccessor.Instance.OracleDA, Utilities.GetIntegerValue(labelTransactionNo.Text, 0), GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber, GlobalDataAccessor.Instance.CurrentSiteId.TerminalId, GlobalDataAccessor.Instance.DesktopSession.CashDrawerId, comboBoxReason.SelectedItem.ToString(), customTextBoxComment.Text, Utilities.GetIntegerValue(labelTransactionNo.Text, 0), currentSale.TotalSaleAmount.ToString(), 1, Utilities.GetIntegerValue(rcptId), ShopDateTime.Instance.ShopDate.ToShortDateString(), ShopDateTime.Instance.ShopTransactionTime.ToString(), GlobalDataAccessor.Instance.DesktopSession.LoggedInUserSecurityProfile.UserName, out receiptNumber, out errorCode, out errorText); } else { mode = ProcessTenderProcedures.ProcessTenderMode.RETAILVOIDREFUND; retValue = VoidProcedures.VoidSaleRefund(GlobalDataAccessor.Instance.OracleDA, Utilities.GetIntegerValue(labelTransactionNo.Text, 0), GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber, GlobalDataAccessor.Instance.CurrentSiteId.TerminalId, GlobalDataAccessor.Instance.DesktopSession.CashDrawerId, comboBoxReason.SelectedItem.ToString(), customTextBoxComment.Text, Utilities.GetIntegerValue(labelTransactionNo.Text, 0), currentSale.Amount.ToString(), 1, Utilities.GetIntegerValue(rcptId), ShopDateTime.Instance.ShopDate.ToShortDateString(), ShopDateTime.Instance.ShopTransactionTime.ToString(), GlobalDataAccessor.Instance.DesktopSession.LoggedInUserSecurityProfile.UserName, out receiptNumber, out errorCode, out errorText); } if (retValue) { GlobalDataAccessor.Instance.DesktopSession.endTransactionBlock(EndTransactionType.COMMIT); transactionStarted = false; if (currentSale.TenderDataDetails != null) { ProcessPaidTenderData(currentSale.TenderDataDetails); } //here call process tender to print void receipt // var refDate = new List <string>(); var refNumber = new List <string>(); var refType = new List <string>(); var refEvent = new List <string>(); var refAmount = new List <string>(); var refStore = new List <string>(); var refTime = new List <string>(); refEvent.Add(ReceiptEventTypes.VRET.ToString()); refStore.Add(GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber); refType.Add("4"); refTime.Add(ShopDateTime.Instance.ShopTransactionTime); refNumber.Add(GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.TicketNumber.ToString()); ReceiptDetailsVO rdVo = new ReceiptDetailsVO(); rdVo.ReceiptDate = ShopDateTime.Instance.ShopDate; rdVo.RefNumbers = refNumber; rdVo.ReceiptNumber = receiptNumber.ToString(); rdVo.RefEvents = refEvent; rdVo.RefStores = refStore; rdVo.RefTypes = refType; //NOTE: Only use process tender controller instance, do not allocate a new one ProcessTenderController pct = ProcessTenderController.Instance; pct.GenerateSaleReceipt(mode, GlobalDataAccessor.Instance.DesktopSession.UserName.ToLowerInvariant(), GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer, GlobalDataAccessor.Instance.DesktopSession.ActiveRetail, GlobalDataAccessor.Instance.DesktopSession.ActiveVendor != null ? GlobalDataAccessor.Instance.DesktopSession.ActiveVendor.Name : "", rdVo); MessageBox.Show(voidSaleFlow ? "Void Sale completed successfully" : "Void Sale Refund completed successfully"); GlobalDataAccessor.Instance.DesktopSession.ClearCustomerList(); GlobalDataAccessor.Instance.DesktopSession.ClearSessionData(); this.Close(); } else { GlobalDataAccessor.Instance.DesktopSession.endTransactionBlock(EndTransactionType.ROLLBACK); transactionStarted = false; DialogResult dgr; dgr = MessageBox.Show("Void transaction failed. Do you want to retry?", "Void Error", MessageBoxButtons.OKCancel); if (dgr == DialogResult.OK) { return; } Close(); } } else { MessageBox.Show("Error in void transaction processing"); FileLogger.Instance.logMessage(LogLevel.ERROR, this, "No receipts found for sale " + currentSale.TicketNumber + " to void."); Close(); } } } catch (Exception ex) { if (transactionStarted) { GlobalDataAccessor.Instance.DesktopSession.endTransactionBlock(EndTransactionType.ROLLBACK); transactionStarted = false; } if (FileLogger.Instance.IsLogError) { FileLogger.Instance.logMessage(LogLevel.ERROR, this, "Error when voiding " + ex.Message); } } }
private void customButtonVoid_Click(object sender, EventArgs e) { if (currentLayaway.Receipts == null || currentLayaway.Receipts.Count == 0 || voidRow == null) { return; } try { bool retValue = false; int receiptNumber = 0; maxVoidPassed = false; storeCreditUsed = false; string receiptID = string.Empty; switch (mode) { case ProcessTenderProcedures.ProcessTenderMode.LAYAWAYVOID: VoidLayaway(out retValue, out receiptNumber, out receiptID); break; case ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENTVOID: VoidLayawayPayment(out retValue, out receiptNumber, out receiptID); break; case ProcessTenderProcedures.ProcessTenderMode.LAYFORFVOID: VoidLayawayForf(out retValue, out receiptNumber, out receiptID); break; } if (!retValue && maxVoidPassed) { return; } if (!retValue && storeCreditUsed) { return; } if (retValue) { MessageBox.Show("Void Layaway completed successfully"); } else { DialogResult dgr; dgr = MessageBox.Show("Void transaction failed. Do you want to retry?", "Void Error", MessageBoxButtons.OKCancel); if (dgr == DialogResult.OK) { return; } Close(); } if (mode != ProcessTenderProcedures.ProcessTenderMode.LAYFORFVOID) { //code here to print void Layaway Receipt List <string> refNumber = new List <string>(); List <string> refType = new List <string>(); List <string> refEvent = new List <string>(); List <string> refStore = new List <string>(); List <string> refTime = new List <string>(); if (mode == ProcessTenderProcedures.ProcessTenderMode.LAYAWAYVOID) { refEvent.Add(ReceiptEventTypes.LAY.ToString()); } else if (mode == ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENTVOID || mode == ProcessTenderProcedures.ProcessTenderMode.LAYFORFVOID) { refEvent.Add(ReceiptEventTypes.LAYPMT.ToString()); } refStore.Add(GlobalDataAccessor.Instance.CurrentSiteId.StoreNumber); refType.Add("4"); refTime.Add(ShopDateTime.Instance.ShopTransactionTime); refNumber.Add(currentLayaway.TicketNumber.ToString()); ReceiptDetailsVO rdVo = new ReceiptDetailsVO(); rdVo.ReceiptDate = ShopDateTime.Instance.ShopDate; rdVo.RefNumbers = refNumber; rdVo.ReceiptNumber = receiptNumber.ToString(); rdVo.RefEvents = refEvent; rdVo.RefStores = refStore; rdVo.RefTypes = refType; if (currentLayaway.TenderDataDetails != null) { ProcessPaidTenderData(currentLayaway.TenderDataDetails, receiptID); } //NOTE: Only use ProcessTenderController.Instance!! ProcessTenderController ptCntrl = ProcessTenderController.Instance; ptCntrl.GenerateLayawayPaymentReceipt(mode, GlobalDataAccessor.Instance.DesktopSession.UserName.ToLowerInvariant(), GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer, currentLayaway, GlobalDataAccessor.Instance.DesktopSession.ActiveVendor != null ? GlobalDataAccessor.Instance.DesktopSession.ActiveVendor.Name : "", rdVo); } Close(); } catch (Exception ex) { FileLogger.Instance.logMessage(LogLevel.ERROR, this, "Error in void layaway activity " + ex.Message); MessageBox.Show("Error occurred in void layaway activity processing."); Close(); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessTender_Load(object sender, EventArgs e) { ProcessTenderController pCntrl = ProcessTenderController.Instance; //Perform the process tender process this.loanTicketGroup.Visible = true; this.success = pCntrl.ExecuteProcessTender(procTendMode); this.Update(); switch (this.procTendMode) { case ProcessTenderProcedures.ProcessTenderMode.NEWLOAN: if (!this.success || CollectionUtilities.isEmpty(pCntrl.TicketFiles)) { MessageBox.Show( "New loan process tender failed. \n" + "Please call Shop System Support. \n" + "The loan number is: " + ProcessTenderController.Instance.TicketNumber, "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { this.okButton.Enabled = true; //Update the labels this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePawnLoan.Amount)); //Update the list box for (int cnt = 1; cnt <= ProcessTenderController.Instance.TicketFiles.Count; ++cnt) { string s = ProcessTenderController.Instance.TicketFiles[cnt - 1]; if (string.IsNullOrEmpty(s)) { continue; } string ticketDesc = "Loan #" + ProcessTenderController.Instance.TicketNumber + "[" + cnt + "]"; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); } this.loanDocListView.Update(); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.SERVICELOAN: if (!this.success) { MessageBox.Show( "Servicing loan process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { if (GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount > 0) { this.initialProcessTenderLabel.Text = "Received From Customer:"; } else { this.initialProcessTenderLabel.Text = "Cash to Customer:"; } this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount)); for (int cnt = 0; cnt < ProcessTenderController.Instance.ProcessedTickets.Count; cnt++) { var ticketData = ProcessTenderController.Instance.ProcessedTickets[cnt]; string s = ticketData.Right.ToString(); if (string.IsNullOrEmpty(s)) { continue; } string ticketDesc = "Loan #" + ticketData.Left.ToString() + "[" + cnt + 1 + "]"; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); } this.loanDocListView.Update(); this.Update(); //this.loanTicketGroup.Visible = false; //this.loanDocListView.Visible = false; //this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.VOIDLOAN: //Shouldn't be here for void loan break; case ProcessTenderProcedures.ProcessTenderMode.PURCHASE: if (!this.success) { MessageBox.Show( "Purchase process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Amount)); string ticketDesc = "Purchase #" + GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.VENDORPURCHASE: if (!this.success) { MessageBox.Show( "Purchase process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveVendor.Name, "", String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Amount)); string ticketDesc = "Vendor Purchase #" + GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.RETURNBUY: if (!this.success) { MessageBox.Show( "Purchase process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { initialProcessTenderLabel.Text = "Received From Customer:"; this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", (from item in GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Items select item.ItemAmount).Sum())); string ticketDesc = "Return #" + GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.RETURNSALE: if (!this.success) { MessageBox.Show( "Refund process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { this.okButton.Enabled = true; this.setProcessTenderDetails( string.IsNullOrEmpty(GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.CustomerNumber) ? GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.EntityName : GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.CustomerNumber == "0" ? GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.CustomerName : GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.EntityName, "", String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.TotalSaleAmount)); string ticketDesc = "Refund Ticket #" + GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.TicketNumber; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.LAYAWAY: if (!this.success) { MessageBox.Show( "Layaway process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { initialProcessTenderLabel.Text = "Received From Customer:"; this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActiveLayaway.TotalSaleAmount)); string ticketDesc = "Layaway Ticket #" + GlobalDataAccessor.Instance.DesktopSession.ActiveLayaway.TicketNumber; this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0)); this.Update(); } break; case ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENT: if (!this.success) { MessageBox.Show( "Layaway payment process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { initialProcessTenderLabel.Text = "Received From Customer:"; this.okButton.Enabled = true; this.setProcessTenderDetails( GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName, GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName, String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount)); this.loanTicketGroup.Visible = false; this.Update(); ReceiptConfirmation rcptConf = new ReceiptConfirmation(); rcptConf.ShowDialog(); this.Close(); } break; case ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENTREF: if (!this.success) { MessageBox.Show( "Layaway payment refund process failed. \n" + "Please call Shop System Support. \n", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan(); NewDesktop nDesk = (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop(); nDesk.handleEndFlow(null); } else { decimal totalAmt = GlobalDataAccessor.Instance.DesktopSession.TenderAmounts.Sum(s => Utilities.GetDecimalValue(s, 0)); this.okButton.Enabled = true; this.setProcessTenderDetails( CashlinxDesktopSession.Instance.ActiveCustomer.FirstName, CashlinxDesktopSession.Instance.ActiveCustomer.LastName, String.Format("{0:C}", totalAmt)); this.loanTicketGroup.Visible = false; this.Update(); DisbursementConfirmation rcptConf = new DisbursementConfirmation(); rcptConf.ShowDialog(); this.Close(); } break; default: throw new ArgumentOutOfRangeException(this.procTendMode.ToString()); } }