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

📄 c_zd.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      FTfje := FYfje-FSjje
    else
      FTfje := 0;
  end
  else
    FTfje := FYfje;

  lblYfje.Caption := FormatFloat('#.##',FYfje);//CurrToStr(FYfje)+'元';
  lblXfje.Caption := FormatFloat('#.##',FXfje);//CurrToStr(FXfje)+'元';
  lblYjje.Caption := FormatFloat('#.##',FYjje);//CurrToStr(FYjje)+'元';
  lblYhje.Caption := FormatFloat('#.##',FYhje);//CurrToStr(FYhje)+'元';
  lblJsje.Caption := FormatFloat('#.##',FJsje);//CurrToStr(FJsje)+'元';
  lblTfje.Caption := FormatFloat('#.##',FTfje);//CurrToStr(FTfje)+'元';
  edtSjje.Text := FormatFloat('#.##',FSjje);//CurrToStr(FSjje);
end;

//结帐库中添加额外费
procedure TZdForm.AddEwf;
begin
  IsAppend := True;
  tblKrjz.Insert;
  tblKrjzD_XMBH.Value := XMBH_EWF;
  tblKrjzD_XFJE.Value := FEwf;
  tblKrjz.Post;
  IsAppend := False;
end;

//结帐库中添加当天房价
procedure TZdForm.AddDtfj;
begin
  IsAppend := True;
  if tblKrjz.Locate('D_XMBH',XMBH_FJ,[]) then
  begin
    tblKrjz.Edit;
    tblKrjzD_XFJE.Value := tblKrjzD_XFJE.Value + FDtfj;
    tblKrjz.Post;
  end
  else
  begin
    tblKrjz.Insert;
    tblKrjzD_XMBH.Value := XMBH_FJ;
    tblKrjzD_XFJE.Value := FDtfj;
    tblKrjz.Post;
  end;
  IsAppend := False;
end;

//结帐库中添加电话费
procedure TZdForm.AddDhf;
begin
  IsAppend := True;
  if tblKrjz.Locate('D_XMBH',XMBH_DHF,[]) then
  begin
    tblKrjz.Edit;
    tblKrjzD_XFJE.Value := tblKrjzD_XFJE.Value + FDhf;
    tblKrjz.Post;
  end
  else
  begin
    tblKrjz.Insert;
    tblKrjzD_XMBH.Value := XMBH_DHF;
    tblKrjzD_XFJE.Value := FDhf;
    tblKrjz.Post;
  end;
  IsAppend := False;
end;

//帐单中添加记录
procedure TZdForm.AddKrzd(AHh: Integer;const AXmbh: string;AXfje: Currency;AKfxx: TKFXX);
begin
  qryKrzd.Insert;
  qryKrzdD_ZDBH.Value := AKfxx.AZdbh;
  qryKrzdD_HH.Value   := AHh;
  qryKrzdD_KRBH.Value := AKfxx.AKrbh;
  qryKrzdD_YJBH.Value := AKfxx.AYjbh;
  qryKrzdD_ZDLB.Value := AKfxx.AZdlb;
  qryKrzdD_XMBH.Value := AXmbh;
  qryKrzdD_XFJE.Value := AXfje;
  qryKrzdD_XFRQ.Value := FJzxx.AJzrq;
  qryKrzdD_XFSJ.Value := FJzxx.AJzsj;
  qryKrzdD_JZBZ.Value := JZ_YES;
  qryKrzdD_JSBZ.Value := JS_YES;
  qryKrzdD_CZYXM.Value:= CZY.CzyXm;
  qryKrzdD_JZYXM.Value:= CZY.CzyXm;
  qryKrzdD_BMBH.Value := FBmbh;
  qryKrzd.Post;
end;

//更新客人帐单
procedure TZdForm.UpdateKrzd(const ABz: string);
var
  I,AHh: Integer;
  SqlStr: string;
