Project

General

Profile

Feature #3647 » CRPTBKTELWU_202507161522.sql

Tri Rizqiaty, 07/16/2025 05:10 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
246

247
				--,'' AS BizFlowID, 1 AS Sequence, '' AS TaskIDRun, 'F' AS TaskStatus
248

249
				--,hispic.Sequence, hispic.ExecuteEmpID AS ExecuteEmployeeID, pic.FullName AS ExecuteEmpName
250

251
FROM PHRPA0047 AS pa47
252

253
INNER JOIN @t_emp AS temp
254

255
	ON pa47.EmployeeID = temp.EmployeeID
256

257
--LEFT JOIN PCMWFHISPIC AS hispic
258

259
--	ON hispic.RegID = pa47.RegID
260

261
--LEFT JOIN dbo.PHRPA0001 AS pic
262

263
--	ON hispic.ExecuteEmpID = pic.EmployeeID
264

265
--	AND pic.StartDate <= @now AND pic.EndDate >= @now
266

267
WHERE (pa47.EmployeeID = @EmployeeID OR @EmployeeID = '')
268

269
	AND (pa47.AppraisalType = @AppraisalType OR @AppraisalType = '')
270

271
	AND LEFT(pa47.StartDate,4) = @Period
272

273

274

275
DECLARE @tHisTask TABLE
276

277
(
278

279
	RegID DECIMAL(18,0)
280

281
	,[Sequence] DECIMAL(18,0)
282

283
	,BizFlowID VARCHAR(100)
284

285
	,TaskIDRun VARCHAR(100)
286

287
	,WFStatus VARCHAR(100)
288

289
	,TaskStatus VARCHAR(100)
290

291
	,ExecutedEmployeeID VARCHAR(100)
292

293
)
294

295

296

297
INSERT INTO @tHisTask
298

299
SELECT HisTask.RegID, HisTask.Sequence, HisTask.BizFlowID, HisTask.TaskIDRun, HisTask.WorkFlowStatus, HisTask.TaskStatus, HisTask.ExecuteEmployeeID
300

301
FROM dbo.PCMWFHISTASK AS HisTask
302

303
INNER JOIN @t_pa47 AS pa47
304

305
	ON HisTask.RegID = pa47.RegID
306

307

308

309
DECLARE @tMaxHisTask TABLE
310

311
(
312

313
	RegID DECIMAL(18,0)
314

315
	,[Sequence] DECIMAL(18,0)
316

317
	,BizFlowID VARCHAR(100)
318

319
	,TaskIDRun VARCHAR(250)
320

321
	,WFStatus VARCHAR(100)
322

323
	,TaskStatus VARCHAR(100)
324

325
	,ExecutedEmployeeID VARCHAR(100)
326

327
)
328

329
INSERT INTO @tMaxHisTask
330

331
SELECT DISTINCT histask.RegID
332

333
				,histask.Sequence
334

335
				,histask.BizFlowID
336

337
				,deftask.TaskName
338

339
				,histask.WFStatus
340

341
				,histask.TaskStatus
342

343
				,histask.ExecutedEmployeeID
344

345
FROM @tHisTask AS histask
346

347
INNER JOIN (SELECT RegID, BizFlowID, MAX(Sequence) AS MaxSeq FROM @tHisTask GROUP BY RegID, BizFlowID) AS maxseq
348

349
	ON histask.RegID = maxseq.RegID
350

351
	AND histask.BizFlowID = maxseq.BizFlowID
352

353
INNER JOIN dbo.PCMWFDEFTASK AS deftask
354

355
	ON deftask.BizFlowID = histask.BizFlowID
356

357
WHERE histask.Sequence = maxseq.MaxSeq AND deftask.TaskID = histask.TaskIDRun
358

359

360

361
DECLARE @t_wf TABLE
362

363
(
364

365
	RegID VARCHAR(20)
366

367
	,BizFlowID VARCHAR(250)
368

369
	,TaskRunID VARCHAR(250)
370

371
	,EmployeeID VARCHAR(20)
372

373
)
374

375

376

377
INSERT INTO @t_wf
378

379
SELECT DISTINCT MAX(runtask.RegID), BizFlowID, TaskIDRun, ExecuteEmployeeID
380

381
--SELECT RegID, BizFlowID, TaskIDRun, ExecuteEmployeeID
382

