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

📄 c_fcfjz.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    tblKrzd.FieldByName('D_JZSJ').AsDateTime := Time;
    tblKrzd.FieldByName('D_JZBZ').AsString   := JZ_YES;
    tblKrzd.FieldByName('D_JSBZ').AsString   := JS_YES;
    tblKrzd.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
    tblKrzd.FieldByName('D_JZYXM').AsString  := CZY.CzyXm;
    tblKrzd.FieldByName('D_BMBH').AsString   := FBmbh;
    tblKrzd.FieldByName('D_BZ').AsString     := ZDBZ_FYK+' 非用餐';
    tblKrzd.FieldByName('D_JZBH').AsString   := FJzbh;
    tblKrzd.Post;
    end;

  finally
    tblKrzd.Close;
  end;
end;

procedure TFcfjzForm.UpdateKrjz;
begin
  FJzbh := CtData.GetBh('D_JZBH',PREV_JZBH);
  try
    tblKrjz.Open;
    tblKrjz.Insert;
    tblKrjz.FieldByName('D_JZBH').AsString   := FJzbh;
    tblKrjz.FieldByName('D_HH').AsInteger    := 0;
    tblKrjz.FieldByName('D_JZLX').AsString   := JZLX_FYK;
    tblKrjz.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
    tblKrjz.FieldByName('D_YHJE').AsCurrency := FYhje;
    tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
    tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
    tblKrjz.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
    tblKrjz.FieldByName('D_BMBH').AsString   := FBmbh;
    tblKrjz.FieldByName('D_BZ').AsString     := JZBZ_FYK+' 非用餐';
    tblKrjz.FieldByName('D_JZFS').AsString   := FJzfs;
    tblKrjz.FieldByName('D_XYKBH').AsString  := FXykbh;
    tblKrjz.FieldByName('D_KHBH').AsString   := FKhbh;
    tblKrjz.Post;

    if FJzfs<>JZFS_GBK then
    begin
      tblKrjz.Insert;
      tblKrjz.FieldByName('D_JZBH').AsString   := FJzbh;
      tblKrjz.FieldByName('D_HH').AsInteger    := 1;
      tblKrjz.FieldByName('D_XMBH').AsString   := XMBH_CF;
      tblKrjz.FieldByName('D_JZLX').AsString   := JZLX_FYK;
      tblKrjz.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
      tblKrjz.FieldByName('D_YHJE').AsCurrency := FYhje;
      tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
      tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
      tblKrjz.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
      tblKrjz.FieldByName('D_BMBH').AsString   := FBmbh;
      tblKrjz.FieldByName('D_BZ').AsString     := JZBZ_FYK+' 非用餐';
      tblKrjz.FieldByName('D_JZFS').AsString   := FJzfs;
      tblKrjz.FieldByName('D_XYKBH').AsString  := FXykbh;
      tblKrjz.FieldByName('D_KHBH').AsString   := FKhbh;
      tblKrjz.Post;
    end
    else //贵宾卡
    begin

      //添加预交款
      tblKrjz.Insert;
      tblKrjz.FieldByName('D_JZBH').AsString   := FJzbh;
      tblKrjz.FieldByName('D_HH').AsInteger    := 2;
      tblKrjz.FieldByName('D_XMBH').AsString   := XMBH_YJK;
      tblKrjz.FieldByName('D_JZLX').AsString   := JZLX_FYK;
      tblKrjz.FieldByName('D_XFJE').AsCurrency := 0-FGbkJzxx.AKcje;
      tblKrjz.FieldByName('D_YHJE').AsCurrency := 0;
      tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
      tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
      tblKrjz.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
      tblKrjz.FieldByName('D_BMBH').AsString   := FBmbh;
      tblKrjz.FieldByName('D_BZ').AsString     := JZBZ_FYK+' 非用餐 '+JZBZ_YJK;
      tblKrjz.FieldByName('D_JZFS').AsString   := FJzfs;
      tblKrjz.FieldByName('D_XYKBH').AsString  := FXykbh;
      tblKrjz.FieldByName('D_KHBH').AsString   := FKhbh;
      tblKrjz.Post;

      //扣除部分按贵宾卡结帐
      tblKrjz.Insert;
      tblKrjz.FieldByName('D_JZBH').AsString   := FJzbh;
      tblKrjz.FieldByName('D_HH').AsInteger    := 3;
      tblKrjz.FieldByName('D_XMBH').AsString   := XMBH_CF;
      tblKrjz.FieldByName('D_JZLX').AsString   := JZLX_FYK;
      tblKrjz.FieldByName('D_XFJE').AsCurrency := FGbkJzxx.AKcje;
      tblKrjz.FieldByName('D_YHJE').AsCurrency := FYhje;
      tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
      tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
      tblKrjz.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
      tblKrjz.FieldByName('D_BMBH').AsString   := FBmbh;
      tblKrjz.FieldByName('D_BZ').AsString     := JZBZ_FYK+' 非用餐 '+JZBZ_GBK;
      tblKrjz.FieldByName('D_JZFS').AsString   := FJzfs;
      tblKrjz.FieldByName('D_XYKBH').AsString  := FXykbh;
      tblKrjz.FieldByName('D_KHBH').AsString   := FKhbh;
      tblKrjz.Post;

      if (FSjje - FGbkJzxx.AKcje)<>0 then
      begin
      //剩余部分按重选的结帐方式结帐
        if FGbkJzxx.AJzfs <> JZFS_JZ then
        begin
          tblKrjz.Insert;
          tblKrjz.FieldByName('D_JZBH').AsString   := FJzbh;
          tblKrjz.FieldByName('D_HH').AsInteger    := 4;
          tblKrjz.FieldByName('D_XMBH').AsString   := XMBH_CF;
          tblKrjz.FieldByName('D_JZLX').AsString   := JZLX_FYK;
          tblKrjz.FieldByName('D_XFJE').AsCurrency := FSjje - FGbkJzxx.AKcje;
          tblKrjz.FieldByName('D_YHJE').AsCurrency := 0;
          tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
          tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
          tblKrjz.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
          tblKrjz.FieldByName('D_BMBH').AsString   := FBmbh;
          tblKrjz.FieldByName('D_BZ').AsString     := JZBZ_FYK+' 非用餐';
          tblKrjz.FieldByName('D_JZFS').AsString   := FGbkJzxx.AJzfs;
          tblKrjz.FieldByName('D_XYKBH').AsString  := FGbkJzxx.AXykbh;
          tblKrjz.FieldByName('D_KHBH').AsString   := FGbkJzxx.AKhbh;
          tblKrjz.Post;
        end
        else //重选方式为记账
        begin
          try
            tblYsk.Open;
            tblYsk.Insert;
            tblYsk.FieldByName('D_KHBH').AsString   := FGbkJzxx.AKhbh;
            tblYsk.FieldByName('D_ZDBH').AsString   := FZdbh;
            tblYsk.FieldByName('D_HH').AsInteger    := 1;
            tblYsk.FieldByName('D_XMBH').AsString   := XMBH_CF;
            tblYsk.FieldByName('D_XFJE').AsCurrency := FSjje - FGbkJzxx.AKcje;
            tblYsk.FieldByName('D_XFRQ').AsDateTime := Date;
            tblYsk.FieldByName('D_XFSJ').AsDateTime := Time;
            tblYsk.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
            tblYsk.FieldByName('D_BZ').AsString     := ZDBZ_JZ+FGbkJzxx.AKhbh;
            tblYsk.Post;
          finally
            tblYsk.Close;
          end;

        end;
      end;
    end;
  finally
    tblKrjz.Close;
  end;
