unitroomcheck.~pas
来自「自己做过的工程」· ~PAS 代码 · 共 1,283 行 · 第 1/3 页
~PAS
1,283 行
DMHotel.ADODataSet_itemnumber.Close;
//获取房间号
vroomid:=ed_roomid.Text;
//获取入住时间
vchecktime:=datetimetostr(date+time);
// showmessage(vchecktime);
DMhotel.ADODataSet_roomin.Open;
vintime:=DMhotel.ADODataSet_roomin.FieldByName('intime').AsString;
// DMhotel.ADODataSet_roomin.Close;
// showmessage(vintime);
//下面就执行添加记录的操作
DMHotel.ADODataSet_roomfee.Open;
with DMHotel.ADOQuery1 do
begin
close;//关闭以前的操作
sql.Clear;
sql.Add('Insert into room_fee(code,roomid,roomtype,roomfee,'+
'roomthings,supsecond,discount,employeeid,totalfee,checktime,intime,'+
'kalaok,ballroom,commercecenter,hairdressing,username,remark,suproom)');
sql.Add('Values (:code,:roomid,:roomtype,:roomfee,'+
':roomthings,:supsecond,:discount,:employeeid,:totalfee,:checktime,:intime,'+
':kalaok,:ballroom,:commercecenter,:hairdressing,:username,:remark,:suproom)');
parameters.ParamByName('code').Value:=inttostr(coderoom);
//将这个主键存到一个变量中,准备后面打印用
vcodeid:=coderoom;
parameters.ParamByName('roomid').Value:=ed_roomid.Text;
//showmessage(ed_roomid.Text);
parameters.ParamByName('roomtype').Value:=cb_roomtype.Text;
parameters.ParamByName('roomfee').Value:=strtofloat(ed_roomfee.Text);
parameters.ParamByName('roomthings').Value:=strtofloat(ed_roomthings.Text);
parameters.ParamByName('supsecond').Value:=strtofloat(ed_supsecond.Text);
parameters.ParamByName('discount').Value:=strtofloat(ed_discount.Text);
parameters.ParamByName('employeeid').Value:=ed_employeeid.Text;
parameters.ParamByName('checktime').Value:=strtodatetime(vchecktime);
parameters.ParamByName('intime').Value:=strtodatetime(vintime);
parameters.ParamByName('totalfee').Value:=strtofloat(ed_totalfee.Text);
parameters.ParamByName('kalaok').Value:=strtofloat(ed_kalaok.Text);
parameters.ParamByName('ballroom').Value:=strtofloat(ed_ballroom.Text);
parameters.ParamByName('commercecenter').Value:=strtofloat(ed_commercecenter.Text);
parameters.ParamByName('hairdressing').Value:=strtofloat(ed_hairdressing.Text);
parameters.ParamByName('username').Value:=ed_username.Text;
parameters.ParamByName('remark').Value:=ed_remark.Text;
parameters.ParamByName('suproom').Value:=strtofloat(ed_suproom.Text);
close;
end;
//执行改变房间状态的操作
//将这个也写个函数的形式
DMHotel.ADODataSet_roomstatus.Open;
DMHotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
DMHotel.ADODataSet_roomstatus.Edit;
DMHotel.ADODataSet_roomstatus.FieldByName('statusid').AsString:='1' ;
DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString:='空闲';
DMHotel.ADODataSet_roomstatus.Post;
DMHotel.ADODataSet_roomstatus.Close;
// 还要将room-in中的leftornot的值改变成yes
DMHotel.ADODataSet_roomin.Open;
DMHotel.ADODataSet_roomin.Locate('roomid;leftornot',vararrayof([vroomid,'no']),[]);
DMHotel.ADODataSet_roomin.Edit;
DMHotel.ADODataSet_roomin.FieldByName('leftornot').AsString:='yes';
DMHotel.ADODataSet_roomin.Post;
//也要同时改变主界面上的房间标识的颜色 ,用自己定义的函数来实现
forminroom.fun_roomcolorchange(strtoint(vroomid),clCaptionText) ;
try
DMHotel.ADOQuery1.ExecSQL;
but_print.Enabled:=true;
showmessage('已经成功的完成了收银操作,记录已存到收银数据库中!');
except
showmessage('操作失败!');
DMHotel.ADOConnection1.RollbackTrans;
exit;
end;
//在这里就清空所有的控件中的信息
ed_roomid.Clear;
ed_username.Clear;
ed_intime.Clear;
ed_checktime.Clear;
//ed_employeeid.Clear;
ed_roomthings.Clear;
ed_roomfee.Clear;
ed_kalaok.Clear;
ed_ballroom.Clear;
ed_commercecenter.Clear;
ed_suproom.Clear;
ed_supsecond.Clear;
ed_hairdressing.Clear;
ed_discount.Text:= '10';
ed_totalfee.Clear;
ed_remark.Clear;
//房间号为可用
ed_roomid.ReadOnly:=false;
//将计算按钮重新设置为不可用
but_compute.Enabled:=false;
DMHotel.ADOConnection1.CommitTrans;
DMHotel.ADODataSet_roomin.Requery;
DMHotel.ADODataSet_roomfee.Requery;
DMHotel.ADODataSet_roomfee.Close;
DMHotel.ADODataSet_roomin.Close;
end;
procedure Tformroomcheck.but_debtClick(Sender: TObject);
//其实挂帐的实际就是要和收银一样。只不过两个之间的区别就是要存入的数据库不
//一样。一个是 room_fee 另外一个是 room_debt 。而其他的操作是一样的!
var
itemtype:string;
coderoom:integer;
vroomid:string;
vintime:string;
vchecktime:string;
judgeid:string;
judgestatus:string;
begin
if MessageDlg('您确定要进行挂帐操作吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
vroomid:=ed_roomid.Text;
//房间号判断
formroomcheck.fun_roomidjudge(vroomid,judgeid);
// showmessage(judgeid);
if judgeid='pause' then
exit;
//房间状态判断
formroomcheck.fun_roomstatusjudge(vroomid,'停用','预定','空闲','使用',judgestatus);
if judgestatus='pause' then
exit;
//收银的过程其实就是将这个数据写到数据库的过程。以为了以后的查找
//先要判断一下这个总的费用是否为0或为空
if (ed_totalfee.Text='') or (ed_totalfee.Text=inttostr(0)) then
begin
showmessage('请认真确定是否住宿费用为零!');
exit;
end;
// 开始对数据库的一个事件
Dmhotel.ADOConnection1.BeginTrans;
DMHotel.ADODataSet_roomin.Open;
// DMHotel.ADODataSet_roomstatus.Open;
//这个也可以写成一个函数的形式
itemtype:='roomcheckmanagecode';
DMHotel.ADODataSet_itemnumber.Open;
DMHotel.ADODataSet_itemnumber.Locate('itemtype',itemtype,[]);
coderoom:=DMHotel.ADODataSet_itemnumber.FieldValues['itemno'];
coderoom:=coderoom+1;
DMHotel.ADODataSet_itemnumber.Edit;
DMHotel.ADODataSet_itemnumber.FieldValues['itemno']:=coderoom;
DMHotel.ADODataSet_itemnumber.Post;
//showmessage(inttostr(coderoom));
DMHotel.ADODataSet_itemnumber.Close;
//获取房间号
vroomid:=ed_roomid.Text;
//获取入住时间
vchecktime:=datetimetostr(date+time);
// showmessage(vchecktime);
// DMHotel.ADODataSet_roomstatus.Open;
// DMhotel.ADODataSet_roomin.Open;
vintime:=DMhotel.ADODataSet_roomin.FieldByName('intime').AsString;
DMhotel.ADODataSet_roomin.Close;
// showmessage(vintime);
//下面就执行添加记录的操作
// DMhotel.ADODataSet_roomin.Open;
with DMHotel.ADOQuery1 do
begin
close;//关闭以前的操作
sql.Clear;
sql.Add('Insert into room_debt(code,roomid,roomtype,roomfee,'+
'roomthings,supsecond,discount,employeeid,totalfee,checktime,intime,'+
'kalaok,ballroom,commercecenter,hairdressing,username,remark,suproom,checkornot)');
sql.Add('Values (:code,:roomid,:roomtype,:roomfee,'+
':roomthings,:supsecond,:discount,:employeeid,:totalfee,:checktime,:intime,'+
':kalaok,:ballroom,:commercecenter,:hairdressing,:username,:remark,:suproom,:checkornot)');
parameters.ParamByName('code').Value:=inttostr(coderoom);
parameters.ParamByName('roomid').Value:=ed_roomid.Text;
//showmessage(ed_roomid.Text);
parameters.ParamByName('roomtype').Value:=cb_roomtype.Text;
parameters.ParamByName('roomfee').Value:=strtofloat(ed_roomfee.Text);
parameters.ParamByName('roomthings').Value:=strtofloat(ed_roomthings.Text);
parameters.ParamByName('supsecond').Value:=strtofloat(ed_supsecond.Text);
//showmessage('dd') ;
parameters.ParamByName('discount').Value:=strtofloat(ed_discount.Text);
parameters.ParamByName('employeeid').Value:=ed_employeeid.Text;
parameters.ParamByName('suproom').Value:=ed_suproom.Text;
parameters.ParamByName('checktime').Value:=strtodatetime(vchecktime);
parameters.ParamByName('intime').Value:=strtodatetime(vintime);
parameters.ParamByName('totalfee').Value:=strtofloat(ed_totalfee.Text);
parameters.ParamByName('kalaok').Value:=strtofloat(ed_kalaok.Text);
parameters.ParamByName('ballroom').Value:=strtofloat(ed_ballroom.Text);
parameters.ParamByName('commercecenter').Value:=strtofloat(ed_commercecenter.Text);
parameters.ParamByName('hairdressing').Value:=strtofloat(ed_hairdressing.Text);
parameters.ParamByName('username').Value:=ed_username.Text;
parameters.ParamByName('remark').Value:=ed_remark.Text;
parameters.ParamByName('checkornot').Value:='欠账';
close;
end;
//执行改变房间状态的操作
//将这个也写个函数的形式
DMHotel.ADODataSet_roomin.Open;
DMHotel.ADODataSet_roomstatus.Open;
DMHotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
DMHotel.ADODataSet_roomstatus.Edit;
DMHotel.ADODataSet_roomstatus.FieldByName('statusid').AsString:='1' ;
DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString:='空闲';
DMHotel.ADODataSet_roomstatus.Post;
// DMHotel.ADODataSet_roomstatus.Close;
//将room_in中的leftornot字段的值该为yes
DMHotel.ADODataSet_roomin.Locate('roomid;leftornot',vararrayof([vroomid,'no']),[]);
DMHotel.ADODataSet_roomin.Edit;
DMHotel.ADODataSet_roomin.FieldByName('leftornot').AsString:='yes';
DMHotel.ADODataSet_roomin.Post;
//也要同时改变主界面上的房间标识的颜色 ,用自己定义的函数来实现
forminroom.fun_roomcolorchange(strtoint(vroomid),clCaptionText) ;
try
DMHotel.ADODataSet_roomdebt.Open;
DMHotel.ADOQuery1.ExecSQL;
// but_print.Enabled:=true;
showmessage('已经成功的完成了记帐操作,记录已存到记帐数据库!');
except
showmessage('记帐操作失败!');
DMHotel.ADOConnection1.RollbackTrans;
exit;
end;
//在这里就清空所有的控件中的信息
ed_roomid.Clear;
ed_username.Clear;
ed_intime.Clear;
ed_checktime.Clear;
//ed_employeeid.Clear;
ed_roomthings.Clear;
ed_roomfee.Clear;
ed_kalaok.Clear;
ed_ballroom.Clear;
ed_commercecenter.Clear;
ed_suproom.Clear;
ed_supsecond.Clear;
ed_hairdressing.Clear;
ed_discount.Text:='10';
ed_totalfee.Clear;
ed_remark.Clear;
ed_roomid.ReadOnly:=false;
//将计算按钮重新设置为不可用
but_compute.Enabled:=false;
DMHotel.ADODataSet_roomin.Requery;
DMHotel.ADODataSet_roomdebt.Requery;
DMHotel.ADODataSet_roomstatus.Requery;
DMHotel.ADODataSet_roomstatus.Close;
DMHotel.ADODataSet_roomdebt.Close;
DMHotel.ADODataSet_roomin.Close;
DMHotel.ADOConnection1.CommitTrans;
end;
procedure Tformroomcheck.but_cancelClick(Sender: TObject);
begin
if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
ed_roomid.Clear;
ed_roomid.ReadOnly:=false;
ed_username.Clear;
ed_intime.Clear;
ed_checktime.Clear;
//ed_employeeid.Clear;
ed_roomthings.Clear;
ed_roomfee.Clear;
ed_kalaok.Clear;
ed_ballroom.Clear;
ed_commercecenter.Clear;
ed_suproom.Clear;
ed_supsecond.Clear;
ed_hairdressing.Clear;
ed_discount.Text:='10';
ed_totalfee.Clear;
ed_remark.Clear;
//费用计算要设置为不可用
but_compute.Enabled:=false;
end;
//房客帐单查询
procedure Tformroomcheck.but_roomselectClick(Sender: TObject);
var
oldtotalfee:extended;
begin
if ed_oldusername.Text='' then
begin
showmessage('你输入的要查询的人的姓名为空,请重新输入!');
exit;
end;
DMHotel.SetDebtView1(ed_oldusername.Text,oldtotalfee);
//showmessage(floattostr(oldtotalfee));
ed_oldtotalfee.Text:=floattostr(oldtotalfee);
button9.Enabled:=true;
but_printdebt.Enabled:=false;
cb_judge.Enabled:=true;
cb_judge.Checked:=false;
end;
procedure Tformroomcheck.Button10Click(Sender: TObject);
// var
// oldusername:string;
begin
if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
// oldusername:=ed_oldusername.Text;
DMHotel.ADODataSet_roomdebt.Close;
DMHotel.ADODataSet_roomdebt.Prepared:=false;
//这个地方不能用变量 .一定要用这种查询的形式!
//首先要进行条件判断 >=:N1 and username<=:N2 username like and
DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
' checkornot=:yesornot' ;
//DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠账';
//在这里进行统一的结算所有的帐单
DMHotel.ADODataSet_roomdebt.Prepared:=true;
DMHotel.ADODataSet_roomdebt.Open;
ed_oldusername.Clear;
ed_oldtotalfee.Clear;
end;
procedure Tformroomcheck.Button11Click(Sender: TObject);
begin
close;
end;
//房客还帐
procedure Tformroomcheck.Button9Click(Sender: TObject);
//var
//oldtotalfee:extended;
begin
if MessageDlg('您确定要进行'+ed_oldusername.text+'的结帐操作吗吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
// DMHotel.SetDebtView1(ed_oldusername.Text,oldtotalfee);
// DMHotel.ADODataSet_roomdebt.Open;
DMHotel.ADODataSet_roomdebt.First;
while not DMHotel.ADODataSet_roomdebt.Eof do
// showmessage('aaa');
begin
//这个地方收银实际上就是要将room_debt 中的checkornot字段的值改变 ’欠帐 ‘该为’已还‘
//还要将还帐的时间记在里面
//这个地方有个问题,但是不暂时不知道应该怎么解决?
{ if DMHotel.ADODataSet_roomdebt.FieldByName('username').AsString=ed_oldusername.Text then
showmessage('aaa'); }
begin
DMHotel.ADODataSet_roomdebt.Edit;
DMHotel.ADODataSet_roomdebt.FieldByName('redebttime').Value:=date+time;
DMHotel.ADODataSet_roomdebt.FieldByName('checkornot').AsString:='帐务已还清';
DMHotel.ADODataSet_roomdebt.Post;
showmessage(' '+ed_oldusername.Text+' 房客的帐单已经还清,记录已写入数据库中!');
end;
DMHotel.ADODataSet_roomdebt.Next;
// showmessage(' '+ed_oldusername.Text+' 房客的帐单已经还清,记录已写入数据库中!');
end;
//showmessage(' '+ed_oldusername.Text+' 房客的帐单已经还清,记录已写入数据库中!');
button9.Enabled:=false;
ed_oldusername.Clear;
ed_oldtotalfee.Clear;
DMHotel.ADODataSet_roomdebt.Requery;
DMHotel.ADODataSet_roomdebt.Close;
DMHotel.ADODataSet_roomdebt.Prepared:=false;
DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
' checkornot=:yesornot' ;
// DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠帐' ;
DMHotel.ADODataSet_roomdebt.Prepared:=true;
DMHotel.ADODataSet_roomdebt.Open;
but_printdebt.Enabled:=true;
end;
procedure Tformroomcheck.Button2Click(Sender: TObject);
var
vtest:extended;
begin
if ed_customername.Text='' then
begin
showmessage('你的顾客姓名为空,请重新输入!' );
exit;
end;
//判断各个控件是否为空,要是空就要将值设置为零
if ed_debtkalaok.Text='' then
ed_debtkalaok.Text:=inttostr(0);
if ed_debtballroom.Text='' then
ed_debtballroom.Text:=inttostr(0);
if ed_debtcommerce.Text='' then
ed_debtcommerce.Text:=inttostr(0);
if ed_debtsuproom.Text='' then
ed_debtsuproom.Text:=inttostr(0);
if ed_debtsupsecond.Text='' then
ed_debtsupsecond.Text:=inttostr(0);
if ed_debthairdressing.Text='' then
ed_debthairdressing.Text:=inttostr(0);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?