unit U_WorkDeptFeeList; 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; type TfrmWorkDeptFeeList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; Order_Main: TClientDataSet; RM1: TRMGridReport; RMDBMain: TRMDBDataSet; RMXLSExport1: TRMXLSExport; cxGridPopupMenu2: TcxGridPopupMenu; cxTabControl1: TcxTabControl; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column2: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1Column3: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column6: TcxGridDBColumn; Panel1: TPanel; Label1: TLabel; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; v1Column7: TcxGridDBColumn; v1Column11: TcxGridDBColumn; Worker: TEdit; Label6: TLabel; v1Column17: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column19: TcxGridDBColumn; ToolButton1: TToolButton; Label3: TLabel; WFType: TEdit; ToolButton2: TToolButton; v1Column1: TcxGridDBColumn; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; v1MSMoney: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; v1Column9: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxSplitter1: TcxSplitter; ClientDataSet2: TClientDataSet; DataSource2: TDataSource; cxGridPopupMenu3: TcxGridPopupMenu; v1Column8: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v1Column5: TcxGridDBColumn; Label4: TLabel; BXNO: TEdit; v1Column12: TcxGridDBColumn; v1Column13: TcxGridDBColumn; Label5: TLabel; WFTypeSub: TEdit; Label7: TLabel; Dept: TEdit; v1Column14: TcxGridDBColumn; v1Column15: TcxGridDBColumn; Label8: TLabel; ConNo: TEdit; v2Column3: TcxGridDBColumn; v1Column16: TcxGridDBColumn; v1Column20: TcxGridDBColumn; ToolButton4: TToolButton; ADOQueryPrint: TADOQuery; CDS_PRT: TClientDataSet; ToolButton3: TToolButton; ComboBox1: TComboBox; v2Column4: TcxGridDBColumn; ToolButton5: TToolButton; v1Column21: TcxGridDBColumn; v1Column22: TcxGridDBColumn; Label9: TLabel; PrintStatus: TComboBox; TBPrint: TToolButton; Label10: TLabel; FPNo: TEdit; Label11: TLabel; FactoryName: TEdit; v1Column23: TcxGridDBColumn; v2Column5: TcxGridDBColumn; Label12: TLabel; OrderNoM: TEdit; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure WorkerChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure BXNOKeyPress(Sender: TObject; var Key: Char); procedure ToolButton4Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure TBPrintClick(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 frmWorkDeptFeeList: TfrmWorkDeptFeeList; implementation uses U_DataLink,U_Fun10,U_WorkerDeptFeeInPut; {$R *.dfm} procedure TfrmWorkDeptFeeList.FormDestroy(Sender: TObject); begin frmWorkDeptFeeList:=nil; end; procedure TfrmWorkDeptFeeList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmWorkDeptFeeList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('费用报销列表',Tv1,'费用管理'); WriteCxGrid('费用报销列表MX',Tv2,'费用管理'); end; procedure TfrmWorkDeptFeeList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.* '); SQL.Add(',FPNo=(select top 1 X.FPNo from BaoGuanFee X where ISNULL(A.BGID,'''')=X.BGID)'); SQL.Add(',HZYBMoney=(select Sum(YBMoney) from Worker_Fee_Sub B where B.WFID=A.WFID)'); SQL.Add(',BXMoneyHZ=(select Sum(BXMoney) from Worker_Fee_Sub B where B.WFID=A.WFID)'); SQL.Add(',DBXMoneyHZ=(select Sum(isnull(Money,0)-isnull(BXMoney,0)) from Worker_Fee_Sub B where B.WFID=A.WFID)'); sql.Add(',ConNo=(select X.A5ConNo from JYOrder_BaoGuan_Main X where X.BGID=ISNULL(A.BGID,''''))'); SQL.Add(',OrderNoM=CAST(STUFF((select DISTINCT ''/''+RTRIM(ISNULL(X.OrderNo,'''')) from Worker_Fee_Sub X where X.WFID=A.WFID FOR XML PATH('''')),1,1,'''') as varchar)'); SQL.Add(',PrintStatus=(case when isnull(A.PrintTimes,0)>0 then ''已打印'' else ''未打印'' end)'); SQL.Add(' from Worker_Fee_Main A where'); sql.Add(' A.WFDate>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+''''); sql.Add(' and A.WFDate<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.Date+1))+''''); if cxTabControl1.TabIndex=0 then begin sql.Add(' and isnull(A.ChkStatus,'''')='''' '); end else if cxTabControl1.TabIndex=1 then begin sql.Add(' and isnull(A.ChkStatus,'''')=''已提交'' '); end else if cxTabControl1.TabIndex=2 then begin sql.Add(' and isnull(A.ChkStatus,'''')=''审核通过'' '); end else if cxTabControl1.TabIndex=3 then begin sql.Add(' and isnull(A.ChkStatus,'''')=''审核不通过'' '); end; if Trim(canshu1)<>'高权限' then begin sql.Add(' and A.Filler='''+Trim(DName)+''''); end; Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmWorkDeptFeeList.InitForm(); begin endDate.Date:=SGetServerDate(ADOQueryTemp); BegDate.Date:=EndDate.Date-7; cxTabControl1.TabIndex:=0; v1Column8.Visible:=False; v1Column8.Hidden:=True; v1Column10.Visible:=False; v1Column10.Hidden:=True; v2Column1.Visible:=False; v2Column1.Hidden:=True; v2Column2.Visible:=False; v2Column2.Hidden:=True; InitGrid(); end; procedure TfrmWorkDeptFeeList.TBEditClick(Sender: TObject); begin if cxTabControl1.TabIndex<>0 then Exit; if Order_Main.IsEmpty then Exit; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Worker_Fee_Main where WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''' '); Open; end; if Trim(ADOQueryTemp.FieldByName('BGID').AsString)<>'' then begin Application.MessageBox('报关产生数据不允许修改!','提示',0); Exit; end; if Trim(canshu1)<>'高权限' then begin if Trim(DCode)<>Trim(Order_Main.fieldbyname('FillerCode').AsString) then begin Application.MessageBox('不能操作他人的信息!','提示',0); Exit; end; end; try frmWorkerDeptFeeInPut:=TfrmWorkerDeptFeeInPut.Create(Application); with frmWorkerDeptFeeInPut do begin PState:=1; FMainId:=Trim(Self.Order_Main.fieldbyname('WFID').AsString); if ShowModal=1 then begin end; end; finally frmWorkerDeptFeeInPut.Free; end; end; procedure TfrmWorkDeptFeeList.TBDelClick(Sender: TObject); begin if cxTabControl1.TabIndex<>0 then Exit; if Order_Main.IsEmpty then Exit; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Worker_Fee_Main where WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''' '); Open; end; if Trim(ADOQueryTemp.FieldByName('BGID').AsString)<>'' then begin Application.MessageBox('报关产生数据不允许删除!','提示',0); Exit; end; if Trim(canshu1)<>'高权限' then begin if Trim(DCode)<>Trim(Order_Main.fieldbyname('FillerCode').AsString) then begin Application.MessageBox('不能操作他人的信息!','提示',0); Exit; end; end; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; if DelData() then begin Order_Main.Delete; end; end; function TfrmWorkDeptFeeList.DelData():Boolean; begin try Result:=false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; 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 TfrmWorkDeptFeeList.TBExportClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; TcxGridToExcel('费用报销单',cxGrid1); end; procedure TfrmWorkDeptFeeList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeList.TBAddClick(Sender: TObject); begin try frmWorkerDeptFeeInPut:=TfrmWorkerDeptFeeInPut.Create(Application); with frmWorkerDeptFeeInPut do begin PState:=0; FMainId:=''; //FYLType:='样衣'; if ShowModal=1 then begin InitGrid(); end; end; finally frmWorkerDeptFeeInPut.Free; end; end; procedure TfrmWorkDeptFeeList.FormShow(Sender: TObject); begin ReadCxGrid('费用报销列表',Tv1,'费用管理'); ReadCxGrid('费用报销列表MX',Tv2,'费用管理'); InitForm(); end; procedure TfrmWorkDeptFeeList.cxPageControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeList.FormCreate(Sender: TObject); begin canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmWorkDeptFeeList.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 TfrmWorkDeptFeeList.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 TfrmWorkDeptFeeList.cxTabControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmWorkDeptFeeList.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 TfrmWorkDeptFeeList.ToolButton1Click(Sender: TObject); begin try frmWorkerDeptFeeInPut:=TfrmWorkerDeptFeeInPut.Create(Application); with frmWorkerDeptFeeInPut do begin PState:=1; FMainId:=Trim(Self.Order_Main.fieldbyname('WFID').AsString); TBSave.Visible:=False; ToolBar2.Visible:=False; //Button3.Visible:=False; //Button4.Visible:=False; if ShowModal=1 then begin end; end; finally frmWorkerDeptFeeInPut.Free; end; end; procedure TfrmWorkDeptFeeList.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 TfrmWorkDeptFeeList.BXNOKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin if Trim(BXNO.Text)<>'' then begin if Length(BXNO.Text)<3 then Exit; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.* '); SQL.Add(',BXMoneyHZ=(select Sum(BXMoney) from Worker_Fee_Sub B where B.WFID=A.WFID)'); SQL.Add(',DBXMoneyHZ=(select Sum(isnull(Money,0)-isnull(BXMoney,0)) from Worker_Fee_Sub B where B.WFID=A.WFID)'); SQL.Add(' from Worker_Fee_Main A where 1=1'); if cxTabControl1.TabIndex=0 then begin sql.Add(' and isnull(A.ChkStatus,'''')='''' '); end else if cxTabControl1.TabIndex=1 then begin sql.Add(' and isnull(A.ChkStatus,'''')=''审核通过'' '); end else if cxTabControl1.TabIndex=2 then begin sql.Add(' and isnull(A.ChkStatus,'''')=''审核不通过'' '); end; sql.Add(' and BXNO like '''+'%'+Trim(BXNO.Text)+'%'+''''); Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; end; end; procedure TfrmWorkDeptFeeList.ToolButton4Click(Sender: TObject); begin try frmWorkerDeptFeeInPut:=TfrmWorkerDeptFeeInPut.Create(Application); with frmWorkerDeptFeeInPut do begin PState:=1; FMainId:=Trim(Self.Order_Main.fieldbyname('WFID').AsString); PCopyInt:=1; if ShowModal=1 then begin end; end; finally frmWorkerDeptFeeInPut.Free; end; end; procedure TfrmWorkDeptFeeList.ToolButton3Click(Sender: TObject); var fPrintFile:String; begin if Order_Main.IsEmpty then Exit; // if cxTabControl1.TabIndex<>2 then Exit; Order_Main.DisableControls; with ADOQueryPrint do begin Close; SQL.Clear; SQL.Add('select A.*,B.*'); sql.Add(',ConNo=(select X.A5ConNo from JYOrder_BaoGuan_Main X where X.BGID=ISNULL(A.BGID,''''))'); SQL.Add(',TtlMoney=(select SUM(X.Money) from Worker_Fee_Sub X where X.WFID=A.WFID group by X.WFID)'); SQL.Add(',TtlYBMoney=(select SUM(X.YBMoney) from Worker_Fee_Sub X where X.WFID=A.WFID group by X.WFID)'); sql.Add(' from Worker_Fee_Main A inner join Worker_Fee_Sub B on B.WFID=A.WFID'); SQL.Add('where A.WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''''); // ShowMessage(sql.Text); Open; end; SCreateCDS20(ADOQueryPrint,CDS_PRT); SInitCDSData20(ADOQueryPrint,CDS_PRT); Order_Main.EnableControls; if Trim(Order_Main.fieldbyname('WFType').AsString)='用款申请' then fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\用款申请单.rmf' else fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\' + Trim(ComboBox1.Text) + '.rmf'; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找'+fPrintFile),'提示',0); end; end; procedure TfrmWorkDeptFeeList.ToolButton5Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex<>0 then Exit; if Application.MessageBox('确定要执行此操作吗?','提示',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate Worker_Fee_Main Set ChkStatus=''已提交'',SChkTime=getdate(),SChker='''+Trim(DName)+''''); sql.Add(' where WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''''); ExecSQL; end; Order_Main.Delete; end; ADOQueryCmd.Connection.CommitTrans; Order_Main.EnableControls; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('操作失败!','提示',0); end; end; procedure TfrmWorkDeptFeeList.Tv1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* '); sql.Add(',DBXMoney=isnull(Money,0)-isnull(BXMoney,0)'); sql.Add(' from Worker_Fee_Sub A where WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''''); Open; end; SCreateCDS20(ADOQueryTemp,ClientDataSet2); SInitCDSData20(ADOQueryTemp,ClientDataSet2); end; procedure TfrmWorkDeptFeeList.TBPrintClick(Sender: TObject); var fPrintFile:String; begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex<>2 then Exit; Order_Main.DisableControls; with ADOQueryPrint do begin Close; SQL.Clear; SQL.Add('select A.*,B.*'); sql.Add(',ConNo=(select X.A5ConNo from JYOrder_BaoGuan_Main X where X.BGID=ISNULL(A.BGID,''''))'); SQL.Add(',TtlMoney=(select SUM(X.Money) from Worker_Fee_Sub X where X.WFID=A.WFID group by X.WFID)'); SQL.Add(',TtlYBMoney=(select SUM(X.YBMoney) from Worker_Fee_Sub X where X.WFID=A.WFID group by X.WFID)'); sql.Add(' from Worker_Fee_Main A inner join Worker_Fee_Sub B on B.WFID=A.WFID'); SQL.Add('where A.WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''''); // ShowMessage(sql.Text); Open; end; SCreateCDS20(ADOQueryPrint,CDS_PRT); SInitCDSData20(ADOQueryPrint,CDS_PRT); Order_Main.EnableControls; if Trim(Order_Main.fieldbyname('WFType').AsString)='用款申请' then fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\用款申请单.rmf' else fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\' + Trim(ComboBox1.Text) + '.rmf'; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.PrintReport; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('UPDATE Worker_Fee_Main SET PrintTimes=PrintTimes+1 WHERE WFID='''+Trim(Order_Main.fieldbyname('WFID').AsString)+''' '); ExecSQL; end; end else begin Application.MessageBox(PChar('没有找'+fPrintFile),'提示',0); end; end; end.