383
FROM PCMWFRUNTASK AS runtask
384

385
INNER JOIN @t_emp AS temp
386

387
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
388

389
INNER JOIN PCMWFRUNBIZDATA AS bizdata
390

391
	ON runtask.RegID = bizdata.RegID
392

393
WHERE TaskIDRun = 'create'
394

395
	AND BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
396

397
	AND LEFT(InboundDate,4) = @Period
398

399
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
400

401
	AND (runtask.RegID NOT IN ( SELECT RegID FROM @t_pa47))
402

403
	AND bizdata.FieldID = 'StartDate_47' AND LEFT(bizdata.Value,4) = @Period
404

405
GROUP BY BizFlowID, TaskIDRun, ExecuteEmployeeID
406

407
--ORDER BY RegID ASC
408

409

410

411
DECLARE @TRunTask TABLE
412

413
(
414

415
	[RegID] [BIGINT] NOT NULL,
416

417
	[Sequence] [INT] NOT NULL,
418

419
	[BizFlowID] [VARCHAR](50) NOT NULL,
420

421
	[TaskID] [VARCHAR](50) NOT NULL,
422

423
	[DepthLevel] [BIGINT] NOT NULL,
424

425
	[BizFlowIDRun] [VARCHAR](50) NULL,
426

427
	[TaskIDRun] [VARCHAR](50) NULL,
428

429
	[InboundDate] [VARCHAR](14) NULL,
430

431
	[ReadDate] [VARCHAR](14) NULL,
432

433
	[ExecuteDate] [VARCHAR](14) NULL,
434

435
	[ExecuteUser] [VARCHAR](150) NULL,
436

437
	[ExecuteEmployeeID] [VARCHAR](8) NULL,
438

439
	[WorkFlowStatus] [VARCHAR](3) NULL,
440

441
	[TaskStatus] [VARCHAR](4) NULL,
442

443
	[ConditionResult] [VARCHAR](500) NULL,
444

445
	[TaskFrom] [VARCHAR](50) NULL,
446

447
	[TaskTo] [VARCHAR](50) NULL,
448

449
	[FlowType] [VARCHAR](3) NULL,
450

451
	[MailSent] [VARCHAR](1) NULL
452

453
	,EmployeeID VARCHAR(8)
454

455
)
456

457

458

459
INSERT INTO @TRunTask
460

461
SELECT DISTINCT runtask.*
462

463
				,twf.EmployeeID
464

465
FROM PCMWFRUNTASK AS runtask
466

467
INNER JOIN @t_wf AS twf
468

469
	ON runtask.RegID = twf.RegID
470

471
WHERE runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
472

473
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
474

475

476

477
DECLARE @TMaxRunTask TABLE
478

479
(
480

481
	[RegID] [BIGINT] NOT NULL,
482

483
	[Sequence] [INT] NOT NULL,
484

485
	[BizFlowID] [VARCHAR](50) NOT NULL,
486

487
	[TaskID] [VARCHAR](50) NOT NULL,
488

489
	[DepthLevel] [BIGINT] NOT NULL,
490

491
	[BizFlowIDRun] [VARCHAR](50) NULL,
492

493
	[TaskIDRun] [VARCHAR](50) NULL,
494

495
	[InboundDate] [VARCHAR](14) NULL,
496

497
	[ReadDate] [VARCHAR](14) NULL,
498

499
	[ExecuteDate] [VARCHAR](14) NULL,
500

501
	[ExecuteUser] [VARCHAR](150) NULL,
502

503
	[ExecuteEmployeeID] [VARCHAR](8) NULL,
504

505
	[WorkFlowStatus] [VARCHAR](3) NULL,
506

507
	[TaskStatus] [VARCHAR](4) NULL,
508

509
	[ConditionResult] [VARCHAR](500) NULL,
510

511
	[TaskFrom] [VARCHAR](50) NULL,
512

513
	[TaskTo] [VARCHAR](50) NULL,
514

515
	[FlowType] [VARCHAR](3) NULL,
516

517
	[MailSent] [VARCHAR](1) NULL
518

519
	,EmployeeID VARCHAR(8)
520

521
)
522

523
INSERT INTO @TMaxRunTask
524

525
SELECT DISTINCT runtask.*
526

527
FROM @TRunTask AS runtask
528

