Project

General

Profile

Feature #3658 » PRPTPMSFORMFA_202507231620.sql

Tri Rizqiaty, 07/23/2025 04:21 PM

 
1
??ALTER PROCEDURE [dbo].[PRPTPMSFORMFA]
2

3
(		
4

5
	@EmployeeID VARCHAR(8),
6

7
	@AppraisalType VARCHAR(20),
8

9
	@Year VARCHAR(8), 
10

11
	@MenuID VARCHAR(10),
12

13
    @UserID VARCHAR(10),
14

15
	@HeaderSeq VARCHAR(10)
16

17
)
18

19
AS
20

21

22

23
	--DECLARE @EmployeeID varchar(8) = '00000143'
24

25
	--DECLARE @AppraisalType varchar(8) = 'F'
26

27
	--DECLARE @Year varchar(8) = '2025'
28

29
	--DECLARE @MenuID VARCHAR(10) = 'PMR01'
30

31
	--DECLARE @UserID VARCHAR(10) = 'tri'
32

33
	--DECLARE @HeaderSeq VARCHAR(10) = '7'
34

35
	
36

37
	DECLARE @startdate VARCHAR(12) = @Year + '0101'
38

39
	DECLARE @enddate VARCHAR(12) = @Year + '1231'
40

41
	
42

43
	------------------ // Get Otorisasi //---------------
44

45

46

47
	DECLARE @TableResult TABLE ( EmployeeID VARCHAR(20) )
48

49

50

51
	INSERT  INTO @TableResult
52

53
    EXEC dbo.GETEMPIDAUTHBYMENU @MenuID = @MenuID, -- varchar(max)
54

55
        @UserID = @UserID
56

57
 
58

59
------------------ // End Get Otorisasi //---------------
60

61
	
62

63
	SELECT @EmployeeID = CASE WHEN @EmployeeID = '-' THEN NULL ELSE @EmployeeID END	
64

65
	
66

67
	DECLARE @Organization VARCHAR(8), 
68

69
			@Position VARCHAR(8), 
70

71
			@SuperVisorName VARCHAR(50), 
72

73
			@SupervisorInOrg VARCHAR(50),
74

75
			@JabatanOrPangkat VARCHAR(50),
76

77
			@DivisiOrCabang VARCHAR(50),
78

79
			@Directorate VARCHAR(50);
80

81
			
82

83
	SELECT TOP 1 @Organization = x.Organization , 
84

85
				@Position = x.Position
86

87
	FROM dbo.PHRPA0002 AS x 
88

89
	WHERE cast(x.StartDate as bigint) <= @startdate and CAST(x.EndDate as bigint) >= @enddate and
90

91
	x.EmployeeID = @EmployeeID 
92

93
	ORDER BY CAST(x.EndDate AS BIGINT) DESC
94

95

96

97
	DECLARE @SPVID VARCHAR(50);
98

99

100

101
	SET @SPVID = dbo.GetEmpSupervisor(@EmployeeID)
102

103
	select TOP 1 @SuperVisorName = UPPER(FullName) from dbo.PHRPA0001 where EmployeeID =  @SPVID;
104

105
	
106

107
	DECLARE @SPVIDINORG VARCHAR(50);
108

109
	SET @SPVIDINORG = dbo.GetSupervisorInOrg(@Organization, @startdate)
110

111
	
112

113
	select TOP 1 @SupervisorInOrg = UPPER(FullName) from dbo.PHRPA0001 where EmployeeID = @SPVIDINORG
114

115
	
116

117
	SET @JabatanOrPangkat = dbo.Gethr_md_orm_object_description(@Position, @startdate, 'P')
118

119
	SET @DivisiOrCabang = dbo.Gethr_md_orm_object_description(@Organization, @startdate, 'O');
120

121
	SELECT TOP 1 @Directorate = lv1_descr FROM dbo.GetOrganisasiTreeByLevel(@Organization, @startdate) AS x;
122

123

124

125
	DECLARE @t_org TABLE(
126

127
		org_id VARCHAR(20)
128

129
		,org_name VARCHAR(500)
130

131
		,dir_id VARCHAR(200)
132

133
		,dir_name VARCHAR(500)
134

135
		,div_id VARCHAR(20)
136

137
		,div_name VARCHAR(500)
138

139
		,cab_id VARCHAR(20)
140

141
		,cab_name VARCHAR(500)
142

143
	)
144

145
	INSERT INTO @t_org
146

147
	select org_id, org_name, org_id_01, org_name_01, org_id_04, org_name_04, org_id_12, org_name_12 from dbo.CBKT_GetOrgInOrgWide('00000001', @enddate)
148

149

150

151

152

153
	SELECT	DISTINCT _md01.EmployeeID, 
154

155
				_md01.FullName, 
156

157
				ISNULL(@SuperVisorName,'') AS Supervisor,
158

159
				ISNULL(@SupervisorInOrg,'') as SupervisorInOrg,
160

161
				--ISNULL(@JabatanOrPangkat,'') AS JabatanOrPangkat, 
162

163
				--ISNULL(@DivisiOrCabang,'') AS DivisiOrCabang, 
164

165
				posom1.ObjectDescription AS JabatanOrPangkat,
166

167
				CASE WHEN torg.div_name <> '' THEN torg.div_name ELSE CASE WHEN torg.cab_name <> '' THEN torg.cab_name ELSE '' END END AS DivisiOrCabang,
168

169
				--ISNULL(@Directorate,'') AS Directorate
170

171
				torg.dir_name AS Directorate
172

173
				,dbo.fn_formatdatetime(@startdate, 'dd/mm/yyyy') AS PeriodeStart
174

175
				,dbo.fn_formatdatetime(@enddate, 'dd/mm/yyyy') AS PeriodeEnd
176

177
				,CASE WHEN pa48_app1.AppraiserName <> '' THEN pa48_app1.AppraiserName ELSE app1.FullName END AS Appraisal1Name
178

179
				,CASE WHEN pa48_app2.AppraiserName <> '' THEN pa48_app2.AppraiserName ELSE app2.FullName END AS Appraisal2Name
180

181
				,pa2.Position
182

183
				,posom1.ObjectDescription AS PosDesc
184

185
				,posom1.PositionHead AS PosHead
186

187
				,_47.Sequence AS PeriodSeq
188

189
				,_47.PeriodFrom
190

191
				,_47.PeriodTo
192

193
				,dbo.fn_formatdatetime(@Year+_47.PeriodFrom+'01', 'dd/mm/yyyy') AS PeriodDescDesc
194

195
				,dbo.fn_formatdatetime(@Year+_47.PeriodTo+'01', 'dd/mm/yyyy') AS PeriodToDesc
196

197
				,_47.AppraisalType
198

199
				--,torg.*
200

201
	FROM	dbo.PHRPA0001 AS _md01 WITH (NOLOCK)
202

203
	INNER JOIN @TableResult AS tr 
204

205
		ON tr.EmployeeID = [_md01].EmployeeID
206

207
	LEFT JOIN PHRPA0047 AS _47 
208

209
		ON _md01.EmployeeID = _47.EmployeeID
210

211
	LEFT JOIN PHRPA0048 pa48_app1 
212

213
		ON _47.EmployeeID = pa48_app1.EmployeeID
214

215
		--AND pa48_app1.AppraiserNo = 'App1' 
216

217
		AND pa48_app1.Sequence = '1'
218

219
		AND pa48_app1.HeaderSequence = _47.Sequence
220

221
	LEFT JOIN dbo.PHRPA0001 AS app1
222

223
		ON app1.EmployeeID = pa48_app1.AppraisalD
224

225
		AND app1.StartDate <= @enddate AND app1.EndDate >= @enddate
226

227
	LEFT JOIN PHRPA0048 pa48_app2 
228

229
		ON _47.EmployeeID = pa48_app2.EmployeeID
230

231
		--AND pa48_app2.AppraiserNo = 'App2' 
232

233
		AND pa48_app2.Sequence = '2'
234

235
		AND pa48_app2.HeaderSequence = _47.Sequence
236

237
	LEFT JOIN dbo.PHRPA0001 AS app2
238

239
		ON app2.EmployeeID = pa48_app2.AppraisalD
240

241
		AND app2.StartDate <= @enddate AND app2.EndDate >= @enddate
242

243
	LEFT JOIN dbo.PHRPA0002 AS pa2
244

245
		ON _md01.EmployeeID = pa2.EmployeeID
246

247
		AND pa2.StartDate <= @enddate AND pa2.EndDate >= @enddate
248

249
	LEFT JOIN dbo.PHROM0001 AS posom1
250

251
		ON posom1.ObjectID = pa2.Position
252

253
		AND posom1.ObjectClass = 'P'
254

255
		AND posom1.StartDate <= @enddate AND posom1.EndDate >= @enddate
256

257
	LEFT JOIN @t_org AS torg
258

259
		ON torg.org_id = pa2.Organization
260

261
	WHERE _md01.EmployeeID = @EmployeeID		
262

263
		AND _md01.StartDate <= @startdate
264

265
		AND _md01.EndDate >= @startdate
266

267
		AND LEFT(_47.StartDate, 4) = @Year		
268

269
		AND _47.AppraisalType = @AppraisalType
270

271
		AND _47.Sequence = @HeaderSeq
272

273
	ORDER BY 	_md01.EmployeeID
274

275
		
276

277
	
278

279

280

281

282

283
  
284

285

286

287
 
288

289

(27-27/29)