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

📄 mc_krmd_jz.pas

📁 异洲酒店管理系统
💻 PAS
字号:
unit MC_KRMD_JZ;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, StdCtrls, Db, DBTables, ExtCtrls, DBCtrls, Buttons,
  QuickRpt, Qrctrls;

type
  TKRMD_JZ = class(TForm)
    GroupBox1: TGroupBox;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid2: TDBGrid;
    Panel1: TPanel;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Query2: TQuery;
    Bevel1: TBevel;
    Label13: TLabel;
    Label14: TLabel;
    GroupBox3: TGroupBox;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    DBText6: TDBText;
    DBText7: TDBText;
    DBText8: TDBText;
    Bevel2: TBevel;
    Panel2: TPanel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label26: TLabel;
    Label32: TLabel;
    BitBtn1: TBitBtn;
    Bevel3: TBevel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    GroupBox4: TGroupBox;
    BitBtn4: TBitBtn;
    GroupBox5: TGroupBox;
    ListBox1: TListBox;
    BitBtn5: TBitBtn;
    Query3: TQuery;
    QuickRep1: TQuickRep;
    TitleBand1: TQRBand;
    QRLabel10: TQRLabel;
    QRLabel11: TQRLabel;
    QRLabel12: TQRLabel;
    QRLabel13: TQRLabel;
    QRLabel15: TQRLabel;
    QRShape2: TQRShape;
    QRLabel1: TQRLabel;
    QRShape1: TQRShape;
    QRDBText1: TQRDBText;
    QRLabel2: TQRLabel;
    QRLabel5: TQRLabel;
    QRDBText4: TQRDBText;
    DetailBand1: TQRBand;
    QRDBText8: TQRDBText;
    QRDBText10: TQRDBText;
    QRDBText11: TQRDBText;
    QRDBText12: TQRDBText;
    QRDBText14: TQRDBText;
    SummaryBand1: TQRBand;
    QRShape3: TQRShape;
    QRDBText5: TQRDBText;
    QRLabel7: TQRLabel;
    QRExpr1: TQRExpr;
    QRLabel17: TQRLabel;
    QRLabel9: TQRLabel;
    QRLabel16: TQRLabel;
    QRLabel18: TQRLabel;
    QRLabel3: TQRLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure QuickRep1Preview(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure ListBox1KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  KRMD_JZ: TKRMD_JZ;

implementation

uses MC_DYYLBrose, MC_TLCYGLXT, MC_KRMD;

{$R *.DFM}

procedure TKRMD_JZ.FormShow(Sender: TObject); //启动时将焦点跳转到不打折结账按钮
begin
 BitBtn1.SetFocus;
end;
procedure TKRMD_JZ.QuickRep1Preview(Sender: TObject);
begin
DYYLBrose.QrPreview1.QRPrinter:=QuickRep1.QRPrinter;
end;

procedure TKRMD_JZ.BitBtn4Click(Sender: TObject); //打印点菜信息
begin
 QRLabel18.Caption:=Label12.Caption;
 QRLabel16.Caption:=Label14.Caption;
 DYYLBrose.Show;
 QuickRep1.Preview;
end;

procedure TKRMD_JZ.BitBtn1Click(Sender: TObject); //不打折结账
var zJJE:Real;
begin
 if MessageDlg('确认不打折结帐吗?',mtCustom,[mbYes,mbNo],0)=mrYes then
 begin
 QRLabel18.Caption:=Label12.Caption;
 QRLabel16.Caption:=Label14.Caption;
 DYYLBrose.Show;   //调入餐饮打印欲览器
 QuickRep1.Preview;
 Query2.Close;
 Query2.SQL.Clear;
 Query2.SQL.Add('update 点菜临时表 Set 是否结单=:A,结单日期=:B Where 房间台号=:C');
 Query2.Params[0].AsString:='是';   //确认结账
 Query2.Params[1].AsDateTime:=StrToDateTime(DateTimeToStr(now));
 Query2.Params[2].AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
 Query2.ExecSQL;
 ZJJE:=StrToFloat(Label6.Caption)+TLCYGLXT.FJTHXXB.FieldByName('服务费').AsFloat; //总计消费金额
 Query2.Close;
 Query2.SQL.Clear;
 Query2.SQL.Add('insert 日点菜信息表(房间台号,类别,编号,名称,类型,单位,数量,价格,合计,服务员编号,服务员姓名,状态,点单日期,结单日期,结帐编号,是否结单)');
 Query2.SQL.Add('Select 房间台号,类别,编号,名称,类型,单位,数量,价格,合计,服务员编号,服务员姓名,状态,点单日期,结单日期,结帐编号,是否结单');
 Query2.SQl.Add('From 点菜临时表');
 Query2.SQL.Add('Where 房间台号=:A');
 Query2.Params[0].AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
 Query2.ExecSQL;
 Query2.Close;
 Query2.SQL.Clear;
 Query2.SQL.Add('select 点菜临时表.编号,点菜临时表.名称,点菜临时表.数量,酒水费用信息表.货存编号');
 Query2.SQL.Add('from 点菜临时表,酒水费用信息表');
 Query2.SQL.Add(' where 是否结单=''是'' and 点菜临时表.编号>=10000 and 点菜临时表.编号<=20000 and 点菜临时表.编号=酒水费用信息表.编号 ');
 Query2.SQL.Add('and 房间台号=:C');
 Query2.ParamByName('C').AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
 Query2.Open;
 Query2.First;
 While not Query2.Eof do
 begin
   Query3.Close;
   Query3.SQL.Clear;
   Query3.SQL.Add('update 库存信息表 set 数量=数量-:A');
   Query3.SQL.Add('Where 编号=:B');
   Query3.Params[0].AsInteger:=Query2.FieldByName('数量').AsInteger;
   Query3.Params[1].AsInteger:=Query2.FieldByName('货存编号').AsInteger;
   Query3.ExecSQL;
   Query3.Close;
   Query3.SQL.Clear;
   Query3.SQL.Add('Select * From 库存信息表 where 编号=:A');
   Query3.Params[0].AsInteger:=Query2.FieldByName('货存编号').AsInteger;
   Query3.Open;
   if Query3.FieldByName('数量').AsInteger<=Query3.FieldByName('提醒下限').AsInteger then
    begin
     ShowMessage('['+Query3.FieldByName('商品名称').AsString+']库存不足');
    end;
   Query2.Next;
 end;
 Query2.Close;
 Query2.SQL.Clear;
 Query2.SQL.Add('Delete 点菜临时表 Where 房间台号=:A and 是否结单=:B');
 Query2.ParamByName('A').AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
 Query2.ParamByName('B').AsString:='是';
 Query2.ExecSQL;
 Query2.Close;
 Query2.SQL.Clear;
 Query2.SQL.Add('insert 日结帐费用表(结帐编号,房间台号,日期,费用,结款人,结款方式,结款说明)');
 Query2.SQL.Add('Values(:A,:B,:C,:D,:E,:F,:G)');
 Query2.Params[0].AsInteger:=Query1.FieldByName('结帐编号').AsInteger;
 Query2.params[1].AsInteger:=Query1.FieldByName('房间台号').AsInteger;
 Query2.Params[2].AsDateTime:=StrToDateTime(DateTimeToStr(now));
 Query2.Params[3].AsFloat:=ZJJE;
 Query2.Params[4].AsString:=Query1.FieldByName('服务员姓名').AsString;
 Query2.Params[5].AsString:='现金';
 Query2.Params[6].AsString:='无';
 Query2.ExecSQL;
 TLCYGLXT.FJTHXXB.Edit;
 TLCYGLXT.FJTHXXB.FieldByName('状态').AsSTring:='空闲';
 TLCYGLXT.FJTHXXB.Post;
 ShowMessage('结帐完毕');
 Close;
 end;
end;

procedure TKRMD_JZ.BitBtn3Click(Sender: TObject);  //打折结账
begin
 GroupBox5.Visible:=True;      //显示打折窗口
 ListBox1.ItemIndex:=0;
 Listbox1.SetFocus;
end;

procedure TKRMD_JZ.BitBtn5Click(Sender: TObject);  //选择折度
var a:Real;
b:String;
c:Real;
ZJJE:Real;
begin
 b:=Listbox1.Items.Strings[ListBox1.ItemIndex];
 if b='一折' then a:=0.1;
 if b='一五折' then a:=0.15;
 if b='二折' then a:=0.2;
 if b='二五折' then a:=0.25;
 if b='三折' then a:=0.3;
 if b='三五折' then a:=0.35;
 if b='四折' then a:=0.4;
 if b='四五折' then a:=0.45;
 if b='五折' then a:=0.5;
 if b='五五折' then a:=0.55;
 if b='六折' then a:=0.6;
 if b='六五折' then a:=0.65;
 if b='七折' then a:=0.7;
 if b='七五折' then a:=0.75;
 if b='八折' then a:=0.8;
 if b='八五折' then a:=0.85;
 if b='九折' then a:=0.9;
 if b='九五折' then a:=0.95;
 c:=(StrToFloat(Label6.Caption)+TLCYGLXT.FJTHXXB.FieldByName('服务费').AsFloat)*a;
 if MessageDLG('打折后是['+FloatToStr(c)
 +']元人民币.',mtCustom,[mbYes,mbNo],0)=mrYes then
 begin
 QRLabel18.Caption:=Label12.Caption;
 QRLabel16.Caption:=FloatToStr(c);
 DYYLBrose.Show;
 QuickRep1.Preview;
  Query2.Close;
  Query2.SQL.Clear;
  Query2.SQL.Add('update 点菜临时表 Set 是否结单=:A,结单日期=:B Where 房间台号=:C');
  Query2.Params[0].AsString:='是';
  Query2.Params[1].AsDateTime:=StrToDateTime(DateTimeToStr(now));
  Query2.Params[2].AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
  Query2.ExecSQL;
  ZJJE:=c;
  Query2.Close;
  Query2.SQL.Clear;
  Query2.SQL.Add('insert 日点菜信息表(房间台号,类别,编号,名称,类型,单位,数量,价格,合计,服务员编号,服务员姓名,状态,点单日期,结单日期,结帐编号,是否结单)');
  Query2.SQL.Add('Select 房间台号,类别,编号,名称,类型,单位,数量,价格,合计,服务员编号,服务员姓名,状态,点单日期,结单日期,结帐编号,是否结单');
  Query2.SQl.Add('From 点菜临时表');
  Query2.SQL.Add('Where 房间台号=:A');
  Query2.Params[0].AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
  Query2.ExecSQL;

  Query2.Close;    //返回库存酒水数量
  Query2.SQL.Clear;
  Query2.SQL.Add('select 点菜临时表.编号,点菜临时表.名称,点菜临时表.数量,酒水费用信息表.货存编号');
  Query2.SQL.Add('from 点菜临时表,酒水费用信息表');
  Query2.SQL.Add(' where 是否结单=''是'' and 点菜临时表.编号>=10000 and 点菜临时表.编号<=20000 and 点菜临时表.编号=酒水费用信息表.编号 ');
  Query2.SQL.Add('and 房间台号=:C');
  Query2.ParamByName('C').AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
  Query2.Open;
  While not Query2.Eof do
  begin
    Query3.Close;
    Query3.SQL.Clear;
    Query3.SQL.Add('update 库存信息表 set 数量=数量-:A');
    Query3.SQL.Add('Where 编号=:B');
    Query3.Params[0].AsInteger:=Query2.FieldByName('数量').AsInteger;
    Query3.Params[1].AsInteger:=Query2.FieldByName('货存编号').AsInteger;
    Query3.ExecSQL;
    Query3.Close;
    Query3.SQL.Clear;
    Query3.SQL.Add('Select * From 库存信息表 where 编号=:A');
    Query3.Params[0].AsInteger:=Query2.FieldByName('货存编号').AsInteger;
    Query3.Open;
    if Query3.FieldByName('数量').AsInteger<=Query3.FieldByName('提醒下限').AsInteger then
     begin
      ShowMessage('['+Query3.FieldByName('商品名称').AsString+']库存不足');
     end;
    Query2.Next;
  end;
  Query2.Close;
  Query2.SQL.Clear;
  Query2.SQL.Add('Delete 点菜临时表 Where 房间台号=:A and 是否结单=:B');
  Query2.ParamByName('A').AsInteger:=TLCYGLXT.FJTHXXB.FieldByName('编号').AsInteger;
  Query2.ParamByName('B').AsString:='是';
  Query2.ExecSQL;
  Query2.Close;
  Query2.SQL.Clear;
  Query2.SQL.Add('insert 日结帐费用表(结帐编号,房间台号,日期,费用,结款人,结款方式,结款说明)');
  Query2.SQL.Add('Values(:A,:B,:C,:D,:E,:F,:G)');
  Query2.Params[0].AsInteger:=Query1.FieldByName('结帐编号').AsInteger;
  Query2.params[1].AsInteger:=Query1.FieldByName('房间台号').AsInteger;
  Query2.Params[2].AsDateTime:=StrToDateTime(DateTimeToStr(now));
  Query2.Params[3].AsFloat:=ZJJE;
  Query2.Params[4].AsString:=Query1.FieldByName('服务员姓名').AsString;
  Query2.Params[5].AsString:='现金';
  Query2.Params[6].AsString:='打['+FloatToStr(A)+']折';
  Query2.ExecSQL;
  TLCYGLXT.FJTHXXB.Edit;
  TLCYGLXT.FJTHXXB.FieldByName('状态').AsSTring:='空闲';
  TLCYGLXT.FJTHXXB.Post;
  ShowMessage('结帐完毕');
  Close;
 end;
 GroupBox5.Visible:=False;
 Bitbtn1.SetFocus;
end;

procedure TKRMD_JZ.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then BitBtn5.Click;  //确定折度
end;
procedure TKRMD_JZ.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Query1.Close;
 Query2.Close;
 KRMD_JZ.Release;
 KRMD_JZ:=nil;
end;

procedure TKRMD_JZ.BitBtn2Click(Sender: TObject);  //退出客人结账窗口
begin
 Close;
end;
end.

⌨️ 快捷键说明

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