📄 hotelrecordunit.pas
字号:
unit HotelRecordUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, ValEdit, ExtCtrls, ComCtrls;
type
TFrmHotelRecord = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
AddSB: TSpeedButton;
CloseSB: TSpeedButton;
GuestIDCB: TComboBox;
FeeKindCB: TComboBox;
Panel1: TPanel;
DBGrid1: TDBGrid;
Splitter1: TSplitter;
LookSB: TSpeedButton;
SpeedButton3: TSpeedButton;
Label2: TLabel;
VLE: TValueListEditor;
PrintSB: TSpeedButton;
LookUpIDSB: TSpeedButton;
OutGuestIDCB: TComboBox;
Label3: TLabel;
StatusBar1: TStatusBar;
procedure AddSBClick(Sender: TObject);
procedure LookSBClick(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure CloseSBClick(Sender: TObject);
procedure PrintSBClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure LookUpIDSBClick(Sender: TObject);
procedure OutGuestIDCBChange(Sender: TObject);
procedure GuestIDCBChange(Sender: TObject);
private
ID:string;
{ Private declarations }
public
constructor Create(AOwner:TComponent;N:integer);
{ Public declarations }
end;
var
FrmHotelRecord: TFrmHotelRecord;
function GetMyDateTime : TDateTime; stdcall; external 'MyDll.dll';
function GetMoney(T:Pchar):double; stdcall; external 'MyDll.dll';
implementation
uses DataModuleUnit, GetYourInputUnit, QRHotelFeeUnit, QRRoomFeeUnit;
{$R *.dfm}
procedure TFrmHotelRecord.AddSBClick(Sender: TObject);
var
Card,YourName,SQLStr,FeeStr,PayTime:string;
FeeValue:double;
begin
if (ID='')or(FeeKindCB.Text='') then
begin
Showmessage('请确定客户编号和费用类别!');
exit;
end;
with DataModule1.qGInfo do
begin
Close;
SQL.Clear;
SQL.Add('select GuestID,GuestName,CardID');
SQL.Add('from tbGInfo where GuestID='+ID);
Open;
YourName:=FieldByName('GuestName').AsString;
Card:=FieldByName('CardID').AsString;
end;
FeeValue:=GetMoney(PChar('客户编号:'+ID+' 客户姓名:'+YourName+' '
+ #13#10#13#10+' 证件号码: '+Card+' 请核实! '));
if FeeValue<1 then exit;
FeeStr:=Format('%10.2f',[FeeValue]);
PayTime:=DateTimeToStr(GetMyDateTime);
SQLStr:='Insert tbGHotelFee(GuestID,GuestName,CardID,FeeOffice,FeeDinner,FeePlay,FeeShop,FeeOther,PayDateTime)'
+' Values('+ID+',"'+YourName+'","'+Card+'",';
case FeeKindCB.ItemIndex of
0: SQLStr:=SQLStr+FeeStr+',0.00,0.00,0.00,0.00,"'+ PayTime+'")';
1: SQLStr:=SQLStr+'0.00,'+FeeStr+',0.00,0.00,0.00,"'+ PayTime+'")';
2: SQLStr:=SQLStr+'0.00,0.00,'+FeeStr+',0.00,0.00,"'+ PayTime+'")';
3: SQLStr:=SQLStr+'0.00,0.00,0.00,'+FeeStr+',0.00,"'+ PayTime+'")';
4: SQLStr:=SQLStr+'0.00,0.00,0.00,0.00,'+FeeStr+',"'+ PayTime+'")';
else exit;
end;
with DataModule1.qGHotelFee do
begin
Close;
SQL.Clear;
SQL.Add(SQLStr);
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select GuestID 客户编号, GuestName 客户姓名,CardID 证件号码,');
SQL.Add('FeeOffice 商务费, FeeDinner 餐饮费,FeePlay 娱乐费,FeeShop 购物费,');
SQL.Add('FeeOther 其它费用 from tbGHotelFee where GuestID='+ID);
Open;
end;
end;
procedure TFrmHotelRecord.LookSBClick(Sender: TObject);
begin
if (ID='')then
begin
Showmessage('请确定客户编号!');
exit;
end;
with DataModule1.qGHotelFee do
begin
Close;
SQL.Clear;
SQL.Add('select GuestID as 客户编号, GuestName as 客户姓名,CardID as 证件号码,');
SQL.Add('FeeOffice as 商务费, FeeDinner as 餐饮费,FeePlay as 娱乐费,');
SQL.Add(' FeeShop as 购物费,FeeOther as 其它费用,PayDateTime as 消费时间');
SQL.Add('from tbGHotelFee where GuestID='+ID);
Open;
end;
end;
procedure TFrmHotelRecord.SpeedButton3Click(Sender: TObject);
var
Total:Currency;
begin
if (ID='')then
begin
Showmessage('请确定客户编号!');
exit;
end;
with DataModule1.qGHotelFee do
begin
Close;
SQL.Clear;
SQL.Add('select GuestID 客户编号, GuestName 客户姓名,CardID 证件号码,');
SQL.Add('sum(FeeOffice) as 商务费, sum(FeeDinner) as 餐饮费,sum(FeePlay) as 娱乐费,');
SQL.Add('sum(FeeShop) as 购物费, sum(FeeOther) as 其它费用, GetDate() 消费时间');
SQL.Add(' from tbGHotelFee where GuestID='+ID);
SQL.Add(' GROUP BY GuestID,GuestName,CardID');
Open;
Total:=FieldByName('商务费').Value+FieldByName('餐饮费').Value
+FieldByName('娱乐费').Value +FieldByName('购物费').Value
+FieldByName('其它费用').Value ;
VLE.Values['合计']:=Format('消费合计: %8.2f',[Total]);
end;
end;
procedure TFrmHotelRecord.CloseSBClick(Sender: TObject);
begin
Close;
end;
constructor TFrmHotelRecord.Create(AOwner: TComponent; N: integer);
begin
inherited Create(AOwner);
if N>=0 then //为添加打开该窗体
AddSB.Visible:=true
else
begin
AddSB.Visible:=false; //为查询打开该窗体
FeeKindCB.Enabled:=false;
end;
FeeKindCB.ItemIndex:=N;
end;
procedure TFrmHotelRecord.PrintSBClick(Sender: TObject);
begin
with QReport2 do
begin
DataSet:=DBGrid1.DataSource.DataSet;
GuestID.DataField:='客户编号';
GuestName.DataField :='客户姓名';
FeeOffice.DataField:='商务费';
FeeDinner.DataField:='餐饮费';
FeePlay.DataField:='娱乐费';
FeeShop.DataField:='购物费';
FeeOther.DataField:='其它费用';
PayTime.DataField:='消费时间';
Preview;
end;
end;
procedure TFrmHotelRecord.FormCreate(Sender: TObject);
begin
GuestIDCB.Items:=FindGuestID;
end;
procedure TFrmHotelRecord.LookUpIDSBClick(Sender: TObject);
var
GName:string;
begin
GName:=GetYourString;
with DataModule1.qGInfo do
begin
Close;
sql.Clear;
SQL.Add('SELECT GuestID From tbGInfo where GuestName="'+GName+'"');
Open;
GuestIDCB.Clear;
First;
while not eof do
begin
GuestIDCB.Items.Add(Fields[0].Value);
Next;
end;
GuestIDCB.ItemIndex:=0;
if RecordCount>1 then
Showmessage('存在同名客户,请利用客户编号确定是哪一位!')
else if RecordCount=1 then
GuestIDCB.OnChange(self);
end;
end;
procedure TFrmHotelRecord.OutGuestIDCBChange(Sender: TObject);
begin
ID:=IntToStr(0-OutGuestIDCB.ItemIndex);;
LookSB.OnClick(self);
end;
procedure TFrmHotelRecord.GuestIDCBChange(Sender: TObject);
begin
ID:=GuestIDCB.Text;
LookSB.OnClick(self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -