unitdmhotel.pas

来自「自己做过的工程」· PAS 代码 · 共 1,062 行 · 第 1/4 页

PAS
1,062
字号
unit unitDMHotel;

interface

uses
  SysUtils, Classes, ADODB, DB,DateUtils,QForms,dialogs,Controls,Variants;

type
  TDMHotel = class(TDataModule)
    ADOQuery1: TADOQuery;
    ds_sup_room_status_query: TADODataSet;
    ds_sup_check_query: TADODataSet;
    ds_sup_detail: TADODataSet;
    ds_sup_consume_detail: TADODataSet;
    ds_sroom_book: TADODataSet;
    ds_sys_log: TADODataSet;
    ds_sys_user: TADODataSet;
    ds_sup_room_status: TADODataSet;
    ds_dictionary: TADODataSet;
    ds_dictionary_setsuptype: TADODataSet;
    ds_room_price_set: TADODataSet;
    ds_sup_price_set: TADODataSet;
    ds_sroom_book_query: TADODataSet;
    ds_sup_detail_query: TADODataSet;
    ADODataSetitemnumber: TADODataSet;
    ADODataSetroombookquery: TADODataSet;
    ADODataSetroominquery: TADODataSet;
    ADODataSetroomstatus: TADODataSet;
    ds_sup_consume_detail_query: TADODataSet;
    ADODataSet_roomin: TADODataSet;
    ADODataSet_itemnumber: TADODataSet;
    ADODataSet_roombook: TADODataSet;
    ADODataSet_roomdebt: TADODataSet;
    ADODataSet_roomfee: TADODataSet;
    ADODataSet_roomstatus: TADODataSet;
    ADODataSet_customerdebt: TADODataSet;
    DataSource_roomdebt: TDataSource;
    DataSource_roombook: TDataSource;
    DataSource_roomin: TDataSource;
    DataSource_itemnumber: TDataSource;
    DataSource_customerdebt: TDataSource;
    ADODataSet_roomredebt_requery: TADODataSet;
    ADODataSet_roomstatus_requery: TADODataSet;
    ADODataSet_roomfee_requery: TADODataSet;
    ADODataSet_roomdebt_requery: TADODataSet;
    ADODataSet_customerdebt_requery: TADODataSet;
    ADODataSet_customerRedebt_requery: TADODataSet;
    ADOConnection1: TADOConnection;

  private
    { Private declarations }
  public
    procedure FindMaxNumber(itemtype:string;var itemno:string);   //取出最大记录号
    procedure RewriteMax(itemtype:string;itemno:string);          //回写最大值

    procedure SetSyslogView(username:string;date1:TDate);
    procedure SetSupConsumeDetailView(sdid:string);
    procedure SetSupConsumeDetailQueryView(sdid:string);

    procedure SetDebtView1(oldusername:string;var oldtotalfee:extended);
    procedure SetCustomerView(oldcustomername:string;var oldcustomertotalfee:extended);

    procedure SroomBookQuery(ls_username:string;ls_sroomno:string;ls_arrivetime:Tdatetime;usernameCK:boolean;sroomnoCK:boolean;arrivetimeCK:boolean);
              //包间预定查询
    procedure SupDetailQuery(ls_username:string;ls_sroomno:string;ls_entertime:Tdatetime;ls_ischeck:string;usernameCK:boolean;sroomnoCK:boolean;entertimeCK:boolean);
              //包间状况查询
    procedure RoomBookQuery(ls_username:string;ls_roomid:string;ls_booktime:Tdatetime;usernameCK:boolean;roomidCK:boolean;booktimeCK:boolean);
              //客房预定查询
    procedure RoomQuery(ls_username:string;ls_roomid:string;ls_intime:Tdatetime;ls_leftornot:string;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean);
              //客房状况查询
    procedure SroomCheckQuery(ls_sroomno:string;ls_Bchecktime:Tdatetime;ls_Echecktime:TDatetime;ls_issign:string;sroomnoCK:boolean;ischeckCK:boolean;checktimeCK:boolean);
              //包间帐务查询
    procedure SroomStatusQuery(ls_sroomstatus:string;ls_sroomno:string;sroomstatusCK:boolean;sroomnoCK:boolean);
              //包间状态查询

   
      //添加的 部分
    procedure RoomFeeQuery(ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
              //房客现金支付帐单查询
    procedure RoomDebtQuery(ls_checkedornot:string;ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
    procedure RoomreDebtQuery(ls_checkedornot:string;ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
              //房客挂帐支付帐单查询
    procedure CustomerDebtQuery(ls_checkedornot:string;ls_username:string;var totalmoney:extended);
    procedure CustomerreDebtQuery(ls_checkedornot:string;ls_username:string;var totalmoney:extended );
             
              //非房客的消费和挂帐的查询
    procedure RoomStatusQuery(ls_roomstatus:string);
              //总经理对客房状态的查询
    procedure ManagerRoomFeeQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;var totalmoney:extended);

                //总经理对客房现金支付状况的查询

    procedure ManagerRoomDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string; var totalmoney:extended);
                //总经理对房客挂帐支付和现有帐单状况的查询
    procedure ManagerRoomReDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string;  var totalmoney:extended);
                 //现有帐单状况的查询
    procedure ManagerCustomerReDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string;  var totalmoney:extended);
                  //非房客已还帐的查询
    procedure ManagerCustomerDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string;  var totalmoney:extended);
                  //非房客的帐单查询
  end;

