uni_plan.~pas

来自「一个非常不错的经费报销管理软件」· ~PAS 代码 · 共 486 行

~PAS
486
字号
unit Uni_Plan;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, Buttons, XPMenu, RzPanel,
  RzSplit, Grids, DBGridEh, DB, Mask, DBCtrls, Menus, DBGrids, ImgList,
  ADODB;

type
  TFrm_Plan = class(TForm)
    TB_Main: TToolBar;
    TB_Insert: TToolButton;
    TB_Update: TToolButton;
    TB_Delete: TToolButton;
    TB_Post: TToolButton;
    TB_Cancel: TToolButton;
    TB_Refresh: TToolButton;
    TB_Help: TToolButton;
    TB_Close: TToolButton;
    TB_Auditing: TToolButton;
    TB_List: TToolButton;
    Splitter: TRzSplitter;
    P_List: TPanel;
    Panel2: TPanel;
    DBGbsPlanHost: TDBGridEh;
    P_Client: TPanel;
    DSbsPlanHost: TDataSource;
    DSbsPlanMX: TDataSource;
    Label6: TLabel;
    DBEdit5: TDBEdit;
    PopupMenu1: TPopupMenu;
    N_State: TMenuItem;
    Label8: TLabel;
    DBEdit7: TDBEdit;
    TB_DelLine: TToolButton;
    Label1: TLabel;
    DBGbsPlanMX: TDBGridEh;
    Label9: TLabel;
    DBEdit8: TDBEdit;
    Label10: TLabel;
    DBEdit9: TDBEdit;
    TB_First: TToolButton;
    TB_Prior: TToolButton;
    TB_Next: TToolButton;
    TB_Last: TToolButton;
    P_Edit: TPanel;
    TB_BranchsChoosed: TSpeedButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit6: TDBEdit;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    CoolBar1: TCoolBar;
    XPMenu1: TXPMenu;
    Panel1: TPanel;
    ToolBar1: TToolBar;
    TBState: TToolButton;
    ImageList1: TImageList;
    Panel3: TPanel;
    Label2: TLabel;
    Label11: TLabel;
    dtBegin: TDateTimePicker;
    dtEnd: TDateTimePicker;
    edtQuery: TEdit;
    N_Query: TMenuItem;
    bsPlanHost: TADOQuery;
    bsPlanMX: TADOQuery;
    Edt_Branchs: TEdit;
    Label12: TLabel;
    SpeedButton1: TSpeedButton;
    bsPlanMXid: TStringField;
    bsPlanMXcNum: TStringField;
    bsPlanMXcItemNum: TStringField;
    bsPlanMXcItemNo: TStringField;
    bsPlanMXcItemName: TStringField;
    bsPlanMXcbranchsNum: TStringField;
    bsPlanMXcbranchsNo: TStringField;
    bsPlanMXcbranchsName: TStringField;
    bsPlanMXfMancount: TFloatField;
    bsPlanMXfStandard: TFloatField;
    bsPlanMXfPlanMoney: TFloatField;
    bsPlanMXiState: TIntegerField;
    bsPlanHostid: TStringField;
    bsPlanHostcNum: TStringField;
    bsPlanHostcBranchsNum: TStringField;
    bsPlanHostcBranchsNo: TStringField;
    bsPlanHostcBranchsName: TStringField;
    bsPlanHostcSaveUser: TStringField;
    bsPlanHostcAuditUser: TStringField;
    bsPlanHostdtSaveTime: TDateTimeField;
    bsPlanHostdtAuditTime: TDateTimeField;
    bsPlanHostiState: TIntegerField;
    bsPlanHostiReco: TLargeintField;
    bsPlanHostcUse: TStringField;
    bsPlanHostcRemark: TStringField;
    TB_AuditingCancel: TToolButton;
    procedure TB_ListClick(Sender: TObject);
    procedure TB_RefreshClick(Sender: TObject);
    procedure N_StateClick(Sender: TObject);
    procedure TB_InsertClick(Sender: TObject);
    procedure TB_PostClick(Sender: TObject);
    procedure TB_DeleteClick(Sender: TObject);
    procedure TB_UpdateClick(Sender: TObject);
    procedure TB_CancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TB_FirstClick(Sender: TObject);
    procedure TB_PriorClick(Sender: TObject);
    procedure TB_NextClick(Sender: TObject);
    procedure TB_LastClick(Sender: TObject);
    procedure TB_CloseClick(Sender: TObject);
    procedure TB_BranchsChoosedClick(Sender: TObject);
    procedure DBGbsPlanMXColumns1EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure TB_AuditingClick(Sender: TObject);
    procedure N_QueryClick(Sender: TObject);
    procedure dtEndChange(Sender: TObject);
    procedure DBGbsPlanMXColumns2EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure bsPlanHostAfterScroll(DataSet: TDataSet);
    procedure bsPlanMXAfterInsert(DataSet: TDataSet);
    procedure SpeedButton1Click(Sender: TObject);
    procedure TB_DelLineClick(Sender: TObject);
    procedure TB_AuditingCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_Plan: TFrm_Plan;

implementation

{$R *.dfm}
uses Uni_DM,Uni_Main,Uni_Function,Uni_Branchs,Uni_Item;

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

procedure TFrm_Plan.TB_RefreshClick(Sender: TObject);
var
  id:String;
begin
  IF bsPlanHost.Active then id:=bsPlanHost.FieldByName('id').AsString;
  bsPlanHost.Close;
  bsPlanHost.Open;
  bsPlanHost.Locate('id',id,[]);
end;

procedure TFrm_Plan.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;
  P_List.Enabled:=TB_Insert.Enabled;
  P_Edit.Enabled:=TB_Post.Enabled;
  if P_Edit.Enabled
  then DBGbsPlanMX.Options:=DBGbsPlanMX.Options+[dgEditing]
  else DBGbsPlanMX.Options:=DBGbsPlanMX.Options-[dgEditing];

end;

procedure TFrm_Plan.TB_InsertClick(Sender: TObject);
begin
  if not PurviewSet('经费计划制单') then Exit;
  N_StateClick(Sender);
  bsPlanHost.Close;
  bsPlanHost.Open;
  bsPlanHost.Insert;
  bsPlanHost.FieldByName('id').AsString:=GetGUID;
  bsPlanHost.FieldByName('iState').AsInteger:=0;
  bsPlanHost.FieldByName('dtSavetime').AsDateTime:=Now;
  bsPlanHost.FieldByName('cSaveUser').AsString:=DM.bsLoginUser.FieldByName('cName').AsString;
  bsPlanHost.Post;
  bsPlanMX.Insert;

end;

procedure TFrm_Plan.TB_PostClick(Sender: TObject);
begin
  bsPlanHost.Edit;
  bsPlanHost.FieldByName('cNum').AsString:=FormatDateTime('yyyymmdd-',Now)+bsPlanHost.FieldByName('iReco').AsString;
  bsPlanHost.FieldByName('iState').AsInteger:=1;
  bsPlanHost.Post;
  bsPlanMX.First;
  while not bsPlanMX.Eof
  do begin
    if bsPlanMX.FieldByName('fPlanMoney').AsFloat>0
    then begin
      bsPlanMX.Edit;
      //bsPlanMX.FieldByName('cBranchsNum').AsString:=bsPlanHost.FieldByName('cBranchsNum').AsString;
      bsPlanMX.FieldByName('cNum').AsString:=bsPlanHost.FieldByName('cNum').AsString;
      bsPlanMX.FieldByName('iState').AsInteger:=1;
      bsPlanMX.Post;
      bsPlanMX.Next;
    end
    else
    begin
      bsPlanMX.Delete;
    end;

  end;

  N_StateClick(Sender);

end;

procedure TFrm_Plan.TB_DeleteClick(Sender: TObject);
begin
  if not PurviewSet('经费计划制单') then Exit;

  IF (bsPlanHost.IsEmpty) or (bsPlanHost.FieldByName('iState').AsInteger>1) then Exit;
  if MessageBoxQuery('确定要删除您选择的单据吗?')=IDNO then Exit;
  bsPlanMX.First;
  while not bsPlanMX.Eof do bsPlanMX.Delete;
  bsPlanHost.Delete;
end;

procedure TFrm_Plan.TB_UpdateClick(Sender: TObject);
begin
  if not PurviewSet('经费计划制单') then Exit;

  if bsPlanHost.FieldByName('iState').AsInteger>1 then Exit;//保存状态以上的单据不能修改
  N_StateClick(Sender);
