Esempio n. 1
0
void EldritchGame::Tick()
{
    XTRACE_FUNCTION;

    // This stuff is done in a tick instead of being event-driven,
    // because it needs to happen before the world tick.

    if( m_GoToLevelOnNextTick )
    {
        GoToLevel();
    }
}
Esempio n. 2
0
//----------------------------------------------------------------------------
//!	\brief	handle event when Host connection is done 
//----------------------------------------------------------------------------
void CReturnDlg::Done()
{
	AfterHost();

	if (m_TRREC.CardType == CARD_DEBIT)
	{
		if (m_TRREC.EntryMode == ENTRY_MODE_SWIPED)
			GoToLevel(DEBITMERCHANTCOPY);
		else if (m_TRREC.EntryMode == ENTRY_MODE_CHIP)
			GoToLevel(CHIP_DEBITMERCHANTCOPY);

	}
	else if (m_TRREC.CardType == CARD_CREDIT)
	{
		if (m_TRREC.EntryMode == ENTRY_MODE_SWIPED ||
			  m_TRREC.EntryMode == ENTRY_MODE_MANUAL ||
			  m_TRREC.EntryMode == ENTRY_MODE_CTLS)
		{			  
			GoToLevel(CREDITMERCHANTCOPY);
		}
		else if(m_TRREC.EntryMode == ENTRY_MODE_CHIP)
			GoToLevel(CHIP_DEBITMERCHANTCOPY);
	}
}
Esempio n. 3
0
/*virtual*/ void EldritchGame::HandleEvent( const WBEvent& Event )
{
    XTRACE_FUNCTION;

    STATIC_HASHED_STRING( ReturnToHub );
    STATIC_HASHED_STRING( GoToNextLevel );
    STATIC_HASHED_STRING( GoToPrevLevel );
    STATIC_HASHED_STRING( GoToLevel );
    STATIC_HASHED_STRING( Checkpoint );
    STATIC_HASHED_STRING( TweetRIP );
    STATIC_HASHED_STRING( PlayMusic );
    STATIC_HASHED_STRING( StopMusic );
    STATIC_HASHED_STRING( LaunchWebSite );
    STATIC_HASHED_STRING( GoToLevelImmediate );

    const HashedString EventName = Event.GetEventName();
    if( EventName == sReturnToHub )
    {
        STATIC_HASHED_STRING( Restart );
        const bool Restart = Event.GetBool( sRestart );

        STATIC_HASHED_STRING( FlushHub );
        const bool FlushHub = Event.GetBool( sFlushHub );

        RequestReturnToHub( Restart, FlushHub );
    }
    else if( EventName == sGoToNextLevel )
    {
        RequestGoToNextLevel();
    }
    else if( EventName == sGoToPrevLevel )
    {
        RequestGoToPrevLevel();
    }
    else if( EventName == sGoToLevel )
    {
        STATIC_HASHED_STRING( Level );
        const SimpleString Level = Event.GetString( sLevel );

        STATIC_HASHED_STRING( WorldDef );
        const HashedString WorldDef = Event.GetHash( sWorldDef );

        RequestGoToLevel( Level, WorldDef, true );
    }
    else if( EventName == sCheckpoint )
    {
        Checkpoint();
    }
    else if( EventName == sTweetRIP )
    {
        LaunchRIPTweet();
    }
    else if( EventName == sLaunchWebSite )
    {
        LaunchWebSite();
    }
    else if( EventName == sPlayMusic )
    {
        STATIC_HASHED_STRING( Music );
        const SimpleString Music = Event.GetString( sMusic );

        m_Music->PlayMusic( ( Music == "" ) ? m_CurrentMusic : Music );
    }
    else if( EventName == sStopMusic )
    {
        m_Music->StopMusic();
    }
    else if( EventName == sGoToLevelImmediate )
    {
        // This should only be called after we've queued a go-to.
        ASSERT( m_GoToLevelOnNextTick );
        if( m_GoToLevelOnNextTick )
        {
            GoToLevel();
        }

        // HACK: Tick world once to pump the event queue. Fixes title screen bugs. (Hack because this assumes we only ever use this when returning to title screen.)
        EldritchFramework* const pFramework = EldritchFramework::GetInstance();
        EldritchWorld* const pWorld = pFramework->GetWorld();
        pWorld->Tick( 0.0f );
    }
}
Esempio n. 4
0
//----------------------------------------------------------------------------
//!	\brief	handle OK key press function for any GUI's, 
//----------------------------------------------------------------------------
void CReturnDlg::OnOK()
{
	Beep1();
	CString str;
	switch(m_iLevel)
	{
	case PASSWORD_INPUT: //Password Input
		if (m_strPassword.GetLength() == 0)
		{
			Beep();
			return;
		}
		if (!CheckPassword())
		{
			m_IncorrectTimes++;
			if (m_IncorrectTimes >= 5)
			{
				CDataFile::Save(L"CLERK PW", L"On");
				CDialog::OnCancel();
			}
			else
			{
				Beep();
				m_strPassword = L"";
				m_strMsg2.SetCaption(L"");
			}
		    return;
		}
		break;
	case AMOUNT_INPUT:
		str = m_strMsg2.m_szCaption;
		str.Remove('$');
		str.Remove(' ');
		str.Remove('.');
		str.Remove(', ');
		str.TrimLeft('0');
		if (str.GetLength() == 0)
		{
			Beep();
			return;
		}
		PutParam(m_TRREC.Amount, str);
		m_strAmount = m_strMsg2.m_szCaption;
		break;
	case CLERK_INPUT:
		str = m_strMsg2.m_szCaption;
		PutParam(m_TRREC.ClerkID, str);
		break;
	case RECEIP_TINPUT:
		str = m_strMsg2.m_szCaption;
		PutParam(m_TRREC.ReceiptNo, str);
		break;
	case ENTERCARD_INPUT:
		if (!m_KeyEntry)
		{
			Beep();
			return;
		}
		KillTimer(1);
		str = m_strMsg2.m_szCaption;
		if (str.GetLength() < 10 || str.GetLength() > 19)
		{
			Beep();
			return;
		}
		PutParam(m_TRREC.Account, str);
		ProcessManualCard(m_TRREC.Account);
		m_iLevel = MANUALENTRYY-1;
		break;
	case DEBITCARDENTRY:
		KillTimer(1);
		break;
	case DEBITCASHBACK: //CASHBACK
		m_strCashback = m_strMsg2.m_szCaption;
		break;
	case DEBITSURCHARGEFEE: //surcharge fee
		break;
	case DEBITTIPSELECT: //TipSelect
		break;
	case DEBITTOTALCOMFIRM: // TotalComfirm
		break;
//	case DEBITSELECTACCOUNT: // SelectAccount
//		break;
	case DEBITONLINEPIN: //OnlinePin
		break;
	case DEBITMERCHANTCOPY: // for merchant copy of the receipt
		return;
	case DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		Print(2);
		break;
	case DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
//		KillTimer(1);
		return;
// == == == == == == == == == == == == == = EMV Chip Card Debit Sale :C chip page 122 == == == == == == == == == == == == == = 
	case CHIPENTRYY:
		KillTimer(1);
		break;
	case SELECT_LANGUAGE: //select language
	case SELECT_APPLICATIION: //select application
	case APPLICATION_CONFIRM: //select comfirm
		Beep();
		return;
/*	case CHIP_DEBITCASHBACK: //CASHBACK
		m_strCashback = m_strMsg2.m_szCaption;
		break;
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
		break;
	case CHIP_DEBITTIPSELECT: //TipSelect
		break;
	case CHIP_DEBITTOTALCOMFIRM: // TotalComfirm
		break;
//	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
//		break;
*/	case CHIP_DEBITENTERPIN: //EnterPin
		break;
	case CHIP_PASSTOCLERK: //pass to clerk
		KillTimer(1);
		GoToLevel(DOTRANSACTION);
		return;
	case CHIP_DEBITMERCHANTCOPY: // for merchant copy of the receipt
		return;
	case CHIP_DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		Print(2);
		break;
	case CHIP_DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
//		KillTimer(1);
		return;
// == == == == == == == == == == == == == = Credit Card Sale :C Swiped page 75 == == == == == == == == == == == == == == == == == = 
	case CREDITSWIPEENTRYY: //Fraud Check
		str = m_strMsg2.m_szCaption;
		GoToLevel(DOTRANSACTION);
		return;
//		PutParam(m_TRREC.FraudNo, str);  //Fix me later
//		break;
	case CREDITSWIPETOCUSTOMER:
		KillTimer(1);
		break;
	case CREDITSWIPETIPSELECT: //TipSelect
		break;
	case CREDITSWIPETOTALCOMFIRM: // TotalComfirm
		break;
	case CREDITSWIPETOCLERK:   //Pass to clerk
		KillTimer(1);
		GoToLevel(DOTRANSACTION);
		return;
	case CREDITMERCHANTCOPY: // for merchant copy of the receipt
		return;
	case CREDITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		Print(2);
		break;
	case CREDITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
//		KillTimer(1);
		return;
// == == == == == == == == == == == = /Manual Entry == == == == == == == == == == == == == == == == == == == == == == = 
	case MANUALENTRYY: //Fraud Check
		str = m_strMsg2.m_szCaption;
		if (str.GetLength() != SZ_EXPIRY_DATE)
		{
			Beep();
			return;
		}
		str = m_strMsg2.m_szCaption.Mid(2,2) + m_strMsg2.m_szCaption.Mid(0,2) ;
		PutParam(m_TRREC.ExpDate, str);
		break;
	case MANUAL_IMPRINT_CARD:
		break;
	case MANUAL_SWIPETOCUSTOMER:
		KillTimer(1);
		break;
	case MANUAL_SWIPETIPSELECT: //TipSelect
		break;
	case MANUAL_SWIPETOTALCOMFIRM: // TotalComfirm
		break;
	case MANUAL_SWIPETOCLERK:   //Pass to clerk
		KillTimer(1);
		GoToLevel(DOTRANSACTION);
		return;

// == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = 
	case CANCELENTRY: 
		KillTimer(1);
		break;
	case CANCELTOCLERK:
		KillTimer(1);
		CDialog::OnCancel();
		return;
	case ERRORENTRY:
		KillTimer(1);
		if ( m_TRREC.bEmvTransaction)
		{
			GoToLevel(EMV_REMOVE_CARD);
		}
		else
			CDialog::OnCancel();
		return;
	case ERRORENTRY1:
		KillTimer(1);
		GoToLevel(m_iNextLevel);
		return;

// == == == == == == == Display Window == == == == == 
	case DISPLAY_WINDOW:
		if (CDisplay::GetMask() & MASK_OK)
			CDisplay::SetKeyReturn(KEY_ENTER);
		return;
	case EMV_SELECT_LANGUAGE: //EMV Select language
	case EMV_CONFIRM_AMOUNT: //EMV confirm amount
	case EMV_SELECT_ACCOUNT: //EMV select account
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(L"Please Wait...", L"Do not remove", L"Card!");
		m_iLevel = EMV_WAIT;
		SetKeyReturn(KEY_ENTER);
		return;
	case EMV_PASS_COUSTOMER: //pass to customer
		SetKeyReturn(KEY_ENTER);
		return;
	case CHIP_DEBITCASHBACK: //CASHBACK
		m_strCashback = m_strMsg2.m_szCaption;
		break;
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
	case CHIP_DEBITTIPSELECT: //TipSelect
	case CHIP_DEBITTOTALCOMFIRM: // TotalComfirm
		break;
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		Beep();
		return;
	default:
//		CDialog::OnOK();
		return;
	}
	GoNext();
	SetFocus();
}
Esempio n. 5
0
void CReturnDlg::OnCancel()
{
	Beep1();
	switch(m_iLevel)
	{
	case PASSWORD_INPUT: //Password Input
	case AMOUNT_INPUT: //Amout Input
	case CLERK_INPUT:  //Clerk ID input
	case RECEIP_TINPUT:  //Receipt input
		GoToLevel(CANCELENTRY);
		break;
	case ENTERCARD_INPUT:  //Card enter and manual Entry
		KillTimer(1);
		CloseDevice();
		GoToLevel(CANCELENTRY);
		break;
		
// debit card 
	case DEBITCARDENTRY:
		break;
	case DEBITCASHBACK: //CASHBACK
		GoToLevel(CANCELENTRY);
		break;
	case DEBITSURCHARGEFEE: //surcharge fee
		GoToLevel(CANCELENTRY);
		break;
	case DEBITTIPSELECT: //TipSelect
		break;
	case DEBITTOTALCOMFIRM: // TotalComfirm
		GoToLevel(CANCELENTRY);
		break;
	case DEBITSELECTACCOUNT: // SelectAccount
		GoToLevel(CANCELENTRY);
		break;
	case DEBITONLINEPIN: //OnlinePin
		break;
	case DEBITMERCHANTCOPY: // for merchant copy of the receipt
		break;
	case DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		CDialog::OnCancel();
		break;
	case DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		break;
	case DEBITEND: // ending...
		break;
// == == == == == == == == == == == == == = EMV Chip Card Debit Sale :C chip page 122 == == == == == == == == == == == == == = 
	case CHIPENTRYY:
		break;
	case SELECT_LANGUAGE: //select language
	case SELECT_APPLICATIION: //select application
	case APPLICATION_CONFIRM: //select comfirm
		GoToLevel(CANCELENTRY);
		break;
/*	case CHIP_DEBITCASHBACK: //CASHBACK
		GoToLevel(CANCELENTRY);
		break;
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
		GoToLevel(CANCELENTRY);
		break;
	case CHIP_DEBITTIPSELECT: //TipSelect
		break;
	case CHIP_DEBITTOTALCOMFIRM: // TotalComfirm
		GoToLevel(CANCELENTRY);
		break;
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		GoToLevel(CANCELENTRY);
		break;
*/	case CHIP_DEBITENTERPIN: //EnterPin
		break;
	case CHIP_PASSTOCLERK: //pass to clerk
		break;
	case CHIP_DEBITMERCHANTCOPY: // for merchant copy of the receipt
		break;
	case CHIP_DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		GoToLevel(CHIP_DEBITEND);
		break;
	case CHIP_DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		break;
	case CHIP_DEBITEND: // ending...
		break;
// == == == == == == == == == == == == == = Credit Card Sale :C Swiped page 75 == == == == == == == == == == == == == == == == == = 
	case CREDITSWIPEENTRYY: //?<Fraud Check
		GoToLevel(CANCELENTRY);
		break;
	case CREDITSWIPETOCUSTOMER:
		GoToLevel(CANCELENTRY);
		break;
	case CREDITSWIPETIPSELECT: //TipSelect
		break;
	case CREDITSWIPETOTALCOMFIRM: // TotalComfirm
		GoToLevel(CANCELENTRY);
		break;
	case CREDITSWIPETOCLERK:   //Pass to clerk
		GoToLevel(CANCELENTRY);
		break;
	case CREDITMERCHANTCOPY: // for merchant copy of the receipt
		break;
	case CREDITCUSTOMERCOPY: // for Customer copy of the receipt
		KillTimer(1);
		CDialog::OnCancel();
		break;
	case CREDITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		break;
	case CREDITEND: // ending...
		break;

// == == == == == == == == == == == = /Manual Entry == == == == == == == == == == == == == == == == == == == == == == = 
	case MANUALENTRYY: //?<Fraud Check
		GoToLevel(CANCELENTRY);
		break;
	case MANUAL_IMPRINT_CARD:
	case MANUAL_SWIPETOCUSTOMER:
		GoToLevel(CANCELENTRY);
		break;
	case MANUAL_SWIPETIPSELECT: //TipSelect
		break;
	case MANUAL_SWIPETOTALCOMFIRM: // TotalComfirm
		GoToLevel(CANCELENTRY);
		break;
	case MANUAL_SWIPETOCLERK:   //Pass to clerk
		GoToLevel(CANCELENTRY);
		break;
// == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = 
	case DOTRANSACTION: // do transaction, can't cancel
		break;
	case CANCELENTRY: 
		break;
	case CANCELTOCLERK: 
		GoToLevel(CANCELENTRY);
		break;
// == == == == == == == Display Window == == == == == 
	case DISPLAY_WINDOW:
		if (CDisplay::GetMask() & MASK_CANCEL)
			CDisplay::SetKeyReturn(KEY_CANCEL);
		break;
	case EMV_SELECT_LANGUAGE: //EMV Select language
	case EMV_CONFIRM_AMOUNT: //EMV confirm amount
	case EMV_SELECT_ACCOUNT: //EMV select account
	case EMV_PASS_COUSTOMER: //pass to customer
		SetKeyReturn(KEY_CANCEL);
		break;
	case CHIP_DEBITCASHBACK: //CASHBACK
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
	case CHIP_DEBITTIPSELECT: //TipSelect
	case CHIP_DEBITTOTALCOMFIRM: // TotalComfirm
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		GoToLevel(CANCELENTRY);
		SetKeyReturn(KEY_CANCEL);
		break;
	case EMV_WAIT:
		SetEMVCancel();
		break;
	}
}
Esempio n. 6
0
//----------------------------------------------------------------------------
//!	\brief	this is main work loop function for any GUI's entry, 
// param  index is for GUI's index id
//----------------------------------------------------------------------------
void CReturnDlg::WorkLoop(int index)
{
	TCHAR buf[10] = { L"" };
	m_strMsg.m_nFormat = DT_LEFT;
	m_strMsg2.m_nFormat = DT_RIGHT;
	m_Bt.ShowWindow(SW_HIDE);
	m_Bt1.ShowWindow(SW_HIDE);
	m_strMsg.SetColor(RGB(0, 0, 0),RGB( 255,255,255));
	m_strMsg1.SetColor(RGB(0, 0, 0),RGB( 255,255,255));

	CString str = L"";
	CString str1 = L"";
	int i = 0;
	switch(index)
	{
	case PASSWORD_INPUT: //Password Input
		m_bGoBackFlag = FALSE;
		for(i = 0;i<m_strPassword.GetLength();i++)
			str += L"*";

		ShowText(L"Enter Password", L"", str);
		break;
	case AMOUNT_INPUT: //Amout Input
		m_bGoBackFlag = FALSE;
		ShowText(L"Enter Amount", L"", m_strAmount);
		break;
	case CLERK_INPUT:  //Clerk ID input
		if (CDataFile::Read(L"CLERK ID", buf) && CString(buf) == L"Off")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			ShowText(L"Enter Clerk", L"Id", L"");
			break;
		}
	case RECEIP_TINPUT:  //Receipt input
		if (CDataFile::Read(L"RECEIPT", buf) && CString(buf) == L"Off")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			ShowText(L"Enter Receipt", L"Number", L"");
		}
		break;
	case ENTERCARD_INPUT:  //Card enter and manual Entry
		m_bGoBackFlag = FALSE;
		if (!OpenDevice())
		{
			m_strErr1 = L"fail open device";
			PostMessage(ERROR_MESSAGE, 2, 1);
			break;
		}
		m_strMsg.m_nFormat = DT_RIGHT;
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(m_strAmount, L"Insert/Swipe/Tap", L"or Key Card #");
		SetTimer(1, 30000, NULL);
		break;

