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

📄 c_tdjd.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:

//打开
procedure TTdjdForm.tblKrzdBeforeOpen(DataSet: TDataSet);
begin
  inherited;
  tblKrxx.Open;
  tblKryj.Open;
end;

//关闭
procedure TTdjdForm.tblKrzdBeforeClose(DataSet: TDataSet);
begin
  inherited;
  tblKrxx.Close;
  tblKryj.Close;
end;

//增加新纪录
procedure TTdjdForm.tblKrzdNewRecord(DataSet: TDataSet);
begin
  inherited;
  FItemNo := 1;
  tblKrzdD_CZYXM.Value := CZY.CzyXm;
  tblKrzdD_JZYXM.Value := JZY.CzyXm;
  tblKrxx.Insert;
  tblKryj.Insert;
end;

//存盘前更新
procedure TTdjdForm.tblKrzdBeforePost(DataSet: TDataSet);
var
  I: Integer;
  AKf: TKf;
begin
  inherited;
  UpdateKrzd;
  UpdateKrxx;
  UpdateKryj;
  for I:=1 to vleKf.RowCount-1 do
  begin
    AKf.AKfbh := vleKf.Keys[I];
    AKf.ASjfj := StrToCurr(vleKf.Values[vleKf.Keys[I]]);
    AKf.AJjfj := 0;
    UpdateKfzt(AKf);
  end;
end;

//取消
procedure TTdjdForm.tblKrzdAfterCancel(DataSet: TDataSet);
begin
  inherited;
  tblKrzd.CancelUpdates;
  tblKrxx.CancelUpdates;
  tblKryj.CancelUpdates;
end;

procedure TTdjdForm.tblKrxxNewRecord(DataSet: TDataSet);
begin
  inherited;
  tblKrxxD_KRLX.Value := KRLX_TD;
  tblKrxxD_DDRQ.Value := Date;
  tblKrxxD_DDSJ.Value := Time;
end;

procedure TTdjdForm.tblKryjNewRecord(DataSet: TDataSet);
begin
  inherited;
  tblKryjD_FKFS.Value := FKFS_RMB;
end;

//取消
procedure TTdjdForm.btnCancClick(Sender: TObject);
begin
  inherited;
  tblKrzd.Cancel;
end;

//确认
procedure TTdjdForm.btnOKClick(Sender: TObject);
var
  I: Integer;
  AKf: TKf;
  AFjze : Currency;
  s : string;