end;

procedure TFrm_Plan.TB_CancelClick(Sender: TObject);
begin
  bsPlanHost.Cancel;
  bsPlanMX.Cancel;
  bsPlanMX.First;
  while not bsPlanMX.Eof
  do begin
    if bsPlanMX.FieldByName('iState').AsInteger=0
    then bsPlanMX.Delete
    else bsPlanMX.Next;
  end;

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

end;

procedure TFrm_Plan.FormShow(Sender: TObject);
begin
  dtBegin.Date:=Now;
  dtEnd.Date:=Now;
  N_QueryClick(Sender);
  //TB_RefreshClick(Sender);
end;

procedure TFrm_Plan.TB_FirstClick(Sender: TObject);
begin
  bsPlanHost.First;
end;

procedure TFrm_Plan.TB_PriorClick(Sender: TObject);
begin
  bsPlanHost.Prior;

end;

procedure TFrm_Plan.TB_NextClick(Sender: TObject);
begin
  bsPlanHost.Next;
end;

procedure TFrm_Plan.TB_LastClick(Sender: TObject);
begin
  bsPlanHost.Last;
end;

procedure TFrm_Plan.TB_CloseClick(Sender: TObject);
begin
  Close;
end;

procedure TFrm_Plan.TB_BranchsChoosedClick(Sender: TObject);
begin
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  Frm_branchs.ShowModal;
  IF Frm_Branchs.strid='' THEN Exit;
  bsPlanHost.Edit;
  bsPlanHost.FieldByName('cBranchsNum').AsString:=Frm_branchs.strid;
  bsPlanHost.FieldByName('cBranchsNo').AsString:=Frm_Branchs.strNo;
  bsPlanHost.FieldByName('cBranchsName').AsString:=Frm_Branchs.strName;
  {
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  TBname:='bsPlanHost';
  Frm_branchs.ShowModal;
  }
end;

procedure TFrm_Plan.DBGbsPlanMXColumns1EditButtonClick(Sender: TObject;
  var Handled: Boolean);
begin
  Application.CreateForm(TFrm_Item,Frm_Item);
  Choosed:=True;
  Frm_Item.ShowModal;
  IF Frm_Item.strid='' THEN Exit;
  bsPlanMX.Edit;
  bsPlanMX.FieldByName('cItemNum').AsString:=Frm_Item.strid;
  bsPlanMX.FieldByName('cItemNo').AsString:=Frm_Item.strNo;
  bsPlanMX.FieldByName('cItemName').AsString:=Frm_Item.strName;

  {
  Application.CreateForm(TFrm_Item,Frm_Item);
  Choosed:=True;
  TBname:='bsPlanMX';
  Frm_Item.ShowModal;
  }
end;

procedure TFrm_Plan.TB_AuditingClick(Sender: TObject);
begin
  if not PurviewSet('经费计划审核') then Exit;
  if bsPlanHost.FieldByName('iState').AsInteger<>1 then Exit;
  if MessageBoxQuery('确定要审核您选择的单据吗?')=IDNO then Exit;

  bsPlanHost.Edit;
  IF bsPlanHost.FieldByName('dtAuditTime').AsString=''
  THEN BEGIN
    bsPlanHost.FieldByName('dtAuditTime').AsDateTime:=Now;
  END;

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

  bsPlanMX.First;
  DM.bsBook.Close;
  DM.bsBook.SQL.Text:='select top 1 *from bsbook';
  DM.bsBook.Open;
  while not bsPlanMX.Eof do
  begin
    bsPlanMX.Edit;
    bsPlanMX.FieldByName('iState').AsInteger:=2;
    bsPlanMX.Post;
    //插入到台帐表

    DM.bsBook.Insert;
    DM.bsBook.FieldByName('id').AsString:=GetGUID;
    DM.bsBook.FieldByName('dtDateTime').AsDateTime:=bsPlanHost.FieldByName('dtAuditTime').AsDateTime;
    DM.bsBook.FieldByName('cOperation').AsString:='经费计划';
    DM.bsBook.FieldByName('cBillNum').AsString:=bsPlanMX.FieldByName('cNum').AsString;
    DM.bsBook.FieldByName('cBranchsNum').AsString:=bsPlanMX.FieldByName('cBranchsNO').AsString;
    DM.bsBook.FieldByName('cItemNum').AsString:=bsPlanMX.FieldByName('cItemNum').AsString;
    DM.bsBook.FieldByName('cItemName').AsString:=bsPlanMX.FieldByName('cItemName').AsString;
    DM.bsBook.FieldByName('fManCount').AsFloat:=bsPlanMX.FieldByName('fManCount').AsFloat;
    DM.bsBook.FieldByName('fStandard').AsFloat:=bsPlanMX.FieldByName('fStandard').AsFloat;
    DM.bsBook.FieldByName('fMoney').AsFloat:=bsPlanMX.FieldByName('fPlanMoney').AsFloat;
    DM.bsBook.FieldByName('cztName').AsString:='经费管理';
    DM.bsBook.Post;
    bsPlanMX.Next;

  end;
  TB_RefreshClick(Sender);