begin

  SqlStr := '';
  for I:= 0 to FItemNo do
  begin
    if I>0 then SqlStr := SqlStr + 'or';
    SqlStr := SqlStr + '(D_ZDBH="'+FKfxx[i].AZdbh+'")';
  end;
  SqlStr := 'select * from KRZD where '+SqlStr;

  //过滤
  with qryKrzd do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(SqlStr);
    try
      Open;
    except
      On E:Exception do
      begin
        ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
  end;

  //逐个帐单添加
  for I:=0 to FItemNo do
  begin
    //获得行号
    AHh := FKfxx[i].AZdhh;

    //如果当天房价不等于零
    if FDtfj<>0 then
    begin
      if FKfxx[i].ADtfj<>0 then
      begin
        AddKrzd(AHh,XMBH_FJ,FKfxx[i].ADtfj,FKfxx[i]);
        Inc(AHh);
      end;
    end;

    //如果电话费不等于零
    if FDhf<>0 then
    begin
      if FKfxx[i].ADhf<>0 then
      begin
        AddKrzd(AHh,XMBH_DHF,FKfxx[i].ADhf,FKfxx[i]);
        Inc(AHh);
      end;
    end;

    //如果额外费不等于零,添加到第一个帐单中
    if (FEwf<>0)and(i=0) then
      AddKrzd(AHh,XMBH_EWF,FEwf,FKfxx[i]);

    //累加总单的消费金额
    qryKrzd.Filter   := 'D_ZDBH='''+FKfxx[i].AZdbh+'''';
    qryKrzd.Filtered := True;
    if qryKrzd.Locate('D_HH',0,[]) then
    begin
      qryKrzd.Edit;
      qryKrzdD_XFJE.Value := qryKrzdD_XFJE.Value + FDtfj + FDhf + FEwf;
      qryKrzd.Post;
    end;
    qryKrzd.Filter   := '';
    qryKrzd.Filtered := False;
  end;

  //修改所有帐单
  qryKrzd.First;
  while not qryKrzd.Eof do
  begin
    qryKrzd.Edit;

    //结帐/未结帐
    if FJzxx.AJzfs<>JZFS_WJZ then
      qryKrzdD_JSBZ.Value := JS_YES
    else
      qryKrzdD_JSBZ.Value := JS_WJ;

    qryKrzdD_JZRQ.Value := FJzxx.AJzrq;
    qryKrzdD_JZSJ.Value := FJzxx.AJzsj;
    qryKrzdD_JZBH.Value := FJzbh;
    //edit by ls. 20020824
    if qryKrzdD_JZBZ.Value = JZ_NO then
      qryKrzdD_JZBZ.Value := JZ_YES;
    //qryKrzdD_JSBZ.Value := JS_YES;
    if qryKrzdD_JZYXM.Value = '' then
      qryKrzdD_JZYXM.Value := CZY.CzyXm;
    qryKrzdD_BZ.Value   := qryKrzdD_BZ.Value+' '+ABz;
    qryKrzdD_BMBH.Value := FBmbh;
    //qryKrzdD_JZYXM.Value:= CZY.CzyXm;
    qryKrzd.Post;
    qryKrzd.Next;
  end;
end;

//插入结帐库总单 行号=0
procedure TZdForm.UpdateKrjz;
begin
  IsAppend := True;
  FHh := 0;
  tblKrjz.Insert;
  //edit by ls.20021020
  tblKrjzD_XFJE.Value := FSjje+FYhje+FYjje;//????????
  tblKrjzD_YJJE.Value := 0-FYjje;
  tblKrjzD_YHJE.Value := FYhje;
  tblKrjz.Post;
  IsAppend := False;
end;

//列出客人帐单
procedure TZdForm.AddKrjz;
var
  I: Integer;
  SqlStr: string;
begin
  SqlStr := '';

  for I:= 0 to FItemNo do
  begin
    if I>0 then SqlStr := SqlStr + 'or';
    SqlStr := SqlStr + '(D_ZDBH="'+FKfxx[i].AZdbh+'")';
  end;

  SqlStr := 'select D_XMBH,sum(D_XFJE) as XFJE from KRZD where (D_HH<>0)'
            +'and('+SqlStr+') group by D_XMBH';

  //统计消费项目
  with qryZd do
  begin
    SQL.Clear;
    SQL.Add(SqlStr);
    try
      Open;
    except
      On E:Exception do
      begin
        ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
  end;

  //添加到结帐库中
  tblKrjz.DisableControls;
  try
    IsAppend := True;
    //获得结帐编号
    FJzbh := HotelData.GetBh('D_JZBH',PREV_JZBH);
    //行号=1
    FHh := 1;

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

    tblKrjz.Filter   := 'D_JZBH='''+FJzbh+'''';
    tblKrjz.Filtered := True;

    qryZd.First;
    while not qryZd.Eof do
    begin
      if qryZd.FieldByName('D_XMBH').AsString<>'' then
      begin
        tblKrjz.Insert;
        tblKrjzD_XMBH.Value := qryZd.FieldByName('D_XMBH').AsString;
        tblKrjzD_XFJE.Value := qryZd.FieldByName('XFJE').AsCurrency;
        tblKrjz.Post;
      end;
      qryZd.Next;
    end;

    //如果当天房价不等于零
    if FDtfj<>0 then AddDtfj;

    //如果电话费不等于零
    if FDhf <>0 then AddDhf;
  finally
    IsAppend := False;
    tblKrjz.First;
    tblKrjz.EnableControls;
  end;
end;

procedure TZdForm.tblKrjzNewRecord(DataSet: TDataSet);
begin
  inherited;
  if IsAppend then
  begin
    tblKrjzD_JZBH.Value := FJzbh;
    tblKrjzD_HH.Value   := FHh;
    tblKrjzD_JZRQ.Value := FJzxx.AJzrq;
    tblKrjzD_JZSJ.Value := FJzxx.AJzsj;
    tblKrjzD_JZFS.Value := FJzxx.AJzfs;
    tblKrjzD_XYKBH.Value:= FJzxx.AXykbh;
    tblKrjzD_KHBH.Value := FJzxx.AKhbh;
    tblKrjzD_JZLX.Value := JZLX_YK;
    tblKrjzD_CZYXM.Value:= CZY.CzyXm;
    tblKrjzD_BMBH.Value := FBmbh;
    tblKrjzD_BZ.Value   := JZBZ_SK+FJzfhs ;
  end;
end;

procedure TZdForm.tblKrjzAfterPost(DataSet: TDataSet);
begin
  inherited;
  if not IsAppend then
    SumYhje
  else
    Inc(FHh);
end;

procedure TZdForm.tblKrjzBeforeInsert(DataSet: TDataSet);
begin
  inherited;
  if not IsAppend then
    Abort;
end;

procedure TZdForm.tblKrjzBeforeDelete(DataSet: TDataSet);
begin
  inherited;
  Abort;
end;

//检查优惠金额
procedure TZdForm.tblKrjzD_YHJEValidate(Sender: TField);
begin
  inherited;
  if tblKrjzD_XMBH.Value <> XMBH_YJK then
  begin
    if tblKrjzD_YHJE.AsCurrency>tblKrjzD_XFJE.AsCurrency then
    begin
      //tblKrjzD_YHJE.Value := tblKrjzD_XFJE.Value;
      raise Exception.Create('优惠金额不能大于消费金额!');
    end
  end
  else
  begin
    if tblKrjzD_YHJE.Value <> 0 then
      raise Exception.Create('预交款不能优惠!');
  end;
end;

//取消
procedure TZdForm.btnCancClick(Sender: TObject);
begin
  inherited;
  tblKrjz.CancelUpdates;
end;

//更新客房状态 间接房价
procedure TZdForm.UpdateKfzt;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
  begin
    //初始化客房
    HotelData.InitKfzt(FKFxx[i].AKfbh);
    //更新间接房价
    if FKfxx[i].ADtfj<>0 then
      HotelData.UpdateJjfj(FKfxx[i].AKfbh,FKfxx[i].ABqj,FKfxx[i].ADtfj);
  end;
end;

//更新客人信息的离店日期
procedure TZdForm.UpdateKrxx;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
    HotelData.UpdateKrxxJz(FKfxx[i].AKrbh,FJzxx.AJzrq,FJzxx.AJzsj);
end;

//备份客人信息
procedure TZdForm.BakKrxx;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
    HotelData.BakData('select * from KRXX where D_KRBH="'+FKfxx[i].AKrbh+'"','KRXXDA');
end;

//备份客人帐单
procedure TZdForm.BakKrzd;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
    HotelData.BakData('select * from KRZD where D_ZDBH="'+FKfxx[i].AZdbh+'"','KRZDDA');
end;

//清空客人帐单
procedure TZdForm.EmptyKrzd;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
    //HotelData.EmptyData('select * from KRZD where D_ZDBH="'+FKfxx[i].AZdbh+'"');
    HotelData.EmptyData('delete from KRZD where D_ZDBH="'+FKfxx[i].AZdbh+'"');
end;

//清空客人信息
procedure TZdForm.EmptyKrxx;
var
  I: Integer;
begin
  for I:=0 to FItemNo do
    HotelData.EmptyData('delete from KRXX where D_KRBH="'+FKfxx[i].AKrbh+'"');
    //HotelData.EmptyData('select * from KRXX where D_KRBH="'+FKfxx[i].AKrbh+'"');
end;

//清空客人押金
procedure TZdForm.EmptyKryj;
var
  I: Integer;
begin
  //如果结帐方式为挂帐,押金不退,则押金转到挂帐对象上 ????
  if not FJzxx.AYjtf then
  begin
    try
      tblKryj.Open;
      if tblKryj.FindKey([FGzxx.AYjbh,0]) then
        if tblKryj.FieldByName('D_FKFS').AsString=FKFS_RMB then
        begin
          tblKryj.Edit;
          tblKryj.FieldByName('D_YFJE').AsCurrency :=
            tblKryj.FieldByName('D_YFJE').AsCurrency + FYfje;
          tblKryj.Post;
        end;
    finally
      tblKryj.Close;
    end;
  end;
  //清空押金信息
  for I:=0 to FItemNo do
    //HotelData.EmptyData('select * from KRYJ where D_YJBH="'+FKfxx[i].AYjbh+'"');
    HotelData.EmptyData('delete from KRYJ where D_YJBH="'+FKfxx[i].AYjbh+'"');
end;

//更新额外费
procedure TZdForm.UpdateEwf;
begin
  //获得额外费
  FEwf := SumEwf;

  //如果不等于零,写入结帐库中
  if FEwf<>0 then
  begin
    //写入结帐库
    AddEwf;
    //写入额外费库
    HotelData.UpdateEwfDbf(FJzbh,FKfxx[0].AKrxm,FEwf,FJzxx.AJzrq,FJzxx.AJzsj);
  end;
end;

//获取挂帐信息
procedure TZdForm.GetGzxx;
var
  aTdxx : TTdxx;
begin
  if FJzxx.AJzfs=JZFS_GSK then
    FGzxx := HotelData.GetKfxx(FJzxx.AKfbh);
  if FJzxx.AJzfs=JZFS_GTD then//edit by ls.2002.12.01
  begin
    aTdxx := HotelData.GetTdxx(FJzxx.AKrbh);
    FGzxx.AZdbh := aTdxx.AZdbh;
    FGzxx.AKrbh := aTdxx.AKrbh;
    FGzxx.AYjbh := aTdxx.AYjbh;
    FGzxx.AZdlb := aTdxx.AZdlb;
    FGzxx.AZdhh := aTdxx.AZdhh;
    //FGzxx := HotelData.GetKfxx(HotelData.GetKfbh(FJzxx.AKrbh));
  end;
end;

//更新挂帐对象信息
procedure TZdForm.UpdateGz;
var
  AHh: Integer;
begin
  //获取挂帐信息
  GetGzxx;

  qryGz.Close;
  qryGz.Params[0].Value := FGzxx.AZdbh;
  try
    qryGz.Open;
  except
    On E:Exception do
    begin
      ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                  +#13#10

⌨️ 快捷键说明

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