begin
  inherited;

  //判断是否输入了团队名称
  if tblKrxxD_KRXM.Value='' then
    raise Exception.Create('请输入团队名称!');

  //判断是否输入了预付金额
  if (tblKryjD_FKFS.Value=FKFS_RMB)and(tblKryjD_YFJE.IsNull) then
    raise Exception.Create('请输入预付金额!');

  //判断是否添加了客房
  if vleKf.Cells[0,1]='' then
    raise Exception.Create('请添加客房!');

  //获得部门编号
  FBmbh := HotelData.FindBh('YGDA','D_BMBH','D_YGBH',CZY.CzyBh);

  //判断半全价
  FBqj := CheckDdsj(tblKrxxD_DDSJ.Value);
  //事务启动
  HotelData.DatabaseUser.StartTransaction;

  try

    WaitForm := TWaitForm.Create(Application);
    //添加帐单子项目
    try
      WaitForm.FTitle := '团队分配客房';
      WaitForm.Show;
      WaitForm.Update;
      //存盘
      tblKrzd.Post;
      tblKrxx.ApplyUpdates;
      tblKryj.ApplyUpdates;
      tblKrzd.ApplyUpdates;

      {try
        tblZd.Open;
      except
        On E:Exception do
        begin
          ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;
      }
      
      AFjze := 0;
      for I:=1 to vleKf.RowCount-1 do
      begin
        AKf.AKfbh := vleKf.Keys[I];
        AKf.ASjfj := StrToCurr(vleKf.Values[vleKf.Keys[I]]);
        if FBqj<>BQJ_ZC then AKf.AJjfj := AKf.ASjfj else  AKf.AJjfj := 0;
        AFjze := AFjze + AKf.AJjfj;
        //添加帐单
        AddZd(AKf);
        Inc(FItemNo);
        //添加员工开房
        //HotelData.YgkfAppend(CZY.CzyXm,AKf.AKfbh,tblKrxxD_KRXM.Value,AKf.ASjfj);
        //HotelData.YgkfAppend(JZY.CzyXm,AKf.AKfbh,tblKrxxD_KRXM.Value,AKf.ASjfj);
      end;

      //修改总单
      if AFjze > 0 then
      begin
        s := 'update KRZD set D_XFJE='+CurrToStr(AFjze)+' where (D_ZDBH="'+FZdbh+'")and(D_HH=0)';
        HotelData.ExecSql(s);
      end;

      {if tblZd.FindKey([FZdbh,0]) then
      begin
        tblZd.Edit;
        tblZdD_XFJE.Value := HotelData.SumJe('select sum(D_XFJE) from KRZD'
                                           +' where (D_ZDBH="'
                                           +FZdbh+'")and(D_HH<>0)');
        tblZd.Post;
      end;
      }
    finally
      //tblZd.Close;
      WaitForm.Hide;
      WaitForm.Free;
    end;

    //事务提交
    HotelData.DatabaseUser.Commit;
  except
    //事务回滚
    HotelData.DatabaseUser.Rollback;
    raise;
  end;

  //清除缓存
  tblKrxx.CommitUpdates;
  tblKryj.CommitUpdates;
  tblKrzd.CommitUpdates;

  Close;
end;

//检查预付金额有效性
procedure TTdjdForm.tblKryjD_YFJEValidate(Sender: TField);
begin
  inherited;
  if (tblKryjD_YFJE.Required)and(tblKryjD_YFJE.Value<=0) then
    raise Exception.Create('预付金额必须大于零!');
end;

//改变付款方式
procedure TTdjdForm.tblKryjD_FKFSChange(Sender: TField);
begin
  inherited;
  tblKryjD_YFJE.Required := tblKryjD_FKFS.Value = FKFS_RMB;
  tblKryjD_XYKBH.Required:= tblKryjD_FKFS.Value = FKFS_XYK;
  tblKryjD_KHBH.Required := tblKryjD_FKFS.Value = FKFS_JZ;

  dbeYfje.Visible  := tblKryjD_FKFS.Value = FKFS_RMB;
  dbcXykbh.Visible := tblKryjD_FKFS.Value = FKFS_XYK;
  dbcKhbh.Visible  := tblKryjD_FKFS.Value = FKFS_JZ;
  lblYfje.Visible  := tblKryjD_FKFS.Value <> FKFS_ZP;

  if dbeYfje.Visible  then lblYfje.Caption := '预付金额';
  if dbcXykbh.Visible then lblYfje.Caption := '信用卡';
  if dbcKhbh.Visible  then lblYfje.Caption := '记帐客户';

  lblMc.Caption := '';
  dbcXykbh.Left := dbeYfje.Left;
  dbcXYkbh.Top  := dbeYfje.Top;
  dbcKhbh.Left  := dbeYfje.Left;
  dbcKhbh.Top   := dbeYfje.Top;
end;

procedure TTdjdForm.tblKrzdD_CZYXMChange(Sender: TField);
begin
  inherited;
  FCzyxm := tblKrzdD_CZYXM.Value;
end;

procedure TTdjdForm.tblKrzdD_JZYXMChange(Sender: TField);
begin
  inherited;
  FJzyxm := tblKrzdD_JZYXM.Value;
end;

procedure TTdjdForm.vleKfKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if (not(Key in ['0'..'9']))and(Ord(Key)<>VK_BACK) then
  begin
    Key := #0;
    Beep;
  end;
end;

//增加客房
procedure TTdjdForm.btnInsertClick(Sender: TObject);
var
  ABfh,AEfh,I,Row: Integer;
begin
  inherited;
  try
    if (lblBfh.Text='')or(lblEfh.Text='')or(lblFj.Text='') then
      raise Exception.Create('请输入完整数据!');
      
    try
      ABfh := StrToInt(lblBfh.Text);
      AEfh := StrToInt(lblEfh.Text);
    except
      Exit;
      raise;
    end;
    if AEfh>=ABfh then
    begin
      if HotelData.CheckKfzt(IntToStr(AEfh))='' then Exit;
      if HotelData.CheckKfzt(IntToStr(ABfh))='' then Exit;
      for I := ABfh to AEfh do
      begin
        if (not vleKf.FindRow(IntToStr(I),Row))
          and(HotelData.CheckKfzt(IntToStr(I))=KFZT_OK) then
          vleKf.InsertRow(IntToStr(I),lblFj.Text,True);
      end;
    end;
    lblBfh.Text := '';
    lblEfh.Text := '';
    lblFj.Text  := '';
    lblBfh.SetFocus;
  except
    Exit;
    raise;
  end;
end;

//增加行号
procedure TTdjdForm.tblZdAfterPost(DataSet: TDataSet);
begin
  inherited;

end;

//历史客人信息载入
procedure TTdjdForm.LoadKrxx(const AKrxm: string);
var
  s : string;
begin
  with HotelData.qryUserData do
  begin
    s := 'select * from KRXXDA where D_KRXM="'+AKrxm+'"';
    SQL.Clear;
    SQL.Add(s);
    Open;
    if IsEmpty then
    begin
      Close;
      Exit;
    end;
    if Confirm('是否自动调入该客人在客史档案中的信息?') then
    begin
      //内宾
      //tblKrxxD_XB.Value   := FieldByName('D_XB').AsString;
      //tblKrxxD_MZBH.Value := FieldByName('D_MZBH').AsString;
      //tblKrxxD_DQBH.Value := FieldByName('D_DQBH').AsString;
      //tblKrxxD_ZJBH.Value := FieldByName('D_ZJBH').AsString;
      //tblKrxxD_ZJHM.Value := FieldByName('D_ZJHM').AsString;
      //tblKrxxD_CSNY.Value := FieldByName('D_CSNY').AsDateTime;
      //tblKrxxD_ZY.Value   := FieldByName('D_ZY').AsString;
      //tblKrxxD_JTDZ.Value := FieldByName('D_JTDZ').AsString;
      tblKrxxD_JDR.Value  := FieldByName('D_JDR').AsString;
      tblKrxxD_JDDW.Value := FieldByName('D_JDDW').AsString;
      tblKrxxD_DWMC.Value := FieldByName('D_DWMC').AsString;
      tblKrxxD_LXDH.Value := FieldByName('D_LXDH').AsString;
      tblKrxxD_QDR1.Value := FieldByName('D_QDR1').AsString;
      tblKrxxD_QDR2.Value := FieldByName('D_QDR2').AsString;
      tblKrxxD_QDR3.Value := FieldByName('D_QDR3').AsString;
      tblKrxxD_QDR4.Value := FieldByName('D_QDR4').AsString;
      //tblKrxxD_HCL.Value  := FieldByName('D_HCL').AsString;
      //tblKrxxD_HCQ.Value  := FieldByName('D_HCQ').AsString;
      //外宾
      //tblKrxxD_YWM.Value  := FieldByName('D_YWM').AsString;
      //tblKrxxD_YWX.Value  := FieldByName('D_YWX').AsString;
      //tblKrxxD_GBBH.Value := FieldByName('D_GBBH').AsString;
      //tblKrxxD_QZBH.Value := FieldByName('D_QZBH').AsString;
      //tblKrxxD_QZYXQ.Value:= FieldByName('D_QZYXQ').AsDateTime;

    end;
    Close;
  end;
end;

//判断客人来店次数
procedure TTdjdForm.dbeKrxmExit(Sender: TObject);
var
  i : Integer;
