uni_outlaypayout.~pas

来自「一个非常不错的经费报销管理软件」· ~PAS 代码 · 共 693 行 · 第 1/2 页

~PAS
693
字号
end;

procedure Tfrm_OutlayPayout.tbAuditingClick(Sender: TObject);
begin
  if not PurviewSet('经费支出审核') then Exit;

  if qryMain.FieldByName('iState').AsInteger<>1 then Exit;
  if MessageBoxQuery('确定要审核您选择的单据吗?')=IDNO then Exit;
  qryMain.Edit;
  IF qryMain.FieldByName('dtAuditTime').AsString=''
  THEN BEGIN
    qryMain.FieldByName('dtAuditTime').AsDateTime:=Now;
  END;

  qryMain.FieldByName('cAuditUser').AsString:=DM.bsLoginUser.FieldByName('cName').AsString;
  qryMain.FieldByName('iState').AsInteger:=2;
  qryMain.Post;

  qryDetail.First;
  DM.bsBook.Close;
  DM.bsBook.SQL.Text:='select top 1 *from bsbook';
  DM.bsBook.Open;
  while not qryDetail.Eof do
  begin
    qryDetail.Edit;
    qryDetail.FieldByName('iState').AsInteger:=2;
    qryDetail.Post;
    //插入到台帐表
    DM.bsBook.Insert;
    DM.bsBook.FieldByName('id').AsString:=GetGUID;
    DM.bsBook.FieldByName('dtDateTime').AsDateTime:=qryMain.FieldByName('dtAuditTime').AsDateTime;
    DM.bsBook.FieldByName('cOperation').AsString:='经费支出';
    DM.bsBook.FieldByName('cBillNum').AsString:=qryDetail.FieldByName('cNum').AsString;
    DM.bsBook.FieldByName('cBranchsNum').AsString:=qryDetail.FieldByName('cbranchsNo').AsString;
    DM.bsBook.FieldByName('cItemNum').AsString:=qryDetail.FieldByName('cItemNum').AsString;
    DM.bsBook.FieldByName('cItemName').AsString:=qryDetail.FieldByName('cItemName').AsString;
    DM.bsBook.FieldByName('fManCount').AsFloat:=qryDetail.FieldByName('fManCount').AsFloat;
    DM.bsBook.FieldByName('fStandard').AsFloat:=qryDetail.FieldByName('fStandard').AsFloat;
    DM.bsBook.FieldByName('fMoney').AsFloat:=qryDetail.FieldByName('fPayoutMoney').AsFloat;
    DM.bsBook.FieldByName('cztName').AsString:='经费管理';
    DM.bsBook.Post;
    qryDetail.Next;
  end;
  tbRefreshClick(Sender);
end;

procedure Tfrm_OutlayPayout.tbSaveClick(Sender: TObject);
begin
  if not CHKFields then Exit;
  //
  try
    //SaveRecord;
    qryMain.Edit;
    qryMain.FieldByName('iState').AsInteger:=1;
    qryMain.FieldByName('cNum').AsString:=FormatDateTime('yyyymmdd-',Now)+qryMain.FieldByName('iReco').AsString;

    if qryMain.State in [dsEdit,dsInsert] then qryMain.Post;
    //
    qryDetail.First;
    while NOT qryDetail.Eof do
    begin
      IF qryDetail.FieldByName('fPayoutMoney').AsFloat<>0
      then begin
        qryDetail.Edit;
        qryDetail.FieldByName('cNum').AsString:=qryMain.FieldByName('cNum').AsString;
        qryDetail.FieldByName('iState').AsInteger:=1;
        if qryDetail.State in [dsEdit,dsInsert] then qryDetail.Post;
        qryDetail.Next;
      end
      else
      begin
        qryDetail.Delete;
      end;
    end;

    MessageBoxInfo('数据保存成功!');
  except
    MessageBoxInfo('数据保存失败:请检查数据格式等信息!'+#13#10+#13#10+
       '输入的关键字数据没有重复;'+#13#10+
       '数据格式输入正确;'+#13#10+
       '必须填写的数据信息填写完成;'+#13#10+
       '其它存在的错误!');
    raise;
  end;
  //SetAddEditMode(false);
  //SetButtonsEnable(false);
  N_StateClick(Sender);
end;

procedure Tfrm_OutlayPayout.tbCancelClick(Sender: TObject);
begin
  //CancelRecord;
  qryDetail.Cancel;
  qryMain.Cancel;
  //
  if (not qryMain.Active) or (qryMain.IsEmpty) then Exit;

  qryDetail.First;
  while not qryDetail.Eof
  do begin
    if qryDetail.FieldByName('iState').AsInteger=0
    then qryDetail.Delete
    else qryDetail.Next;
  end;

  if qryMain.FieldByName('iState').AsInteger=0
  then qryMain.Delete;
  //
  N_StateClick(Sender);

end;

procedure Tfrm_OutlayPayout.FormShow(Sender: TObject);
begin
  //设置数据为显示状态,不能修改
  //SetAddEditMode(false);
  //设置按钮状态
  //SetButtonsEnable(false);
  //
  dtBegin.Date:=Now;
  dtEnd.Date:=Now;
  N_QueryClick(Sender);
end;

procedure Tfrm_OutlayPayout.tbRefreshClick(Sender: TObject);
var
  id:String;
begin
  IF qryMain.Active then id:=qryMain.FieldByName('id').AsString;
  qryMain.Close;
  qryMain.Open;
  qryMain.Locate('id',id,[]);

end;

procedure Tfrm_OutlayPayout.tbHelpClick(Sender: TObject);
begin
//
end;

procedure Tfrm_OutlayPayout.tbExitClick(Sender: TObject);
begin
  Close;
end;

procedure Tfrm_OutlayPayout.mniFirstClick(Sender: TObject);
begin
  with Sender as TMenuItem do
    DoNavigator(Tag);
end;

procedure Tfrm_OutlayPayout.SB_recordClick(Sender: TObject);
begin
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  Frm_branchs.ShowModal;
  IF Frm_Branchs.strid='' THEN Exit;
  qryMain.Edit;
  qryMain.FieldByName('cBranchsNum').AsString:=Frm_branchs.strid;

end;

procedure Tfrm_OutlayPayout.grdDetailColumns3EditButtonClick(
  Sender: TObject; var Handled: Boolean);
begin


  Application.CreateForm(TFrm_Item,Frm_Item);
  Choosed:=True;
  Frm_Item.ShowModal;
  IF Frm_Item.strid='' THEN Exit;

  qryDetail.Edit;
  qryDetail.FieldByName('cItemNum').AsString:=Frm_Item.strid;
  
end;

procedure Tfrm_OutlayPayout.grdDetailColumns4EditButtonClick(
  Sender: TObject; var Handled: Boolean);
begin
  Application.CreateForm(TFrm_Item,Frm_Item);
  Choosed:=True;
  Frm_Item.ShowModal;
  qryDetail.Edit;
  qryDetail.FieldByName('cItemNum').AsString:=Frm_Item.strid;

end;

procedure Tfrm_OutlayPayout.grdDetailColumns6EditButtonClick(
  Sender: TObject; var Handled: Boolean);
begin
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  Frm_branchs.ShowModal;
  qryDetail.Edit;
  qryDetail.FieldByName('cBranchsNum').AsString:=Frm_branchs.strid;

end;

procedure Tfrm_OutlayPayout.mniAddLineClick(Sender: TObject);
begin
  qryDetail.Append;
  qryDetail.FieldByName('id').AsString:=GetGUID;
  qryDetail.FieldByName('cNum').AsString:=qryMain.FieldByName('cNum').AsString;  
  qryDetail.FieldByName('cBranchsNum').AsString:=qryMain.FieldByName('cBranchsNum').AsString;
end;

procedure Tfrm_OutlayPayout.mniDelLineClick(Sender: TObject);
begin
  qryDetail.Delete;
end;

procedure Tfrm_OutlayPayout.N_StateClick(Sender: TObject);
var
  i:Integer;
begin
  for i :=0  to TB_Main.ButtonCount-1  do TB_Main.Buttons[i].Enabled:=not TB_Main.Buttons[i].Enabled;
  pnlList.Enabled:=tbSave.Enabled; //单据头状态
  grdMain.Enabled:=tbNew.Enabled;  //单据头列表状态
  if pnlList.Enabled //单据体状态
  then grdDetail.Options:=grdDetail.Options+[dgEditing]
  else grdDetail.Options:=grdDetail.Options-[dgEditing];

end;

procedure Tfrm_OutlayPayout.TB_FirstClick(Sender: TObject);
begin
  qryMain.First;
end;

procedure Tfrm_OutlayPayout.TB_LastClick(Sender: TObject);
begin
  qryMain.Last;
end;

procedure Tfrm_OutlayPayout.TB_PriorClick(Sender: TObject);
begin
  qryMain.Prior;
end;

procedure Tfrm_OutlayPayout.TB_NextClick(Sender: TObject);
begin
  qryMain.Next;
end;

procedure Tfrm_OutlayPayout.qryDetailAfterInsert(DataSet: TDataSet);
begin
  try
    qryDetail.Edit;
    qryDetail.FieldByName('id').AsString:=GetGUID;
    qryDetail.FieldByName('cItemNum').AsString:=Frm_Item.strid;
    //qryDetail.FieldByName('cBranchsNum').AsString:=qryMain.FieldByName('cBranchsNum').AsString;
    //qryDetail.FieldByName('cNum').AsString:=qryMain.FieldByName('cNum').AsString;

  except
  end;

end;

procedure Tfrm_OutlayPayout.ToolButton1Click(Sender: TObject);
begin
  if Splitter.Position=0 then Splitter.Position:=250 else Splitter.Position:=0;
end;

procedure Tfrm_OutlayPayout.N_QueryClick(Sender: TObject);
begin
  qryMain.Close;
  qryMain.SQL.Text:=' select * from PayoutHost '
                   +' where'
                   +' dtSaveTime >'+QuotedStr(DateTimeToStr(dtBegin.DateTime))
                   +' AND dtSaveTime <'+QuotedStr(DateTimeToStr(dtEnd.DateTime))
                   +' AND cNum in (select a.cNum from PayoutMX a left join bsBranchs b on a.cBranchsNum=b.id where b.cName like '+QuotedStr('%'+Edt_Branchs.Text+'%')+')'
                   +' AND (cNum LIKE '+QuotedStr('%'+edtQuery.Text+'%')
                   +' OR cUSER LIKE '+QuotedStr('%'+edtQuery.Text+'%')
                   +' OR cAUDITUSER LIKE '+QuotedStr('%'+edtQuery.Text+'%')
                   +' OR cREMARK LIKE '+QuotedStr('%'+edtQuery.Text+'%')+')';
  qryMain.Open;
end;

procedure Tfrm_OutlayPayout.dtBeginChange(Sender: TObject);
begin
  N_QueryClick(Sender);
end;

procedure Tfrm_OutlayPayout.grdDetailDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
//var i:Integer;
begin
  {
  i:=0;
  if i=0
  then begin
    (Sender as TDBGridEh).Canvas.Brush.Color:=clSkyBlue;
    (Sender as TDBGridEh).DefaultDrawColumnCell(Rect,DataCol,Column,State);
  end;
  }
end;

procedure Tfrm_OutlayPayout.SpeedButton1Click(Sender: TObject);
begin
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  Frm_branchs.ShowModal;
  IF Frm_Branchs.strid='' THEN Exit;
  Edt_Branchs.Text:=Frm_Branchs.strName;
end;

procedure Tfrm_OutlayPayout.TB_DelLineClick(Sender: TObject);
begin
  if qryDetail.IsEmpty then Exit;
  qryDetail.Delete;

end;

procedure Tfrm_OutlayPayout.TB_AuditingCancelClick(Sender: TObject);
begin
  if not PurviewSet('经费支出反审') then Exit;

  if qryMain.FieldByName('iState').AsInteger<>2 then Exit;
  if MessageBoxQuery('您确定要取消当前已审核的单据吗?')=IDNO then Exit;

  DM.bsBook.Close;
  DM.bsBook.SQL.Text:='DELETE From bsBook WHERE cOperation=''经费支出'' AND cBILLNUM='+QuotedStr(qryMain.FieldByName('cNum').AsString);
  DM.bsBook.ExecSQL;

  qryMain.Edit;
  qryMain.FieldByName('cAuditUser').AsString:='';
  qryMain.FieldByName('iState').AsInteger:=1;
  qryMain.Post;

  qryDetail.First;
  while NOT qryDetail.Eof do
  begin
    qryDetail.Edit;
    qryDetail.FieldByName('iState').AsInteger:=1;
    qryDetail.Post;
    qryDetail.Next;
  end;

  tbRefreshClick(Sender);

end;

end.

⌨️ 快捷键说明

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