unit U_WorkDeptFeeBXFKList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCalendar, cxButtonEdit, cxSplitter, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxTextEdit, cxPC, cxCheckBox, Menus; type TfrmWorkDeptFeeBXFKList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; Order_Main: TClientDataSet; ToolButton3: TToolButton; cxGridPopupMenu2: TcxGridPopupMenu; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column5: TcxGridDBColumn; v1Column2: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Panel1: TPanel; Label1: TLabel; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; v1Column7: TcxGridDBColumn; v1Column11: TcxGridDBColumn; Worker: TEdit; Label6: TLabel; v1Column17: TcxGridDBColumn; Label3: TLabel; FKType: TEdit; Label4: TLabel; BankName: TEdit; ToolButton2: TToolButton; v1Column1: TcxGridDBColumn; ToolButton4: TToolButton; ToolButton5: TToolButton; cxSplitter1: TcxSplitter; DataSource2: TDataSource; ClientDataSet2: TClientDataSet; ToolButton1: TToolButton; v1Column3: TcxGridDBColumn; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2Column2: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; v1MSMoney: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v2Column7: TcxGridDBColumn; v1Column9: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Label5: TLabel; BankNo: TEdit; v2Column8: TcxGridDBColumn; v2Column9: TcxGridDBColumn; v2Column10: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure WorkerChange(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton1Click(Sender: TObject); private FInt,PFInt:Integer; canshu1,canshu2:string; procedure InitGrid(); procedure InitForm(); function DelData():Boolean; procedure InitGridWsql(fsj:string); function SaveData():Boolean; { Private declarations } public { Public declarations } end; var frmWorkDeptFeeBXFKList: TfrmWorkDeptFeeBXFKList; implementation uses U_DataLink,U_RTFun,U_ModuleNote,U_WorkDeptFeeFKHXList; {$R *.dfm} procedure TfrmWorkDeptFeeBXFKList.FormDestroy(Sender: TObject); begin frmWorkDeptFeeBXFKList:=nil; end; procedure TfrmWorkDeptFeeBXFKList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmWorkDeptFeeBXFKList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('费用报销列表付款',Tv1,'费用管理'); WriteCxGrid('费用报销列表付款MX',Tv2,'费用管理'); end; procedure TfrmWorkDeptFeeBXFKList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.* '); SQL.Add(' from Woker_Fee_FK A where'); sql.Add(' A.FKDate>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+''''); sql.Add(' and A.FKDate<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.Date+1))+''''); Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmWorkDeptFeeBXFKList.InitForm(); begin endDate.Date:=SGetServerDate(ADOQueryTemp); BegDate.Date:=EndDate.Date-7; InitGrid(); end; function TfrmWorkDeptFeeBXFKList.DelData():Boolean; begin try Result:=false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Worker_Fee_FenTan where WFId='''+Trim(Order_Main.fieldbyname('WFId').AsString)+''''); sql.Add('delete Worker_Fee_Main where WFId='''+Trim(Order_Main.fieldbyname('WFId').AsString)+''''); sql.Add('delete Worker_Fee_Sub where WFId='''+Trim(Order_Main.fieldbyname('WFId').AsString)+''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Result:=True; except ADOQueryCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox('数据删除异常!','提示',0); end; end; procedure TfrmWorkDeptFeeBXFKList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeBXFKList.FormShow(Sender: TObject); begin ReadCxGrid('费用报销列表付款',Tv1,'费用管理'); ReadCxGrid('费用报销列表付款MX',Tv2,'费用管理'); InitForm(); end; procedure TfrmWorkDeptFeeBXFKList.cxPageControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeBXFKList.ToolButton3Click(Sender: TObject); begin try frmModuleNote:=TfrmModuleNote.Create(Application); with frmModuleNote do begin flag:='费用报销付款'; if ShowModal=1 then begin end; end; finally frmModuleNote.Free; end; end; procedure TfrmWorkDeptFeeBXFKList.FormCreate(Sender: TObject); begin canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmWorkDeptFeeBXFKList.InitGridWsql(fsj:string); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add('select A.*,FS.*,HJMoney=FS.YunFee+FS.MaTouFee+FS.YangBanFee+FS.OtherFee '); SQL.Add(' from JYOrderKP_Fee A inner join JYOrderKP_Fee_Sub FS on A.FMID=FS.FMID'); sql.Add(' where 1=1'); if Trim(canshu1)<>'高权限' then begin sql.Add(' and A.Filler='''+Trim(DName)+''''); end; sql.Add(fsj); sql.Add(' order by A.FPNo'); Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); finally ADOQueryMain.EnableControls; end; end; function TfrmWorkDeptFeeBXFKList.SaveData():Boolean; var maxno,maxSubNo:String; begin try Result:=False; ADOQueryCmd.Connection.BeginTrans; //保存主表 if Trim(Order_Main.fieldbyname('MRID').AsString)='' then begin if GetLSNo(ADOQueryCmd,maxno,'MR','Module_Prompt_Result',4,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取工作子流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(Order_Main.fieldbyname('MRID').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from Module_Prompt_Result where MRId='''+Trim(Order_Main.fieldbyname('MRID').AsString)+''''); Open; end; with ADOQueryCmd do begin if Trim(Order_Main.fieldbyname('MRID').AsString)='' then begin Append; end else begin Edit; end; FieldByName('MPId').Value:=Trim(Order_Main.fieldbyname('MPId').AsString); FieldByName('MRId').Value:=Trim(maxno); FieldByName('MRStatus').Value:='已处理'; FieldByName('MRDate').Value:=SGetServerDateTime(ADOQueryTemp); if Trim(Order_Main.fieldbyname('MRId').AsString)='' then begin FieldByName('Filler').Value:=Trim(DName); end else begin FieldByName('Editer').Value:=Trim(DName); FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp); end; Post; end; ADOQueryCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmWorkDeptFeeBXFKList.cxTabControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeBXFKList.WorkerChange(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmWorkDeptFeeBXFKList.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmWorkDeptFeeBXFKList.N1Click(Sender: TObject); begin SelOKNo(Order_Main,True); end; procedure TfrmWorkDeptFeeBXFKList.N2Click(Sender: TObject); begin SelOKNo(Order_Main,False); end; procedure TfrmWorkDeptFeeBXFKList.ToolButton4Click(Sender: TObject); begin try frmWorkDeptFeeFKHXList:=TfrmWorkDeptFeeFKHXList.Create(Application); with frmWorkDeptFeeFKHXList do begin PState:=0; if ShowModal=1 then begin end; end; finally frmWorkDeptFeeFKHXList.Free; end; end; procedure TfrmWorkDeptFeeBXFKList.ToolButton5Click(Sender: TObject); begin try frmWorkDeptFeeFKHXList:=TfrmWorkDeptFeeFKHXList.Create(Application); with frmWorkDeptFeeFKHXList do begin PState:=1; FMainId:=Trim(Self.Order_Main.fieldbyname('FKID').AsString); if ShowModal=1 then begin end; end; finally frmWorkDeptFeeFKHXList.Free; end; end; procedure TfrmWorkDeptFeeBXFKList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select A.*,B.* ,DHXMoney=isnull(B.Money,0)-isnull(B.BXMoney,0)'); sql.Add(' ,BCHXMoney=(select isnull(HX.HXMoney,0) from Worker_Fee_HX HX where HX.WSID=B.WSID and HX.FKID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''')'); SQL.Add(' from Worker_Fee_Main A '); sql.Add(' inner join Worker_Fee_Sub B on A.WFID=B.WFID'); sql.Add(' where exists(select * from Worker_Fee_HX C where C.WSID=B.WSID and C.FKID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''')'); Open; end; SCreateCDS20(ADOQueryTemp,ClientDataSet2); SInitCDSData20(ADOQueryTemp,ClientDataSet2); end; procedure TfrmWorkDeptFeeBXFKList.ToolButton1Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update Worker_Fee_Sub Set BXMoney='); sql.Add('(select Sum(HXMoney) from Worker_Fee_HX A where A.WSID=Worker_Fee_Sub.WSID'); sql.Add(' and A.FKID<>'''+Trim(Order_Main.fieldbyname('FKID').AsString)+''')'); sql.Add(' where WSID in'); sql.Add('(select WSID from Worker_Fee_HX where FKID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''')'); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Worker_Fee_HX where FKID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''''); sql.Add('delete Woker_Fee_FK where FKID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Order_Main.Delete; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('删除异常!','提示',0); Exit; end; end; end.