⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_ct.pas

📁 一个小型餐饮管理系统,可支持小票打印.还存在一些小问题,希望朋友们帮助完成. QQ:15372627 E-mail:hdw802.163.com
💻 PAS
字号:
unit Unit_CT;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls, ExtCtrls,DB, DBClient,Data_DL,Grids;

type
 TCT_info=class(TObject)

 private
  Mydata:TDL_Data;
  SCds,MCds:TclientDataSet;
  Str:string;
 public
  constructor create;
  destructor destroy;override;
  Function CTList(TmpRoom:String):OLEVariant;  //获取餐台列表
  Procedure CTStatus(RoomName,CT_Name:String;Tmp_Status:Integer);   //修改餐台状态
  Function CTTotal:Integer;         //获取餐台总数
  Function CTUsed:Integer;          //获取餐台当前占用数
  Function CTEmpty:Integer;         //获取餐台当前可供使用数
  Function CTYD:Integer;            //获取餐台当前预订数
  Function CTStop:Integer;          //获取餐台当前停用数
  Function CTUseRate:Real;          //获取餐台当前上座率
  Function Get_KTTime(CTID:Integer):TdateTime;   //获取宾客进店时间
  Function Get_RoomID(Room:String):Integer;   //获取指定餐台的房间ID号
  Function Get_RoomList:TStrings;   //获取房间名称列表信息
  Function Get_CTNameList(RoomName:String):TStrings;  //获取餐台名称列表信息

  Function CTCurr_LSH:String;   //生成餐台定单号
  Procedure Update_LSH(CTID:Integer;Flag:Integer);          //修改餐台库里的定单号
  Function CT_ID(RoomName,CT_Name:String):Integer;           //获取对应餐台的ID
  Function Get_CTStatus(CTID:Integer):Integer;    //获取餐台当前状态
  Procedure UpdataLSH;               //更新计数器值
  Procedure UpDateCTStatus(CTID,Status:Integer);  //根据餐台ID,修改餐台状态  (0:空闲;1:占用;2:预订;3:停用;)
  Procedure UpDateMark(CTID:Integer;Memo:String);  //根据餐台ID,修改备注信息
  Procedure UpDateKT_Time(CTID:Integer;Time:TDateTime); //根据餐台ID更新开单时间
  Function Get_CTCurr_LSH(CTID:Integer):String;     //根据餐台ID返回当前定单号

end;
 
implementation

{ TCT_info }

constructor TCT_info.create;
begin
 Mydata:=TDL_Data.Create(nil);
 SCds:=TClientDataSet.Create(nil);
 Mcds:=TClientDataSet.Create(nil);
end;

function TCT_info.CTCurr_LSH: String;
Var
 Tmp,CntS:String;
 TmpCnt,CntLen,i:Integer;
