Project

General

Profile

Feature #3646 » CRPTBKTWUL_202507181524.sql

Tri Rizqiaty, 07/18/2025 03:25 PM

 
1
??USE [MinovaES_BankKalteng_61133]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[CRPTBKTWUL]    Script Date: 18/07/2025 15.20.34 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[CRPTBKTWUL]
16

17
(
18

19
	@Period VARCHAR(20)
20

21
	,@Organization VARCHAR(20)
22

23
	,@AppraisalType VARCHAR(20)
24

25
)
26

27
AS
28

29

30

31
--DECLARE @Period VARCHAR(20) = '2025'
32

33
--DECLARE @Organization VARCHAR(20) = '00000001'
34

35
--DECLARE @AppraisalType VARCHAR(20) = 'F'
36

37

38

39
DECLARE @now VARCHAR(20) = FORMAT(getdate(), 'yyyyMMdd')
40

41
DECLARE @PeiodeEnDt VARCHAR(20) = @Period + '1231'
42

43

44

45
DECLARE @BizFlowID VARCHAR(200) = ''
46

47
IF(@AppraisalType = 'F')
48

49
BEGIN 
50

51
	SET @BizFlowID = 'MD_PMS_Final'
52

53
END
54

55
ELSE IF(@AppraisalType = 'G')
56

57
BEGIN 
58

59
	SET @BizFlowID = 'MD_PMS_Goal'
60

61
END
62

63
ELSE IF(@AppraisalType = 'P')
64

65
BEGIN 
66

67
	SET @BizFlowID = 'MD_PMS_Review'
68

69
END
70

71

72

73
IF(@Organization = '')
74

75
BEGIN SET @Organization = '00000001' END
76

77

78

79
DECLARE @t_org TABLE(
80

81
	org_id VARCHAR(20)
82

83
	,org_name VARCHAR(500)
84

85
	,div_id VARCHAR(20)
86

87
	,div_name VARCHAR(500)
88

89
	,cab_id VARCHAR(20)
90

91
	,cab_name VARCHAR(500)
92

93
)
94

95
INSERT INTO @t_org
96

97
select org_id, org_name, org_id_04, org_name_04, org_id_12, org_name_12 from dbo.CBKT_GetOrgInOrgWide(@Organization, @now)
98

99

100

101
DECLARE @t_emp TABLE
102

103
(
104

105
	EmployeeID VARCHAR(20)
106

107
	,EmployeeName VARCHAR(500)
108

109
	,div_id VARCHAR(20)
110

111
	,div_name VARCHAR(500)
112

113
	,cab_id VARCHAR(20)
114

115
	,cab_name VARCHAR(500)
116

117
	,Organization VARCHAR(20)
118

119
	,OrgDesc VARCHAR(500)
120

121
	,Position VARCHAR(20)
122

123
	,PosDesc VARCHAR(500)
124

125
	,Job VARCHAR(20)
126

127
	,JobDesc VARCHAR(500)
128

129
)
130

131

132

133
INSERT INTO @t_emp
134

135
SELECT pa2.EmployeeID, pa1.FullName, torg.div_id, torg.div_name, torg.cab_id, torg.cab_name, pa2.Organization, torg.org_name, pa2.Position, pos.ObjectDescription, pa2.Job, job.ObjectDescription
136

137
FROM PHRPA0002 as pa2
138

139
INNER JOIN @t_org AS torg
140

141
	ON pa2.Organization = torg.org_id
142

143
LEFT JOIN PHRPA0001 AS pa1
144

145
	ON pa2.EmployeeID = pa1.EmployeeID
146

147
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
148

149
LEFT JOIN PHROM0001 AS pos
150

151
	ON pa2.Position = pos.ObjectID
152

153
	AND pos.ObjectClass = 'P'
154

155
	AND pos.StartDate <= @now AND pos.EndDate >= @now
156

157
LEFT JOIN PHROM0001 AS job
158

159
	ON pa2.Job = job.ObjectID
160

161
	AND job.ObjectClass = 'J'
162

163
	AND job.StartDate <= @now AND job.EndDate >= @now
164

165
WHERE pa2.StartDate <= @now AND pa2.EndDate >= @now 
166

167
	AND pa2.EmployeeStatus = '01'
168

169
	--AND pa2.EmployeeID IN ( '00000043','00000110','00000855')
170

171

172

173
DECLARE @t_result TABLE
174

175
(
176

177
	EmployeeID VARCHAR(20)
178

179
	,EmployeeName VARCHAR(500)
180

181
	,DivID VARCHAR(20)
182

183
	,DivDesc VARCHAR(500)
184

185
	,Organization VARCHAR(20)
186

187
	,OrgDesc VARCHAR(500)
188

189
	,Position VARCHAR(20)
190

191
	,PosDesc VARCHAR(500)
192

193
	,Job VARCHAR(20)
194

195
	,JobDesc VARCHAR(500)
196

197
	,RegID DECIMAL(18,0)
198

199
	,BizFlowID VARCHAR(100)
200

201
	,[Sequence] DECIMAL(18,0)
202

203
	,TaskIDRun VARCHAR(100)
204

205
	,TaskStatus VARCHAR(50)
206

207
	,ExecuteEmployeeID VARCHAR(50)
208

209
	,ExecuteEmpName VARCHAR(50)
210

211
)
212

213

214

215
DECLARE @t_pa47 TABLE
216

217
(
218

219
	EmployeeID VARCHAR(20)
220

221
	,EmployeeName VARCHAR(500)
222

223
	,DivID VARCHAR(20)
224

225
	,DivDesc VARCHAR(500)
226

227
	,CabID VARCHAR(20)
228

229
	,CabDesc VARCHAR(500)
230

231
	,Organization VARCHAR(20)
232

233
	,OrgDesc VARCHAR(500)
234

235
	,Position VARCHAR(20)
236

237
	,PosDesc VARCHAR(500)
238

239
	,Job VARCHAR(20)
240

241
	,JobDesc VARCHAR(500)
242

243
	,StartDate VARCHAR(20)
244

245
	,RegID DECIMAL(18,0)
246

247
	,BizFlowID VARCHAR(100)
248

249
	,[Sequence] DECIMAL(18,0)
250

251
	,TaskIDRun VARCHAR(100)
252

253
	,TaskStatus VARCHAR(50)
254

255
	,ExecuteEmployeeID VARCHAR(50)
256

257
	,ExecuteEmpName VARCHAR(50)
258

259
)
260

261

262

263
INSERT INTO @t_pa47
264

265
SELECT DISTINCT temp.*, pa47.StartDate, pa47.RegID, '' AS BizFlowID, 1 AS Sequence, '' AS TaskIDRun, 'F' AS TaskStatus, '' AS ExecuteEmployeeID, '' AS ExecuteEmpName
266

267
FROM PHRPA0047 AS pa47
268

269
INNER JOIN @t_emp AS temp
270

271
	ON pa47.EmployeeID = temp.EmployeeID
272

273
WHERE LEFT(StartDate,4) = @Period
274

275
	AND (pa47.AppraisalType = @AppraisalType OR @AppraisalType = '')
276

277

278

279
DECLARE @t_wf TABLE
280

281
(
282

283
	RegID VARCHAR(20)
284

285
	,BizFlowID VARCHAR(250)
286

287
	,TaskRunID VARCHAR(250)
288

289
	,EmployeeID VARCHAR(20)
290

291
	,WorkFlowStatus VARCHAR(20)
292

293
)
294

295
INSERT INTO @t_wf
296

297
SELECT runtask.RegID, runtask.BizFlowID, TaskIDRun, ExecuteEmployeeID, WorkFlowStatus
298

299
FROM PCMWFRUNTASK AS runtask
300

301
INNER JOIN @t_emp AS temp
302

303
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
304

305
INNER JOIN PCMWFRUNBIZDATA AS bizdata
306

307
	ON runtask.RegID = bizdata.RegID
308

309
WHERE (TaskIDRun = 'create') 
310

311
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
312

313
	AND LEFT(InboundDate,4) = @Period
314

315
	AND bizdata.FieldID = 'StartDate_47' AND LEFT(bizdata.Value,4) = @Period
316

