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

📄 c_fykjz.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{立方酒店管理系统 v1.0
 Copyright by CubicSoft
 program by ls.
 Date:20020301-20020601
 20020627 加入注释
}
unit C_FykJz;

interface

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

type
  TFykJzForm = class(TStdJdForm)
    Label2: TLabel;
    edtJzrq: TMaskEdit;
    Label3: TLabel;
    edtJzsj: TMaskEdit;
    radJzfs: TRadioGroup;
    cmbJz: TComboBox;
    Label1: TLabel;
    lblXfje: TLabel;
    Label11: TLabel;
    lblYhje: TLabel;
    DBGrid1: TDBGrid;
    tblKrjz: TTable;
    dsKrjz: TDataSource;
    tblKrjzD_XFXM: TStringField;
    Label5: TLabel;
    lblJsje: TLabel;
    tblKrzd: TTable;
    btnPrint: TBitBtn;
    Bevel2: TBevel;
    tblKrjzD_JZBH: TStringField;
    tblKrjzD_HH: TIntegerField;
    tblKrjzD_XMBH: TStringField;
    tblKrjzD_XFDJ: TFloatField;
    tblKrjzD_XFSL: TFloatField;
    tblKrjzD_XFGG: TStringField;
    tblKrjzD_XFJE: TFloatField;
    tblKrjzD_YJJE: TFloatField;
    tblKrjzD_YHJE: TFloatField;
    tblKrjzD_JZFS: TStringField;
    tblKrjzD_JZLX: TStringField;
    tblKrjzD_KHBH: TStringField;
    tblKrjzD_XYKBH: TStringField;
    tblKrjzD_JZRQ: TDateTimeField;
    tblKrjzD_JZSJ: TDateTimeField;
    tblKrjzD_CZYXM: TStringField;
    tblKrjzD_BZ: TStringField;
    tblKrjzD_YSRQ: TStringField;
    tblKrjzD_BMBH: TStringField;
    tblYsk: TTable;
    procedure radJzfsClick(Sender: TObject);
    procedure edtJzrqExit(Sender: TObject);
    procedure edtJzsjExit(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure tblKrjzNewRecord(DataSet: TDataSet);
    procedure tblKrjzAfterPost(DataSet: TDataSet);
    procedure btnCancClick(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure btnPrintClick(Sender: TObject);
    procedure tblKrjzD_XFJEValidate(Sender: TField);
    procedure tblKrjzD_YHJEValidate(Sender: TField);
    procedure tblKrjzD_XMBHValidate(Sender: TField);
    procedure cmbJzDblClick(Sender: TObject);
  private
    { Private declarations }
    FBmbh: string;
    FKey: string;
    FJzrq: TDateTime;
    FJzsj: TDateTime;
    FJzfs: string;
    FXykbh: string;
    FXfje: Currency;
    FYhje: Currency;
    FJsje: Currency;
    FJzbh: string;
    FKhbh: string;
    FHh: Integer;
    IsUpdate: Boolean;
    IsSum   : Boolean;
    function IsValid: Boolean;
    procedure ShowJzxx;
    procedure ShowZd;
    procedure SumXfje;
    procedure UpdateKrjz;
    procedure UpdateKrzd;
    procedure AddYjk(AGbkJzxx: TGbkJzxx);
    procedure UpdateYsk;
  public
    { Public declarations }
  end;

var
  FykJzForm: TFykJzForm;

procedure Fykjz;

implementation

uses C_HotelData, C_Sysprint, C_CardXf, C_KhdaSel;

{$R *.dfm}

//非寓客结帐
procedure Fykjz;
begin
  FykjzForm := TFykjzForm.Create(Application);
  try
    with FykjzForm do
    begin
      //获取部门编号
      FBmbh := HotelData.FindBh('YGDA','D_BMBH','D_YGBH',CZY.CzyBh);

      //初始化
      edtJzrq.Text := FormatDateTime('yyyy-mm-dd',Date);
      edtJzsj.Text := FormatDateTime('hh:mm',Time);
      FJzrq        := Date;
      FJzsj        := Time;
      FJzfs        := JZFS_RMB;
      IsUpdate     := True;
      IsSum        := True;

      //打开帐单
      ShowZd;
      ShowModal;
    end;
  finally
    FykjzForm.Free;
  end;
end;

//打开帐单
procedure TFykJzForm.ShowZd;
begin
  //获取结帐编号
  FJzbh := HotelData.GetBh('D_JZBH',PREV_JZBH);

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

  FHh := 1;
end;

//消费金额、优惠金额
procedure TFykJzForm.SumXfje;
var
  PrevRecord: TBookMark;
begin
  PrevRecord := tblKrjz.GetBookmark;
  try
    tblKrjz.DisableControls;
    FXfje := 0;
    FYhje := 0;
    tblKrjz.First;
    while not tblKrjz.Eof do
    begin
      FXfje := FXfje + tblKrjzD_XFJE.Value;
      FYhje := FYhje + tblKrjzD_YHJE.Value;
      tblKrjz.Next;
    end;
  finally
    tblKrjz.EnableControls;
    if PrevRecord<>nil then
    begin
      tblKrjz.GotoBookmark(PrevRecord);
      tblKrjz.FreeBookmark(PrevRecord);
    end;
    ShowJzxx;
  end;
end;

//显示结帐信息
procedure TFykJzForm.ShowJzxx;
begin
  //结算金额
  FJsje := FXfje-FYhje;

  lblXfje.Caption := CurrToStr(FXfje)+'元';
  lblYhje.Caption := CurrToStr(FYhje)+'元';
  lblJsje.Caption := CurrToStr(FJsje)+'元';
end;

//选择结帐方式
procedure TFykJzForm.radJzfsClick(Sender: TObject);
begin
  inherited;
  cmbJz.Items.Clear;
  cmbJz.Style := csDropDownList;

  case radJzfs.ItemIndex of
    0: FJzfs := JZFS_RMB;
    1:
      begin
        HotelData.ListMc(cmbJz,'XYK','D_XYKMC');
        FJzfs := JZFS_XYK;
      end;
    2: FJzfs := JZFS_ZP;
    3:
      begin
        cmbJz.Style := csDropDown;
        HotelData.ListDm(cmbJz,'KHDA','D_KHMC');
        FJzfs := JZFS_JZ;
      end;

    4: FJzfs := JZFS_GBK;
  end;
end;


procedure TFykJzForm.edtJzrqExit(Sender: TObject);
begin
  inherited;
  FJzrq := StrToDate(edtJzrq.Text);
end;

procedure TFykJzForm.edtJzsjExit(Sender: TObject);
begin
  inherited;
  FJzsj := StrToTime(edtJzsj.Text);
end;

//检查有效性
function TFykjzForm.IsValid: Boolean;
var
  s : string;
begin
  Result := False;
  case radJzfs.ItemIndex of
    1:
      begin
        FXykbh := HotelData.FindBh('XYK','D_XYKBH','D_XYKMC',cmbJz.Text);
        if FXykbh<>'' then
          Result := True
        else
          ShowInfo('请选择信用卡!');
      end;
    3:
      begin
        s := GetMc(cmbJz.Text);
        FKhbh := HotelData.FindBh('KHDA','D_KHBH','D_KHMC',s);
        if FKhbh<>'' then
          Result := True
        else
          ShowInfo('请选择记帐客户!');
      end;

    else
      Result := True;
  end;
end;

//添加结帐总单 行号=0
procedure TFykJzForm.UpdateKrjz;
begin
  IsUpdate := True;
  IsSum    := False;
  FHh      := 0;

  tblKrjz.Insert;
  tblKrjzD_XFJE.Value := FXfje;
  tblKrjzD_YHJE.Value := FYhje;
  tblKrjzD_JZFS.Value := FJzfs;
  tblKrjzD_XYKBH.Value:= FXykbh;
  tblKrjzD_JZRQ.Value := FJzrq;
  tblKrjzD_JZSJ.Value := FJzsj;
  tblKrjzD_CZYXM.Value:= CZY.CzyXm;
  tblKrjzD_BMBH.Value := FBmbh;
  tblKrjzD_BZ.Value   := JZBZ_FYK;
  tblKrjz.Post;
  //修改结帐信息
  tblKrjz.First;
  while not tblKrjz.Eof do
  begin
    tblKrjz.Edit;
    tblKrjzD_JZFS.Value := FJzfs;
    tblKrjzD_XYKBH.Value:= FXykbh;
    tblKrjzD_JZRQ.Value := FJzrq;
    tblKrjzD_JZSJ.Value := FJzsj;
    tblKrjz.Post;
    tblKrjz.Next;
  end;
  IsUpdate := False;
  IsSum    := True;
end;

//更新应收款
procedure TFykjzForm.UpdateYsk;
var
  AZdbh: string;
begin
  try
    try
      tblYsk.Open;
    except
      On E:Exception do
      begin
        ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                    +#13#10
                    +'错误信息:'
                    +E.Message);
        raise;
      end;
    end;
    AZdbh := HotelData.GetBh('D_ZDBH',PREV_ZDBH);
    tblKrjz.First;
    while not tblKrjz.Eof do
    begin
        tblYsk.Insert;
        tblYsk.FieldByName('D_KHBH').AsString   := FKhbh;
        tblYsk.FieldByName('D_ZDBH').AsString   := AZdbh;

⌨️ 快捷键说明

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