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

📄 c_hoteldata.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    ParamByName('BD').AsDate   := ADdrq;
    try
      Open;
      if Fields[0].IsNull then Result := 0
      else
        Result := Fields[0].AsCurrency;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开DHFDATA.DBF出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
  end;

  //新程序
  {ASj := FormatDateTime('yyyymmdd',ADdrq)+FormatDateTime('hhnnss',ADdsj);

  with qryDhf do
  begin
    if Active then Active := False;
    //DatabaseName := JF_DIR;     //获取电话费数据库的路径
    SQL.Clear;
    s := 'select sum(TOTAL) from DHF where (ROOM="'
        +AKfbh+'")and((SDATE+STIME)>"'+ASj+'")';
    SQL.Add(s);

    try
      Open;
      if Fields[0].IsNull then Result := 0
      else
        Result := Fields[0].AsCurrency;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开DHF.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;}
end;

//夜审时获取电话费 23:00以前
function THotelData.GetDhf1(const AKfbh: string;Addrq,Addsj: TDateTime): Currency;
var
  s: string;
  ARoom: string;
  ASj: string;
begin
  //连接旧的程序
  if Length(Akfbh)=3 then
  //if Copy(AKfbh,1,2) = '10' then
    //ARoom := '1' + Copy(AKfbh,3,3)
    ARoom := '1' + AKfbh
  else
    //ARoom := Copy(AKfbh,1,1) + Copy(AKfbh,3,3);
    ARoom := AKfbh;
  ASj := FormatDateTime('hh:nn',ADdsj);
  with qryDhf do
  begin
    if Active then Active := False;
    DatabaseName := JF_DIR;
    SQL.Clear;
    s := 'select sum(TOTAl) from DHFDATA.DBF where (ROOM = "'
        +ARoom+'")and((SDate>:BD)or((SDate=:BD)and(STime>="'+ASj+'")and(STime<="23:00")))';
    SQL.Add(s);
    ParamByName('BD').DataType := ftDate;
    ParamByName('BD').AsDate   := ADdrq;
    try
      Open;
      if Fields[0].IsNull then Result := 0
      else
        Result := Fields[0].AsCurrency;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开DHFDATA.DBF出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
  end;

  //新程序
  {ASj := FormatDateTime('yyyymmdd',ADdrq)+FormatDateTime('hhnnss',ADdsj);

  with qryDhf do
  begin
    if Active then Active := False;
    //DatabaseName := JF_DIR;     //获取电话费数据库的路径
    SQL.Clear;
    s := 'select sum(TOTAL) from DHF where (ROOM="'
        +AKfbh+'")and((SDATE+STIME)>"'+ASj+'")';
    SQL.Add(s);

    try
      Open;
      if Fields[0].IsNull then Result := 0
      else
        Result := Fields[0].AsCurrency;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开DHF.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;}
end;

//添加员工开房情况
procedure THotelData.YgkfAppend(const ACzyxm,AKfbh,AKrxm: string;ASjfj: Currency;ADdrq,ADdsj: TDateTime);
var
  s : string;
begin
  s := 'insert into YGKF (D_CZYXM,D_KFRQ,D_KFSJ,D_KFBH,D_KRXM,D_SJFJ) values '+
       '("'+ACzyxm+'","'+FormatDateTime('yyyy-mm-dd',ADdrq)+'","'+FormatDateTime('yyyy-mm-dd hh:nn:ss',ADdsj)+
       '","'+AKfbh+'","'+AKrxm+'",'+CurrToStr(ASjfj)+
       ')';
  ExecSql(s); 
  {with tblUserData do
  begin
    if Active then Active := False;
    TableName := 'YGKF';

    try
      Open;
      Append;
      FieldByName('D_CZYXM').AsString  := ACzyxm;
      FieldByName('D_KFRQ').AsDateTime := Date;
      FieldByName('D_KFSJ').AsDateTime := Time;
      FieldByName('D_KFBH').AsString   := AKfbh;
      FieldByName('D_KRXM').AsString   := AKrxm;
      FieldByName('D_SJFJ').AsCurrency := ASjfj;
      Post;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开YGKF.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;}
end;