317
	AND runtask.RegID NOT IN ( SELECT DISTINCT RegID FROM @t_pa47)
318

319
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
320

321
--order by EmployeeID, RegID, Sequence ASC
322

323

324

325
DECLARE @t_wf_det TABLE
326

327
(
328

329
	RegID VARCHAR(20)
330

331
	,BizFlowID VARCHAR(250)
332

333
	,Sequence DECIMAL(18,2)
334

335
	,TaskRunID VARCHAR(250)
336

337
	,TaskStatus VARCHAR(20)
338

339
	,ExecuteEmployeeID VARCHAR(20)
340

341
	,WorkFlowStatus VARCHAR(20)
342

343
	,EmployeeID VARCHAR(20)
344

345
)
346

347

348

349
DECLARE @t_wf_detail TABLE
350

351
(
352

353
	RegID VARCHAR(20)
354

355
	,BizFlowID VARCHAR(250)
356

357
	,Sequence DECIMAL(18,2)
358

359
	,TaskRunID VARCHAR(250)
360

361
	,TaskStatus VARCHAR(20)
362

363
	,ExecuteEmployeeID VARCHAR(20)
364

365
	,WorkFlowStatus VARCHAR(20)
366

367
	,EmployeeID VARCHAR(20)
368

369
)
370

371

372

373
INSERT INTO @t_wf_det
374

375
SELECT DISTINCT runtask.RegID, runtask.BizFlowID, runtask.Sequence, runtask.TaskIDRun, runtask.TaskStatus, runtask.ExecuteEmployeeID, runtask.WorkFlowStatus, twf.EmployeeID
376

377
FROM PCMWFRUNTASK AS runtask
378

379
INNER JOIN @t_wf AS twf
380

381
	ON runtask.RegID = twf.RegID
382

383
WHERE (runtask.TaskIDRun IN ('create ','apv_ds', 'apv_nha') OR runtask.WorkFlowStatus = 'F')
384

385
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
386

387
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
388

389
ORDER BY RegID ASC
390

391

392

393
--INSERT INTO @t_wf_detail
394

395
--SELECT * FROM @t_wf_det
396

397

398

399
INSERT INTO @t_wf_detail
400

401
SELECT tdet.RegID, tdet.BizFlowID, tdet.Sequence, tdet.TaskRunID, tdet.TaskStatus, tdet.ExecuteEmployeeID, tdet.WorkFlowStatus, tdet.EmployeeID
402

403
FROM @t_wf_det AS tdet
404

405
INNER JOIN ( SELECT RegID, BizFlowID, MAX(Sequence) AS MaxSeq FROM @t_wf_det GROUP BY RegID, BizFlowID ) AS tmax
406

407
	ON tdet.BizFlowID = tmax.BizFlowID
408

409
WHERE tdet.RegID = tmax.RegID AND tdet.Sequence = tmax.MaxSeq
410

411

412

413
INSERT INTO @t_wf_detail
414

415
SELECT DISTINCT pa47.RegID, '' AS BizFlowID, 1 AS Sequence, 'Finish' AS TaskIDRun, 'F' AS TaskStatus, '' AS ExecuteEmployeeID, 'F' AS WorkFlowStatus, pa47.EmployeeID
416

417
FROM @t_pa47 AS pa47
418

419
WHERE LEFT(StartDate,4) = @Period
420

421

422

423
DECLARE @t_emp_det TABLE
424

425
(
426

427
	EmployeeID VARCHAR(20)
428

429
	,EmployeeName VARCHAR(500)
430

431
	,div_id VARCHAR(20)
432

433
	,div_name VARCHAR(500)
434

435
	,cab_id VARCHAR(20)
436

437
	,cab_name VARCHAR(500)
438

439
	,Organization VARCHAR(20)
440

441
	,OrgDesc VARCHAR(500)
442

443
	,Position VARCHAR(20)
444

445
	,PosDesc VARCHAR(500)
446

447
	,Job VARCHAR(20)
448

449
	,JobDesc VARCHAR(500)
450

451
	,TotCreate DECIMAL(22,0)
452

453
	,TotFinish DECIMAL(22,0)
454

455
	,EmpWFStatus VARCHAR(20)
456

457
	,TotApvDs DECIMAL(22,0)
458

459
	,TotApvNha DECIMAL(22,0)
460

461
)
462