// debit card 
	case DEBITCARDENTRY:
		m_bCancelPrint = TRUE;
		m_bGoBackFlag = FALSE;
		ShowText(L"Pass to", L"Customer", L"");
		SetTimer(1, 3000, NULL);
		m_bCancelInCustomer = TRUE;
		break;
	case DEBITCASHBACK: //CASHBACK
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		
		if (CDataFile::Read(L"CASHBACK", buf) && CString(buf) == L"Off")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			str = L"Enter Cashback";
			str1 = L"Amount";
			CString str2 = L"$0.00";
			ShowText(str, str1, str2);
		}
		break;
	case DEBITSURCHARGEFEE: //surcharge fee
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		if (!CDataFile::Read(L"SURCHARGE", buf))
		{
			m_bGoBackFlag?GoBack():GoNext();
			return;
		}
		if (CString(buf) == L"$0.00" || CString(buf) == L"")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			m_Bt.SetValue(1, L"  Cancel", IDB_CANCEL);
			m_Bt.ShowWindow(SW_SHOW);
			m_Bt1.SetValue(3, L"  OK", IDB_OK);
			m_Bt1.ShowWindow(SW_SHOW);
			str.Format(L"        %s  OK?", CString(buf));
			ShowText(L"Fee", str, L"");
			m_strSurcharge = CString(buf);
			break;
		}
	case DEBITTIPSELECT: //TipSelect
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		GetTipValue();
		break;
	case DEBITTOTALCOMFIRM: // TotalComfirm
		m_bGoBackFlag = FALSE;
		if (DoConfirm(m_bReturnFlag))
			GoNext();
		else
			OnCancel();
		break;
	case DEBITSELECTACCOUNT: // SelectAccount
		m_bGoBackFlag = FALSE;
		m_Bt.SetValue(1, L"  CHEQUE");
		m_Bt1.SetValue(3, L"  SAVING");
		m_Bt.ShowWindow(SW_SHOW);
		m_Bt1.ShowWindow(SW_SHOW);
		ShowText(L"Select Account", L"", L"");
		break;
	case DEBITONLINEPIN: //OnlinePin
		if (!EnterOnlinePin())
		{
			m_strErr1 = L"EnterOnlinePin";
			PostMessage(ERROR_MESSAGE, 2, 1);
		}
		else
		{
			ShowText(L"Please Wait...", L"", L"");
			GoToLevel(DOTRANSACTION);
		}
		break;
	case DEBITMERCHANTCOPY: // for merchant copy of the receipt
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
			str = L"APPROVED";
		else
			str = L"Unsuccessful";
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(str, L"Retrieve Card", L"Pass to Clerk");
		Print();
		break;
	case DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		ShowText(L"Press OK for", L"customer copy", L"");
		SetTimer(1, 30000, NULL);
		break;
	case DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
		{
			str.Format(L"AUTH : %s", CString(m_TRREC.AuthCode));
			m_strMsg2.m_nFormat = DT_LEFT;
			str1.Format(L"Inv.#: %s", CString(m_TRREC.InvoiceNo));
			ShowText(L"APPROVED", str, str1);
		}
		else
		{
			str.Format(L"Declined %s", CString(m_TRREC.RespCode));
			ShowText(L"Unsuccessful", str, L"");
		}
		break;
	case DEBITEND: // ending...
		CDialog::OnCancel();
		break;
// == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == 
	case MANUALENTRYY: //Manual Entry enter expiry
		m_strMsg.SetCaption(L"Enter Expiry");
		m_strMsg1.SetCaption(L"Date           MMYY");
		m_strMsg2.SetCaption(L"");
		break;
	case MANUAL_IMPRINT_CARD:  //imprint card
		m_strMsg.SetCaption(L"Imprint Card");
		m_strMsg1.SetCaption(L"Press OK");
		m_strMsg2.SetCaption(L"");
		break;

// == == == == == == == == == == == == == = EMV Chip Card Debit Sale :C chip page 122 == == == == == == == == == == == == == = 
	case CHIPENTRYY:
		m_bCancelPrint = TRUE;
		m_bGoBackFlag = FALSE;
		ShowText(L"Pass to", L"Customer", L"");
		SetTimer(1, 3000, NULL);
		m_bCancelInCustomer = TRUE;
		break;
	case SELECT_LANGUAGE:
		if (SupportEnglishOrFrench())
		{
			// get first language found will be selected
			// EMVSelectLanguage(???);
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			m_Bt.SetValue(1, L" English");
			m_Bt.ShowWindow(SW_SHOW);
			m_Bt1.SetValue(3, L" Francais");
			m_Bt1.ShowWindow(SW_SHOW);
			str.Format(L"        %s  OK?", CString(buf));
			ShowText(L"Select language", L"Choisir langue", L"");
		}
		break;
	case SELECT_APPLICATIION:
/*		if (!IsEMVMultiApplication())
		{
			//Select this single Application
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			m_Bt.SetValue(1, L"   No");
			m_Bt.ShowWindow(SW_SHOW);
			m_Bt1.SetValue(3, L"   Yes");
			m_Bt1.ShowWindow(SW_SHOW);
			str = GetNextEMVApplicationLabel();
			ShowText(L"Select", str, L"");
		}
	*/	break;
	case APPLICATION_CONFIRM:
		m_bGoBackFlag = FALSE;
		m_Bt.SetValue(1, L"   No");
		m_Bt.ShowWindow(SW_SHOW);
		m_Bt1.SetValue(3, L"   Yes");
		m_Bt1.ShowWindow(SW_SHOW);
		ShowText(m_strCurrentApplicationLabel, L"OK?", L"");
		break;

	case CHIP_DEBITCASHBACK: //CASHBACK
		m_bCancelPrint = TRUE;
		if (m_TRREC.CardType == CARD_CREDIT)
		{
			m_bGoBackFlag?GoBack():GoNext();
			return;
		}

		if (CDataFile::Read(L"CASHBACK", buf) && CString(buf) == L"Off")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			str = L"Enter Cashback";
			str1 = L"Amount";
			CString str2 = m_strCashback;//L"$0.00";
			ShowText(str, str1, str2);
		}
		break;
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
		if (m_TRREC.CardType == CARD_CREDIT)
		{
			m_bGoBackFlag?GoBack():GoNext();
			return;
		}

		if (!CDataFile::Read(L"SURCHARGE", buf))
		{
			m_bGoBackFlag?GoBack():GoNext();
			return;
		}
		if (CString(buf) == L"$0.00" || CString(buf) == L"")
		{
			m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			m_bGoBackFlag = FALSE;
			m_Bt.SetValue(1, L"  Cancel", IDB_CANCEL);
			m_Bt.ShowWindow(SW_SHOW);
			m_Bt1.SetValue(3, L"  OK", IDB_OK);
			m_Bt1.ShowWindow(SW_SHOW);
			str.Format(L"        %s  OK?", CString(buf));
			ShowText(L"Fee", str, L"");
			m_strSurcharge = CString(buf);
			break;
		}
	case CHIP_DEBITTIPSELECT: //TipSelect
		GetTipValue();
		break;
	case CHIP_DEBITTOTALCOMFIRM: // TotalComfirm
		m_bGoBackFlag = FALSE;
		if (DoConfirm(m_bReturnFlag))
			GoNext();
		else
			OnCancel();
		break;
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		if (m_TRREC.CardType == CARD_CREDIT)
		{
//			m_bGoBackFlag?GoBack():GoNext();
			m_strMsg2.m_nFormat = DT_LEFT;
			ShowText(L"Please Wait...", L"Do not remove", L"Card!");
			m_iLevel = EMV_WAIT;
			SetKeyReturn(KEY_ENTER);
			return;
		}

		m_bGoBackFlag = FALSE;
		m_Bt.SetValue(1, L"  CHEQUE");
		m_Bt1.SetValue(3, L"  SAVING");
		m_Bt.ShowWindow(SW_SHOW);
		m_Bt1.ShowWindow(SW_SHOW);
		ShowText(L"Select Account", L"", L"");
		break;
	case CHIP_DEBITENTERPIN: //EnterPin
		if (!EMVEnterPin())//Fix me later
		{
			m_strErr1 = L"EMVEnterPin";
			PostMessage(ERROR_MESSAGE, 2, 1);
		}
		else
		{
			if (m_TRREC.CardType == CARD_CREDIT)
			{
				GoNext();
			}
			else
			{
				ShowText(L"Please Wait...", L"", L"");
				GoToLevel(DOTRANSACTION);
			}
		}
		break;
	case CHIP_PASSTOCLERK: //Pass to clerk
		ShowText(L"Pass to clerk", L"Do not remove card", L"");
		SetTimer(1, 3000, NULL);
		break;

	case CHIP_DEBITMERCHANTCOPY: // for merchant copy of the receipt
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
			str = L"APPROVED";
		else
			str = L"Unsuccessful";
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(str, L"Remove card", L"Pass to clerk");
		Print();
		break;
	case CHIP_DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		ShowText(L"Press OK for", L"customer copy", L"");
		SetTimer(1, 30000, NULL);
		break;
	case CHIP_DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
		{
			str.Format(L"AUTH : %s", CString(m_TRREC.AuthCode));
			m_strMsg2.m_nFormat = DT_LEFT;
			str1.Format(L"Inv.#: %s", CString(m_TRREC.InvoiceNo));
			ShowText(L"APPROVED", str, str1);
		}
		else
		{
			str.Format(L"Declined %s", CString(m_TRREC.RespCode));
			ShowText(L"Unsuccessful", str, L"");
		}
		break;
	case CHIP_DEBITEND: // ending...
		if (GetScrStatus() == SCR_POWER_ON)	
			ShowText(L"Please",L"Remove Card",L"");
		else
			CDialog::OnCancel();
		break;