begin
 TmpCnt:=-1;
 CntS:='';
 Tmp:=FormatDateTime('YYMMDD',Now);
 Str:='Select * From XF_Counter Where Xf_Date='''+DateToStr(Now)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 If Mcds.RecordCount=0 Then
 Begin
  Str:='Insert Into XF_Counter(Lsh,Xf_Date) Values (1,'''+DateToStr(Now)+''')';
  MyData.Exec_SQL(Str);
  TmpCnt:=1;
 end
 Else
  TmpCnt:=MCds.FieldByName('Lsh').AsInteger;

 CntLen:=Length(IntToStr(TmpCnt));
 if CntLen<4 Then
  For i:=CntLen To 3 do
   Cnts:=Cnts+'0';
 Result:='LSH-'+Tmp+Cnts+IntToStr(TmpCnt);
end;

function TCT_info.CTEmpty: Integer;
begin
 Result:=-1;
 Str:='select * from CT_Info Where (Lv=2) And (CT_Status=0)';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.RecordCount;
end;

function TCT_info.CTList(TmpRoom: String): OLEVariant;
begin
 Str:='Select * from CT_Info Where Type_Name='''+Trim(TmpRoom)+'''';
 Mcds.Data:=Mydata.Open_SQL(Str);
 if MCds.RecordCount<>0 Then
  Begin
   Str:='Select * From CT_Info Where SS_ID='+Mcds.fieldByName('IID').AsString+'';
   Result:=Mydata.Open_SQL(Str);
  End;

end;

procedure TCT_info.CTStatus(RoomName, CT_Name: String; Tmp_Status: Integer);
Var
 Tmp_IID,Tmp:Integer;
begin
 Str:='Select * from CT_Info Where Type_name='''+Trim(RoomName)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 Tmp_IID:=Mcds.FieldByname('IID').AsInteger;

 Str:='Select * From CT_info Where (Type_Name='''+Trim(CT_Name)+''') And (';
 Str:=Str+'SS_ID='+IntToStr(Tmp_IID)+')';
 Mcds.Data:=MyData.Open_SQL(Str);
 Tmp_IID:=Mcds.FieldByname('IID').AsInteger;

 Str:='Update CT_Info Set CT_Status='+IntTostr(Tmp_Status);
 Str:=Str+' Where IID='+IntToStr(Tmp_IID);
 MyData.Exec_SQL(Str);
end;

function TCT_info.CTStop: Integer;
begin
  Result:=-1;
 Str:='select * from CT_Info Where (Lv=2) And (CT_Status=2)';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.RecordCount;
end;

function TCT_info.CTTotal: Integer;
begin
 Result:=-1;
 Str:='select * from CT_Info Where Lv=2';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.RecordCount;
end;

function TCT_info.CTUsed: Integer;
begin
 Result:=-1;
 Str:='select * from CT_Info Where (Lv=2) And (CT_Status=1)';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.RecordCount;
end;

function TCT_info.CTUseRate: Real;
Var
 TmpTotal,TmpUsed:Integer;
begin
 Result:=CTUsed/CTTotal;
end;

function TCT_info.CTYD: Integer;
begin
 Result:=-1;
 Str:='select * from CT_Info Where (Lv=2) And (CT_Status=3)';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.RecordCount;
end;



function TCT_info.CT_ID(RoomName, CT_Name: String): Integer;
Var
 Tmp_IID,Tmp:Integer;
begin
 Result:=-1;
 Str:='Select * from CT_Info Where Type_name='''+Trim(RoomName)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 Tmp_IID:=Mcds.FieldByname('IID').AsInteger;

 Str:='Select * From CT_info Where (Type_Name='''+Trim(CT_Name)+''') And (';
 Str:=Str+'SS_ID='+IntToStr(Tmp_IID)+')';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.FieldByname('ID').AsInteger;
end;

destructor TCT_info.destroy;
begin
  FreeAndNil(MYdata);
  FreeAndNil(SCds);
  FreeAndNil(Mcds);
  inherited;
end;

function TCT_info.Get_CTCurr_LSH(CTID: Integer): String;
begin
 Result:='';
 Str:='Select * From CT_Info Where ID='+IntToStr(CTID);
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.FieldByName('Curr_LSH').AsString;
end;

function TCT_info.Get_CTNameList(RoomName:String): TStrings;
Var
 Tmp:TStrings;
 RoomID:integer;
begin
 Tmp:=TStringList.Create;
 Str:='Select * from CT_Info Where Type_name='''+Trim(RoomName)+'''';
 Mcds.Data:=Mydata.Open_SQL(Str);
 RoomID:=Mcds.FieldByName('IID').AsInteger;

 Str:='Select * from Ct_info Where (SS_ID='+IntTostr(RoomID)+') and (ct_STatus=0)';
 Mcds.Data:=Mydata.Open_SQL(Str);
 While Not MCds.Eof Do
 Begin
  Tmp.Add(Mcds.FieldByName('Type_Name').AsString);
  Mcds.Next;
 End;
 Result:=Tmp;

end;

function TCT_info.Get_CTStatus(CTID: Integer): Integer;
begin
 Result:=-1;
 Str:='Select * From CT_Info Where ID='+IntToStr(CTID);
 MCds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.FieldByName('CT_Status').AsInteger;
end;

function TCT_info.Get_KTTime(CTID: Integer): TdateTime;
begin
 Str:='Select * from Ct_info Where ID='+IntToStr(CTID);
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.fieldByName('KT_Time').AsVariant;
end;

function TCT_info.Get_RoomID(Room: String): Integer;
begin
 Result:=-1;
 Str:='Select * From Ct_Info Where Type_name='''+Trim(Room)+'''';
 Mcds.Data:=Mydata.Open_SQL(Str);
 Result:=Mcds.FieldByName('IID').AsInteger;
end;

function TCT_info.Get_RoomList: TStrings;
Var
 Tmp:TStrings;
begin
 Tmp:=TStringList.Create;
 Mcds.Data:=Mydata.Open_SQL('Select * from CT_Info Where Lv=1 Order By Id');
 While Not MCds.Eof Do
 Begin
  Tmp.Add(Mcds.FieldByName('Type_Name').AsString);
  Mcds.Next;
 End;
 Result:=Tmp;
end;

procedure TCT_info.UpdataLSH;
Var
 TmpCnt:Integer;
begin
 Str:='Select * From XF_Counter Where Xf_Date='''+DateToStr(Now)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 TmpCnt:=Mcds.FieldByName('Lsh').AsInteger;
 Str:='Update Xf_Counter Set Lsh='+IntToStr(TmpCnt+1);
 Str:=Str+' Where Xf_Date='''+DateToStr(Now)+'''';
 MyData.Exec_SQL(Str);
end;

procedure TCT_info.UpDateCTStatus(CTID,Status:Integer);
begin
 Str:='Update CT_Info Set CT_Status='+IntTostr(Status);
 Str:=Str+' Where ID='+IntToStr(CTID);
 MyData.Exec_SQL(Str);
end;

procedure TCT_info.UpDateKT_Time(CTID: Integer; Time: TDateTime);
begin
 Str:='Update CT_Info Set Kt_time='''+DatetimeToStr(time)+'''';
 Str:=Str+' Where ID='+IntToStr(CTID);
 MyData.Exec_SQL(Str);
end;

procedure TCT_info.UpDateMark(CTID: Integer; Memo: String);
begin
 Str:='Update CT_Info Set Mark='''+Memo+'''';
 Str:=Str+' Where ID='+IntToStr(CTID);
 MyData.Exec_SQL(Str);
end;

procedure TCT_info.Update_LSH(CTID:Integer;Flag:Integer);
begin
 if Flag=0 Then
 Begin
 UpDateMark(CTID,'');                            
 UpDateKT_Time(CTID,StrToDateTime('1973-10-07 11:00:00'));
 Str:='Update CT_Info Set Curr_LSH='''+''+'''';
 Str:=Str+' Where ID='+IntToStr(CTID);
 end;
 
 if Flag=1 Then
 begin
 Str:='Update CT_Info Set Curr_LSH='''+CTCurr_LSH+'''';
 Str:=Str+' Where ID='+IntToStr(CTID);
 End;
 MyData.Exec_SQL(Str);

end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -