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

📄 unit_xf.pas

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

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

Type
 TxfProj=Record
 lsh,Memo:String;
 CP_ID,AdminID,Zsflag:integer;
 Dj,rate,Num,Totalmoney:Currency;
 OperTime:TdateTime;
end;

Type
 TXfMaster=Record
 LshCode,VipCode,FpCode:String;
 Xf_Money,Rate,Ys_Money,SS_Money:Currency;
 Xf_Type,AdminID,ManNum,jz_flag,Fp_flag:integer;
 OperTime:TdateTime;
End;

type
 TXF_info=class(TObject)

 private
  Mydata:TDL_Data;
  SCds,MCds:TclientDataSet;
  Str:string;
 public
  constructor create;
  destructor destroy;override;
  //开单后是否有消费
  Function Is_Xf_Data(CTID:Integer):Boolean;

  //增加消费项目
  Procedure Add_XfProject(XfCpInfo:TxfProj);

  //获取指定消费流水号的消费项目信息
  Function GetDatailTmpList(Lsh:String):OLEVariant;

  //获取消费金额
  Function GetXfMoney(Lsh:String):Currency;

  //获取消费数量
  Function GetXfNum(Lsh:String):Integer;

  //消费单品打折
  Procedure XfCp_Rate(XfCpID:integer;TmpRate,RateMoney:Currency);

  //删除菜品
  Procedure DelCp(CpID:Integer);

  //菜品备注
  Procedure Update_CpMemo(CpID:Integer;TmpMemo:String);

  //菜品备注列表
  Function GetMemoInfo:TStrings;

  //生成结帐单号
  Function JZD_Code:String;

  //写入消费主数据库
  Procedure AddXfMaster(Tmp:TXfMaster);
 end;

implementation

{ TCT_info }

procedure TXF_info.AddXfMaster(Tmp: TXfMaster);
begin
 Str:='Insert Into Xf_Master (LshCode,XFmoney,Rate,YSmoney,SSMoney,XF_Type,';
 Str:=Str+'AdminID,OperTime,VipCode,Jz_Flag,Fp_Flag,FpCode,ManNum) Values (';
 Str:=Str+''''+Tmp.LshCode+''',';
 Str:=Str+FloatTostr(Tmp.Xf_Money)+',';
 Str:=Str+FloatToStr(Tmp.Rate)+',';
 Str:=Str+FloatToStr(Tmp.Ys_Money)+',';
 Str:=Str+FloatToStr(Tmp.SS_Money)+',';
 Str:=Str+IntToStr(Tmp.Xf_Type)+',';
 Str:=Str+IntToStr(Tmp.AdminID)+',';
 Str:=Str+''''+DatetimeToStr(Tmp.OperTime)+''',';
 Str:=Str+''''+Tmp.VipCode+''',';
 Str:=Str+IntToStr(Tmp.jz_flag)+',';
 Str:=Str+IntToStr(tmp.Fp_flag)+',';
 Str:=Str+''''+Tmp.FpCode+''',';
 Str:=Str+IntToStr(Tmp.ManNum)+')';
 MyData.Exec_SQL(Str);
end;

procedure TXF_info.Add_XfProject(XfCpInfo:TxfProj);
begin
 Str:='Insert Into Xf_Datail_Tmp(Lsh,Cp_id,Num,Dj,Rate,TotalMoney,Memo,Admin_id,Oper_time,Zsflag) values (';
 Str:=Str+''''+trim(XfCpinfo.lsh)+''',';
 Str:=Str+Inttostr(XfCpinfo.CP_ID)+',';
 Str:=Str+floatToStr(XfCpInfo.Num)+',';
 Str:=Str+FloatToStr(XfCpInfo.Dj)+',';
 Str:=Str+FloattoStr(XfCpinfo.rate)+',';
 Str:=Str+FloatToStr(XfCpinfo.Num*XfCpinfo.Dj*XfCpinfo.rate)+',';
 Str:=Str+''''+trim(XfCpinfo.Memo)+''',';
 Str:=Str+IntToStr(XfCpinfo.AdminID)+',';
 Str:=Str+''''+DateTimeToStr(XfCpinfo.OperTime)+''',';
 Str:=Str+IntToStr(XfCpInfo.Zsflag)+')';
 Mydata.Exec_SQL(Str);
end;

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

