Project

General

Profile

Feature #3646 » CRPTBKTWUL_202507171127.sql

Tri Rizqiaty, 07/17/2025 02:14 PM

 
1
??--USE [MinovaES_BankKalteng_BaseServerProd]
2

3
--GO
4

5
--/****** Object:  StoredProcedure [dbo].[CRPTBKTWUL]    Script Date: 17/07/2025 11.17.23 ******/
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.EmployeeID IN ( '00000043','00000110','00000855')
168

169

170

171
DECLARE @t_result TABLE
172

173
(
174

175
	EmployeeID VARCHAR(20)
176

177
	,EmployeeName VARCHAR(500)
178

179
	,DivID VARCHAR(20)
180

181
	,DivDesc VARCHAR(500)
182

183
	,Organization VARCHAR(20)
184

185
	,OrgDesc VARCHAR(500)
186

187
	,Position VARCHAR(20)
188

189
	,PosDesc VARCHAR(500)
190

191
	,Job VARCHAR(20)
192

193
	,JobDesc VARCHAR(500)
194

195
	,RegID DECIMAL(18,0)
196

197
	,BizFlowID VARCHAR(100)
198

199
	,[Sequence] DECIMAL(18,0)
200

201
	,TaskIDRun VARCHAR(100)
202

203
	,TaskStatus VARCHAR(50)
204

205
	,ExecuteEmployeeID VARCHAR(50)
206

207
	,ExecuteEmpName VARCHAR(50)
208

209
)
210

211

212

213
DECLARE @t_pa47 TABLE
214

215
(
216

217
	EmployeeID VARCHAR(20)
218

219
	,EmployeeName VARCHAR(500)
220

221
	,DivID VARCHAR(20)
222

223
	,DivDesc VARCHAR(500)
224

225
	,CabID VARCHAR(20)
226

227
	,CabDesc VARCHAR(500)
228

229
	,Organization VARCHAR(20)
230

231
	,OrgDesc VARCHAR(500)
232

233
	,Position VARCHAR(20)
234

235
	,PosDesc VARCHAR(500)
236

237
	,Job VARCHAR(20)
238

239
	,JobDesc VARCHAR(500)
240

241
	,StartDate VARCHAR(20)
242

243
	,RegID DECIMAL(18,0)
244

245
	,BizFlowID VARCHAR(100)
246

247
	,[Sequence] DECIMAL(18,0)
248

249
	,TaskIDRun VARCHAR(100)
250

251
	,TaskStatus VARCHAR(50)
252

253
	,ExecuteEmployeeID VARCHAR(50)
254

255
	,ExecuteEmpName VARCHAR(50)
256

257
)
258

259

260

261
INSERT INTO @t_pa47
262

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

265
FROM PHRPA0047 AS pa47
266

267
INNER JOIN @t_emp AS temp
268

269
	ON pa47.EmployeeID = temp.EmployeeID
270

271
WHERE LEFT(StartDate,4) = @Period
272

273
	AND (pa47.AppraisalType = @AppraisalType OR @AppraisalType = '')
274

275

276

277
DECLARE @t_wf TABLE
278

279
(
280

281
	RegID VARCHAR(20)
282

283
	,BizFlowID VARCHAR(250)
284

285
	,TaskRunID VARCHAR(250)
286

287
	,EmployeeID VARCHAR(20)
288

289
	,WorkFlowStatus VARCHAR(20)
290

291
)
292

293
INSERT INTO @t_wf
294

295
SELECT runtask.RegID, runtask.BizFlowID, TaskIDRun, ExecuteEmployeeID, WorkFlowStatus
296

297
FROM PCMWFRUNTASK AS runtask
298

299
INNER JOIN @t_emp AS temp
300

301
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
302

303
INNER JOIN PCMWFRUNBIZDATA AS bizdata
304

305
	ON runtask.RegID = bizdata.RegID
306

307
WHERE (TaskIDRun = 'create') 
308

309
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
310

311
	AND LEFT(InboundDate,4) = @Period
312

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

315
	AND runtask.RegID NOT IN ( SELECT DISTINCT RegID FROM @t_pa47)
316

317
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
318

319
--order by EmployeeID, RegID, Sequence ASC
320

321

322

323
DECLARE @t_wf_det TABLE
324

325
(
326

327
	RegID VARCHAR(20)
328

329
	,BizFlowID VARCHAR(250)
330

331
	,Sequence DECIMAL(18,2)
332

333
	,TaskRunID VARCHAR(250)
334

335
	,TaskStatus VARCHAR(20)
336

337
	,ExecuteEmployeeID VARCHAR(20)
338

339
	,WorkFlowStatus VARCHAR(20)
340

341
	,EmployeeID VARCHAR(20)
342

343
)
344

345

346

347
DECLARE @t_wf_detail TABLE
348