var
  DMHotel: TDMHotel;
      SQL: string;

implementation

{$R *.dfm}

////////////////////////系统操作函数/////////////////////
//取出最大记录号
procedure TDMHotel.FindMaxNumber(itemtype:string;var itemno:string);
begin
    ADODataSetitemnumber.Open;

    if  ADODataSetitemnumber.Locate('itemtype',itemtype,[])=false then
          //如果数据库中找不到itemtype字段为变量itemtype的最大值的记录,添加一条
          begin
            ADOConnection1.BeginTrans;  //定义事务
            //这时itemno='0'
            itemno:='0';
            SQL:='insert into item_number(itemtype,itemno) '+'values('+
                 ''''+itemtype+''''+','+''''+itemno+''''+')';
            ADOQuery1.SQL.Text:=SQL;
            try
                ADOQuery1.ExecSQL;       //注:原来程序中前面调用了open,结果导致出错(open和execSQL一般不并存)
            except
                showmessage('定义记录号失败!');
                ADOConnection1.RollbackTrans;  //回滚
            end;
            ADOConnection1.CommitTrans;        //提交
          end
    else
          //如果找到记录,取出最大值
          //注:由于在SQL中不知如何处理select *** into :var 中的变量,所以没用ADOQurey
          //    暂时用数据集ADODataSetitemnumber作
          itemno:=ADODataSetitemnumber.FieldByName('itemno').AsString;
    //如果原数据库中没有该记录,则此时itemno为初始值0,加1后用作记录号
    itemno:=inttostr(strtoint(itemno)+1);
    ADODataSetitemnumber.Close;
end;

//回写最大值
procedure TDMHotel.RewriteMax(itemtype:string;itemno:string);
begin
    ADOConnection1.BeginTrans;         //定义事务
    SQL:='update item_number '+'set itemno='+''''+itemno+''''+' '+
             'where itemtype='+''''+itemtype+'''';
    ADOQuery1.SQL.Text:=SQL;
    try
        ADOQuery1.ExecSQL;
    except
        showmessage('记录号存储失败,将退出登录!');
        ADOConnection1.RollbackTrans;    //失败回滚
    end;

    ADOConnection1.CommitTrans;          //成功提交
end;

///////////////////////窗口显示//////////////////////////
//日志
procedure TDMHotel.SetSyslogView(username:string;date1:TDate);
begin
      ds_sys_log.Close;
      ds_sys_log.Prepared:=false;
      if username<>'' then
      begin
         ds_sys_log.CommandText:='select * from sys_log where loggingtime>=:D1 and username=:Name';
         ds_sys_log.Parameters.ParamByName('Name').Value:=username;
      end
      else
         ds_sys_log.CommandText:='select * from sys_log where loggingtime>=:D1';
      ds_sys_log.Parameters.ParamByName('D1').DataType:=ftDate;
      ds_sys_log.Parameters.ParamByName('D1').Value:=date1;
      ds_sys_log.Prepared:=true;
      ds_sys_log.Open;
end;

