Professional Documents
Culture Documents
GO
/****** Object: StoredProcedure [dbo].[SP_PM_Statistics_SubmittedDetail]
ipt Date: 7/9/2015 2:44:54 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Scr
/******************************************************************************
**
File:
**
Name: SP_PM_Statistics_SubmittedDetail
**
Desc:
**
**
This template can be customized:
**
**
Return values:
**
**
Called by:
**
**
Parameters:
**
Input
Output
**
------------------**
**
NOTE:
**
**
Auth:
**
Date:
*******************************************************************************
**
Change History
*******************************************************************************
**
Date:
Author:
Description:
20150417
KJCE
Shows all the ca
librator notes per Performance ID
**
20150422
KJCE
Added JobClass a
nd SubOrg filter to get specific
count in the detail page
**
20150519
KJCE
Added LastUpdate
dDate to show the current Notes on the top
**
20150526
KJCE
Added s.RN=1 to
get only the first series of notes
**
20150530
MFB
Added @p
SelectedEmp for search functionality
**
20150608
KJCE
Fix sorting
**
20150610
KJCE
Updates for scen
ario when choosing the vertical layer lower than the parent org id
**
20150615
KJCE
Removed filter S
tatus
**
20150615
KJCE
Include PA Forms
with Status = 98
**
20150630
KJCE
Exclude special
cycle
**
20150703
KJCE
Optimized query
*******************************************************************************/
--SP_PM_Statistics_SubmittedDetail '','6/30/2011','2930360','1','1','actual'
TB_PM_Assessment_Header_New A
where A.Performance_ID = (select top 1 Performance_ID from TB_PM_Assessment_H
eader_New
where CyclePeriod_To <= @CyclePeriodEnd
and Employee_ID=A.Employee_ID
and Status in ('110','80')
order by CyclePeriod_To desc,CyclePeriod_From
)
) X
left join (select Isnull(Calibration_RatingScale,RatingScale) RatingScale,For
m_Version from TB_PM_Form_Setup_DTL where Perf_Assessment_Val='40' ) RATING
on X.Form_Version=Rating.Form_Version
left join (select * from dbo.get_PM_PerformanceSymbol_Conversion('')) B
on (
(RATING.RatingScale=B.Rating_Code
and B.Section_Type_ID=Isnull((select top 1 Section_Type_ID from dbo.get_PM_Perf
ormanceSymbol_Conversion('') where Section_Type_ID='50'),'40')
)
OR
(Isnull(RATING.RatingScale,'') <> Isnull(B.Rating_Code,'') and B.Section_Type
_ID='50'
and B.Section_Type_ID=Isnull((select top 1 Section_Type_ID from dbo.get_PM_Perf
ormanceSymbol_Conversion('') where Section_Type_ID='50'),'40')
)
)
-- and X.Calibrated_Rating = B.SymBolrating
and Isnull(X.Calibrated_Rating_Num,0) between B.RangeFrom and B.RangeTo
) MAIN
where Performance_ID=MAIN.ROW_ID2
and Isnull(Calibrated_Rating,'') <> Isnull(MAIN.SymBolrating2,'')
/******************for org heads 20150525 KJCE*****************/
SELECT * INTO #OrgHeads FROM(
Select
MOVT.Emp
loyee_ID
--201507
03 KJCE only employee id is needed
--,EI.LN
F Name,
--(SELEC
T * FROM dbo.getOrganizationHeads(MOVT.Employee_ID,GETDATE(),ORG.Vertical_Layer,
GETDATE())) OrgHead,
--ORG.Or
ganization_ID,
--ORG.Sh
ort_Name,
--ORg.Ve
rtical_Layer
From
(
Select
Employee_ID,Position_ID,Movement_Type_ID, --20150703 KJCE
ROW_NUMBER() OVER (Partition By Employee_ID Order By [Start_Date] desc, SortSeq
desc) RN
From TB_
Employee_Movement_Info
Where
--Employ
ee_ID = @pEmployee_ID
--And
[Start_D
ate] <= GETDATE()
) MOVT
LEFT JOIN TB_Mas
ter_Position POS
on POS.Master_Po
sition_ID = MOVT.Position_ID
LEFT JOIN VW_EI_
PERSONAL_NAMES EI
ON EI.Employee_I
D=MOVT.Employee_ID
LEft Join TB_Mas
ter_Organization ORG
on ORG.Master_Or
ganization_ID = POS.Vertical_Assignment_ID
Where MOVT.RN =
1
AND MOVT.Movemen
t_Type_ID<>'280' --NOT YET SEPARATED
AND ORG.Organiza
tion_ID = @ParentOrgID
AND POS.Position
_Type_ID = '10' --OrgHead
AND MOVT.Employe
e_ID = (SELECT * FROM dbo.getOrganizationHeads(MOVT.Employee_ID,GETDATE(),ORG.Ve
rtical_Layer,GETDATE()))
) AAA
/************************************************/
MOV.Group_ID,
MOV.Department_ID,
MOV.Section_ID,
---MJB 20150225
MOV.VerticalLayer7,
MOV.VerticalLayer8,
MOV.VerticalLayer9,
MOV.VerticalLayer11,
MOV.VerticalLayer12
from
TB_Employee_Movement_Info MOV
left join TB_Master_Employment_Info EMP on
EMP.Employee_ID = MOV.Employee_ID
left join TB_Master_Personal_Info PER on
PER.Person_ID = EMP.Person_ID
left join TB_Master_Position POS on
POS.Master_Position_ID = MOV.Position_ID
left join TB_Master_Job_Level_Band JLB on
JLB.Band_Version_No = MOV.Band_Version_No
and JLB.Band_Version_Name = MOV.Band_Version_Name
and JLB.Job_Level_Band = MOV.Job_Level_Grade_ID
left join TB_Master_Reference REF on
REF.Reference_Category = '503'
and REF.Reference_Category_Key = JLB.Job_Class
where
--MOV.Movement_Type_ID <> '280'
--20150703 KJCE
--AND
JLB.Job_Class IN (select value from dbo.UTILfn_Split(@JobClass,'|'))-= @JobClass
-- ('10','100','110','20','30','70','80','90')
and MOV.Employment_Status_ID in ('10','20')
AND MOV.DeactivatedDate is null
and MOV.Start_Date <= @CyclePeriodEnd
and (MOV.End_Date is null or MOV.End_Date > @CyclePeriodEnd)
AND MOV.Employee_ID NOT IN (SELECT Employee_ID FROM #OrgHeads) --20150
525 KJCE
/*and MOV.Employee_Movement_Info_ID = (
Select
Top 1 Employee_Movement_Info_ID
From TB_Employee_Movement_Info
Where EmployeE_ID = MOV.Employee_ID
and DeactivatedDate is null
and Start_Date <= @CyclePeriodEnd
and (End_Date is null or End_Date > @CyclePeriodEnd)
Order By Start_Date Desc
)
*/
--MJB 20150225
--should cover children ORGS
-- this is like @level =0 and @level1 combined with expanded children ORG
CREATE TABLE #TB_Master_Organization
(
Master_Organization_ID int,
Organization_ID varchar(50),
BussUnitCode varchar(50),
Vertical_Layer varchar(10),
Parent_Organization_ID int,
Start_Date datetime,
End_Date datetime,
Short_Name varchar(200),
Long_Name varchar(500),
Organization_Type_ID varchar(5),
Control varchar(5),
LastUpdatedByID varchar(20),
LastUpdatedDate datetime,
DeactivatedByID varchar(20),
DeactivatedDate datetime,
)
Parent_Organization_ID,
Start_Date,
End_Date,
Short_Name,
Long_Name,
Organization_Type_ID,
Control,
LastUpdatedByID,
LastUpdatedDate,
DeactivatedByID,
DeactivatedDate
)
Select
ORG.Master_Organization_ID,
ORG.Organization_ID,
ORG.BussUnitCode,
ORG.Vertical_Layer,
ORG.Parent_Organization_ID,
ORG.Start_Date,
ORG.End_Date,
ORG.Short_Name,
ORG.Long_Name,
ORG.Organization_Type_ID,
ORG.Control,
ORG.LastUpdatedByID,
ORG.LastUpdatedDate,
ORG.DeactivatedByID,
ORG.DeactivatedDate
FROM
TB_MASTER_ORGANIZATION ORG
INNER JOIN #tmp_Org ORGACCESS
ON
(dbo.isOrganizationUnderOrganization(ORG.Master_Organization_ID,ORGACCES
S.Master_Organization_ID) = 1
OR ORG.Master_Organization_ID = ORGACCESS.Master_Organization_ID
)
--- END MJB 20150225
CREATE NONCLUSTERED INDEX [INDEX_#TB_Master_Organization]
ON [dbo].[#TB_Master_Organization] ([Master_Organization_ID])
INCLUDE ([Vertical_Layer])
select * into #tmp_EmpSubmit from
(
select
--DISTINCT
ROW_NUMBER() OVER (Partition By HDR.Employee_ID Order By ORG.Ver
tical_Layer ASC) RN, --20150703 KJCE to optimize
HDR.Performance_ID,
HDR.Employee_ID,
HDR.Final_Rating,
HDR.Final_Rating_Num,
isnull(HDR.Calibrated_Rating, HDR.Final_Rating) Calibrated_Ratin
g, --- MJB 20141202 ; if calib rating has no value, default to final rating
isnull(HDR.Calibrated_Rating_Num,HDR.Final_Rating_Num) Calibrate
d_Rating_Num, --- MJB 20141202 ; if calib rating has no value, default to fina
l rating
HDR.Status,
--HDR.EmployeesComments,
--HDR.SuperiorComments,
--HDR.BigBossComments,
--HDR.Form_Version,
HDR.Cycle_Version, --20150630 KJCE
--Isnull(FORMSETUP.Calibration_Preference,'10') Calibration_Pref
erence,
MOV.Last_Name,
MOV.First_Name,
MOV.Middle_Name,
MOV.Position,
MOV.Job_Class
,ORG.Vertical_Layer
,ORG.Master_Organization_ID Organization_ID
/*,
--Added by KJCE 20150320
CASE WHEN(
(SELECT RTRIM(
LTRIM(dbo.PM_RaterCalibratorNotes(
HDR.Performance_ID,@pEmployeeID)
)
))) IS NULL
THEN ''
ELSE (SELECT RTRIM(
LTRIM(dbo.PM_RaterCalibratorNotes(
HDR.Performance_ID,@pEmployeeID)
)
))
END Calibrator_Notes */
from
TB_PM_Assessment_Header_New HDR
left join #tmp_EmpMov MOV on
MOV.Employee_ID = HDR.Employee_ID
--MJB 20150225
Inner join #TB_Master_Organization ORG on
MOV.Conglomerate_ID = ORG.Master_Organization_ID
or MOV.Company_ID = ORG.Master_Organization_ID
or MOV.Cluster_ID = ORG.Master_Organization_ID
or MOV.Division_ID = ORG.Master_Organization_ID
or MOV.Group_ID = ORG.Master_Organization_ID
or MOV.Department_ID = ORG.Master_Organization_ID
or MOV.Section_ID = ORG.Master_Organization_ID
or MOV.VerticalLayer7 = ORG.Master_Organization_ID
or MOV.VerticalLayer8 = ORG.Master_Organization_ID
or MOV.VerticalLayer9 = ORG.Master_Organization_ID
or MOV.VerticalLayer11 = ORG.Master_Organization_ID
or MOV.VerticalLayer12 = ORG.Master_Organization_ID
--left join TB_PM_Form_Setup FORMSETUP
--on FORMSETUP.form_version= case when HDR.Form_Version='Summary' then (
select top 1 Form_Version from TB_PM_Assessment_Header_New
-where CyclePeriod_To <=HDR.CyclePeriod_To
-and Employee_ID=HDR.Employee_ID
-order by CyclePeriod_To desc
-)
-else HDR.Form_Ve
rsion end
where
(isnull(@CyclePeriodStart,'') = '' or CyclePeriod_From = @CyclePeriodSta
rt)
and cast(convert(varchar,CyclePeriod_To,101) as datetime) = cast(convert
(varchar,@CyclePeriodEnd,101) as datetime)
and Status in ('80','110', '98') -- For Division Head Review and Submitt
ed to HR status --20150615 KJCE
----and ORG.Organization_ID is not NULL --- MJB 20141202
AND ORG.Master_Organization_ID IN (select value from dbo.UTILfn_Split(@S
ubOrgID,'|')) OR @SubOrgID = ''
) C
WHERE Cycle_Version NOT IN (
SELECT Reference
_Category_Key FROM TB_Master_Reference
WHERE Reference_
Category = '1100'
) --20150630 KJCE
AND RN=1 --20150703 KJCE
select * from #tmp_EmpSubmit --return
Declare @Numeric_Rating_From varchar(10),
@Numeric_Rating_To varchar(10)
set @Numeric_Rating_From = '0.0'
set @Numeric_Rating_To = '0.0'
DECLARE @approverLevel varchar(10) = (select app.LevelNo from tb_master_approval
_setup app
inner join TB_Master_Organizatio
n org
on org.Vertical_Layer = app.Vert
ical_Layer
and TranCode = 'PERF'
where org.Organization_ID = @Par
entOrgID
AND org.End_Date IS NULL AND org
.DeactivatedDate IS NULL --20150630 KJCE
) -- 20150603 MFB
IF EXISTS (
SELECT 1 FROM TB_PM_CALIBRATOR_TRANSACTIONS WHERE Perfor
mance_ID
IN
(
SELECT Performance_ID FROM #tmp_EmpSubmit
WHERE (
(@RatingType = 0 and Final_Ratin
g = @Rating)
or
(@RatingType = 1 and Isnull(Cali
brated_Rating,Final_Rating) = @Rating)
)
)
)
BEGIN
select
--DISTINCT --20150703 KJCE
case when (select ISNULL(SUBMIT.Employee_ID, '') where (CAL.Status = '1
Vertical_Layer,
Level_No,
[Status],
CASE WHEN ((SELECT Vertical_Layer FROM #
tmp_Org WHERE Organization_ID=@ParentOrgID)=(SELECT Vertical_Layer FROM #OrgHead
s))
THEN ROW_NUMBER() OVER (Partitio
n By Performance_ID Order By [Status] ASC, Level_No DESC)
ELSE
ROW_NUMBER() OVER (Partition By
Performance_ID Order By Level_No DESC, [Status] ASC)
END RN
FROM TB_PM_CALIBRATOR_TRANSACTIONS
--WHERE Vertical_Layer >= (SELECT Vertic
al_Layer FROM #OrgHeads)
) CAL
ON CAL.Performance_ID=SUBMIT.Performance
_ID
AND CAL.RN=1
--AND CAL.Level_No > 2
where
((@RatingType = 0 and Final_Rating = @Rating) --_Num between con
vert(float,isnull(@Numeric_Rating_From,0.0)) and convert(float,isnull(@Numeric_R
ating_To,0.0)))
or (@RatingType = 1 and Isnull(Calibrated_Rating,Final_Rating) =
@Rating)) --_Num between convert(float,isnull(@Numeric_Rating_From,0.0)) and co
nvert(float,isnull(@Numeric_Rating_To,0.0)))
--AND (( @SelectedEmp <> '' AND Submit.Employee_ID = @SelectedEm
p) OR (@SelectedEmp = ''))--20150530 MFB
--AND SUBMIT.Vertical_Layer = (SELECT Vertical_Layer FROM #OrgHeads)
--AND SUBMIT.Vertical_Layer IN (SELECT Vertical_Layer FROM TB_PM_CALIBRA
TOR_TRANSACTIONS WHERE Vertical_Layer >= (SELECT Vertical_Layer FROM #OrgHeads))
--20150608 KJCE
--AND Level_No <= 2
--and ISNULL(CAL.[Status],'10')='10' 20150615 KJCE
order by
--20150608 KJCE
ForCalibrationFlag DESC,
SUBMIT.Last_Name ASC,
SUBMIT.First_Name ASC,
/*case @OrderField
when 'actual' then Final_Rating_Num
when 'calibrated' then Calibrated_Rating_Num
when 'id' then ''
when 'position' then ''
when 'jobclass' then ''
when 'name' then ''
else ''
end desc,
case @OrderField
when 'actual' then ''
when 'calibrated' then ''
when 'id' then Employee_ID
when 'position' then Position
when 'jobclass' then Job_Class
when 'name' then ''
else ''
end asc,*/
Final_Rating ASC,
Final_Rating_Num DESC,
Calibrated_Rating ASC,
Calibrated_Rating_Num ASC,
SUBMIT.Status ASC,
--EmployeesComments,
--SuperiorComments,
--BigBossComments,
--Form_Version,
--Calibration_Preference,
Job_Class,
--Organization_ID,
SUBMIT.Performance_ID,
t.Calibrator_Notes,
Middle_Name,Position,
SUBMIT.Employee_ID
--20150608 KJCE
END
ELSE
select
DISTINCT
SUBMIT.Employee_ID,
SUBMIT.Performance_ID,
SUBMIT.Last_Name,
SUBMIT.First_Name,
SUBMIT.Middle_Name,
SUBMIT.Final_Rating ,
SUBMIT.Final_Rating_Num ,
SUBMIT.Calibrated_Rating ,
SUBMIT.Calibrated_Rating_Num ,
SUBMIT.Status ,
--SUBMIT.EmployeesComments,
--SUBMIT.SuperiorComments,
--SUBMIT.BigBossComments,
--SUBMIT.Form_Version,
--SUBMIT.Calibration_Preference,
SUBMIT.Job_Class,
SUBMIT.Position,
--t.Calibrator_Notes,
CASE WHEN (t.Calibrator_Notes='Add Notes')
then 'Add Notes'
ELSE
t.Calibrator_Notes
end Calibrator_Notes --20150417 KJCE
from #tmp_EmpSubmit SUBMIT
---20150417 KJCE
left join (
select Performance_ID, STUFF(
(SELECT ' ' + s.Calibrator_Notes FROM #NOTES s
WHERE s.performance_id = t.performance_id and s.RN=1 --20150526 KJCE
ORDER BY LastUpdatedDate DESC --20150519 KJCE
FOR XML PATH(''),type).value('(./text())[1]','varchar(max)'),1,1,'') AS Calibrat
or_Notes from #NOTES t --to include all notes of one Performance_ID
where t.RN=1
) t
on t.Performance_ID=SUBMIT.Performance_ID
--LEFT JOIN TB_PM_CALIBRATOR_TRANSACTIONS CAL
--ON CAL.Performance_ID = SUBMIT.Performance_ID
--20150417 KJCE
where
((@RatingType = 0 and Final_Rating = @Rating) --_Num between convert(fl
oat,isnull(@Numeric_Rating_From,0.0)) and convert(float,isnull(@Numeric_Rating_T
o,0.0)))
or (@RatingType = 1 and Isnull(Calibrated_Rating,Final_Rating) = @Ratin
g)) --_Num between convert(float,isnull(@Numeric_Rating_From,0.0)) and convert(f
loat,isnull(@Numeric_Rating_To,0.0)))
AND (( @SelectedEmp <> '' AND Submit.Employee_ID = @SelectedEmp) OR (@S
electedEmp = ''))
--20150530 MFB
order by
SUBMIT.Last_Name ASC,
SUBMIT.First_Name ASC,/*
case @OrderField
when 'actual' then Final_Rating_Num
when 'calibrated' then Calibrated_Rating_Num
when 'id' then ''
when 'position' then ''
when 'jobclass' then ''
when 'name' then ''
else ''
end desc,
case @OrderField
when 'actual' then ''
when 'calibrated' then ''
when 'id' then Employee_ID
when 'position' then Position
when 'jobclass' then Job_Class
when 'name' then ''
else ''
end asc,*/
Final_Rating ASC,
Final_Rating_Num DESC,
Calibrated_Rating ASC,
Calibrated_Rating_Num ASC,
SUBMIT.Status ASC,
--EmployeesComments,
--SuperiorComments,
--BigBossComments,
--Form_Version,
--Calibration_Preference,
Job_Class,
--CAL.Vertical_Layer,
--Organization_ID,
SUBMIT.Performance_ID,
t.Calibrator_Notes,
Middle_Name,
Position,
SUBMIT.Employee_ID
-*/
drop table #tmp_EmpMov
drop table #tmp_Org
drop table #tmp_EmpSubmit