end;

procedure TFcfjzForm.UpdateCtdc(const ABz: string);
var
  ADcbh : string;
begin
  try
    ADcbh := CtData.GetBh('D_DCBH',PREV_DCBH);
    tblCtdc.Open;
    tblCtjz.DisableControls;
    tblCtjz.First;
    tblCtdc.Insert;
    tblCtdc.FieldByName('D_DCBH').AsString   := ADcbh;
    tblCtdc.FieldByName('D_CTBH').AsString   := '其他';
    tblCtdc.FieldByName('D_DCLB').AsString   := DCLB_QT;
    tblCtdc.FieldByName('D_XMBH').AsString   := '0';
    tblCtdc.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
    tblCtdc.FieldByName('D_YHJE').AsCurrency := FYhje;
    tblCtdc.FieldByName('D_JZFS').AsString   := FJzfs;
    tblCtdc.FieldByName('D_XYKBH').AsString  := FXykbh;
    tblCtdc.FieldByName('D_KHBH').AsString   := FKhbh;
    tblCtdc.FieldByName('D_XFRQ').AsDateTime := Date;
    tblCtdc.FieldByName('D_XFSJ').AsDateTime := Time;
    tblCtdc.FieldByName('D_SJDM').AsString   := GetSjdm(Time);
    tblCtdc.FieldByName('D_JSBZ').AsString   := JS_YES;
    tblCtdc.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
    tblCtdc.FieldByName('D_BZ').AsString     := ABz;
    tblCtdc.Post;

    while not tblCtjz.Eof do
    begin
      if tblCtjzD_XFJE.Value>0 then
      begin
        tblCtdc.Insert;
        tblCtdc.FieldByName('D_DCBH').AsString   := ADcbh;
        tblCtdc.FieldByName('D_CTBH').AsString   := '0';
        tblCtdc.FieldByName('D_DCLB').AsString   := DCLB_QT;
        tblCtdc.FieldByName('D_XMBH').AsString   := tblCtjzD_XMBH.Value;
        tblCtdc.FieldByName('D_XFJE').AsCurrency := tblCtjzD_XFJE.Value;
        tblCtdc.FieldByName('D_YHJE').AsCurrency := tblCtjzD_YHJE.Value;
        tblCtdc.FieldByName('D_JZFS').AsString   := FJzfs;
        tblCtdc.FieldByName('D_XYKBH').AsString  := FXykbh;
        tblCtdc.FieldByName('D_KHBH').AsString   := FKhbh;
        tblCtdc.FieldByName('D_JSBZ').AsString   := JS_YES;
        tblCtdc.FieldByName('D_BZ').AsString     := ABz;
        tblCtdc.FieldByName('D_XFRQ').AsDateTime := Date;
        tblCtdc.FieldByName('D_XFSJ').AsDateTime := Time;
        tblCtdc.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
        tblCtdc.FieldByName('D_SJDM').AsString   := GetSjdm(Time);
        tblCtdc.Post;
      end;
      tblCtjz.Next;
    end;
  finally
    tblCtjz.EnableControls;
    tblCtdc.Close;
  end;
end;

procedure TFcfjzForm.UpdateGz(const AZdbh,AZdlb: string);
var
  AHh: Integer;
  AKrbh,AYjbh: string;
begin
  try
    tblKrzd.Filter := 'D_ZDBH='''+AZdbh+'''';
    tblKrzd.Filtered := True;
    tblKrzd.Open;
    if tblKrzd.Locate('D_HH',0,[]) then
    begin
      tblKrzd.Edit;
      tblKrzd.FieldByName('D_XFJE').AsCurrency :=
        tblKrzd.FieldByName('D_XFJE').AsCurrency + FSjje + FYhje;
      tblKrzd.FieldByName('D_YHJE').AsCurrency :=
        tblKrzd.FieldByName('D_YHJE').AsCurrency + FYhje;
      tblKrzd.Post;
      AKrbh := tblKrzd.FieldbyName('D_KRBH').AsString;
      AYjbh := tblKrzd.FieldbyName('D_YJBH').AsString;
    end;
    tblKrzd.Last;
    AHh := tblKrzd.FieldbyName('D_HH').AsInteger + 1;
    tblKrzd.Insert;
    tblKrzd.FieldByName('D_ZDBH').AsString := AZdbh;
    tblKrzd.FieldByName('D_KRBH').AsString := AKrbh;
    tblKrzd.FieldByName('D_YJBH').AsString := AYjbh;
    tblKrzd.FieldByName('D_HH').AsInteger  := AHh;
    tblKrzd.FieldByName('D_XMBH').AsString := XMBH_CF;
    tblKrzd.FieldByName('D_ZDLB').AsString := AZdlb;
    tblKrzd.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
    tblKrzd.FieldByName('D_XFRQ').AsDateTime := Date;
    tblKrzd.FieldByName('D_XFSJ').AsDateTime := Time;
    tblKrzd.FieldByName('D_YHJE').AsCurrency := FYhje;
    tblKrzd.FieldByName('D_JZBZ').AsString := JZ_NO;
    tblKrzd.FieldByName('D_JSBZ').AsString := JS_NO;
    tblKrzd.FieldByName('D_CZYXM').AsString := CZY.CzyXm;
    tblKrzd.FieldByName('D_JZYXM').AsString := CZY.CzyXm;
    tblKrzd.FieldByName('D_BMBH').AsString  := FBmbh;
    tblKrzd.FieldByName('D_BZ').AsString := ZDBZ_GZ+' 非用餐';
    tblKrzd.Post;
  finally
    tblKrzd.Close;
    tblKrzd.Filter := '';
    tblKrzd.Filtered := False;
  end;
end;

procedure TFcfjzForm.UpdateYsk;
begin
  try
    tblYsk.Open;
    tblYsk.Insert;
    tblYsk.FieldByName('D_KHBH').AsString := FKhbh;
    tblYsk.FieldByName('D_ZDBH').AsString := FZdbh;
    tblYsk.FieldByName('D_HH').AsInteger  := 1;
    tblYsk.FieldByName('D_XMBH').AsString := XMBH_CF;
    tblYsk.FieldByName('D_XFJE').AsCurrency := FSjje;
    tblYsk.FieldByName('D_XFRQ').AsDateTime := Date;
    tblYsk.FieldByName('D_XFSJ').AsDateTime := Time;
    tblYsk.FieldByName('D_CZYXM').AsString  := CZY.CzyXm;
    tblYsk.FieldByName('D_BZ').AsString := ZDBZ_JZ+FKhbh;
    tblYsk.Post;
  finally
    tblYsk.Close;
  end;
end;

procedure TFcfJzForm.btnOkClick(Sender: TObject);
begin
  if not IsValid then Exit;
  if FSjje=0 then
  begin
    ShowWarning('请录入金额!');
    Exit;
  end;

  if not Confirm('你是否确认结帐?') then Exit;
  
  CtData.DatabaseUser.StartTransaction;
  try
  if (FJzfs=JZFS_RMB)or(FJzfs=JZFS_ZP)or(FJzfs=JZFS_XYK)or(FJzfs=JZFS_GBK) then
  begin
    if FJzfs=JZFS_GBK then
    begin
      FGbkJzxx := CardXf(FSjje);
      if FGbkJzxx.AKcje = 0 then
      begin
        CtData.DatabaseUser.Commit;
        Exit;
      end;
    end;
    UpdateKrzd;
    UpdateKrjz;
    UpdateCtdc('零客');
  end;

  if (FJzfs=JZFS_GSK) then
  begin
    FZdbh := CtData.FindBh('KFZT','D_ZDBH','D_KFBH',FKfbh);
    UpdateGz(FZdbh,ZDLB_YK);
    UpdateCtdc('挂'+FKfbh);
  end;

  if (FJzfs=JZFS_GTD) then
  begin
    FZdbh := CtData.FindBh('KRZD','D_ZDBH','D_KRBH',FKrbh);
    //FZdbh := CtData.FindBh('KFZT','D_ZDBH','D_KRBH',FKrbh);
    UpdateGz(FZdbh,ZDLB_TD);
    UpdateCtdc('挂'+cmbJz.Items[cmbJz.ItemIndex]);
  end;

  if FJzfs=JZFS_JZ then
  begin
    UpdateKrzd;
    UpdateYsk;
    UpdateCtdc('记'+CtData.FindMc('KHDA','D_KHBH','D_KHMC',FKhbh));
  end;

  if FJzfs=JZFS_ZD then
  begin
    UpdateCtdc('宾馆招待');
  end;

  CtData.DatabaseUser.Commit;
  except
    CtData.DatabaseUser.Rollback;
    raise;
  end;

  {if Confirm('是否打印帐单?') then
    btnPrintClick(nil);}
  Close;
end;

procedure TFcfJzForm.btnPrintClick(Sender: TObject);
var
  APrintStru: TPrintStru;
begin
  APrintStru.ATitle := '帐单('+FJzfs+')';
  APrintStru.ASub := '消费金额:'+lblXfje.Caption+' '
                    +'优惠金额:'+lblYhje.Caption+' '
                    +'实结金额:'+lblSjje.Caption;
  APrintStru.ADataSet := tblCtjz;
  PrintLb(APrintStru,DBGrid1);
end;

procedure TFcfJzForm.tblCtjzBeforeInsert(DataSet: TDataSet);
begin
  if not IsAppend then
    Abort;
end;

procedure TFcfJzForm.tblCtjzBeforeDelete(DataSet: TDataSet);
begin
  Abort;
end;

end.

⌨️ 快捷键说明

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