463
INSERT INTO @t_emp_det
464

465
SELECT temp.*, tcreate.TotCreate, tfinish.TotFinish, 
466

467
		CASE WHEN tcreate.TotCreate = tfinish.TotFinish THEN 'F' ELSE 'N' END AS EmpWFStatus, ISNULL(TotApvDs,0) AS TotApvDs, ISNULL(TotApvNha,0) AS TotApvNha
468

469
FROM @t_emp AS temp
470

471
LEFT JOIN ( SELECT EmployeeID, COUNT(DISTINCT RegID) AS TotCreate FROM @t_wf_detail group by EmployeeID ) AS tcreate
472

473
	ON temp.EmployeeID = tcreate.EmployeeID
474

475
LEFT JOIN ( SELECT EmployeeID, count(DISTINCT RegID) AS TotFinish FROM @t_wf_detail WHERE WorkFlowStatus = 'F' group by EmployeeID ) AS tfinish
476

477
	ON temp.EmployeeID = tfinish.EmployeeID
478

479
LEFT JOIN ( SELECT EmployeeID, count(DISTINCT RegID) AS TotApvDs FROM @t_wf_detail WHERE TaskRunID = 'apv_ds' group by EmployeeID ) AS tapv_ds
480

481
	ON temp.EmployeeID = tapv_ds.EmployeeID
482

483
LEFT JOIN ( SELECT EmployeeID, count(DISTINCT RegID) AS TotApvNha FROM @t_wf_detail WHERE TaskRunID = 'apv_nha' group by EmployeeID ) AS tapv_nha
484

485
	ON temp.EmployeeID = tapv_nha.EmployeeID
486

487
--WHERE div_id <> ''
488

489

490

491

492

493
DECLARE @t_emp_detail TABLE
494

495
(
496

497
	EmployeeID VARCHAR(20)
498

499
	,EmployeeName VARCHAR(500)
500

501
	,div_id VARCHAR(20)
502

503
	,div_name VARCHAR(500)
504

505
	,Organization VARCHAR(20)
506

507
	,OrgDesc VARCHAR(500)
508

509
	,Position VARCHAR(20)
510

511
	,PosDesc VARCHAR(500)
512

513
	,Job VARCHAR(20)
514

515
	,JobDesc VARCHAR(500)
516

517
	,TotCreate DECIMAL(22,0)
518

519
	,TotFinish DECIMAL(22,0)
520

521
	,EmpWFStatus VARCHAR(20)
522

523
	,TotApvDs DECIMAL(22,0)
524

525
	,TotApvNha DECIMAL(22,0)
526

527
)
528

529

530

531
INSERT INTO @t_emp_detail
532

533
SELECT DISTINCT EmployeeID ,EmployeeName ,cab_id ,cab_name ,Organization ,OrgDesc ,Position ,PosDesc ,Job ,JobDesc
534

535
				,TotCreate ,TotFinish ,EmpWFStatus ,TotApvDs ,TotApvNha
536

537
FROM @t_emp_det
538

539
WHERE cab_id <> ''
540

541

542

543
INSERT INTO @t_emp_detail
544

545
SELECT DISTINCT EmployeeID ,EmployeeName ,div_id ,div_name ,Organization ,OrgDesc ,Position ,PosDesc ,Job ,JobDesc
546

547
				,TotCreate ,TotFinish ,EmpWFStatus ,TotApvDs ,TotApvNha
548

549
FROM @t_emp_det
550

551
WHERE div_id <> '' AND EmployeeID NOT IN ( SELECT DISTINCT EmployeeID FROM @t_emp_detail )
552

553

554

555
SELECT tdiv.*, ISNULL((CONVERT(DECIMAL(22,2),(TotalEmpFinish/TotalEmp)) * 100),0) AS Persentase, 
556

557
		ISNULL(tfinish.TotalEmpFinish,0) AS TotalEmpFinish, ISNULL(tcreate.TotCreate,0) AS TotCreate, ISNULL(tapvds.TotApvDs,0) AS TotApvDs, ISNULL(tapvnha.TotApvNha,0) AS TotApvNha