529
INNER JOIN (SELECT RegID, BizFlowID, MAX(Sequence) AS MaxSeq FROM @TRunTask GROUP BY RegID, BizFlowID) AS maxruntask
530

531
	ON runtask.RegID = maxruntask.RegID
532

533
WHERE runtask.Sequence = maxruntask.MaxSeq
534

535

536

537
DECLARE @TResRunTask TABLE
538

539
(
540

541
	[RegID] [BIGINT] NOT NULL,
542

543
	[Sequence] [INT] NOT NULL,
544

545
	[BizFlowID] [VARCHAR](50) NOT NULL,
546

547
	[TaskIDRun] [VARCHAR](250) NULL,
548

549
	[WorkFlowStatus] [VARCHAR](3) NULL,
550

551
	[TaskStatus] [VARCHAR](4) NULL,
552

553
	[ExecuteEmployeeID] [VARCHAR](8) NULL
554

555
	,EmployeeID VARCHAR(8)
556

557
)
558

559
INSERT INTO @TResRunTask
560

561
SELECT DISTINCT maxruntask.RegID
562

563
				,maxruntask.Sequence
564

565
				,maxruntask.BizFlowID
566

567
				,deftask.TaskName
568

569
				,maxruntask.WorkFlowStatus
570

571
				,maxruntask.TaskStatus
572

573
				--,maxruntask.ExecuteEmployeeID ,runpic.PICEmpID ,runpic.PICGroup ,runpic.ExecuteEmpID
574

575
				,CASE WHEN maxruntask.ExecuteEmployeeID <> '' THEN maxruntask.ExecuteEmployeeID 
576

577
				 ELSE CASE WHEN runpic.PICEmpID <> '' THEN runpic.PICEmpID 
578

579
					  ELSE CASE WHEN  runpic.ExecuteEmpID <> '' THEN runpic.ExecuteEmpID ELSE runpic.PICGroup END 
580

581
					  END 
582

583
				 END AS ExecuteEmployeeID
584

585
				,maxruntask.EmployeeID
586

587
FROM @TMaxRunTask AS maxruntask
588

589
INNER JOIN dbo.PCMWFDEFTASK AS deftask
590

591
	ON deftask.BizFlowID = maxruntask.BizFlowID
592

593
INNER JOIN dbo.PCMWFRUNPIC AS runpic
594

595
	ON runpic.RegID = maxruntask.RegID
596

597
WHERE deftask.TaskID = maxruntask.TaskIDRun AND runpic.Sequence = maxruntask.Sequence
598

599

600

601
INSERT INTO @t_result
602

603
SELECT DISTINCT temp.*, 
604

605
				runtask.RegID, runtask.BizFlowID, runtask.Sequence, TaskIDRun, runtask.TaskStatus, runtask.ExecuteEmployeeID, 
606

607
				CASE WHEN pa1.FullName <> '' THEN pa1.FullName ELSE runtask.ExecuteEmployeeID END AS ExecuteEmpName 
608

609
FROM @TResRunTask AS runtask
610

611
LEFT JOIN PHRPA0001 AS pa1
612

613
	ON runtask.ExecuteEmployeeID = pa1.EmployeeID
614

615
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
616

617
LEFT JOIN @t_emp AS temp
618

619
	ON runtask.EmployeeID = temp.EmployeeID
620

621
ORDER BY runtask.RegID, runtask.BizFlowID ASC
622

623

624

625
INSERT INTO @t_result
626

627
SELECT DISTINCT pa47.EmployeeID ,EmployeeName ,DivID ,DivDesc ,Organization ,OrgDesc ,Position ,PosDesc ,Job ,JobDesc ,pa47.RegID 
628

629
				,maxhistask.BizFlowID  ,maxhistask.[Sequence] ,maxhistask.TaskIDRun ,maxhistask.WFStatus ,maxhistask.ExecutedEmployeeID ,pa1.FullName AS ExecuteEmpName
630

631
FROM @t_pa47 AS pa47
632

633
INNER JOIN @tMaxHisTask AS maxhistask
634

635
	ON pa47.RegID = maxhistask.RegID
636

637
LEFT JOIN dbo.PHRPA0001 AS pa1
638

639
	ON pa1.EmployeeID = maxhistask.ExecutedEmployeeID
640

641
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
642

643
WHERE LEFT(pa47.StartDate,4) = @Period 
644

645

646

647
SELECT * FROM @t_result
(45-45/46)