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 + -
显示快捷键?