349
(
350

351
	RegID VARCHAR(20)
352

353
	,BizFlowID VARCHAR(250)
354

355
	,Sequence DECIMAL(18,2)
356

357
	,TaskRunID VARCHAR(250)
358

359
	,TaskStatus VARCHAR(20)
360

361
	,ExecuteEmployeeID VARCHAR(20)
362

363
	,WorkFlowStatus VARCHAR(20)
364

365
	,EmployeeID VARCHAR(20)
366

367
)
368

369

370

371
INSERT INTO @t_wf_det
372

373
SELECT DISTINCT runtask.RegID, runtask.BizFlowID, runtask.Sequence, runtask.TaskIDRun, runtask.TaskStatus, runtask.ExecuteEmployeeID, runtask.WorkFlowStatus, twf.EmployeeID
374

375
FROM PCMWFRUNTASK AS runtask
376

377
INNER JOIN @t_wf AS twf
378

379
	ON runtask.RegID = twf.RegID
380

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

383
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
384

385
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
386

387
ORDER BY RegID ASC
388

389

390

391
--INSERT INTO @t_wf_detail
392

393
--SELECT * FROM @t_wf_det
394

395

396

397
INSERT INTO @t_wf_detail
398

399
SELECT tdet.RegID, tdet.BizFlowID, tdet.Sequence, tdet.TaskRunID, tdet.TaskStatus, tdet.ExecuteEmployeeID, tdet.WorkFlowStatus, tdet.EmployeeID
400

401
FROM @t_wf_det AS tdet
402

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

405
	ON tdet.BizFlowID = tmax.BizFlowID
406

407
WHERE tdet.RegID = tmax.RegID AND tdet.Sequence = tmax.MaxSeq
408

409

410

411
INSERT INTO @t_wf_detail
412

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

415
FROM @t_pa47 AS pa47
416

417
WHERE LEFT(StartDate,4) = @Period
418

419

420

421
DECLARE @t_emp_detail TABLE
422

423
(
424

425
	EmployeeID VARCHAR(20)
426

427
	,EmployeeName VARCHAR(500)
428

429
	,div_id VARCHAR(20)
430

431
	,div_name VARCHAR(500)
432

433
	,cab_id VARCHAR(20)
434

435
	,cab_name VARCHAR(500)
436

437
	,Organization VARCHAR(20)
438

439
	,OrgDesc VARCHAR(500)
440

441
	,Position VARCHAR(20)
442

443
	,PosDesc VARCHAR(500)
444

445
	,Job VARCHAR(20)
446

447
	,JobDesc VARCHAR(500)
448

449
	,TotCreate DECIMAL(22,0)
450

451
	,TotFinish DECIMAL(22,0)
452

453
	,EmpWFStatus VARCHAR(20)
454

455
	,TotApvDs DECIMAL(22,0)
456

457
	,TotApvNha DECIMAL(22,0)
458

459
)
460

461
INSERT INTO @t_emp_detail
462

463
SELECT temp.*, tcreate.TotCreate, tfinish.TotFinish, 
464

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

467
FROM @t_emp AS temp
468

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

471
	ON temp.EmployeeID = tcreate.EmployeeID
472

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

475
	ON temp.EmployeeID = tfinish.EmployeeID
476

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

479
	ON temp.EmployeeID = tapv_ds.EmployeeID
480

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

483
	ON temp.EmployeeID = tapv_nha.EmployeeID
484

485
WHERE div_id <> ''
486

487

488

489

490

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

493
		ISNULL(tfinish.TotalEmpFinish,0) AS TotalEmpFinish, ISNULL(tcreate.TotCreate,0) AS TotCreate, ISNULL(tapvds.TotApvDs,0) AS TotApvDs, ISNULL(tapvnha.TotApvNha,0) AS TotApvNha
494

495
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
496

497
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
498

499
	ON tdiv.div_id = tfinish.div_id
500

501
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
502

503
	ON tdiv.div_id = tcreate.div_id
504

505
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
506

507
	ON tdiv.div_id = tapvds.div_id
508

509
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
510

511
	ON tdiv.div_id = tapvnha.div_id
512

513

514

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

517
		ISNULL(tfinish.TotalEmpFinish,0) AS TotalEmpFinish, ISNULL(tcreate.TotCreate,0) AS TotCreate, ISNULL(tapvds.TotApvDs,0) AS TotApvDs, ISNULL(tapvnha.TotApvNha,0) AS TotApvNha
518

519
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
520

521
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
522

523
	ON tdiv.div_id = tfinish.div_id AND tdiv.cab_id = tfinish.cab_id
524

525
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
526

527
	ON tdiv.div_id = tcreate.div_id AND tdiv.cab_id = tcreate.cab_id
528

529
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
530

531
	ON tdiv.div_id = tapvds.div_id AND tdiv.cab_id = tapvds.cab_id
532

533
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
534

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