unitsupcheck.pas
来自「自己做过的工程」· PAS 代码 · 共 324 行
PAS
324 行
unit unitsupcheck;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Grids, DBGrids, DB, StdCtrls;
type
Tformsupcheck = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label1: TLabel;
ed_sdid: TEdit;
but_findrecord: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Label3: TLabel;
Label4: TLabel;
ed_totalfee: TEdit;
Label5: TLabel;
GroupBox1: TGroupBox;
cbox_isroomer: TCheckBox;
rbut_cash: TRadioButton;
rbut_sign: TRadioButton;
ed_roomno: TEdit;
Label2: TLabel;
Panel4: TPanel;
but_cash: TButton;
but_sign: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button1: TButton;
Label9: TLabel;
ed_discount: TEdit;
procedure rbut_cashClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure rbut_signClick(Sender: TObject);
procedure cbox_isroomerClick(Sender: TObject);
procedure but_findrecordClick(Sender: TObject);
procedure but_cashClick(Sender: TObject);
procedure but_signClick(Sender: TObject);
procedure ed_discountExit(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formsupcheck: Tformsupcheck;
gls_totalfee:double;
gls_sdid:string;
gls_sroomno:string;
implementation
uses unitDMHotel,unitsupmanage;
{$R *.dfm}
//退出
procedure Tformsupcheck.Button1Click(Sender: TObject);
begin
close;
end;
//选择现金消费
procedure Tformsupcheck.rbut_cashClick(Sender: TObject);
begin
but_cash.Enabled:=true;
but_sign.Enabled:=false;
cbox_isroomer.Enabled:=false;
ed_roomno.Enabled:=false;
ed_roomno.Text:='';
but_cash.SetFocus;
end;
//选择挂帐消费
procedure Tformsupcheck.rbut_signClick(Sender: TObject);
begin
but_cash.Enabled:=false;
but_sign.Enabled:=true;
cbox_isroomer.Enabled:=true;
cbox_isroomer.SetFocus;
end;
//酒店房客消费
procedure Tformsupcheck.cbox_isroomerClick(Sender: TObject);
begin
if cbox_isroomer.Checked=true then //是房客
begin
ed_roomno.Enabled:=true;
ed_roomno.Text:='';
ed_roomno.SetFocus;
end
else //非房客
begin
ed_roomno.Enabled:=false;
ed_roomno.Text:='';
end;
end;
//查找消费记录
procedure Tformsupcheck.but_findrecordClick(Sender: TObject);
var
test_sdid:integer;
ls_fee:double;
begin
gls_sdid:=ed_sdid.Text;
//判断是否是数字型
if (not tryStrToInt(gls_sdid,test_sdid)) and (trim(gls_sdid)<>'') then
begin
MessageBox(handle,'您输入的就餐记录号不是一个数字类型!','错误',MB_OK or MB_ICONERROR);
ed_sdid.SetFocus;
exit;
end;
DMHotel.ds_sup_detail.Open;
DMHotel.ds_sup_detail.Requery;
//如果记录不存在
if (DMHotel.ds_sup_detail.Locate('sdid',test_sdid,[])=false) or (trim(gls_sdid) = '') then
begin
MessageBox(handle,'该条记录不存在!','提示',MB_OK or MB_ICONINFORMATION);
ed_sdid.SetFocus;
exit;
end;
//取得包间号
if DMHotel.ds_sup_detail.FieldValues['sroomno']<>null then
gls_sroomno:=DMHotel.ds_sup_detail.FieldValues['sroomno'];
//查找消费明细
DMHotel.SetSupConsumeDetailQueryView(gls_sdid);
//计算总金额
gls_totalfee:=0;
DMHotel.ds_sup_consume_detail_query.First;
while not DMHotel.ds_sup_consume_detail_query.Eof do
begin
ls_fee:=DMHotel.ds_sup_consume_detail_query.FieldValues['supmoney'];
gls_totalfee:=gls_totalfee+ls_fee;
DMHotel.ds_sup_consume_detail_query.Next;
end;
//显示总金额
ed_totalfee.Text:=floattostr(gls_totalfee);
but_cash.Enabled:=true;
rbut_cash.Enabled:=true;
rbut_sign.Enabled:=true;
ed_discount.Enabled:=true;
rbut_cash.Checked:=true;
end;
//现金消费
procedure Tformsupcheck.but_cashClick(Sender: TObject);
var
checktime: Tdatetime;
ls_discount:string;
ls_statuscolor:Tcolor;
begin
checktime:=date+time;
//取得折扣数
if ed_discount.Text='' then
ls_discount:='10'
else
ls_discount:=ed_discount.Text;
SQL:='update sup_detail set checktime='+''''+datetimetostr(checktime)+''''+','+
'issign='+''''+'0'+''''+','+'ischeck='+''''+'yes'+''''+','+
'totalfee='+''''+ed_totalfee.Text+''''+','+'discount='+''''+ls_discount+''''+' '+
'where sdid='+''''+gls_sdid+'''';
DMHotel.ADOQuery1.SQL.Text:=SQL;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('结账失败!');
exit;
end;
//如果是包间消费,改变包间状态。
if gls_sroomno<>'' then
begin
ls_statuscolor:=color1;
formsupmanage.sroomstatus_change(ls_statuscolor,strtoint(gls_sroomno),'空闲');
end;
showmessage('结账完成!');
DMHotel.SetSupConsumeDetailQueryView(gls_sdid);
but_cash.Enabled:=false;
rbut_cash.Enabled:=false;
rbut_sign.Enabled:=false;
cbox_isroomer.Enabled:=false;
ed_discount.Enabled:=false;
ed_roomno.Enabled:=false;
ed_sdid.Text:='';
ed_totalfee.Text:='0';
ed_discount.Text:='10';
ed_sdid.SetFocus;
end;
//挂帐消费
procedure Tformsupcheck.but_signClick(Sender: TObject);
var
ls_checktime: Tdatetime;
ls_isroomer: string;
ls_discount:string;
ls_statuscolor:Tcolor;
begin
//取得折扣数
if ed_discount.Text='' then
ls_discount:='10'
else
ls_discount:=ed_discount.Text;
//是否房客
if cbox_isroomer.Checked=true then
begin
ls_isroomer:='1';
//检查改房间是否处在入住状态
///////////////未完
end
else
ls_isroomer:='0';
ls_checktime:=date+time;
SQL:='update sup_detail set checktime='+''''+datetimetostr(ls_checktime)+''''+','+
'issign='+''''+'1'+''''+','+'ischeck='+''''+'yes'+''''+','+
'isroomer='+''''+ls_isroomer+''''+','+'roomno='+''''+ed_roomno.Text+''''+','+
'totalfee='+''''+ed_totalfee.Text+''''+','+'discount='+''''+ls_discount+''''+' '+
'where sdid='+''''+gls_sdid+'''';
DMHotel.ADOQuery1.SQL.Text:=SQL;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('挂账失败!');
exit;
end;
//如果是包间消费,改变包间状态。
if gls_sroomno<>'' then
begin
ls_statuscolor:=color1;
formsupmanage.sroomstatus_change(ls_statuscolor,strtoint(gls_sroomno),'空闲');
end;
showmessage('挂账完成!');
DMHotel.SetSupConsumeDetailQueryView(gls_sdid);
but_sign.Enabled:=false;
rbut_cash.Enabled:=false;
rbut_sign.Enabled:=false;
cbox_isroomer.Enabled:=false;
ed_discount.Enabled:=false;
ed_roomno.Enabled:=false;
ed_sdid.Text:='';
ed_totalfee.Text:='0';
ed_discount.Text:='10';
ed_roomno.Text:='';
ed_sdid.SetFocus;
end;
procedure Tformsupcheck.ed_discountExit(Sender: TObject);
var
test_discount:double;
begin
//判断是否是数字型
if (not tryStrToFloat(ed_discount.Text,test_discount)) and (trim(ed_discount.Text)<>'') then
begin
MessageBox(handle,'您输入的折扣数不是一个数字类型!','错误',MB_OK or MB_ICONERROR);
ed_discount.Text:='';
ed_discount.SetFocus;
exit;
end;
//是否是正常折扣数
if (strtofloat(ed_discount.Text)<0) or (strtofloat(ed_discount.Text)>10) then
begin
MessageBox(handle,'您输入的折扣数不正确!','错误',MB_OK or MB_ICONERROR);
ed_discount.Text:='';
ed_discount.SetFocus;
exit;
end;
//显示折扣后总金额
ed_totalfee.Text:=floattostr(gls_totalfee*strtofloat(ed_discount.Text)/10);
end;
procedure Tformsupcheck.FormShow(Sender: TObject);
begin
DMHotel.ds_sup_consume_detail_query.Close;
but_cash.Enabled:=false;
rbut_cash.Enabled:=false;
rbut_sign.Enabled:=false;
cbox_isroomer.Enabled:=false;
ed_discount.Enabled:=false;
ed_roomno.Enabled:=false;
ed_sdid.Text:='';
ed_totalfee.Text:='0';
ed_discount.Text:='10';
ed_sdid.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?