558

559
FROM (SELECT div_id, div_name, CONVERT(DECIMAL(22,2),COUNT(EmployeeID)) AS TotalEmp FROM @t_emp_detail GROUP BY div_id, div_name) AS tdiv
560

561
LEFT JOIN (SELECT div_id, div_name, ISNULL(COUNT(EmployeeID),0) AS TotalEmpFinish FROM @t_emp_detail WHERE EmpWFStatus = 'F' GROUP BY div_id, div_name) AS tfinish
562

563
	ON tdiv.div_id = tfinish.div_id
564

565
LEFT JOIN (SELECT div_id, div_name, ISNULL(COUNT(EmployeeID),0) AS TotCreate FROM @t_emp_detail WHERE TotCreate > 0 GROUP BY div_id, div_name) AS tcreate
566

567
	ON tdiv.div_id = tcreate.div_id
568

569
LEFT JOIN (SELECT div_id, div_name, ISNULL(COUNT(EmployeeID),0) AS TotApvDs FROM @t_emp_detail WHERE TotApvDs > 0 GROUP BY div_id, div_name) AS tapvds
570

571
	ON tdiv.div_id = tapvds.div_id
572

573
LEFT JOIN (SELECT div_id, div_name, ISNULL(COUNT(EmployeeID),0) AS TotApvNha FROM @t_emp_detail WHERE TotApvNha > 0 GROUP BY div_id, div_name) AS tapvnha
574

575
	ON tdiv.div_id = tapvnha.div_id
576

577

578

579
----SELECT tdiv.*, ISNULL((CONVERT(DECIMAL(22,2),(TotalEmpFinish/TotalEmp)) * 100),0) AS Persentase, 
580

581
----		ISNULL(tfinish.TotalEmpFinish,0) AS TotalEmpFinish, ISNULL(tcreate.TotCreate,0) AS TotCreate, ISNULL(tapvds.TotApvDs,0) AS TotApvDs, ISNULL(tapvnha.TotApvNha,0) AS TotApvNha
582

583
----FROM (SELECT div_id, div_name, cab_id, cab_name, CONVERT(DECIMAL(22,2),COUNT(EmployeeID)) AS TotalEmp FROM @t_emp_detail GROUP BY div_id, div_name, cab_id, cab_name) AS tdiv
584

585
----LEFT JOIN (SELECT div_id, div_name, cab_id, cab_name, ISNULL(COUNT(EmployeeID),0) AS TotalEmpFinish FROM @t_emp_detail WHERE EmpWFStatus = 'F' GROUP BY div_id, div_name, cab_id, cab_name) AS tfinish
586

587
----	ON tdiv.div_id = tfinish.div_id AND tdiv.cab_id = tfinish.cab_id
588

589
----LEFT JOIN (SELECT div_id, div_name, cab_id, cab_name, ISNULL(COUNT(EmployeeID),0) AS TotCreate FROM @t_emp_detail WHERE TotCreate > 0 GROUP BY div_id, div_name, cab_id, cab_name) AS tcreate
590

591
----	ON tdiv.div_id = tcreate.div_id AND tdiv.cab_id = tcreate.cab_id
592

593
----LEFT JOIN (SELECT div_id, div_name, cab_id, cab_name, ISNULL(COUNT(EmployeeID),0) AS TotApvDs FROM @t_emp_detail WHERE TotApvDs > 0 GROUP BY div_id, div_name, cab_id, cab_name) AS tapvds
594

595
----	ON tdiv.div_id = tapvds.div_id AND tdiv.cab_id = tapvds.cab_id
596

597
----LEFT JOIN (SELECT div_id, div_name, cab_id, cab_name, ISNULL(COUNT(EmployeeID),0) AS TotApvNha FROM @t_emp_detail WHERE TotApvNha > 0 GROUP BY div_id, div_name, cab_id, cab_name) AS tapvnha
598

599
----	ON tdiv.div_id = tapvnha.div_id AND tdiv.cab_id = tapvnha.cab_id
(23-23/23)