end;

procedure TFrm_Plan.N_QueryClick(Sender: TObject);
begin
  bsPlanHost.Close;
  bsPlanHost.SQL.Text:=' select * from bsPlanHost A'
                         +' where a.iState>0'
                         +' AND dtSaveTime >'+QuotedStr(DateTimeToStr(dtBegin.DateTime))
                         +' AND dtSaveTime <'+QuotedStr(DateTimeToStr(dtEnd.DateTime))
                         +' AND cNum in (select a.cNum from bsPlanMX 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 cSAVEUSER LIKE '+QuotedStr('%'+edtQuery.Text+'%')
                         +' OR cAUDITUSER LIKE '+QuotedStr('%'+edtQuery.Text+'%')
                         +' OR cREMARK LIKE '+QuotedStr('%'+edtQuery.Text+'%')+')';
  bsPlanHost.Open;

end;

procedure TFrm_Plan.dtEndChange(Sender: TObject);
begin
  N_QueryClick(Sender);
end;

procedure TFrm_Plan.DBGbsPlanMXColumns2EditButtonClick(Sender: TObject;
  var Handled: Boolean);
begin
  Application.CreateForm(TFrm_Branchs,Frm_Branchs);
  Choosed:=True;
  Frm_branchs.ShowModal;
  IF Frm_Branchs.strid='' THEN Exit;
  bsPlanMX.Edit;
  bsPlanMX.FieldByName('cBranchsNum').AsString:=Frm_branchs.strid;
  bsPlanMX.FieldByName('cBranchsNo').AsString:=Frm_Branchs.strNo;
  bsPlanMX.FieldByName('cBranchsName').AsString:=Frm_Branchs.strName;

end;

procedure TFrm_Plan.bsPlanHostAfterScroll(DataSet: TDataSet);
begin

  bsPlanMX.Close;
  bsPlanMX.SQL.Text:=' select * from bsPlanMX a'
                    +' where iState>0 and a.cNum='+QuotedStr(bsPlanHost.FieldByName('cNum').AsString);
  bsPlanMX.Open;
  TBState.ImageIndex:=bsPlanHost.FieldByName('iState').AsInteger-1;

end;

procedure TFrm_Plan.bsPlanMXAfterInsert(DataSet: TDataSet);
begin
  try
    bsPlanMX.Edit;
    bsPlanMX.FieldByName('id').AsString:=GetGUID;
    bsPlanMX.FieldByName('cItemNum').AsString:=Frm_Item.strid;
    bsPlanMX.FieldByName('cItemNo').AsString:=Frm_Item.strNo;
    bsPlanMX.FieldByName('cItemName').AsString:=Frm_Item.strName;
    bsPlanMX.Post;
  except
  end;

end;

procedure TFrm_Plan.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_Plan.TB_DelLineClick(Sender: TObject);
begin
  if bsPlanMX.IsEmpty then Exit;
  bsPlanMX.Delete;
end;

procedure TFrm_Plan.TB_AuditingCancelClick(Sender: TObject);
begin
  if not PurviewSet('经费计划反审') then Exit;
  if bsPlanHost.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(bsPlanHost.FieldByName('cNum').AsString);
  DM.bsBook.ExecSQL;

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

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

  TB_RefreshClick(Sender);


end;

end.

⌨️ 快捷键说明

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