begin
  inherited;
  if dbeKrxm.Text='' then
  begin
    dbeKrxm.SetFocus;
    Exit;
  end;
  
  i := HotelData.Ldcs(dbeKrxm.Text);
  if i=0 then
    lblInfo.Caption := '友情提醒:该客人是首次来店'
  else
    lblInfo.Caption := '友情提醒:该客人是第'+IntToStr(i+1)+'次来店';
  LoadKrxx(dbeKrxm.Text);
end;

procedure TTdjdForm.dbcCzyxmExit(Sender: TObject);
begin
  inherited;
  if HotelData.FindBh('YGDA','D_YGBH','D_YGXM',tblKrzdD_CZYXM.Value)='' then
  begin
    FCzyxm := GetMc(dbcCzyxm.Items[dbcCzyxm.ItemIndex]);
    if HotelData.FindBh('YGDA','D_YGBH','D_YGXM',FCzyxm)<>'' then
      tblKrzdD_CZYXM.Value := FCzyxm
    else
      dbcCzyxm.SetFocus;
  end;
end;

procedure TTdjdForm.dbcJzyxmExit(Sender: TObject);
var
  AJzybh: string;
begin
  inherited;
  if HotelData.FindBh('YGDA','D_YGBH','D_YGXM',tblKrzdD_JZYXM.Value)='' then
  begin
    FJzyxm := GetMc(dbcJzyxm.Items[dbcJzyxm.ItemIndex]);
    AJzybh := HotelData.FindBh('YGDA','D_YGBH','D_YGXM',FJzyxm);
    if AJzybh<>'' then
    begin
      tblKrzdD_JZYXM.Value := FJzyxm;
      JZY.CzyBh := AJzybh;
      JZY.CzyXm := FJzyxm;
    end
    else
      dbcJzyxm.SetFocus;
  end;
end;

procedure TTdjdForm.dbcXykbhExit(Sender: TObject);
var
  AXykbh,AXykmc: string;
begin
  inherited;
  AXykmc := HotelData.FindMc('XYK','D_XYKBH','D_XYKMC',tblKryjD_XYKBH.Value);
  if AXykmc='' then
  begin
    AXykmc := GetMc(dbcXykbh.Items[dbcXykbh.ItemIndex]);
    AXykbh := HotelData.FindBh('XYK','D_XYKBH','D_XYKMC',AXykmc);
    if AXykbh<>'' then
    begin
      tblKryjD_XYKBH.Value := AXykbh;
      lblMc.Caption := AXykmc;
    end
    else
      dbcXykbh.SetFocus;
  end
  else
    lblMC.Caption := AXykmc;
end;

procedure TTdjdForm.dbcKhbhExit(Sender: TObject);
var
  AKhbh,AKhmc: string;
begin
  inherited;
  AKhmc := HotelData.FindMc('KHDA','D_KHBH','D_KHMC',tblKryjD_KHBH.Value);
  if AKhmc='' then
  begin
    AKhmc := GetMc(dbcKhbh.Items[dbcKhbh.ItemIndex]);
    AKhbh := HotelData.FindBh('KHDA','D_KHBH','D_KHMC',AKhmc);
    if AKhbh<>'' then
    begin
      tblKryjD_KHBH.Value := AKhbh;
      lblMc.Caption := AKhmc;
    end
    else
      dbcKhbh.SetFocus;
  end
  else
    lblMc.Caption := AKhmc;
end;

procedure TTdjdForm.dbcFkfsKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Key = '1' then tblKryjD_FKFS.Value := '人民币'
  else
  if Key = '2' then tblKryjD_FKFS.Value := '信用卡'
  else
  if Key = '3' then tblKryjD_FKFS.Value := '支票'
  else
  if Key = '4' then tblKryjD_FKFS.Value := '记帐';
end;

procedure TTdjdForm.dbeYfjeExit(Sender: TObject);
begin
  inherited;
  if dbeYfje.Text = '' then dbeYfje.SetFocus;
end;

end.

⌨️ 快捷键说明

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