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

📄 c_fcfjz.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DosMove, DB, DBTables, C_CtDefine, Grids, DBGrids, StdCtrls,
  Buttons, ExtCtrls;

type
  TFcfJzForm = class(TForm)
    tblCtjz: TTable;
    tblCtjzD_XMMC: TStringField;
    dsCtjz: TDataSource;
    tblCtxm: TTable;
    DosMove1: TDosMove;
    tblKrxx: TTable;
    tblKrzd: TTable;
    tblKrjz: TTable;
    tblCtdc: TTable;
    tblYsk: TTable;
    Panel1: TPanel;
    lblTitle: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    lblXfje: TLabel;
    lblSjje: TLabel;
    radJzfs: TRadioGroup;
    cmbJz: TComboBox;
    Panel3: TPanel;
    btnOk: TBitBtn;
    btnCanc: TBitBtn;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    lblYhje: TLabel;
    btnPrint: TBitBtn;
    Bevel1: TBevel;
    tblCtjzD_XMBH: TStringField;
    tblCtjzD_XFJE: TFloatField;
    tblCtjzD_YHJE: TFloatField;
    tblCtjzD_BZ: TStringField;
    procedure tblCtjzAfterPost(DataSet: TDataSet);
    procedure tblCtjzD_XFJEValidate(Sender: TField);
    procedure tblCtjzD_YHJEValidate(Sender: TField);
    procedure radJzfsClick(Sender: TObject);
    procedure btnOkClick(Sender: TObject);
    procedure btnPrintClick(Sender: TObject);
    procedure tblCtjzBeforeInsert(DataSet: TDataSet);
    procedure tblCtjzBeforeDelete(DataSet: TDataSet);
  private
    { Private declarations }
    FXfje: Currency;
    FYhje: Currency;
    FSjje: Currency;

    //FKcje: Currency;

    FJzfs: string;
    FXykbh: string;
    FKhbh: string;
    FKfbh: string;
    FKrbh: string;

    FBmbh: string;
    FZdbh: string;
    FJzbh: string;

    IsAppend : Boolean;

    FGbkJzxx : TGbkJzxx;

    procedure GetJzje;
    procedure ShowJzxx;
    procedure SumJe;

    procedure GetTdmc;
    function IsValid: Boolean;

    procedure UpdateKrzd;
    procedure UpdateKrjz;
    procedure UpdateCtdc(const ABz: string);
    procedure UpdateGz(const AZdbh,AZdlb: string);
    procedure UpdateYsk;
    
  public
    { Public declarations }

  end;

var
  FcfJzForm: TFcfJzForm;

procedure Fcfjz;

implementation

uses C_CtData, C_Sysprint, C_CardXf;

{$R *.dfm}

procedure Fcfjz;
begin
  FcfjzForm := TFcfjzForm.Create(Application);
  try
    with FcfjzForm do
    begin
    FBmbh := CtData.FindBh('YGDA','D_BMBH','D_YGBH',CZY.CzyBh);
    FJzfs := JZFS_RMB;
    radJzfs.ItemIndex := 0;
    GetJzje;
    ShowJzxx;
    tblCtjz.Close;
    tblCtjz.Open;
    ShowModal;
    end;
  finally
    FcfjzForm.tblCtjz.Close;
    FcfjzForm.Free;
  end;
end;

procedure TFcfJzForm.GetJzje;
begin
  FXfje := 0;
  FYhje := 0;
  tblCtjz.Close;
  tblCtjz.EmptyTable;
  IsAppend := True;
  tblCtjz.Open;
  try
    tblCtxm.Open;
    tblCtxm.First;
    while not tblCtxm.Eof do
    begin
      tblCtjz.Insert;
      tblCtjzD_XMBH.Value := tblCtxm.FieldByName('D_XMBH').AsString;
      tblCtjz.Post;
      tblCtxm.Next;
    end;
  finally
    IsAppend := False;
    tblCtxm.Close;
  end;
end;

procedure TFcfJzForm.ShowJzxx;
begin
  FSjje := FXfje - FYhje;
  lblXfje.Caption := CurrToStr(FXfje)+'元';
  lblYhje.Caption := CurrToStr(FYhje)+'元';
  lblSjje.Caption := CurrToStr(FSjje)+'元';
end;

procedure TFcfJzForm.SumJe;
var
  PrevRecord: TBookMark;
  AXfje,AYhje : Currency;
begin
  PrevRecord := tblCtjz.GetBookmark;
  try
    tblCtjz.DisableControls;
    AXfje := 0;
    AYhje := 0;
    tblCtjz.First;
    while not tblCtjz.Eof do
    begin
      AXfje := AXfje + tblCtjzD_XFJE.Value;
      AYhje := AYhje + tblCtjzD_YHJE.Value;
      tblCtjz.Next;
    end;
    FXfje := AXfje;
    FYhje := AYhje;
    ShowJzxx;
  finally
    tblCtjz.EnableControls;
    if PrevRecord<>nil then
    begin
      tblCtjz.GotoBookmark(PrevRecord);
      tblCtjz.FreeBookmark(PrevRecord);
    end;
  end;
end;

procedure TFcfJzForm.tblCtjzAfterPost(DataSet: TDataSet);
begin
  if not IsAppend then
    SumJe;
end;

procedure TFcfJzForm.tblCtjzD_XFJEValidate(Sender: TField);
begin
  if tblCtjzD_XFJE.Value < 0 then
    raise Exception.Create('消费金额不能小于零!');
end;

procedure TFcfJzForm.tblCtjzD_YHJEValidate(Sender: TField);
begin
  if (tblCtjzD_YHJE.Value<0)or(tblCtjzD_YHJE.Value>tblCtjzD_XFJE.Value) then
    raise Exception.Create('优惠金额必须大于零小于消费金额!');
end;

procedure TFcfjzForm.GetTdmc;
begin
  tblKrxx.Open;
  tblKrxx.Filter := 'D_KRLX=''T''';
  tblKrxx.Filtered := True;
  tblKrxx.First;
  while not tblKrxx.Eof do
  begin
    cmbJz.Items.Add(tblKrxx.FieldByName('D_KRXM').AsString);
    tblKrxx.Next;
  end;
  tblKrxx.Filter := '';
  tblKrxx.Filtered := False;
  tblKrxx.Close;
end;

procedure TFcfJzForm.radJzfsClick(Sender: TObject);
begin
  cmbJz.Items.Clear;
  cmbJz.Style := csDropDownList;
  case radJzfs.ItemIndex of
    0: FJzfs := JZFS_RMB;
    1:
      begin
        CtData.ListMc(cmbJz,'XYK','D_XYKMC');
        FJzfs := JZFS_XYK;
      end;
    2: FJzfs := JZFS_ZP;
    3:
      begin
        cmbJz.Style := csDropDown;
        CtData.ListDm(cmbJz,'KHDA','D_KHMC');
        FJzfs := JZFS_JZ;
      end;
    4:
      begin
        cmbJz.Style := csDropDown;
        FJzfs := JZFS_GSK;
      end;
    5:
      begin
        GetTdmc;
        FJzfs := JZFS_GTD;
      end;
    6:
      begin
        FJzfs := JZFS_ZD;
      end;
    7: FJzfs := JZFS_GBK;
  end;
end;

function TFcfjzForm.IsValid: Boolean;
var
  s: string;
begin
  Result := False;
  case radJzfs.ItemIndex of
    1:
      begin
        FXykbh := CtData.FindBh('XYK','D_XYKBH','D_XYKMC',cmbJz.Text);
        if FXykbh<>'' then
          Result := True
        else
          ShowInfo('请选择信用卡!');
      end;
    3:
      begin
        s := GetMc(cmbJz.Text);
        FKhbh := CtData.FindBh('KHDA','D_KHBH','D_KHMC',s);
        if FKhbh<>'' then
          Result := True
        else
          ShowInfo('请选择记帐客户!');
      end;
    4:
      begin
        if CtData.CheckKfzt(cmbJz.Text)=KFZT_BF then
        begin
          FKfbh := cmbJz.Text;
          Result := True;
        end
        else
          ShowInfo('请选择挂帐散客!');
      end;
    5:
      begin
        tblKrxx.Open;
        if tblKrxx.Locate('D_KRXM',cmbJz.Text,[]) then
        begin
          FKrbh := tblKrxx.FieldByName('D_KRBH').AsString;
          Result := True;
        end
        else
          ShowInfo('请选择挂帐团队!');
        tblKrxx.Close;
      end;
    else
      Result := True;
  end;
end;

procedure TFcfjzForm.UpdateKrzd;
begin
  FZdbh := CtData.GetBh('D_ZDBH',PREV_ZDBH);
  try
    tblKrzd.Open;
    tblKrzd.Insert;
    tblKrzd.FieldByName('D_ZDBH').AsString := FZdbh;
    tblKrzd.FieldByName('D_HH').AsInteger  := 0;
    tblKrzd.FieldByName('D_ZDLB').AsString := ZDLB_FYK;
    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_JZRQ').AsDateTime := Date;
    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;

    tblKrzd.Insert;
    tblKrzd.FieldByName('D_ZDBH').AsString := FZdbh;
    tblKrzd.FieldByName('D_HH').AsInteger  := 1;
    tblKrzd.FieldByName('D_XMBH').AsString := XMBH_CF;
    tblKrzd.FieldByName('D_ZDLB').AsString := ZDLB_FYK;
    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_JZRQ').AsDateTime := Date;
    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;

    if FJzfs = JZFS_GBK then
    begin
    tblKrzd.Insert;
    tblKrzd.FieldByName('D_ZDBH').AsString   := FZdbh;
    tblKrzd.FieldByName('D_HH').AsInteger    := 2;
    tblKrzd.FieldByName('D_XMBH').AsString   := XMBH_YJK;
    tblKrzd.FieldByName('D_ZDLB').AsString   := ZDLB_FYK;
    tblKrzd.FieldByName('D_XFJE').AsCurrency := 0-FGbkJzxx.AKcje;
    tblKrzd.FieldByName('D_XFRQ').AsDateTime := Date;
    tblKrzd.FieldByName('D_XFSJ').AsDateTime := Time;
    tblKrzd.FieldByName('D_YHJE').AsCurrency := 0;
    tblKrzd.FieldByName('D_JZRQ').AsDateTime := Date;

⌨️ 快捷键说明

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