//判断客人姓名和身份证号码是否在黑名单中,如果是则返回True
function THotelData.IsHmd(const AKrxm,AZjhm: string): string;
begin
  Result := '';

  with tblSysData do
  begin
    if Active then Active := False;
    TableName := 'HMD';

    try
      Open;
      if Locate('D_XM',AKrxm,[]) then
        Result := '姓名:'+FieldByName('D_XM').AsString+#13#10
                 +'身份证号码:'+FieldByName('D_ZJHM').AsString+#13#10
                 +'年龄:'+FieldByName('D_NL').AsString+#13#10
                 +'家庭地址:'+FieldByName('D_JTDZ').AsString+#13#10
                 +'备注:'+FieldByName('D_BZ').AsString;
      if Locate('D_ZJHM',AZjhm,[]) then
        Result := '姓名:'+FieldByName('D_XM').AsString+#13#10
                 +'身份证号码:'+FieldByName('D_ZJHM').AsString+#13#10
                 +'年龄:'+FieldByName('D_NL').AsString+#13#10
                 +'家庭地址:'+FieldByName('D_JTDZ').AsString+#13#10
                 +'备注:'+FieldByName('D_BZ').AsString;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开HMD.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;
end;

//判断预定客房是否冲突,如果是则返回True
function THotelData.IsValidKfyd(const AKfbh,AYdbh: string;ADdrq,ALdrq: TDateTime): Boolean;
var
  s: string;
begin
  Result := True;

  with qryUserData do
  begin
    s := 'select * from YDKF where (D_KFBH=:KFBH)and(D_YDBH<>:YDBH)';
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    ParamByName('KFBH').DataType := ftString;
    ParamByName('YDBH').DataType := ftString;
    ParamByName('KFBH').Value    := AKfbh;
    ParamByName('YDBH').Value    := AYdbh;

    try
      Open;
      First;
      while not Eof do
      begin
        if (FieldByName('D_DDRQ').AsDateTime<=ALdrq)and(FieldByName('D_LDRQ').AsDateTime>=ALdrq) then
          Result := False;
        if (FieldByName('D_DDRQ').AsDateTime<=ADdrq)and(FieldByName('D_LDRQ').AsDateTime>=ADdrq) then
          Result := False;
        if (FieldByName('D_DDRQ').AsDateTime>=ADdrq)and(FieldByName('D_LDRQ').AsDateTime<=ALdrq) then
          Result := False;
        Next;
      end;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开YDKF.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;
end;

//判断预定餐饮是否冲突,如果是则返回True
function THotelData.IsValidCyyd(const ACtbh,ASjdm: string;ADate: TDateTime): Boolean;
var
  s: string;
begin
  Result := True;

  with qryUserData do
  begin
    s := 'select * from YDCY '
        +'where (D_SYRQ=:SYRQ)and(D_CTBH=:CTBH)and(D_SJDM=:SJDM)and(D_RZBZ="F")';
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    ParamByName('SYRQ').DataType := ftDate;
    ParamByName('CTBH').DataType := ftString;
    ParamByName('SJDM').DataType := ftString;
    ParamByName('SYRQ').Value    := ADate;
    ParamByName('CTBH').Value    := ACtbh;
    ParamByName('SJDM').Value    := ASjdm;

    try
      Open;
      if not IsEmpty then
        Result := False;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开YDCY.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  end;
end;

//判断预定会场是否冲突,如果冲突则返回True
function THotelData.IsValidHcyd(const AHcbh,ASjdm: string;ADate: TDateTime): Boolean;
var
  s: string;
