?? checkoutdlg.cpp
字號:
// CheckOutDLG.cpp : implementation file
//
#include "stdafx.h"
#include "hotel_mis.h"
#include "CheckOutDLG.h"
#include "Hotel_MISView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCheckOutDLG dialog
CCheckOutDLG::CCheckOutDLG(CWnd* pParent /*=NULL*/)
: CDialog(CCheckOutDLG::IDD, pParent)
{
//{{AFX_DATA_INIT(CCheckOutDLG)
m_sDiscount = _T("");
m_sID = _T("");
m_sInDate = _T("");
m_sMemo = _T("");
m_sName = _T("");
m_tOutDate = COleDateTime::GetCurrentTime();
m_sPosition = _T("");
m_sPrice = _T("");
m_sRoomNo = _T("");
m_sType = _T("");
//}}AFX_DATA_INIT
}
void CCheckOutDLG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCheckOutDLG)
DDX_Text(pDX, IDD_CHECKOUT_DISCOUNT, m_sDiscount);
DDX_Text(pDX, IDD_CHECKOUT_ID, m_sID);
DDX_Text(pDX, IDD_CHECKOUT_INDATE, m_sInDate);
DDX_Text(pDX, IDD_CHECKOUT_MEMO, m_sMemo);
DDX_Text(pDX, IDD_CHECKOUT_NAME, m_sName);
DDX_DateTimeCtrl(pDX, IDD_CHECKOUT_OUTDATE, m_tOutDate);
DDX_Text(pDX, IDD_CHECKOUT_POSITION, m_sPosition);
DDX_Text(pDX, IDD_CHECKOUT_PRICE, m_sPrice);
DDX_CBString(pDX, IDD_CHECKOUT_ROOMNO, m_sRoomNo);
DDX_Text(pDX, IDD_CHECKOUT_TYPE, m_sType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCheckOutDLG, CDialog)
//{{AFX_MSG_MAP(CCheckOutDLG)
ON_CBN_SELCHANGE(IDD_CHECKOUT_ROOMNO, OnCheckoutRoomNoSelChange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCheckOutDLG message handlers
BOOL CCheckOutDLG::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
_variant_t strQuery, Holder;
if (m_bAppend)// Add CheckOut
{
CString sRoomNo;
// Init Combobox
strQuery = "select * from rooms where roomNO in\
( \
select roomno from bookin where checkdate is NULL\
)";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
theApp.m_pADOSet->MoveFirst();
for (int i=0; i<iCount; i++)
{
Holder = theApp.m_pADOSet->GetCollect("roomno");
((CComboBox*)GetDlgItem(IDD_CHECKOUT_ROOMNO))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder);
if ( 0==i )
{
sRoomNo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get RoomType
Holder = theApp.m_pADOSet->GetCollect("roomtype");
m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomposition
Holder = theApp.m_pADOSet->GetCollect("roomposition");
m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomprice
Holder = theApp.m_pADOSet->GetCollect("roomprice");
m_sPrice.Format("%.2f", Holder.dblVal);
}
theApp.m_pADOSet->MoveNext();
}
((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0);
// Get customer info
strQuery = "select * from bookin where roomno='"+sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
// Get name
Holder = theApp.m_pADOSet->GetCollect("customname");
m_sName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get ID
Holder = theApp.m_pADOSet->GetCollect("customID");
m_sID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get InDate
COleDateTime time;
Holder = theApp.m_pADOSet->GetCollect("indate");
time = Holder;
m_sInDate = time.Format("%Y-%m-%d");
// Get ID
Holder = theApp.m_pADOSet->GetCollect("discount");
m_sDiscount.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal);
// Get Memo
Holder = theApp.m_pADOSet->GetCollect("inmemo");
m_sMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
}
else// Alter CheckOut
{
((CComboBox*)GetDlgItem(IDD_CHECKOUT_ROOMNO))->InsertString(0, m_sRoomNo);
// Get Room Info
strQuery = "select * from rooms where roomNO='"+m_sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
theApp.m_pADOSet->MoveFirst();
// Get RoomType
Holder = theApp.m_pADOSet->GetCollect("roomtype");
m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomposition
Holder = theApp.m_pADOSet->GetCollect("roomposition");
m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomprice
Holder = theApp.m_pADOSet->GetCollect("roomprice");
m_sPrice.Format("%.2f", Holder.dblVal);
((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0);
}
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCheckOutDLG::OnCheckoutRoomNoSelChange()
{
// TODO: Add your control notification handler code here
UpdateData(true);
_variant_t strQuery, Holder;
// Update room info
strQuery = "select * from rooms where roomNO='"+m_sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
// Get RoomType
Holder = theApp.m_pADOSet->GetCollect("roomtype");
m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomposition
Holder = theApp.m_pADOSet->GetCollect("roomposition");
m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get roomprice
Holder = theApp.m_pADOSet->GetCollect("roomprice");
m_sPrice.Format("%.2f", Holder.dblVal);
// Update customer info
strQuery = "select * from bookin where roomno='"+m_sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
// Get name
Holder = theApp.m_pADOSet->GetCollect("customname");
m_sName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get ID
Holder = theApp.m_pADOSet->GetCollect("customID");
m_sID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
// Get InDate
COleDateTime time;
Holder = theApp.m_pADOSet->GetCollect("indate");
time = Holder;
m_sInDate = time.Format("%Y-%m-%d");
// Get ID
Holder = theApp.m_pADOSet->GetCollect("discount");
m_sDiscount.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal);
// Get Memo
Holder = theApp.m_pADOSet->GetCollect("inmemo");
m_sMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
UpdateData(false);
}
void CCheckOutDLG::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
// Get InDate
_variant_t strQuery, Holder;
COleDateTime tInDate;
strQuery = "select indate from bookin where roomno='"+m_sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
Holder = theApp.m_pADOSet->GetCollect("indate");
tInDate = Holder;
if ( tInDate>m_tOutDate )
{
AfxMessageBox(_T("結帳日期小于入住日期,請重新輸入結帳日期!"), MB_ICONEXCLAMATION);
return;
}
// Caculate Bill
COleDateTimeSpan timeSpan;
timeSpan = m_tOutDate - tInDate;
int iDays = timeSpan.GetDays()+1;
float fPrice = atof(m_sPrice);
float fDiscount = atof(m_sDiscount);
float fAmmount = fPrice*iDays*fDiscount/100;
CString sAmmount;
sAmmount.Format("%.2f", fAmmount);
CString sTip = _T("金額為:");
sTip += sAmmount;
sTip += _T(" 結算完畢!!");
AfxMessageBox(sTip, MB_ICONINFORMATION);
// Update DataBase
CString sOutDate;
sOutDate = m_tOutDate.Format("%y-%m-%d");
strQuery = "update bookin set checkdate='"+sOutDate+"', ammount="+sAmmount+" where roomno='"+m_sRoomNo+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
// Refresh CheckOut List
strQuery = "select * from bookin where checkdate is not NULL";
CHotel_MISView* p = (CHotel_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView());
p->RefreshCheckOut(strQuery);
CDialog::OnOK();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -