📄 checkin.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "CheckIn.h"
#include "RoomStatus.h"
#include "PreOrder.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Parent"
#pragma resource "*.dfm"
TfmCheckIn *TfmCheckIn;
//---------------------------------------------------------------------------
__fastcall TfmCheckIn::TfmCheckIn(TComponent* Owner)
: TfmParent(Owner)
{
this->szCondition1 = "入住单号";
this->szCondition2 = "抵店时间";
// 设置查询条件
this->SetSeekEditStatus();
Table1->Active = true;
Table2->Active = true;
lblCount->Caption = "记录数: " + IntToStr(Table1->RecordCount) ;
// 非弹出选择窗体
m_nSelect = 1;
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::dtPickerInDateChange(TObject *Sender)
{
// 选择抵店日期,赋给数据库绑定控件
EditDBEdit4->Text = dtPickerInDate->Date.DateString();
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::dtPickerOutDateChange(TObject *Sender)
{
// 选择离店日期,赋给数据库绑定控件
EditDBEdit5->Text = dtPickerOutDate->Date.DateString();
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::EditDBEdit4Change(TObject *Sender)
{
// 记录变化,选择日期控件更新
if(EditDBEdit4->Text.Length()==0)
dtPickerInDate->Date = dtPickerInDate->Date.CurrentDate();
else
dtPickerInDate->Date = EditDBEdit4->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::EditDBEdit5Change(TObject *Sender)
{
// 记录变化,选择日期控件更新
if(EditDBEdit5->Text.Length()==0)
dtPickerOutDate->Date = dtPickerOutDate->Date.CurrentDate();
else
dtPickerOutDate->Date = EditDBEdit5->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::btNewClick(TObject *Sender)
{
// 注意如何调用父类窗体的方法
TfmParent::btNewClick(NULL);
dtPickerInDate->Date = dtPickerInDate->Date.CurrentDate();
dtPickerOutDate->Date = dtPickerOutDate->Date.CurrentDate();
dtPickerInDateChange(NULL);
dtPickerOutDateChange(NULL);
// 计算预定编号(Primary key);
// 从预定单历史和预定单中选择最大编号加1
AnsiString szID,szID1;
TQuery *pQuery = new TQuery(NULL);
pQuery->DatabaseName = "db";
// 选择最大编号
pQuery->SQL->Clear();
pQuery->SQL->Add("select max(入住单号) as 编号 from 入住单历史");
pQuery->Open();
TField* pField = pQuery->FieldByName("编号");
if(pField->IsNull)
szID = "RZ00000001";
else
{
AnsiString szT = "00000000";
szID = StrToInt(pField->AsString.SubString(3,8)) + 1;
szID = szT.SubString(1,8-szID.Length()) + szID;
szID = "RZ" + szID;
}
pQuery->SQL->Clear();
pQuery->SQL->Add("select max(入住单号) as 编号 from 入住单");
pQuery->Open();
pField = pQuery->FieldByName("编号");
if(pField->IsNull)
szID1 = "RZ00000001";
else
{
AnsiString szT = "00000000";
szID1 = StrToInt(pField->AsString.SubString(3,8)) + 1;
szID1 = szT.SubString(1,8-szID1.Length()) + szID1;
szID1 = "RZ" + szID1;
}
// 取最大值作为新凭证的ID
if(szID < szID1)
szID = szID1;
EditDBEdit->Text = szID;
// 设置单据状态
EditDBEdit6->Text = "入住";
// 释放空间
delete pQuery;
}
//---------------------------------------------------------------------------
// 弹出房态图,选择客房
void __fastcall TfmCheckIn::btSelectRoomClick(TObject *Sender)
{
if(dbcRoomType->Text.Length()<=0)
{
Application->MessageBox("请选择客房类型!","提示",MB_OK);
return;
}
TfmRoomStatus* pForm = new TfmRoomStatus(Application);
// 作为普通窗口
pForm->FormStyle = fsNormal;
pForm->Hide();
// 不可以编辑房态
pForm->SetSelect(0);
// 设置客房的类型,房态图只显示该类型的客房
pForm->m_RoomType = dbcRoomType->KeyValue;
pForm->ShowModal();
if(pForm->m_RoomCode.Length()>0)
EditDBEdit8->Text = pForm->m_RoomCode;
delete pForm;
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::btSaveClick(TObject *Sender)
{
AnsiString sql = "select 状态 from 客房信息 where 客房编号='";
sql += EditDBEdit8->Text + "'";
TQuery* pQueryRoom = new TQuery(NULL);
pQueryRoom->DatabaseName = "db";
pQueryRoom->SQL->Add(sql);
pQueryRoom->Open();
if(pQueryRoom->FieldByName("状态")->AsString != "空房"
&& pQueryRoom->FieldByName("状态")->AsString != "将到")
{
Application->MessageBox("选择的客房不是空房!","提示",MB_OK);
delete pQueryRoom;
return;
}
// 将原来的客房设置为空房
sql = "update 客房信息 set 状态='空房' from 客房信息 as a,";
sql += "入住单 as b where a.客房编号=b.客房编号 and b.入住单号='";
sql += EditDBEdit->Text + "'";
pQueryRoom->SQL->Clear();
pQueryRoom->SQL->Add(sql);
pQueryRoom->ExecSQL();
// 注意如何调用父类窗体的方法,保存数据
TfmParent::btSaveClick(NULL);
// 修改房间状态
sql = "exec sf_保存入住单 '";
sql += EditDBEdit->Text + "'";
pQueryRoom->SQL->Clear();
pQueryRoom->SQL->Add(sql);
pQueryRoom->ExecSQL();
delete pQueryRoom;
}
//---------------------------------------------------------------------------
//从预定单选择,倒入数据
void __fastcall TfmCheckIn::btSelectOrderClick(TObject *Sender)
{
TfmPreOrder* pForm = new TfmPreOrder(Application);
// 作为普通窗口
pForm->FormStyle = fsNormal;
pForm->Hide();
// 不可以编辑房态
pForm->m_nSelect = 0;
// 数据不可以在这里编辑,设置按钮的Enable属性为false
pForm->btNew->Enabled = false;
pForm->btEdit->Enabled = false;
pForm->btDelete->Enabled = false;
pForm->btNew->Enabled = false;
pForm->ShowModal();
if(!pForm->Table1->FieldByName("预定单号")->IsNull )
{
dbcRoomType->KeyValue =
pForm->Table1->FieldByName("客房类型")->AsString;
EditDBEdit1->Text= pForm->Table1->
FieldByName("预定单号")->AsString;
EditDBEdit2->Text= pForm->Table1->FieldByName("会员编号")->AsString;
EditDBEdit4->Text= pForm->Table1->FieldByName("抵店时间")->AsString;
EditDBEdit5->Text= pForm->Table1->FieldByName("离店时间")->AsString;
EditDBEdit7->Text= pForm->Table1->FieldByName("入住人数")->AsString;
EditDBEdit8->Text= pForm->Table1->FieldByName("客房编号")->AsString;
EditDBEdit9->Text= pForm->Table1->FieldByName("客房价格")->AsString;
EditDBEdit10->Text= pForm->Table1->FieldByName("入住价格")->AsString;
EditDBEdit11->Text= pForm->Table1->FieldByName("折扣")->AsString;
EditDBEdit12->Text= pForm->Table1->FieldByName("折扣原因")->AsString;
DBCheckBox1->Checked =
pForm->Table1->FieldByName("是否加床")->AsBoolean;
EditDBEdit14->Text= pForm->Table1->FieldByName("加床价格")->AsString;
EditDBEdit15->Text= pForm->Table1->FieldByName("预收款")->AsString;
EditDBEdit16->Text= pForm->Table1->FieldByName("预定人")->AsString;
EditDBEdit17->Text= pForm->Table1->FieldByName("联系电话")->AsString;
EditDBEdit18->Text= pForm->Table1->FieldByName("预定公司")->AsString;
EditDBEdit21->Text= pForm->Table1->FieldByName("业务员")->AsString;
}
delete pForm;
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::DBGrid1DblClick(TObject *Sender)
{
// 双击,如果是选择窗体,选择记录并关闭窗体
if(m_nSelect == 0)
{
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmCheckIn::dbcRoomTypeClick(TObject *Sender)
{
// 更新房价
TQuery* pQueryRoom = new TQuery(NULL);
pQueryRoom->DatabaseName = "db";
AnsiString sql;
sql = "select 价格 from 客房类型 where 类型编号 = '";
sql += (AnsiString)dbcRoomType->KeyValue + "'";
pQueryRoom->SQL->Add(sql);
pQueryRoom->Open();
EditDBEdit9->Text = pQueryRoom->FieldByName("价格")->AsString;
EditDBEdit10->Text = pQueryRoom->FieldByName("价格")->AsString;
delete pQueryRoom;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -