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

📄 c_yjsh.pas

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

interface

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

type
  TYjshForm = class(TStdJdForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    qryKfztsk: TQuery;
    qryKfzttd: TQuery;
    qryKrxxtd: TQuery;
    tblKrzd: TTable;
    qryZd: TQuery;
    tblYytj: TTable;
    qryJz: TQuery;
    tblYytjda: TTable;
    tblKrjz: TTable;
    tblKrjzda: TTable;
    tblXmdm: TTable;
    tblLkyskz: TTable;
    tblLkyskzda: TTable;
    qryLkyskz: TQuery;
    ProgressBar1: TProgressBar;
    tblSjtj: TTable;
    qryUser: TQuery;
    tblJzfltj: TTable;
    tblYssj: TTable;
    procedure btnOKClick(Sender: TObject);
  private
    { Private declarations }
    FYsrq: string;
    FJryy: Currency;
    FJrsh: Currency;
    FJryh: Currency;
    FZrbyyy: Currency;
    FZrbyyh: Currency;
    FZrljyy: Currency;
    FZrljyh: Currency;
    FZrljsh: Currency;
    FZrljys: Currency;

    //FJjfj: Currency;
    //FYjfj: Currency;
    FSkfj: Currency;
    FTdfj: Currency;
    FWbfj: Currency;
    FFjze: Currency;
    FBqf : Currency;

    FSjcwe: Currency;
    FCtsje: Currency;
    FCtshe: Currency;
    FLkysk: Currency;
    FKhysk: Currency;
    FJrshyjk : Currency;
    FSjyjk: Currency;
    FDbf  : Currency;
    FYjkkc: Currency;

    FBmbh: string;

    FRpjj: Currency;
    FRpjzkl : Double;

    procedure OpenTable;
    procedure CloseTable;
    procedure UpdateFj;
    procedure AddSkfj(AKfxx: TKfxx);
    procedure AddTdfj;
    procedure UpdateKfztSk;
    procedure UpdateKfztTd;
    procedure UpdateKfzt;

    procedure UpdateKrzd;
    procedure EmptyKrzd;
    procedure UpdateKrjz;

    procedure InitYytj;
    procedure InitYytjRecord(const AXmbh: string);
    procedure UpdateYytj;

    procedure InitLkyskz;
    procedure UpdateLkyskz;

    procedure InitLctj;
    procedure UpdateLctj;

    procedure UpdateSjtj;
    procedure UpdateCwjs;

    procedure UpdateYjk;

    procedure UpdateJzfltj;

    function SumSjcwe: Currency;
    function SumCtsje: Currency;
    function SumCtshe: Currency;
    function SumLkysk: Currency;
    function SumKhysk: Currency;
    function SumJrshyjk : Currency;
    function SumSjyjk: Currency;

    //function GetJjfj: Currency;
    //function GetYjfj: Currency;
    function GetFjze: Currency;
    function GetYsrq: string;

    function IsCtjz: Boolean;

    procedure UpdateCy;
    procedure EmptyBqj;

    procedure BakData;
    procedure Backup;

    procedure SetYssj;
  public
    { Public declarations }
  end;

var
  YjshForm: TYjshForm;

procedure Yjsh;

implementation

uses C_HotelData;

{$R *.dfm}

procedure Yjsh;
begin
  YjshForm := TYjshForm.Create(Application);
  try
    with YjshForm do
    begin
      OpenTable;
      FYsrq := GetYsrq;
      if tblYytj.FindKey([FYsrq,'0']) then
      begin
        ShowWarning('你今天已经夜审过了!');
        Exit;
      end;
      //edit by ls 20021120
      if not IsCtjz then
      begin
        if not Confirm('餐厅可能尚有未结账的餐台,是否继续夜审!') then
        Exit;
      end;

      ShowModal;
    end;
  finally
    YjshForm.CloseTable;
    YjshForm.Free;
  end;
end;

procedure TYjshForm.SetYssj;
begin
  tblYssj.Open;
  if tblYssj.IsEmpty then
  begin
    tblYssj.Insert;
    tblYssj.FieldByName('D_YSSJ').AsString := FormatDateTime('hhnnss',Time);
    tblYssj.Post;
  end
  else
  begin
    tblYssj.Last;
    tblYssj.Edit;
    tblYssj.FieldByName('D_YSSJ').AsString := FormatDateTime('hhnnss',Time);
    tblYssj.Post;
  end;
  tblYssj.Close;
end;

procedure TYjshForm.UpdateYjk;
var
  s : string;
begin
  s := 'update YJK set D_YSRQ="'+FYsrq+'" where D_YSRQ is null';
  HotelData.ExecSql(s);
end;

function TYjshForm.IsCtjz: Boolean;
begin
  Result := True;
  with HotelData.qryUserData do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add('select * from CTDC where D_JZFS is null');
    Open;
    if not IsEmpty then
      Result := False;
    Close;
  end;
end;

procedure TYjshForm.OpenTable;
begin
  try
    qryKfztSk.Open;
    qryKfztTd.Open;
    qryKrxxTd.Open;
    tblKrzd.Open;
    tblYytj.Open;
    tblXmdm.Open;

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

end;

procedure TYjshForm.CloseTable;
begin
  qryKfztSk.Close;
  qryKfztTd.Close;
  qryKrxxTd.Close;
  tblKrzd.Close;
  tblYytj.Close;
  tblXmdm.Close;
end;

//初始化楼层统计
procedure TYjshForm.InitLctj;
begin
  with HotelData do
  begin
    //备份楼层统计
    BakTable(tblLctj,tblLctjda);
    //ExecSql('delete from LCTJ');

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

      tblLcdm.First;
      while not tblLcdm.Eof do
      begin
        if not tblLctj.Locate('D_LCBH',tblLcdm.FieldByName('D_LCBH').AsString,[]) then
        begin
          tblLctj.Insert;
          tblLCtj.FieldByName('D_YSRQ').AsString := FYsrq;
          tblLctj.FieldByName('D_LCBH').AsString := tblLcdm.FieldByName('D_LCBH').AsString;
          tblLctj.Post;
        end
        else
        begin
          tblLctj.Edit;
          tblLctj.FieldByName('D_YSRQ').AsString := FYsrq;
          tblLctj.Post;
        end;
        tblLcdm.Next;
      end;
      if not tblLctj.Locate('D_LCBH','0',[]) then
      begin
        tblLctj.Insert;
        tblLCtj.FieldByName('D_YSRQ').AsString := FYsrq;
        tblLctj.FieldByName('D_LCBH').AsString := '0';
        tblLctj.Post;
      end
      else
      begin
        tblLctj.Edit;
        tblLctj.FieldByName('D_YSRQ').AsString := FYsrq;
        tblLctj.Post;
      end;
    finally
      tblLctj.Close;
      tblLcdm.Close;
    end;
  end;
end;

//楼层统计
procedure TYjshForm.UpdateLctj;
var
  SqlStr                     : string;
  SumFjs,SumBjs,SumQjs: Integer;
  SumCzs : Double;
  SumJjfj,SumFj: Currency;
begin
  SumFjs:=0;SumCzs:=0;SumBjs:=0;SumQjs:=0;SumJjfj:=0;SumFj:=0;

  with HotelData do
  begin
    try
      try
        tblLctj.Open;
        //edit by ls. 2003.03.27
        //SqlStr := 'select D_LCBH,count(*),sum(D_KRSL),sum(D_BJS),sum(D_QJS),sum(D_JJFJ),sum(D_SJFJ) from KFZT where D_KFZT<>"R" group by D_LCBH';
        SqlStr := 'select D_LCBH,count(*),sum(D_KRSL),sum(D_BJS),sum(D_QJS),sum(D_JJFJ),sum(D_SJFJ) from KFZT group by D_LCBH';
        if qrySysData.Active then qrySysData.Active := False;
        qrySysData.SQL.Clear;
        qrySysData.SQL.Add(SqlStr);
        qrySysData.Open;
      except
        On E:Exception do
        begin
          ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;

      qrySysData.First;
      while not qrySysData.Eof do
      begin
        if tblLctj.FindKey([FYsrq,qrySysData.Fields[0].AsString]) then
        begin
          tblLctj.Edit;
          tblLctj.FieldByName('D_FJS').AsInteger   := qrySysData.Fields[1].AsInteger;
          tblLctj.FieldByName('D_CZS').AsFloat     := qrySysData.Fields[2].AsFloat+qrySysData.Fields[3].AsFloat*0.5+qrySysData.Fields[4].AsFloat;
          tblLctj.FieldByName('D_BJS').AsInteger   := qrySysData.Fields[3].AsInteger;
          tblLctj.FieldByName('D_QJS').AsInteger   := qrySysData.Fields[4].AsInteger;
          tblLctj.FieldByName('D_JJFJ').AsCurrency := qrySysData.Fields[5].AsCurrency+qrySysData.Fields[6].AsCurrency;
          tblLctj.FieldByName('D_RCZL').AsFloat    := tblLctj.FieldByName('D_CZS').AsFloat/qrySysData.Fields[1].AsInteger;

          SumFjs := SumFjs  + qrySysData.Fields[1].AsInteger;
          SumCzs := SumCzs  + tblLctj.FieldbyName('D_CZS').AsFloat;
          SumBjs := SumBjs  + qrySysData.Fields[3].AsInteger;
          SumQjs := SumQjs  + qrySysData.Fields[4].AsInteger;
          SumJjfj:= SumJjfj + qrySysData.Fields[5].AsCurrency;
          SumFj  := SumFj   + qrySysData.Fields[6].AsCurrency;

          tblLctj.Post;
        end;
        qrySysData.Next;
      end;

      if tblLctj.FindKey([FYsrq,'0']) then
      begin
        tblLctj.Edit;
        tblLctj.FieldByName('D_FJS').AsInteger   := SumFjs;
        tblLctj.FieldByName('D_CZS').AsFloat     := SumCzs;
        tblLctj.FieldByName('D_BJS').AsInteger   := SumBjs;
        tblLctj.FieldByName('D_QJS').AsInteger   := SumQjs;
        tblLctj.FieldByName('D_JJFJ').AsCurrency := SumJjfj+SumFj;
        //edit by ls.2002.11.02应盛总要求修改总房数为141
        tblLctj.FieldByName('D_RCZL').AsFloat    := SumCzs/141;
        //tblLctj.FieldByName('D_RCZL').AsFloat    := SumCzs/SumFjs;
        tblLctj.Post;
        if tblLctj.FieldByName('D_CZS').AsFloat <> 0 then
          FRpjj := tblLctj.FieldByName('D_JJFJ').AsCurrency / tblLctj.FieldByName('D_CZS').AsFloat
        else
          FRpjj := 0;
        FRpjzkl := tblLctj.FieldByName('D_RCZL').AsFloat;
        FBqf  := SumJjfj;
        FDbf  := SumCzs*2;
      end;

    finally
      tblLctj.Close;
      qrySysData.Close;
    end;
  end;
end;

//获取夜审日期
function TYjshForm.GetYsrq: string;
begin
  Result := FormatDateTime('yyyymmdd',Date);
end;

//初始化营业统计记录
procedure TYjshForm.InitYytjRecord(const AXmbh: string);
begin
  if tblYytj.Locate('D_XMBH',AXmbh,[]) then
  begin
    tblYytj.Edit;
    tblYytj.FieldByName('D_YSRQ').AsString   := FYsrq;
    tblYytj.FieldByName('D_JRYY').AsCurrency := 0;
    tblYytj.FieldByName('D_JRSH').AsCurrency := 0;
    tblYytj.FieldByName('D_JRYH').AsCurrency := 0;

    //如果是月初
    if Copy(FYsrq,7,2)='01' then
    begin
      tblYytj.FieldByName('D_ZRBYYY').AsCurrency := 0;
      tblYytj.FieldByName('D_ZRBYYH').AsCurrency := 0;
    end
    else
    begin
      tblYytj.FieldByName('D_ZRBYYY').AsCurrency := tblYytj.FieldByName('D_BYYY').AsCurrency;
      tblYytj.FieldByName('D_ZRBYYH').AsCurrency := tblYytj.FieldByName('D_BYYH').AsCurrency;
    end;

    tblYytj.FieldByName('D_ZRLJYY').AsCurrency := tblYytj.FieldByName('D_LJYY').AsCurrency;
    tblYytj.FieldByName('D_ZRLJYH').AsCurrency := tblYytj.FieldByName('D_LJYH').AsCurrency;
    tblYytj.FieldByName('D_ZRLJSH').AsCurrency := tblYytj.FieldByName('D_LJSH').AsCurrency;
    tblYytj.FieldByName('D_ZRLJYS').AsCurrency := tblYytj.FieldByName('D_LJYS').AsCurrency;
    tblYytj.Post;
  end
  else
  begin
    tblYytj.Insert;
    tblYytj.FieldByName('D_XMBH').AsString     := AXmbh;
    tblYytj.FieldByName('D_YSRQ').AsString     := FYsrq;
    tblYytj.FieldByName('D_JRYY').AsCurrency   := 0;
    tblYytj.FieldByName('D_JRSH').AsCurrency   := 0;
    tblYytj.FieldByName('D_JRYH').AsCurrency   := 0;
    tblYytj.FieldByName('D_ZRBYYY').AsCurrency := 0;
    tblYytj.FieldByName('D_ZRBYYH').AsCurrency := 0;
    tblYytj.FieldByName('D_ZRLJYY').AsCurrency := 0;
    tblYytj.FieldByName('D_ZRLJYH').AsCurrency := 0;
    tblYytj.FieldByName('D_ZRLJSH').AsCurrency := 0;
    tblYytj.FieldByName('D_ZRLJYS').AsCurrency := 0;
    tblYytj.FieldByName('D_BYYY').AsCurrency   := 0;
    tblYytj.FieldByName('D_BYYH').AsCurrency   := 0;
    tblYytj.FieldByName('D_LJYY').AsCurrency   := 0;

⌨️ 快捷键说明

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