begin
  Result := True;

  with qryUserData do
  begin
    if ASjdm='全天' then
    begin
      s := 'select * from YDHC where (D_SYRQ=:SYRQ)and(D_HCBH=:HCBH)and(D_JSBZ<>"'+JS_YES+'")';
      if Active then Active := False;
      SQL.Clear;
      SQL.Add(s);
      ParamByName('SYRQ').DataType := ftDate;
      ParamByName('HCBH').DataType := ftString;
      ParamByName('SYRQ').Value    := ADate;
      ParamByName('HCBH').Value    := AHcbh;

      try
        Open;
        if not IsEmpty then
          Result := False;
      except
        On E:Exception do
        begin
          ShowWarning('打开YDHC.DB出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;

    end
    else
    begin
      s := 'select * from YDHC where (D_SYRQ=:SYRQ)and(D_HCBH=:HCBH)and((D_SJDM="全天")or(D_SJDM=:SJDM))and(D_JSBZ<>"'+JS_YES+'")';
      if Active then Active := False;
      SQL.Clear;
      SQL.Add(s);
      ParamByName('SYRQ').DataType := ftDate;
      ParamByName('HCBH').DataType := ftString;
      ParamByName('SJDM').DataType := ftString;
      ParamByName('SYRQ').Value    := ADate;
      ParamByName('HCBH').Value    := AHcbh;
      ParamByName('SJDM').Value    := ASjdm;

      try
        Open;
        if not IsEmpty then
          Result := False;
      except
        On E:Exception do
        begin
          ShowWarning('打开YDHC.DB出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;

    end;
    Close;
  end;
end;

//获取客人来店次数
function THotelData.Ldcs(const AKrxm: string): Integer;
begin
  Result := 0;

  try
    qryUserData.SQL.Clear;
    qryUserData.SQL.Add('select count(*) from KRXXDA where D_KRXM="'
                        +AKrxm+'"');

    try
      qryUserData.Open;
      Result := qryUserData.Fields[0].AsInteger;
    except
      On E:Exception do
      begin
        ShowWarning('打开KRXXDA.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

  finally
    qryUserData.Close;
  end;
end;


//团队结帐时,是否还有没有退的房间 如果有则返回True
function THotelData.IsTdtf(const AKrbh: string): Boolean;
begin
  Result := False;
  with tblSysData do
  begin
    if Active then Active := False;
    TableName := 'KFZT';

    try
      Open;
      if Locate('D_KRBH',AKrbh,[]) then
        Result := True;
      Close;
    except
      On E:Exception do
      begin
        ShowWarning('打开KFZT.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
    
  end;
end;

//通过押金编号获取押金信息
function THotelData.GetYjxx(const AYjbh: string): TYjxx;
begin
  try

    tblKryj.Filter   := 'D_YJBH='''+AYjbh+'''';//过滤出所有等于YJBH的记录
    tblKryj.Filtered := True;

    try
      tblKryj.Open;
    except
      On E:Exception do
      begin
        ShowWarning('打开KRYJ.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

    tblKryj.First;
    Result.AYjbh := AYjbh;
    Result.AFkfs := tblKryj.FieldByName('D_FKFS').AsString;
    Result.AXykbh:= tblKryj.FieldByName('D_XYKBH').AsString;
    Result.AKhbh := tblKryj.FieldByName('D_KHBH').AsString;

    if (Result.AFkfs = FKFS_RMB) then   //如果押金方式为人民币,则累计押金金额
    begin
      while not tblKryj.Eof do
      begin
        Result.AYfje := Result.AYfje + tblKryj.FieldByName('D_YFJE').AsCurrency;
        tblKryj.Next;
      end;
    end
    else
      Result.AYfje := 0;        //否则押金金额为零

    tblKryj.Last;       //获取当前押金记录的行号
    Result.AYjhh := tblKryj.FieldByName('D_HH').AsInteger + 1;

  finally
    tblKryj.Filter   := '';
    tblKryj.Filtered := False;
    tblKryj.Close;
  end;
end;

//根据客人编号获取团队信息
function THotelData.GetTdxx(const AKrbh: string): TTdxx;
begin
  with qryUserData do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from KRZD where (D_KRBH="'+AKrbh+'")and(D_HH=0)');
    Prepare;
    Open;
    Result.AKrbh := AKrbh;
    Result.AZdbh := FieldByName('D_ZDBH').AsString;
    Result.AYjbh := FieldByName('D_YJBH').AsString;
    Result.AZdlb := ZDLB_TD;
    Close;
    Result.AZdhh := GetMaxZdhh(Result.AZdbh);
    Result.AKrxm := FindMc('KRXX','D_KRBH','D_KRXM',Result.AKrbh);
  end;
{  try

    try
      tblKrzd.Open;
      tblKrxx.Open;
    except
      On E:Exception do
      begin
        ShowWarning('打开KRZD.DB出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;

    if tblKrzd.Locate('D_KRBH',AKrbh,[]) then
    begin
      Result.AKrbh := AKrbh;
      Result.AZdbh := tblKrzd.FieldByName('D_ZDBH').AsString;
      Result.AYjbh := tblKrzd.FieldByName('D_YJBH').AsString;
      if tblKrxx.FindKey([AKrbh]) then
        Result.AKrxm := tblKrxx.FieldByName('D_KRXM').AsString;
    end;

⌨️ 快捷键说明

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