Project

General

Profile

Feature #3647 » CRPTBKTELWU_202507151715.sql

Tri Rizqiaty, 07/15/2025 05:16 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_histask TABLE
272

273
(
274

275
	RegID DECIMAL(18,0)
276

277
	,[Sequence] DECIMAL(18,0)
278

279
	,TaskIDRun VARCHAR(100)
280

281
	,WFStatus VARCHAR(100)
282

283
	,TaskStatus VARCHAR(100)
284

285
	,ExecutedEmployeeID VARCHAR(100)
286

287
)
288

289

290

291
INSERT INTO @t_histask
292

293
SELECT HisTask.RegID, HisTask.Sequence, HisTask.TaskID, HisTask.WorkFlowStatus, HisTask.TaskStatus, HisTask.ExecuteEmployeeID
294

295
FROM dbo.PCMWFHISTASK AS HisTask
296

297
INNER JOIN @t_pa47 AS pa47
298

299
	ON HisTask.RegID = pa47.RegID
300

301

302

303
DECLARE @t_wf TABLE
304

305
(
306

307
	RegID VARCHAR(20)
308

309
	,BizFlowID VARCHAR(250)
310

311
	,TaskRunID VARCHAR(250)
312

313
	,EmployeeID VARCHAR(20)
314

315
)
316

317

318

319
INSERT INTO @t_wf
320

321
SELECT DISTINCT MAX(runtask.RegID), BizFlowID, TaskIDRun, ExecuteEmployeeID
322

323
--SELECT RegID, BizFlowID, TaskIDRun, ExecuteEmployeeID
324

325
FROM PCMWFRUNTASK AS runtask
326

327
INNER JOIN @t_emp AS temp
328

329
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
330

331
INNER JOIN PCMWFRUNBIZDATA AS bizdata
332

333
	ON runtask.RegID = bizdata.RegID
334

335
WHERE TaskIDRun = 'create'
336

337
	AND BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
338

339
	AND LEFT(InboundDate,4) = @Period
340

341
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
342

343
	AND (runtask.RegID NOT IN ( SELECT RegID FROM @t_pa47))
344

345
	AND bizdata.FieldID = 'StartDate_47' AND LEFT(bizdata.Value,4) = @Period
346

347
GROUP BY BizFlowID, TaskIDRun, ExecuteEmployeeID
348

349
--ORDER BY RegID ASC
350

351

352

353
DECLARE @TRunTask TABLE
354

355
(
356

357
	[RegID] [BIGINT] NOT NULL,
358

359
	[Sequence] [INT] NOT NULL,
360

361
	[BizFlowID] [VARCHAR](50) NOT NULL,
362

363
	[TaskID] [VARCHAR](50) NOT NULL,
364

365
	[DepthLevel] [BIGINT] NOT NULL,
366

367
	[BizFlowIDRun] [VARCHAR](50) NULL,
368

369
	[TaskIDRun] [VARCHAR](50) NULL,
370

371
	[InboundDate] [VARCHAR](14) NULL,
372

373
	[ReadDate] [VARCHAR](14) NULL,
374

375
	[ExecuteDate] [VARCHAR](14) NULL,
376

377
	[ExecuteUser] [VARCHAR](150) NULL,
378

379
	[ExecuteEmployeeID] [VARCHAR](8) NULL,
380

381
	[WorkFlowStatus] [VARCHAR](3) NULL,
382

383
	[TaskStatus] [VARCHAR](4) NULL,
384

385
	[ConditionResult] [VARCHAR](500) NULL,
386

387
	[TaskFrom] [VARCHAR](50) NULL,
388

389
	[TaskTo] [VARCHAR](50) NULL,
390

391
	[FlowType] [VARCHAR](3) NULL,
392

393
	[MailSent] [VARCHAR](1) NULL
394

395
	,EmployeeID VARCHAR(8)
396

397
)
398

399

400

401
INSERT INTO @TRunTask
402

403
SELECT DISTINCT runtask.*, twf.EmployeeID
404

405
FROM PCMWFRUNTASK AS runtask
406

407
INNER JOIN @t_wf AS twf
408

409
	ON runtask.RegID = twf.RegID
410

411
WHERE (TaskIDRun IN ('create ','apv_ds', 'apv_nha') OR WorkFlowStatus = 'F')
412

413
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
414

415
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
416

417

418

419
INSERT INTO @t_result
420

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

423
FROM @TRunTask AS runtask
424

425
LEFT JOIN PHRPA0001 AS pa1
426

427
	ON runtask.ExecuteEmployeeID = pa1.EmployeeID
428

429
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
430

431
LEFT JOIN @t_emp AS temp
432

433
	ON runtask.EmployeeID = temp.EmployeeID
434

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

437
	ON TMaxSeq.BizFlowID = runtask.BizFlowID AND TMaxSeq.RegID = runtask.RegID
438

439
WHERE TMaxSeq.MaxSeq = runtask.Sequence
440

441
ORDER BY runtask.RegID, runtask.BizFlowID ASC
442

443

444

445
INSERT INTO @t_result
446

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

449
FROM @t_pa47 AS pa47
450

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

453
	ON pa47.RegID = MaxPIC.RegID
454

455
INNER JOIN 	( SELECT a.* FROM @t_histask AS a
456

457
			INNER JOIN (SELECT RegID, MAX(Sequence) AS MaxSeq FROM @t_histask GROUP BY RegID) AS b
458

459
				ON a.RegID = b.RegID 
460

461
			WHERE a.Sequence = b.MaxSeq ) AS histask
462

463
	ON histask.RegID = pa47.RegID
464

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

467

468

469
SELECT * FROM @t_result
(29-29/46)