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 + -
显示快捷键?