unit U_GRYearPFList_WBPF; 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 TfrmGRYearPFList_WBPF = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; Order_Main: TClientDataSet; RM1: TRMGridReport; RMDBMain: TRMDBDataSet; RMXLSExport1: TRMXLSExport; CDS_PRT: TClientDataSet; Panel1: TPanel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; Label1: TLabel; ToolButton1: TToolButton; ToolButton4: TToolButton; ADOQueryPrint: TADOQuery; cxTabControl1: TcxTabControl; lbl1: TLabel; lbl3: TLabel; GRName: TEdit; Dept: TEdit; TBTJ: TToolButton; TBCXTJ: TToolButton; cxSplitter1: TcxSplitter; Source1: TDataSource; Order_Sub: TClientDataSet; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1PFDate: TcxGridDBColumn; v1GRName: TcxGridDBColumn; v1YWNum: TcxGridDBColumn; v1XZNum: TcxGridDBColumn; v1SCNum: TcxGridDBColumn; v1CWNum: TcxGridDBColumn; TVWPFSumNum: TcxGridDBColumn; v1Dept: TcxGridDBColumn; TVPFStatus: TcxGridDBColumn; v1GangWei: TcxGridDBColumn; v1RZDate: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; cxGrid3: TcxGrid; TV2: TcxGridDBTableView; TPFYDian: TcxGridDBColumn; TPFMNum: TcxGridDBColumn; TPFYWNum: TcxGridDBColumn; TPFXZNum: TcxGridDBColumn; TPFSCNum: TcxGridDBColumn; V2FPCWNum: TcxGridDBColumn; TWPFSumNum: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; v1Column1: TcxGridDBColumn; Label3: TLabel; PFYear: TEdit; Label4: TLabel; PFMonth: TEdit; v1PFYear: TcxGridDBColumn; v1ZDept: TcxGridDBColumn; Label2: TLabel; ZDept: TEdit; cxGrid2: TcxGrid; TV3: TcxGridDBTableView; V2Chker: TcxGridDBColumn; V2ChkStatus: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; DataSource2: TDataSource; PF_Sub: TClientDataSet; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure GRNameChange(Sender: TObject); procedure TBTJClick(Sender: TObject); procedure TBCXTJClick(Sender: TObject); procedure TPFSJNumPropertiesEditValueChanged(Sender: TObject); procedure TPFXJNumPropertiesEditValueChanged(Sender: TObject); procedure TV2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure V2FPCWNumPropertiesEditValueChanged(Sender: TObject); private FInt,PFInt:Integer; canshu1,canshu2:string; FNowDate:TDateTime; procedure InitGrid(); procedure InitForm(); procedure setstatus(); procedure GRYearPF(); { Private declarations } public { Public declarations } end; var frmGRYearPFList_WBPF: TfrmGRYearPFList_WBPF; implementation uses U_DataLink,U_RTFun,U_KDInPut,U_ModuleNote, U_ZDYHelp,U_GRYearPFList_Sub, U_ZDYHelpSel; {$R *.dfm} procedure TfrmGRYearPFList_WBPF.GRYearPF(); begin if strtofloat(trim(Order_Main.fieldbyname('PFMonth').asstring))=12 then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select '); sql.add('ZYearNum=Avg(isnull(A.PFSumNum*0.6,0)+isnull(B.WPFSumNum*0.4,0)) '); sql.add('from GRYearPF_Sub A '); sql.Add('inner join GRYearPFWB_Sub B on B.PFSubid=A.PFSubid '); sql.Add('where A.PFYear='''+trim(Order_Main.fieldbyname('PFYear').AsString)+''' '); sql.Add('and isnull(A.PFStatus,'''')=''评分完成'' '); sql.Add('and isnull(B.PFStatus,'''')=''评分完成'' '); sql.Add('and A.GRName='''+trim(Order_Main.fieldbyname('GRName').AsString)+''''); open; end; if ADOQueryCmd.IsEmpty=False then begin with ADOQueryTemp do begin close; sql.Clear; sql.add('update OA_YG_DangAn set SYearPF=GRYearPF,GRYearPF='''+trim(ADOQueryCmd.fieldbyname('ZYearNum').AsString)+''''); sql.add('where isnull(YGEName,YGName)='''+trim(Order_Main.fieldbyname('GRName').AsString)+''''); execsql; end; end; end; end; procedure TfrmGRYearPFList_WBPF.setstatus(); var FDPParent: string; Fint: integer; begin with ADOQueryMain do begin close; sql.Clear; sql.Add('select A.*,B.DPlevel,B.DPParent from SY_User A '); sql.add('inner join SY_Dept B on B.DPID=A.DPID '); sql.add('where A.UserName='''+trim(Dname)+''' '); open; end; if ADOQueryMain.IsEmpty=False then begin FDPParent:=ADOQueryMain.fieldbyname('DPParent').AsString; for Fint:=2 to ADOQueryMain.fieldbyname('DPlevel').AsInteger-1 do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from SY_Dept where DPID='''+trim(FDPParent)+''''); open; end; FDPParent:=Trim(ADOQueryCmd.fieldbyname('DPParent').AsString); end; TBTJ.Visible:=False; TBCXTJ.Visible:=False; TPFYWNum.Visible:=False; TPFXZNum.Visible:=False; TPFSCNum.Visible:=False; V2FPCWNum.Visible:=False; if ADOQueryCmd.FieldByName('DPName').AsString='业务部' then begin TPFYWNum.Visible:=true; end; if ADOQueryCmd.FieldByName('DPName').AsString='总经办' then begin TPFXZNum.Visible:=true; end; if ADOQueryCmd.FieldByName('DPName').AsString='生产部' then begin TPFSCNum.Visible:=true; end; if ADOQueryCmd.FieldByName('DPName').AsString='财务部' then begin V2FPCWNum.Visible:=true; end; end; case cxTabControl1.TabIndex of 0:begin TBTJ.Visible:=true; end; 1:begin TBCXTJ.Visible:=true; end; 2:begin end; end; end; procedure TfrmGRYearPFList_WBPF.FormDestroy(Sender: TObject); begin frmGRYearPFList_WBPF:=nil; end; procedure TfrmGRYearPFList_WBPF.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmGRYearPFList_WBPF.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('个人年度考核外部评分',Tv1,'薪酬管理'); end; procedure TfrmGRYearPFList_WBPF.InitGrid(); begin with ADOQueryMain DO begin Close; sql.Clear; sql.Add('select A.*,B.* from GRYearPFWB_Sub A '); sql.Add('inner join OA_Chk B on B.Mainid=A.PFSubid and isnull(OAType,'''')=''考核外部评分'' '); if cxTabControl1.TabIndex<>0 then begin sql.Add('where A.Filltime>='''+formatdatetime('yyyy-MM-dd',BegDate.Time)+''' '); sql.Add('and A.Filltime<'''+formatdatetime('yyyy-MM-dd',enddate.Time+1)+''' '); end; if cxTabControl1.TabIndex=0 then sql.Add('where isnull(B.ChkStatus,'''')='''' '); if cxTabControl1.TabIndex=1 then begin sql.Add('and isnull(B.ChkStatus,'''')=''已评分'' '); end; sql.Add('and B.Chker='''+trim(DName)+''''); Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from OA_Chk where MainId='''+Trim(Order_Main.fieldbyname('PFSubID').AsString)+''''); sql.Add(' and isnull(OAType,'''')=''考核外部评分'' '); Open; end; SCreateCDS20(ADOQueryTemp,PF_Sub); SInitCDSData20(ADOQueryTemp,PF_Sub); with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from GRYearPFWB_SubMX '); sql.Add('where PFSubID='''+trim(Order_Main.fieldbyname('PFSubID').AsString)+''''); Open; end; SCreateCDS20(ADOQueryCmd,Order_Sub); SInitCDSData20(ADOQueryCmd,Order_Sub); end; procedure TfrmGRYearPFList_WBPF.InitForm(); begin EndDate.Date:=SGetServerDate(ADOQueryTemp); BegDate.Date:=SGetServerDate(ADOQueryTemp)-7; ReadCxGrid('个人年度考核外部评分',Tv1,'薪酬管理'); setstatus(); InitGrid(); end; procedure TfrmGRYearPFList_WBPF.TBExportClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; TcxGridToExcel('个人年度外部评分',cxGrid1); end; procedure TfrmGRYearPFList_WBPF.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmGRYearPFList_WBPF.FormShow(Sender: TObject); var i:Integer; begin InitForm(); end; procedure TfrmGRYearPFList_WBPF.cxTabControl1Change(Sender: TObject); begin setstatus(); InitGrid(); end; procedure TfrmGRYearPFList_WBPF.ToolButton1Click(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 TfrmGRYearPFList_WBPF.ToolButton4Click(Sender: TObject); var fPrintFile:String; begin if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel',True,[])=False then begin Application.MessageBox('没有选择数据!','提示',0); Exit; end; fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\检验指示单标签.rmf' ; Order_Main.DisableControls; with Order_Main do begin First; while not eof do begin if Order_Main.FieldByName('SSel').AsBoolean=True then begin {with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from JYOrder_Main_MD where MDID='''+Trim(Order_Main.fieldbyname('MDID').AsString)+''''); Open; end; if ADOQueryTemp.FieldByName('NotPrint').AsBoolean=True then begin Order_Main.EnableControls; Application.MessageBox('不能打印《不打印》的缸条码!','提示',0); Exit; end; } if FileExists(fPrintFile) then begin with ADOQueryPrint do begin Close; sql.Clear; sql.Add('select B.OrderNo,B.MPRTCodeName,B.MPRTMF,B.MPRTKZ,C.PRTHX,C.PRTColorNo,C.PRTColor,GangNo=A.GangNo,A.PS,A.Qty,A.QtyUnit,A.MDID '); SQL.Add(',B.MPRTCode,B.MPRTGY,C.PRTColorEng,A.SelfGangNo'); sql.Add('from JYOrder_Main_MD A'); sql.Add('inner join JYOrder_Main B on A.OrdMainid=B.Mainid'); sql.Add(' inner join JYOrder_Sub C on A.OrdSubid=C.SubId'); sql.Add(' where A.MDID='''+Trim(Order_Main.fieldbyname('MDID').AsString)+''''); Open; end; RM1.LoadFromFile(fPrintFile); //RM1.ShowReport; RM1.PrintReport; end else begin Order_Main.DisableControls; Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\检验指示单标签.rmf'),'提示',0); Exit; end; end; Next; end; end; Order_Main.EnableControls; end; procedure TfrmGRYearPFList_WBPF.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from GRYearPFWB_SubMX '); sql.Add('where PFSubID='''+trim(Order_Main.fieldbyname('PFSubID').AsString)+''''); Open; end; SCreateCDS20(ADOQueryCmd,Order_Sub); SInitCDSData20(ADOQueryCmd,Order_Sub); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from OA_Chk where MainId='''+Trim(Order_Main.fieldbyname('PFSubID').AsString)+''''); sql.Add(' and isnull(OAType,'''')=''考核外部评分'' '); Open; end; SCreateCDS20(ADOQueryTemp,PF_Sub); SInitCDSData20(ADOQueryTemp,PF_Sub); end; procedure TfrmGRYearPFList_WBPF.GRNameChange(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 TfrmGRYearPFList_WBPF.TBTJClick(Sender: TObject); var maxno: string; begin ToolBar1.SetFocus; if Order_Main.IsEmpty then exit; with Order_Sub do begin First; while not Eof do begin with ADOQueryTemp do begin close; sql.Clear; sql.Add('update GRYearPFWB_SubMX set PFMNum='''+trim(Order_Sub.FieldByName('PFMNum').AsString)+''''); if Order_Sub.FieldByName('PFYWNum').AsString<>'' then begin sql.Add(',PFYWNum='''+trim(Order_Sub.FieldByName('PFYWNum').AsString)+''' '); end; if Order_Sub.FieldByName('PFXZNum').AsString<>'' then begin sql.Add(',PFXZNum='''+trim(Order_Sub.FieldByName('PFXZNum').AsString)+''' '); end; if Order_Sub.FieldByName('PFSCNum').AsString<>'' then begin sql.Add(',PFSCNum='''+trim(Order_Sub.FieldByName('PFSCNum').AsString)+''' '); end; if Order_Sub.FieldByName('FPCWNum').AsString<>'' then begin sql.Add(',FPCWNum='''+trim(Order_Sub.FieldByName('FPCWNum').AsString)+''' '); end; SQL.Add(',WPFSumNum=isnull(PFYWNum,0)+isnull(PFXZNum,0)+isnull(PFSCNum,0)+isnull(FPCWNum,0) '); sql.Add('where PFSubMXID='''+trim(Order_Sub.FieldByName('PFSubMXID').AsString)+''''); ExecSQL; end; Next; end; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('update GRYearPFWB_Sub set '); sql.Add('YWNum=(select sum(PFYWNum) from GRYearPFWB_SubMX where PFSubid=GRYearPFWB_Sub.PFsubid)'); sql.Add(',XZNum=(select sum(PFXZNum) from GRYearPFWB_SubMX where PFSubid=GRYearPFWB_Sub.PFsubid) '); sql.Add(',SCNum=(select sum(PFSCNum) from GRYearPFWB_SubMX where PFSubid=GRYearPFWB_Sub.PFsubid) '); sql.Add(',CWNum=(select sum(FPCWNum) from GRYearPFWB_SubMX where PFSubid=GRYearPFWB_Sub.PFsubid) '); sql.add(' where PFSubid='''+trim(Order_Main.fieldbyname('PFSubid').AsString)+''''); execsql; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('update OA_Chk set ChkStatus=''已评分'' '); sql.Add('where CKID='''+trim(Order_Main.fieldbyname('CKID').asstring)+''' '); sql.Add(' and isnull(OAType,'''')=''考核外部评分'' '); ExecSQL; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from OA_Chk '); sql.Add('where Mainid='''+trim(Order_Main.fieldbyname('PFSubid').asstring)+''' '); sql.Add(' and isnull(OAType,'''')=''考核外部评分'' '); sql.Add('and Chkstatus<>''已评分'''); Open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('update GRYearPFWB_Sub set PFStatus=''评分完成'', '); sql.Add('WPFSumNum=(isnull(YWNum,0)+isnull(XZNum,0)+isnull(SCNum,0)+isnull(CWNum,0))/3 '); sql.Add('where PFSubID='''+trim(Order_Main.fieldbyname('PFSubID').asstring)+''' '); ExecSQL; end; GRYearPF(); end; InitGrid(); end; procedure TfrmGRYearPFList_WBPF.TBCXTJClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if Application.MessageBox('确定要撤销吗','提示',1)=2 then Exit; with ADOQueryTemp do begin close; sql.Clear; sql.Add('update OA_Chk set Chkstatus='''' where CKID='''+trim(Order_Main.fieldbyname('CKID').AsString)+''''); sql.Add(' and isnull(OAType,'''')=''考核外部评分'' '); ExecSQL; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('update GRYearPFWB_Sub set PFStatus=''已提交'' '); sql.Add('where PFSubID='''+trim(Order_Main.fieldbyname('PFSubID').asstring)+''' '); ExecSQL; end; InitGrid(); end; procedure TfrmGRYearPFList_WBPF.TPFSJNumPropertiesEditValueChanged( Sender: TObject); var mvalue: string; begin mvalue:=TcxTextEdit(Sender).EditingText; if strtofloat(mvalue)>Order_Sub.fieldbyname('PFMNum').asfloat then begin application.messagebox('评分不能超过满分','提示'); mvalue:=''; end; with Order_Sub do begin Edit; FieldByName('PFSJNum').Value:=Trim(mvalue); FieldByName('PFSumNum').Value:=fieldbyname('PFZPNum').AsFloat+fieldbyname('PFSJNum').AsFloat+fieldbyname('PFXJNum').AsFloat; Post; end; end; procedure TfrmGRYearPFList_WBPF.TPFXJNumPropertiesEditValueChanged( Sender: TObject); var mvalue: string; begin mvalue:=TcxTextEdit(Sender).EditingText; if strtofloat(mvalue)>Order_Sub.fieldbyname('PFMNum').asfloat then begin application.messagebox('评分不能超过满分','提示'); mvalue:=''; end; with Order_Sub do begin Edit; FieldByName('PFXJNum').Value:=Trim(mvalue); FieldByName('PFSumNum').Value:=fieldbyname('PFZPNum').AsFloat+fieldbyname('PFSJNum').AsFloat+fieldbyname('PFXJNum').AsFloat; Post; end; end; procedure TfrmGRYearPFList_WBPF.TV2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin TV2.DataController.GotoNext; end; procedure TfrmGRYearPFList_WBPF.V2FPCWNumPropertiesEditValueChanged( Sender: TObject); var mvalue,Ffieldbyname: string; begin mvalue:=TcxtextEdit(Sender).EditingText; Ffieldbyname:=Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName; if strtofloat(mvalue)>Order_Sub.FieldByName('PFMNum').AsFloat then begin application.MessageBox('不能超过满分','提示'); mvalue:=''; end; with Order_Sub do begin edit; fieldbyname(Ffieldbyname).AsString:=trim(mvalue); fieldbyname('WPFSumNum').asfloat:=fieldbyname('PFXZNum').asfloat+fieldbyname('PFYWNum').asfloat+fieldbyname('PFSCNum').asfloat+fieldbyname('FPCWNum').asfloat; end; end; end.