📄 bankoperationview.cpp
字号:
m_pBk=new CChkBook;
if(!m_pBk->IsOpen())
m_pBk->Open();
if(m_pBk->IsBOF() && m_pBk->IsEOF ())
AfxMessageBox("No Records in the Database...");
m_pBk->MoveLast();
int st=m_pBk->m_Start_Check_Number;
m_pBk->AddNew();
UpdateData(true);
m_pBk->m_Account_Number=m_pSet->m_Account_Number;
GetDlgItemText(IDC_CURRDT,m_pBk->m_Date_of_Issue);
m_pBk->m_Hand_Over="C";
if(m_pSet->m_Type_account=="S") //saving account
{
m_pBk->m_Number_of_Checks=20;
m_pBk->m_Start_Check_Number=st+1;
m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 20;
}
if(m_pSet->m_Type_account=="C") //Current account
{
m_pBk->m_Number_of_Checks=40;
m_pBk->m_Start_Check_Number=st+1;
m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 40;
}
if(m_pSet->m_Type_account=="K") //Checking account
{
m_pBk->m_Number_of_Checks=10;
m_pBk->m_Start_Check_Number=st+1;
m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 50;
}
if(!m_pBk->Update())
AfxMessageBox("Updation of Record Failed!!!");
UpdateData(false);
AfxMessageBox("Check Book has been issued");
if(m_pBk->Requery()==0)
return;
}
void CBankOperationView::OnClear()
{
CButton *bAdd,*bMod,*bDel,*bUpd;
SetDlgItemText(IDC_VALID,"");
bAdd=(CButton*)GetDlgItem(IDC_SAVE);
bAdd->EnableWindow(true);
bUpd=(CButton*)GetDlgItem(IDC_UPD);
bUpd->EnableWindow(false);
bMod=(CButton*)GetDlgItem(IDC_MOD);
bMod->EnableWindow(false);
bDel=(CButton*)GetDlgItem(IDC_DELETE);
bDel->EnableWindow(false);
SetDlgItemText(IDC_FNAME,"");
SetDlgItemText(IDC_LNAME,"");
SetDlgItemInt(IDC_ACCNO,0,false);
SetDlgItemText(IDC_PADD,"");
SetDlgItemText(IDC_MADD,"");
SetDlgItemText(IDC_PHONE,"");
SetDlgItemText(IDC_EMAIL,"");
SetDlgItemInt(IDC_REFACCNO,0,false);
SetDlgItemInt(IDC_AMOUNT,0,false);
SetDlgItemText(IDC_DOB,"");
CButton *chk1;
chk1=(CButton*)GetDlgItem(IDC_CHECK1);
chk1->SetCheck(false);
CButton *pSaveing,*pCurrent,*pChecking;
pSaveing=(CButton*)GetDlgItem(IDC_RADIO1);
pCurrent=(CButton*)GetDlgItem(IDC_RADIO2);
pChecking=(CButton*)GetDlgItem(IDC_RADIO3);
pSaveing->SetCheck(true);
pCurrent->SetCheck(false);
pChecking->SetCheck(false);
}
//Handles Deposit/Wihdrawl to/from an account
void CBankOperationView::OnDeposit()
{
CDeposit d1;
d1.DoModal();
}
//Handles Transfer amount from one account to other
void CBankOperationView::OnTransfer()
{
CTransfer d2;
d2.DoModal();
}
//Handles the "<<" button
void CBankOperationView::OnBnClickedFirst()
{
OnRecordFirst();
EnableDisableNavigationKeys(1);
}
//Handles the ">>" button
void CBankOperationView::OnBnClickedLast()
{
OnRecordLast();
EnableDisableNavigationKeys(2);
}
//Handles the "<" button
void CBankOperationView::OnBnClickedPrev()
{
OnRecordPrev();
EnableDisableNavigationKeys(3);
}
//Handles the ">" button
void CBankOperationView::OnBnClickedNext()
{
OnRecordNext();
EnableDisableNavigationKeys(4);
}
//Handles the Commit of transactions
void CBankOperationView::OnBnClickedCommit()
{
//This will commit Pending "Transfer" operations
Tran_DW *ptr_Tran=new Tran_DW; //Contains Transaction Details
Ref_AccNo *m_pGet=new Ref_AccNo; //Contains Customer Details
if(!ptr_Tran->IsOpen())
ptr_Tran->Open();
if(!ptr_Tran->IsBOF() && ptr_Tran->IsEOF ())
ptr_Tran->MoveFirst();
if(!m_pGet->IsOpen())
m_pGet->Open();
if(!m_pGet->IsBOF() && m_pGet->IsEOF ())
m_pGet->MoveFirst();
BOOL bFirstTransactionOver = FALSE;
//Go through all the transactions in transaction recordset
while (!ptr_Tran->IsEOF())
{
//Choose pending records from the recordset
if (ptr_Tran->m_Transaction_Status.CompareNoCase("P") == 0)
{
//Case of Cheque transactions in Deposit/Withdrawl
if (ptr_Tran->m_Transaction_Mode.CompareNoCase("CHQ") == 0)
{
// Deposit Case
if (ptr_Tran->m_Transaction_Type.CompareNoCase("DEP") == 0)
{
while (!m_pGet->IsEOF())
{
if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
{
m_pGet->Edit();
m_pGet->m_Balance=m_pGet->m_Balance + ptr_Tran->m_Transaction_Amount;
m_pGet->Update();
m_pGet->Requery();
ptr_Tran->Edit();
ptr_Tran->m_Transaction_Status = "C";
ptr_Tran->Update();
ptr_Tran->Requery();
break;
}
m_pGet->MoveNext();
}
m_pGet->MoveFirst();
}
else if (ptr_Tran->m_Transaction_Type.CompareNoCase("WTH") == 0) // Withdrawl Case
{
while (!m_pGet->IsEOF())
{
if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
{
m_pGet->Edit();
m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
m_pGet->Update();
m_pGet->Requery();
ptr_Tran->Edit();
ptr_Tran->m_Transaction_Status = "C";
ptr_Tran->Update();
ptr_Tran->Requery();
break;
}
m_pGet->MoveNext();
}
m_pGet->MoveFirst();
}
}
else if(ptr_Tran->m_Transaction_Mode.CompareNoCase("TRF") == 0) //Case of money transfer from one account to another
{
//Transfer to an internal account
if (ptr_Tran->m_Transaction_Type.CompareNoCase("ITF") == 0)
{
long lAccNumFrom = ptr_Tran->m_Account_Number;
while (!m_pGet->IsEOF())
{
if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
{
m_pGet->Edit();
m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
m_pGet->Update();
m_pGet->Requery();
if (bFirstTransactionOver)
{
ptr_Tran->Edit();
ptr_Tran->m_Transaction_Status = "C";
ptr_Tran->Update();
ptr_Tran->Requery();
break;
}
bFirstTransactionOver = TRUE;
}
if (m_pGet->m_Account_Number == ptr_Tran->m_To_Account)
{
m_pGet->Edit();
m_pGet->m_Balance=m_pGet->m_Balance + ptr_Tran->m_Transaction_Amount;
m_pGet->Update();
m_pGet->Requery();
if (bFirstTransactionOver)
{
ptr_Tran->Edit();
ptr_Tran->m_Transaction_Status = "C";
ptr_Tran->Update();
ptr_Tran->Requery();
break;
}
bFirstTransactionOver = TRUE;
}
m_pGet->MoveNext();
}
m_pGet->MoveFirst();
}
else if (ptr_Tran->m_Transaction_Type.CompareNoCase("ETF") == 0)
{
//Transfer to an External account
long lAccNumFrom = ptr_Tran->m_Account_Number;
while (!m_pGet->IsEOF())
{
if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
{
m_pGet->Edit();
m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
m_pGet->Update();
m_pGet->Requery();
ptr_Tran->Edit();
ptr_Tran->m_Transaction_Status = "C";
ptr_Tran->Update();
ptr_Tran->Requery();
break;
}
m_pGet->MoveNext();
}
m_pGet->MoveFirst();
}
}
bFirstTransactionOver = FALSE;
}
ptr_Tran->MoveNext();
}
if (ptr_Tran) //Contains Transaction Details
delete ptr_Tran;
if (m_pGet) //Contains Transaction Details
delete m_pGet;
//Refresh the records
m_bFromCommit = TRUE;
OnInitialUpdate();
//Display the message "Transactions have been commited"
MessageBox("All pending transactions have been commited");
}
//Handles the reactivate button
void CBankOperationView::OnBnClickedReactivate()
{
m_pSet->Edit();
//Get the Account Number to edit
long lCurrentAccountNum = m_pSet->m_Account_Number;
m_pSet->m_Valid_Acc="VA";
UpdateData(true);
if(!m_pSet->Update())
AfxMessageBox("Some internal problem. Not Able to reactivate the account");
if(m_pSet->Requery()==0)
return;
if(!m_pSet->IsBOF() && m_pSet->IsEOF())
m_pSet->MoveFirst();
while( m_pSet->m_Account_Number == lCurrentAccountNum || m_pSet->IsEOF())
{
m_pSet->MoveNext();
}
//Update the Operational box
SetDlgItemText(IDC_VALID,"Operational Account");
CButton *pAdd, *pUpd, *pMod, *pDel, *pReActivate, *pChk1;
pAdd=(CButton*)GetDlgItem(IDC_SAVE);
pAdd->EnableWindow(true);
pUpd=(CButton*)GetDlgItem(IDC_UPD);
pUpd->EnableWindow(false);
pMod=(CButton*)GetDlgItem(IDC_MOD);
pMod->EnableWindow(true);
pDel=(CButton*)GetDlgItem(IDC_DELETE);
pDel->EnableWindow(true);
pReActivate=(CButton*)GetDlgItem(IDC_REACTIVATE);
pReActivate->EnableWindow(false);
pChk1=(CButton*)GetDlgItem(IDC_CHECK1);
pChk1->SetCheck(false);
AfxMessageBox("The Record has been activated!");
}
//Handles Navigation keys
void CBankOperationView::EnableDisableNavigationKeys(int nFrom)
{
Ref_AccNo *m_pGet=new Ref_AccNo;
long lCurrentRecord=0;
lCurrentRecord = m_pGet->GetCurrentRecord();
if(!m_pGet->IsOpen())
m_pGet->Open();
if(!m_pGet->IsBOF() && m_pGet->IsEOF ())
{
m_pGet->MoveFirst();
}
int nTotalRecordCount=0;
while (!m_pGet->IsEOF())
{
nTotalRecordCount++;
m_pGet->MoveNext();
}
//nTotalRecordCount = m_pGet->GetTotalCount();
m_pGet->MoveFirst();
CButton *pFirst, *pLast, *pNext, *pPrev;
pFirst = (CButton*)GetDlgItem(IDC_BUTTON1);
pLast = (CButton*)GetDlgItem(IDC_BUTTON4);
pPrev = (CButton*)GetDlgItem(IDC_BUTTON2);
pNext = (CButton*)GetDlgItem(IDC_BUTTON3);
if (nTotalRecordCount == 0 || nTotalRecordCount == 1) {
pFirst->EnableWindow(false);
pLast->EnableWindow(false);
pPrev->EnableWindow(false);
pNext->EnableWindow(false);
return;
}
switch(nFrom)
{
case 1: //First
pFirst->EnableWindow(false);
pLast->EnableWindow(true);
pPrev->EnableWindow(false);
pNext->EnableWindow(true);
break;
case 2: //Last
pFirst->EnableWindow(true);
pLast->EnableWindow(false);
pPrev->EnableWindow(true);
pNext->EnableWindow(false);
break;
case 3: //Prev
//if (m_nCurrentRecord == 1)
//{
// pFirst->EnableWindow(false);
// pLast->EnableWindow(true);
// pPrev->EnableWindow(false);
// pNext->EnableWindow(true);
//}
//else
//{
pFirst->EnableWindow(true);
pLast->EnableWindow(true);
pPrev->EnableWindow(true);
pNext->EnableWindow(true);
//}
break;
case 4: //Next
//if (m_nCurrentRecord == nTotalRecordCount)
//{
// pFirst->EnableWindow(true);
// pLast->EnableWindow(false);
// pPrev->EnableWindow(true);
// pNext->EnableWindow(false);
//}
//else
//{
pFirst->EnableWindow(true);
pLast->EnableWindow(true);
pPrev->EnableWindow(true);
pNext->EnableWindow(true);
//}
break;
case 5: //From IniialUpdate
pFirst->EnableWindow(false);
pLast->EnableWindow(true);
pPrev->EnableWindow(false);
pNext->EnableWindow(true);
break;
}
}
//Handles the Cancel button
void CBankOperationView::OnBnClickedCancel1()
{
// TODO: Add your control notification handler code here
CComboBox *cmb=(CComboBox*)GetDlgItem(IDC_ACCNO);
cmb->EnableWindow(TRUE);
CEdit *pFName, *pLName, *pDOB, *pRefAcct, *pAmnt;
pFName=(CEdit*)GetDlgItem(IDC_FNAME);
pFName->EnableWindow(TRUE);
pLName=(CEdit*)GetDlgItem(IDC_LNAME);
pLName->EnableWindow(TRUE);
pDOB = (CEdit*)GetDlgItem(IDC_DOB);
pDOB->EnableWindow(TRUE);
pRefAcct=(CEdit*)GetDlgItem(IDC_REFACCNO);
pRefAcct->EnableWindow(TRUE);
pAmnt=(CEdit*)GetDlgItem(IDC_AMOUNT);
pAmnt->EnableWindow(TRUE);
CButton *pDep, *pTransfer, *pCancel;
pCancel=(CButton*)GetDlgItem(IDC_CANCEL1);
pCancel->EnableWindow(FALSE);
pDep=(CButton*)GetDlgItem(IDC_DEPOSIT);
pDep->EnableWindow(true);
pTransfer=(CButton*)GetDlgItem(IDC_TRANSFER);
pTransfer->EnableWindow(true);
m_bFromCancel = TRUE;
//To refresh the records
OnInitialUpdate();
}
BOOL CBankOperationView::VerifyDate(CString strDate)
{
BOOL bValidDate = FALSE;
CString strTemp1, strTemp2, strTemp3;
for (int i=0; i<10; i++)
{
strTemp1 = strDate.Left(2);
if (atoi(strTemp1)> 0 && atoi(strTemp1)< 13) // 1 to 12
{
//Valid Month. Wait till we check the date.
}
else
{
return FALSE;
}
strTemp2 = strDate.Right(4);
if (atoi(strTemp2)> 1700 && atoi(strTemp2)< 3000)
{
//Valid Year. Wait till we check the date.
}
else
{
return FALSE;
}
strTemp3 = strDate.Mid(3, 2);
if (atoi(strTemp3)> 0 && atoi(strTemp3)< 32)
{
//Valid Month
int iMonth = atoi(strTemp1);
switch(iMonth)
{
case 1:
bValidDate = TRUE;
break;
case 2:
{
int nRes = atoi(strTemp2)/4;
if ( nRes == 0 && (atoi(strTemp3)> 0 && atoi(strTemp3)< 29) )
bValidDate = TRUE;
if ( nRes != 0 && atoi(strTemp3)> 0 && atoi(strTemp3)< 30) ////Leap year
bValidDate = TRUE;
}
break;
case 3:
bValidDate = TRUE;
break;
case 4:
if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
bValidDate = TRUE;
break;
case 5:
bValidDate = TRUE;
break;
case 6:
if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
bValidDate = TRUE;
break;
case 7:
bValidDate = TRUE;
break;
case 8:
bValidDate = TRUE;
break;
case 9:
if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
bValidDate = TRUE;
break;
case 10:
bValidDate = TRUE;
break;
case 11:
if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
bValidDate = TRUE;
break;
case 12:
bValidDate = TRUE;
break;
}
}
}
return bValidDate;
}
//Handles the "Day end transactions" button
void CBankOperationView::OnReportsDayendtransactions()
{
// TODO: Add your command handler code here
}
//Handles the "reports more..." button
void CBankOperationView::OnReportsMore()
{
// TODO: Add your command handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -