Project

General

Profile

Feature #3647 » CRPTBKTELWU_202507151441.sql

Tri Rizqiaty, 07/15/2025 03:09 PM

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

3
(
4

5
	@Period VARCHAR(20)
6

7
	,@Organization VARCHAR(20)
8

9
	,@EmployeeID VARCHAR(20)
10

11
	,@AppraisalType VARCHAR(20)
12

13
)
14

15
AS
16

17

18

19
--DECLARE @Period VARCHAR(20) = '2025'
20

21
--DECLARE @Organization VARCHAR(20) = '00000001'
22

23
--DECLARE @EmployeeID VARCHAR(20) = ''--'00000110'--'00000043'
24

25
--DECLARE @AppraisalType VARCHAR(20) = 'G'
26

27

28

29
DECLARE @now VARCHAR(20) = FORMAT(GETDATE(), 'yyyyMMdd')
30

31
DECLARE @PeriodeEnDt VARCHAR(20) = @Period + '1231'
32

33

34

35
DECLARE @BizFlowID VARCHAR(200) = ''
36

37
IF(@AppraisalType = 'F')
38

39
BEGIN 
40

41
	SET @BizFlowID = 'MD_PMS_Final'
42

43
END
44

45
ELSE IF(@AppraisalType = 'G')
46

47
BEGIN 
48

49
	SET @BizFlowID = 'MD_PMS_Goal'
50

51
END
52

53
ELSE IF(@AppraisalType = 'P')
54

55
BEGIN 
56

57
	SET @BizFlowID = 'MD_PMS_Review'
58

59
END
60

61

62

63
IF(@Organization = '')
64

65
BEGIN SET @Organization = '00000001' END
66

67

68

69
DECLARE @t_org TABLE(
70

71
	org_id VARCHAR(20)
72

73
	,org_name VARCHAR(500)
74

75
	,diV_id VARCHAR(20)
76

77
	,div_name VARCHAR(500)
78

79
)
80

81
INSERT INTO @t_org
82

83
select org_id, org_name, org_id_04, org_name_04 from dbo.GetOrgInOrgWide(@Organization, @now)
84

85

86

87
DECLARE @t_emp TABLE
88

89
(
90

91
	EmployeeID VARCHAR(20)
92

93
	,EmployeeName VARCHAR(500)
94

95
	,DivID VARCHAR(20)
96

97
	,DivDesc VARCHAR(500)
98

99
	,Organization VARCHAR(20)
100

101
	,OrgDesc VARCHAR(500)
102

103
	,Position VARCHAR(20)
104

105
	,PosDesc VARCHAR(500)
106

107
	,Job VARCHAR(20)
108

109
	,JobDesc VARCHAR(500)
110

111
)
112

113

114

115
INSERT INTO @t_emp
116

117
SELECT pa2.EmployeeID, pa1.FullName, torg.diV_id, torg.div_name, pa2.Organization, torg.org_name, pa2.Position, pos.ObjectDescription, pa2.Job, job.ObjectDescription
118

119
FROM PHRPA0002 as pa2
120

121
INNER JOIN @t_org AS torg
122

123
	ON pa2.Organization = torg.org_id
124

125
LEFT JOIN PHRPA0001 AS pa1
126

127
	ON pa2.EmployeeID = pa1.EmployeeID
128

129
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
130

131
LEFT JOIN PHROM0001 AS pos
132

133
	ON pa2.Position = pos.ObjectID
134

135
	AND pos.ObjectClass = 'P'
136

137
	AND pos.StartDate <= @now AND pos.EndDate >= @now
138

139
LEFT JOIN PHROM0001 AS job
140

141
	ON pa2.Job = job.ObjectID
142

143
	AND job.ObjectClass = 'J'
144

145
	AND job.StartDate <= @now AND job.EndDate >= @now
146

147
WHERE pa2.StartDate <= @now AND pa2.EndDate >= @now 
148

149
	AND (pa2.EmployeeID = @EmployeeID OR @EmployeeID = '')
150

151

152

153
DECLARE @t_result TABLE
154

155
(
156

157
	EmployeeID VARCHAR(20)
158

159
	,EmployeeName VARCHAR(500)
160

161
	,DivID VARCHAR(20)
162

163
	,DivDesc VARCHAR(500)
164

165
	,Organization VARCHAR(20)
166

167
	,OrgDesc VARCHAR(500)
168

169
	,Position VARCHAR(20)
170

171
	,PosDesc VARCHAR(500)
172

173
	,Job VARCHAR(20)
174

175
	,JobDesc VARCHAR(500)
176

177
	,RegID DECIMAL(18,0)
178

179
	,BizFlowID VARCHAR(100)
180

181
	,[Sequence] DECIMAL(18,0)
182

183
	,TaskIDRun VARCHAR(100)
184

185
	,TaskStatus VARCHAR(50)
186

187
	,ExecuteEmployeeID VARCHAR(50)
188

189
	,ExecuteEmpName VARCHAR(50)
190

191
)
192

193

194

195
DECLARE @t_pa47 TABLE
196

197
(
198

199
	EmployeeID VARCHAR(20)
200

201
	,EmployeeName VARCHAR(500)
202

203
	,DivID VARCHAR(20)
204

205
	,DivDesc VARCHAR(500)
206

207
	,Organization VARCHAR(20)
208

209
	,OrgDesc VARCHAR(500)
210

211
	,Position VARCHAR(20)
212

213
	,PosDesc VARCHAR(500)
214

215
	,Job VARCHAR(20)
216

217
	,JobDesc VARCHAR(500)
218

219
	,StartDate VARCHAR(20)
220

221
	,RegID DECIMAL(18,0)
222

223
	,BizFlowID VARCHAR(100)
224

225
	,[Sequence] DECIMAL(18,0)
226

227
	,TaskIDRun VARCHAR(100)
228

229
	,TaskStatus VARCHAR(50)
230

231
	,PICSeq DECIMAL(18,0)
232

233
	,ExecuteEmployeeID VARCHAR(50)
234

235
	,ExecuteEmpName VARCHAR(50)
236

237
)
238

239

240

241

242

243
INSERT INTO @t_pa47
244

245
SELECT DISTINCT temp.*, pa47.StartDate, pa47.RegID, '' AS BizFlowID, 1 AS Sequence, '' AS TaskIDRun, 'F' AS TaskStatus, hispic.Sequence, hispic.ExecuteEmpID AS ExecuteEmployeeID, pic.FullName AS ExecuteEmpName
246

247
FROM PHRPA0047 AS pa47
248

249
INNER JOIN @t_emp AS temp
250

251
	ON pa47.EmployeeID = temp.EmployeeID
252

253
LEFT JOIN PCMWFHISPIC AS hispic
254

255
	ON hispic.RegID = pa47.RegID
256

257
LEFT JOIN dbo.PHRPA0001 AS pic
258

259
	ON hispic.ExecuteEmpID = pic.EmployeeID
260

261
	AND pic.StartDate <= @now AND pic.EndDate >= @now
262

263
WHERE (pa47.EmployeeID = @EmployeeID OR @EmployeeID = '')
264

265
	AND (pa47.AppraisalType = @AppraisalType OR @AppraisalType = '')
266

267
	AND LEFT(pa47.StartDate,4) = @Period
268

269

270

271
DECLARE @t_wf TABLE
272

273
(
274

275
	RegID VARCHAR(20)
276

277
	,BizFlowID VARCHAR(250)
278

279
	,TaskRunID VARCHAR(250)
280

281
	,EmployeeID VARCHAR(20)
282

283
)
284

285

286

287
INSERT INTO @t_wf
288

289
SELECT DISTINCT MAX(runtask.RegID), BizFlowID, TaskIDRun, ExecuteEmployeeID
290

291
--SELECT RegID, BizFlowID, TaskIDRun, ExecuteEmployeeID
292

293
FROM PCMWFRUNTASK AS runtask
294

295
INNER JOIN @t_emp AS temp
296

297
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
298

299
INNER JOIN PCMWFRUNBIZDATA AS bizdata
300

301
	ON runtask.RegID = bizdata.RegID
302

303
WHERE TaskIDRun = 'create'
304

305
	AND BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
306

307
	AND LEFT(InboundDate,4) = @Period
308

309
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
310

311
	AND (runtask.RegID NOT IN ( SELECT RegID FROM @t_pa47))
312

313
	AND bizdata.FieldID = 'StartDate_47' AND LEFT(bizdata.Value,4) = @Period
314

315
GROUP BY BizFlowID, TaskIDRun, ExecuteEmployeeID
316

317
--ORDER BY RegID ASC
318

319

320

321
DECLARE @TRunTask TABLE
322

323
(
324

325
	[RegID] [BIGINT] NOT NULL,
326

327
	[Sequence] [INT] NOT NULL,
328

329
	[BizFlowID] [VARCHAR](50) NOT NULL,
330

331
	[TaskID] [VARCHAR](50) NOT NULL,
332

333
	[DepthLevel] [BIGINT] NOT NULL,
334

335
	[BizFlowIDRun] [VARCHAR](50) NULL,
336

337
	[TaskIDRun] [VARCHAR](50) NULL,
338

339
	[InboundDate] [VARCHAR](14) NULL,
340

341
	[ReadDate] [VARCHAR](14) NULL,
342

343
	[ExecuteDate] [VARCHAR](14) NULL,
344

345
	[ExecuteUser] [VARCHAR](150) NULL,
346

347
	[ExecuteEmployeeID] [VARCHAR](8) NULL,
348

349
	[WorkFlowStatus] [VARCHAR](3) NULL,
350

351
	[TaskStatus] [VARCHAR](4) NULL,
352

353
	[ConditionResult] [VARCHAR](500) NULL,
354

355
	[TaskFrom] [VARCHAR](50) NULL,
356

357
	[TaskTo] [VARCHAR](50) NULL,
358

359
	[FlowType] [VARCHAR](3) NULL,
360

361
	[MailSent] [VARCHAR](1) NULL
362

363
	,EmployeeID VARCHAR(8)
364

365
)
366

367

368

369
INSERT INTO @TRunTask
370

371
SELECT DISTINCT runtask.*, twf.EmployeeID
372

373
FROM PCMWFRUNTASK AS runtask
374

375
INNER JOIN @t_wf AS twf
376

377
	ON runtask.RegID = twf.RegID
378

379
WHERE (TaskIDRun IN ('create ','apv_ds', 'apv_nha') OR WorkFlowStatus = 'F')
380

381
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
382

383
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
384

385

386

387
INSERT INTO @t_result
388

389
SELECT DISTINCT temp.*, runtask.RegID, runtask.BizFlowID, runtask.Sequence, TaskIDRun, runtask.TaskStatus, runtask.ExecuteEmployeeID, pa1.FullName AS ExecuteEmpName 
390

391
FROM @TRunTask AS runtask
392

393
LEFT JOIN PHRPA0001 AS pa1
394

395
	ON runtask.ExecuteEmployeeID = pa1.EmployeeID
396

397
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
398

399
LEFT JOIN @t_emp AS temp
400

401
	ON runtask.EmployeeID = temp.EmployeeID
402

403
INNER JOIN ( SELECT RegID, BizFlowID, MAX(Sequence) AS MaxSeq FROM @TRunTask GROUP BY RegID, BizFlowID ) AS TMaxSeq
404

405
	ON TMaxSeq.BizFlowID = runtask.BizFlowID AND TMaxSeq.RegID = runtask.RegID
406

407
WHERE TMaxSeq.MaxSeq = runtask.Sequence
408

409
ORDER BY runtask.RegID, runtask.BizFlowID ASC
410

411

412

413
INSERT INTO @t_result
414

415
SELECT DISTINCT EmployeeID ,EmployeeName ,DivID ,DivDesc ,Organization ,OrgDesc ,Position ,PosDesc ,Job ,JobDesc ,pa47.RegID ,BizFlowID ,[Sequence] ,TaskIDRun ,TaskStatus ,ExecuteEmployeeID ,ExecuteEmpName
416

417
FROM @t_pa47 AS pa47
418

419
INNER JOIN (SELECT RegID, MAX(PICSeq) AS MaxPICSeq FROM @t_pa47 GROUP BY RegID) AS MaxPIC
420

421
	ON pa47.RegID = MaxPIC.RegID
422

423
WHERE LEFT(pa47.StartDate,4) = @Period AND MaxPIC.MaxPICSeq = pa47.PICSeq
424

425

426

427
SELECT * FROM @t_result
(26-26/46)