//显示就餐消费明细
procedure  TDMHotel.SetSupConsumeDetailView(sdid:string);
begin
      ds_sup_consume_detail.Close;
      ds_sup_consume_detail.Prepared:=false;
      ds_sup_consume_detail.Parameters.ParamByName('sdid').Value:=strtoint(sdid);
      ds_sup_consume_detail.Prepared:=true;
      ds_sup_consume_detail.Open;
end;

//查询就餐消费明细
procedure  TDMHotel.SetSupConsumeDetailQueryView(sdid:string);
begin
      ds_sup_consume_detail_query.Close;
      ds_sup_consume_detail_query.Prepared:=false;
      ds_sup_consume_detail_query.Parameters.ParamByName('sdid').Value:=strtoint(sdid);
      //ds_sup_consume_detail_query.CommandText:='select * from sup_consume_detail where supuserid='+''''+sdid+'''';
      ds_sup_consume_detail_query.Prepared:=true;
      ds_sup_consume_detail_query.Open;
end;

 ///////////////////////////////////////////////////
procedure TDMHotel.SetDebtView1(oldusername:string;var oldtotalfee:extended);
//var
//yesornot:string;
begin
 // DMhotel.ADOConnection1.BeginTrans;
  DMHotel.ADODataSet_roomdebt.Close;
  DMHotel.ADODataSet_roomdebt.Prepared:=false;
  //这个地方不能用变量 .一定要用这种查询的形式!
  //首先要进行条件判断     >=:N1 and username<=:N2  username like   and
  DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
     'username=:oldusername and checkornot=:yesornot' ;
  DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
  DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠账';

  //在这里进行统一的结算所有的帐单
  DMHotel.ADODataSet_roomdebt.Prepared:=true;
  DMHotel.ADODataSet_roomdebt.Open;
  DMHotel.ADODataSet_roomdebt.First;
  oldtotalfee:=0;
  while not  DMHotel.ADODataSet_roomdebt.Eof do
        begin

        oldtotalfee:=oldtotalfee+DMHotel.ADODataSet_roomdebt.FieldValues['totalfee'];
        DMHotel.ADODataSet_roomdebt.Next;
     //   showmessage('oldtotalfee');
         end;
      // DMHotel.ADODataSet_roomdebt.Close;

end;

procedure TDMHotel.SetCustomerView(oldcustomername:string;var oldcustomertotalfee:extended);
begin
  DMHotel.ADODataSet_customerdebt.Close;
  DMHotel.ADODataSet_customerdebt.Prepared:=false;
  DMHotel.ADODataSet_customerdebt.CommandText:='select * from customer_debt where '+
     'customername=:oldcustomername and checkornot=:yesornot' ;
  DMHotel.ADODataSet_customerdebt.Parameters.ParamByName('oldcustomername').Value:=oldcustomername;
  DMHotel.ADODataSet_customerdebt.Parameters.ParamByName('yesornot').Value:='欠账';
  DMHotel.ADODataSet_customerdebt.Prepared:=true;
  DMHotel.ADODataSet_customerdebt.Open;
  DMHotel.ADODataSet_customerdebt.First;

    oldcustomertotalfee:=0;
  while not  DMHotel.ADODataSet_customerdebt.Eof do
        begin
        oldcustomertotalfee:=oldcustomertotalfee+DMHotel.ADODataSet_customerdebt.FieldValues['totalfee'];
        DMHotel.ADODataSet_customerdebt.Next;
        end;
   //DMHotel.ADODataSet_customerdebt.Requery;
end;
 ///////////////////////////////////////////////


/////////////////////查询////////////////////////////
//包间预定
procedure TDMHotel.SroomBookQuery(ls_username:string;ls_sroomno:string;ls_arrivetime:Tdatetime;usernameCK:boolean;sroomnoCK:boolean;arrivetimeCK:boolean);
begin
    ds_sroom_book_query.Close;
    ds_sroom_book_query.Prepared:=false;

    if (usernameCK=true) and (sroomnoCK=true) and (arrivetimeCK=true) then
       begin
           ds_sroom_book_query.CommandText:='select * from sroom_book where username='+
                            ''''+ls_username+''''+' and sroomno='+''''+ls_sroomno+''''+
                            ' and arrivetime='+''''+datetostr(ls_arrivetime)+'''';

⌨️ 快捷键说明

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