// == == == == == == == == == == == == == = Credit Card Sale :C Swiped page 75 == == == == == == == == == == == == == == == == == = 
	case CREDITSWIPEENTRYY://FRAUD CHECK
		m_bCancelPrint = TRUE;
		m_bGoBackFlag = FALSE;
	    if (CDataFile::Read(L"FRAUD CHECK", buf) && CString(buf) == L"Off")
		{
			if (m_bReturnFlag)
				GoToLevel(DOTRANSACTION);
			else
				m_bGoBackFlag?GoBack():GoNext();
		}
		else
		{
			ShowText(L"Enter Last", L"4 Digits", L"");
		}
		break;
	case CREDITSWIPETOCUSTOMER:
	case MANUAL_SWIPETOCUSTOMER:
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		if (CDataFile::Read(L"TIP PROMPT", buf) && CString(buf) == L"Off")
		{
			m_iLevel = DOTRANSACTION;
			GoToLevel(m_iLevel);
		}
		else
		{
			ShowText(L"Pass to", L"Customer", L"");
			SetTimer(1, 3000, NULL);
			m_bCancelInCustomer = TRUE;
			m_bGoBackFlag = FALSE;
		}
		break;
	case CREDITSWIPETIPSELECT: //TipSelect
	case MANUAL_SWIPETIPSELECT: //TipSelect
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		GetTipValue();
		break;
	case CREDITSWIPETOTALCOMFIRM: // TotalComfirm
	case MANUAL_SWIPETOTALCOMFIRM: // TotalComfirm
		m_bGoBackFlag = FALSE;
		if (m_bReturnFlag)
		{
			m_bGoBackFlag?GoBack():GoNext();
			break;
		}
		if (DoConfirm(m_bReturnFlag))
			GoNext();
		else
			OnCancel();
		break;
	case CREDITSWIPETOCLERK:  //Pass to clerk
	case MANUAL_SWIPETOCLERK:  //Pass to clerk
		ShowText(L"Pass to", L"clerk", L"");
		SetTimer(1, 3000, NULL);
		break;
	case CREDITMERCHANTCOPY: // for merchant copy of the receipt
		m_strMsg2.m_nFormat = DT_LEFT;
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
		{
			str.Format(L"AUTH : %s", CString(m_TRREC.AuthCode));
			m_strMsg2.m_nFormat = DT_LEFT;
			str1.Format(L"Inv.#: %s", CString(m_TRREC.InvoiceNo));
			ShowText(L"APPROVED", str, str1);
		}
		else
		{
			if (strlen(m_TRREC.HostRespText)  > 0)
				str = CString(m_TRREC.HostRespText);
			else
				str.Format(L"Declined %s", CString(m_TRREC.RespCode));
			ShowText(L"Unsuccessful", str, L"");
		}
		Print();
		break;
	case CREDITCUSTOMERCOPY: // for Customer copy of the receipt
		ShowText(L"Press OK for", L"customer copy", L"");
		SetTimer(1, 30000, NULL);
		break;
	case CREDITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		if (m_TRREC.ComStatus == ST_OK  &&
				m_TRREC.TranStatus == ST_APPROVED)
		{
			str.Format(L"AUTH : %s", CString(m_TRREC.AuthCode));
			m_strMsg2.m_nFormat = DT_LEFT;
			str1.Format(L"Inv.#: %s", CString(m_TRREC.InvoiceNo));
			ShowText(L"APPROVED", str, str1);
		}
		else
		{
			str.Format(L"Declined %s", CString(m_TRREC.RespCode));
			ShowText(L"Unsuccessful", str, L"");
		}
		break;
	case CREDITEND: // ending...