procedure TXF_info.DelCp(CpID: Integer);
begin
 if MessageDlg('是否删除该菜品?',mtConfirmation, [mbYes, mbNo], 0)=mrYes then
 Begin
  Str:='Delete From Xf_Datail_Tmp Where ID='+IntToStr(CpID);
  Mydata.Exec_SQL(Str);
  Showmessage('删除菜品成功');
 End;
end;

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

function TXF_info.GetDatailTmpList(Lsh: String): OLEVariant;
begin
 Str:='Select * from View_Datail_Tmp Where Lsh='''+trim(Lsh)+'''';
 Result:=Mydata.Open_SQL(Str);
end;

function TXF_info.GetMemoInfo: TStrings;
Var
 Tmp:TStrings;
begin
 Tmp:=TStringList.Create;
 Mcds.Data:=Mydata.Open_SQL('Select * from Cp_MemoInfo Order By Id');
 While Not MCds.Eof Do
 Begin
  Tmp.Add(Mcds.FieldByName('Name').AsString);
  Mcds.Next;
 End;
 Result:=Tmp;
end;

function TXF_info.GetXfMoney(Lsh: String): Currency;
begin
 Result:=-1;
 Str:='Select Sum(TotalMoney) AS TotalMoney From Xf_Datail_tmp Where Lsh='''+Trim(Lsh)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.FieldByName('TotalMoney').AsCurrency;
end;

function TXF_info.GetXfNum(Lsh: String): Integer;
begin
 Result:=-1;
 Str:='Select Count(*) AS TotalNum From Xf_Datail_tmp Where Lsh='''+Trim(Lsh)+'''';
 Mcds.Data:=MyData.Open_SQL(Str);
 Result:=Mcds.FieldByName('TotalNum').AsInteger;
end;

function TXF_info.Is_Xf_Data(CTID: Integer): Boolean;
Var
 TmpZdh:String;
begin
 Result:=False;
 Str:='Select Curr_LSH from CT_info Where Id='+IntToStr(CTID);
 Mcds.Data:=MyData.Open_SQL(Str);
 TmpZdh:=Mcds.FieldByName('Curr_LSH').AsString;

 Str:='Select * From XF_Datail_Tmp Where LSH='''+Trim(TmpZdh)+'''';
 Mcds.Data:=Mydata.Open_SQL(Str);
 if Mcds.RecordCount<>0 Then Result:=True;
end;

function TXF_info.JZD_Code: 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(ZDh,Xf_Date) Values (1,'''+DateToStr(Now)+''')';
  MyData.Exec_SQL(Str);
  TmpCnt:=1;
 end
 Else
  TmpCnt:=MCds.FieldByName('ZDh').AsInteger;

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

end;

procedure TXF_info.Update_CpMemo(CpID: Integer;TmpMemo:String);
begin
 Str:='Update Xf_Datail_Tmp Set Memo='''+Trim(TmpMemo)+'''  ';
 Str:=Str+'Where ID='+InttoStr(CpID);
 MyData.Exec_SQL(Str);
end;

procedure TXF_info.XfCp_Rate(XfCpID: integer; TmpRate,RateMoney: Currency);
begin

if (TmpRate>0) and  (TmpRate<1) Then
  Begin
  Str:='Update Xf_Datail_Tmp Set Rate='+FloatToStr(TmpRate)+',';
  Str:=Str+'TotalMoney='+FloatToStr(RateMoney)+',';
  Str:=Str+'zsflag='+'3'+'  ';
  Str:=Str+'Where ID='+IntToStr(XfCpID);
 End;

if TmpRate=1 Then
  Begin
  Str:='Update Xf_Datail_Tmp Set Rate='+FloatToStr(TmpRate)+',';
  Str:=Str+'TotalMoney='+FloatToStr(RateMoney)+',';
  Str:=Str+'zsflag='+'1'+'  ';
  Str:=Str+'Where ID='+IntToStr(XfCpID);
 End;


if TmpRate=0 then
 Begin
  Str:='Update Xf_Datail_Tmp Set Rate='+FloatToStr(TmpRate)+',';
  Str:=Str+'TotalMoney='+FloatToStr(RateMoney)+',';
  Str:=Str+'zsflag='+'2'+'  ';
  Str:=Str+'Where ID='+IntToStr(XfCpID);
 end;


 MyData.Exec_SQL(Str);
end;

end.

⌨️ 快捷键说明

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