//	case MANUAL_END: // ending...
		CDialog::OnCancel();
		break;

// == == == == == == == == == == == == == == Do transaction (connect to host) == == == == == == == = 
	case DOTRANSACTION:
		DoTransaction();
		break;
	case CANCELENTRY:
		m_bCancelFlag = TRUE;
		ShowText(L"Transaction", L"Cancelled", L"");
		SetTimer(1, 30000, NULL);
		if (m_TRREC.CardError == CARD_NO_ERROR
			&& m_bCancelPrint)
			Print(0);
		break;
	case CANCELTOCLERK:
		if(m_TRREC.bEmvTransaction)
		{
			GoToLevel(EMV_REMOVE_CARD);
			break;
		}
		if (m_bCancelInCustomer)
		{
			ShowText(L"Pass to", L"Clerk", L"");
			SetTimer(1, 3000, NULL);
		}
		else
			CDialog::OnCancel();
		break;

// == == == == == == == Display Window == == == == == 
	case DISPLAY_WINDOW:
		m_strMsg2.m_nFormat = DT_LEFT;
		str = CDisplay::GetLine(1);
		if (str.GetLength() > 0)
			m_strTitle.SetCaption(str);

		str = CDisplay::GetLine(2);
		ShowText(str, CDisplay::GetLine(3), CDisplay::GetLine(4));
		SetDisplayButton();
		break;

	case EMV_SELECT_LANGUAGE: //EMV Select language
		m_Bt.SetValue(1, L" English");
		m_Bt.ShowWindow(SW_SHOW);
		m_Bt1.SetValue(3, L" Francais");
		m_Bt1.ShowWindow(SW_SHOW);
		ShowText(L"Select language", L"Choisir langue", L"");
		break;
	
	case EMV_CONFIRM_AMOUNT: //EMV confirm amount
		str.Format(L"     $ %s  OK?", DealAmountStr(m_TRREC.TotalAmount));
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(L"Total :", str, L"Press OK to confirm");
		break;

	case EMV_SELECT_ACCOUNT: //EMV select account
		m_Bt.SetValue(1, L"  CHEQUE");
		m_Bt1.SetValue(3, L"  SAVING");
		m_Bt.ShowWindow(SW_SHOW);
		m_Bt1.ShowWindow(SW_SHOW);
		ShowText(L"Select Account", L"", L"");
		break;
	
	case EMV_REMOVE_CARD: //EMV Remove Card
		if (GetScrStatus() == SCR_POWER_ON)
			ShowText(L"Please",L"Remove Card",L"");
		else
			CDialog::OnCancel();
		break;
	
	case EMV_PASS_COUSTOMER: //EMV Remove Card
		ShowText(L"Pass to", L"Customer", L"");
		break;
	
	case EMV_START: //EMV Remove Card
		StartEMV();
		break;
	}
}
Esempio n. 7
0
//----------------------------------------------------------------------------
//!	\brief	Message entry function for any GUI's, 
//----------------------------------------------------------------------------
LRESULT CReturnDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	CString strTemp; 
	DWORD len = 0;
   DWORD decode = 0;

	if (wParam == 1)
	{
//	TRACE(L"CEnterCardDlg RFID event = %x\n", message);
		BYTE buf[2048] = {0};
		DWORD len;
		switch(message)
		{
			case RFID_EVENT_READY:
				m_RFID.GetData();
				m_iKeyStatus =  KEY_CTLS;
				m_TRREC.EntryMode = ENTRY_MODE_CTLS;
				m_RFID.GetData((BYTE*)buf, &len);
				CloseDevice();
				ProcessCtlsTLV((USHORT)len, (BYTE*)buf);
				if (m_TRREC.CtlsData.C2[0] == 0x05)		// EMV
				{
					m_TRREC.bEmvTransaction = TRUE;
					m_TRREC.bEmvCtlsTransaction = TRUE;
					m_TRREC.bCtlsTransaction = TRUE;
				}
				else if (m_TRREC.CtlsData.C2[0] == 0x04)	// MSR
				{
					m_TRREC.bEmvTransaction = FALSE;
					m_TRREC.bEmvCtlsTransaction = FALSE;
					m_TRREC.bCtlsTransaction = TRUE;
				}
				else if (m_TRREC.CtlsData.C2[0] == 0x06)	// Terminated
				{
					// Get error code from C3
					TRACE(L"RFID ERROR\n");
					return 0;
				}
				else
				{
//					assert(FALSE);
					m_strErr1 = L"CARD NOT SUPPORT";
					ErrorExit(ENTERCARD_INPUT);
					return 0;
				}
				
				m_TRREC.CardType = CARD_CREDIT;	// FIXME: will change when have FLASH support
				m_TRREC.CardError = ProcessSwipedCard(m_TRREC.Track2);
				
				// FIXME: CTLS kernel currently doesn't return AID for VISA, just fake it for now.
				if (m_TRREC.bEmvCtlsTransaction && strcmp("V ", m_TRREC.ServType) == 0)
				{
					strcpy(m_TRREC.EmvData.AID, "A0000000031010");				
				}
				
				m_iLevel = DOTRANSACTION;
				WorkLoop(m_iLevel);
				return 0;
				break;
			case RFID_EVENT_TIMEOUT:
				m_RFID.Cancel();
				TRACE(L"RFID_EVENT_TIMEOUT\n");
				PostMessage(ERROR_MESSAGE, 2, 5);
				break;
			case RFID_EVENT_CANCELLED:
				break;
			case RFID_EVENT_ERROR:
				m_RFID.Cancel();
				ReOpenRFID();
				break;
			default:
				break;	
		}	
	}
	else if (wParam == 0)
	{
		switch(message)
		{
			case MSR_EVENT_DEV_OFFLINE :
				m_strErr1 = L"MSR Open Fail !";
				ErrorExit();
				return NULL;
			case MSR_EVENT_DATA_READY :
			case MSR_EVENT_CT_STATUS :
			case MSR_EVENT_READ_ERROR :
				m_MSR.MsrGetTrackData();
				m_MSR.GetMSRData(2, (BYTE*)m_TRREC.Track2, &len, &decode);
				m_TRREC.CardError = ProcessSwipedCard(m_TRREC.Track2);
				if (m_TRREC.CardError != CARD_NO_ERROR)
				{
					m_strErr1 = L"CARD NOT SUPPORT";
					CloseDevice();
					ErrorExit(ENTERCARD_INPUT);
					return 0;
				}

				m_iKeyStatus =  KEY_MSR;
				m_TRREC.EntryMode = ENTRY_MODE_SWIPED;

				CloseDevice();
/*
				if (m_TRREC.CardType == CARD_DEBIT)
					m_iLevel = DEBITCARDENTRY;
				else if (m_TRREC.CardType == CARD_CREDIT)
					m_iLevel = CREDITSWIPEENTRYY;
*/
				m_iLevel = DOTRANSACTION;
				WorkLoop(m_iLevel);

				return 0;
		}
	}
	else if (wParam == 2 && message == ERROR_MESSAGE)
	{ 
		if (lParam == 1) //error
		{
			ErrorExit();
		}
		else if (lParam == 2) //for jump to other level
			WorkLoop(m_iLevel);
		else if (lParam == 3) // print done
		{
			m_bPrintDone = TRUE;
			GoNext();
		}
		else if (lParam == 4) //Can't print
		{
			m_strErr1 = L"Can't Print";
			ErrorExit();
		}
		else if (lParam == 5) //RFID time out and restart it
		{
			ReOpenRFID();
		}
		else if (lParam == 6) //Show CDisplay window
		{
			if(!m_bCancelFlag)
				GoToLevel(DISPLAY_WINDOW);
		}
	}
	return CDialog::DefWindowProc(message, wParam, lParam);
}
Esempio n. 8
0
//----------------------------------------------------------------------------
//!	\brief	handle button press function for any GUI's, 
//----------------------------------------------------------------------------
void CReturnDlg::OnBnClickedButton(UINT nID)
{
	switch(m_iLevel)
	{
	case DEBITSELECTACCOUNT: // SelectAccount
		if (nID == IDC_BUTTON1)
			m_TRREC.AcctType = ACCT_CHEQUE;
		else
			m_TRREC.AcctType = ACCT_SAVING;
		GoNext();
		break;
	case DEBITSURCHARGEFEE: //surcharge fee
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
		if (nID == IDC_BUTTON1)
			CDialog::OnCancel();
		else
			OnOK();
		break;
	case SELECT_LANGUAGE: //EMV Select language
		if (nID == IDC_BUTTON1)
			EMVSelectLanguage(ENGLISH);
		else
			EMVSelectLanguage(FRENCH);
		GoNext();
		break;
	case SELECT_APPLICATIION: //select application
		if (nID == IDC_BUTTON1)
			GoToLevel(SELECT_APPLICATIION);
		else
			GoNext();
		break;
	case APPLICATION_CONFIRM: //select comfirm
		if (nID == IDC_BUTTON1)
			GoToLevel(SELECT_APPLICATIION);
		else
			GoNext();
		break;

// == == == == == == == Display Window == == == == == 
	case DISPLAY_WINDOW:
		CDisplay::SetKeyReturn(KEY_BUT1+nID-IDC_BUTTON1);
		break;
	case EMV_SELECT_LANGUAGE: //EMV Select language
	case EMV_SELECT_ACCOUNT: //EMV select account
		m_Bt.ShowWindow(SW_HIDE);
		m_Bt1.ShowWindow(SW_HIDE);
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(L"Please Wait...", L"Do not remove", L"Card!");
		m_iLevel = EMV_WAIT;
		SetKeyReturn(KEY_BUT1+nID-IDC_BUTTON1);
		break;
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		m_Bt.ShowWindow(SW_HIDE);
		m_Bt1.ShowWindow(SW_HIDE);
		if(nID == IDC_BUTTON1)
			m_TRREC.AcctType = ACCT_CHEQUE;
		else
			m_TRREC.AcctType = ACCT_SAVING;
		m_strMsg2.m_nFormat = DT_LEFT;
		ShowText(L"Please Wait...",L"Do not remove",L"Card!");
		m_iLevel = EMV_WAIT;
		SetKeyReturn(KEY_ENTER);
		break;
	}
}
Esempio n. 9
0
//----------------------------------------------------------------------------
//!	\brief	handle key input function for any GUI's, include correction key(nChar == 8)
//----------------------------------------------------------------------------
void CReturnDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	Beep1();
	switch(m_iLevel)
	{
	case PASSWORD_INPUT: //Password Input
		m_strMsg2.SetCaption(DealPassword(nChar, m_strPassword));
		break;
	case AMOUNT_INPUT: //Amout Input
	case DEBITCASHBACK: //CASHBACK
	case CHIP_DEBITCASHBACK: //CASHBACK
		m_strMsg2.SetCaption(DealAmount(nChar, m_strMsg2.m_szCaption));
		break;
	case CLERK_INPUT:  //Clerk ID input
		m_strMsg2.SetCaption(DealClerkID(nChar, m_strMsg2.m_szCaption));
		break;
	case RECEIP_TINPUT:  //Receipt input
		m_strMsg2.SetCaption(DealReceipt(nChar, m_strMsg2.m_szCaption));
		break;
	case ENTERCARD_INPUT:  //Card enter and manual Entry
		KillTimer(1);
		m_strMsg2.SetCaption(KeyAccount(nChar, m_strMsg2.m_szCaption));
		if (m_KeyEntry)
			m_strMsg2.m_nFormat = DT_RIGHT;
		SetTimer(1, 30000, NULL);
		break;
	case DEBITTIPSELECT: //TipSelect
	case CHIP_DEBITTIPSELECT: //TipSelect
		if (nChar == 8)
			GoBack();
		break;
	case DEBITSURCHARGEFEE: //surcharge fee
	case DEBITSELECTACCOUNT: // SelectAccount
	case CHIP_DEBITSURCHARGEFEE: //surcharge fee
	case CHIP_DEBITSELECTACCOUNT: // SelectAccount
		if (nChar == '1')
			OnBnClickedButton(IDC_BUTTON1);
		if (nChar == '3')
			OnBnClickedButton(IDC_BUTTON2);
		if (nChar == 8)
			GoBack();
		break;
	case DEBITMERCHANTCOPY: // for merchant copy of the receipt
	case CHIP_DEBITMERCHANTCOPY: // for merchant copy of the receipt
		return;
	case DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		if (nChar == 8)
		{
			KillTimer(1);
			CDialog::OnCancel();
		}
		break;
	case DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
	case CHIP_DEBITWAITCOPYEND: // waiting for Customer copy of the receipt ending...
		break;
// == == == == == == == == == == == == == = EMV Chip Card Debit Sale :C chip page 122 == == == == == == == == == == == == == = 
	case SELECT_LANGUAGE: //select language
	case SELECT_APPLICATIION: //select application
	case APPLICATION_CONFIRM: //select comfirm
		if (nChar == '1')
			OnBnClickedButton(IDC_BUTTON1);
		if (nChar == '3')
			OnBnClickedButton(IDC_BUTTON2);
		break;
	case CHIP_DEBITCUSTOMERCOPY: // for Customer copy of the receipt
		if (nChar == 8)
		{
			KillTimer(1);
			GoToLevel(CHIP_DEBITEND);
		}
		break;

// == == == == == == == == == == == == == = Credit Card Sale :C Swiped page 75 == == == == == == == == == == == == == == == == == = 
	case CREDITSWIPEENTRYY:
		m_strMsg2.SetCaption(DealFraud(nChar, m_strMsg2.m_szCaption));
		break;
	case CREDITSWIPETOCUSTOMER: // for Customer copy of the receipt
		if (nChar == 8)
		{
			KillTimer(1);
			GoBack();
		}
		break;
	case CREDITSWIPETIPSELECT: //TipSelect
		if (nChar == 8)
			GoBack();
		break;
	case CREDITMERCHANTCOPY: // for merchant copy of the receipt
		return;
	case CREDITCUSTOMERCOPY: // for Customer copy of the receipt
		if (nChar == 8)
		{
			KillTimer(1);
			CDialog::OnCancel();
		}
		break;
// == == == == == == == == == == == == == = Credit Card Sale :C Manual Entry :C Swiped page 79 == == == == == == == == == == == == == == == == == = 
	case MANUALENTRYY:
		m_strMsg2.SetCaption(KeyExpiry(nChar, m_strMsg2.m_szCaption));
		break;
	case MANUAL_IMPRINT_CARD: // for Customer copy of the receipt
	case MANUAL_SWIPETOCUSTOMER: // for Customer copy of the receipt
		if (nChar == 8)
		{
			KillTimer(1);
			GoBack();
		}
		break;
	case MANUAL_SWIPETIPSELECT: //TipSelect
		if (nChar == 8)
			GoBack();
		break;
// == == == == == == == Display Window == == == == == 
	case DISPLAY_WINDOW:
		if (nChar == 8)
		{
			if (CDisplay::GetMask() & MASK_CORR)
				CDisplay::SetKeyReturn(KEY_CORR);
		}
		break;
	case EMV_SELECT_LANGUAGE: //EMV Select language
	case EMV_SELECT_ACCOUNT: //EMV select account
		if (nChar == '1')
			OnBnClickedButton(IDC_BUTTON1);
		if (nChar == '3')
			OnBnClickedButton(IDC_BUTTON2);
		if (nChar == 8)
			SetKeyReturn(KEY_CORR);
		break;
	case EMV_CONFIRM_AMOUNT: //EMV confirm amount
		if (nChar == 8)
			SetKeyReturn(KEY_CORR);
		break;
// == == == == == == == == == == == == = End == == == == == == == == == == == == == == == = 
	}
	SetFocus();
}