Project

General

Profile

Feature #3647 » CRPTBKTELWU_202507141611.sql

Tri Rizqiaty, 07/15/2025 11:07 AM

 
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) = 'P'
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
	,ExecuteEmployeeID VARCHAR(50)
232

233
	,ExecuteEmpName VARCHAR(50)
234

235
)
236

237

238

239
INSERT INTO @t_pa47
240

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

243
FROM PHRPA0047 AS pa47
244

245
INNER JOIN @t_emp AS temp
246

247
	ON pa47.EmployeeID = temp.EmployeeID
248

249
WHERE (pa47.EmployeeID = @EmployeeID OR @EmployeeID = '')
250

251
	AND (pa47.AppraisalType = @AppraisalType OR @AppraisalType = '')
252

253
	--AND LEFT(StartDate,4) = @Period
254

255

256

257
DECLARE @t_wf TABLE
258

259
(
260

261
	RegID VARCHAR(20)
262

263
	,BizFlowID VARCHAR(250)
264

265
	,TaskRunID VARCHAR(250)
266

267
	,EmployeeID VARCHAR(20)
268

269
)
270

271

272

273
INSERT INTO @t_wf
274

275
SELECT DISTINCT MAX(runtask.RegID), BizFlowID, TaskIDRun, ExecuteEmployeeID
276

277
--SELECT RegID, BizFlowID, TaskIDRun, ExecuteEmployeeID
278

279
FROM PCMWFRUNTASK AS runtask
280

281
INNER JOIN @t_emp AS temp
282

283
	ON runtask.ExecuteEmployeeID = temp.EmployeeID
284

285
INNER JOIN PCMWFRUNBIZDATA AS bizdata
286

287
	ON runtask.RegID = bizdata.RegID
288

289
WHERE TaskIDRun = 'create'
290

291
	AND BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
292

293
	AND LEFT(InboundDate,4) = @Period
294

295
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
296

297
	AND (runtask.RegID NOT IN ( SELECT RegID FROM @t_pa47))
298

299
	AND bizdata.FieldID = 'StartDate_47' AND LEFT(bizdata.Value,4) = @Period
300

301
GROUP BY BizFlowID, TaskIDRun, ExecuteEmployeeID
302

303
--ORDER BY RegID ASC
304

305

306

307
DECLARE @TRunTask TABLE
308

309
(
310

311
	[RegID] [BIGINT] NOT NULL,
312

313
	[Sequence] [INT] NOT NULL,
314

315
	[BizFlowID] [VARCHAR](50) NOT NULL,
316

317
	[TaskID] [VARCHAR](50) NOT NULL,
318

319
	[DepthLevel] [BIGINT] NOT NULL,
320

321
	[BizFlowIDRun] [VARCHAR](50) NULL,
322

323
	[TaskIDRun] [VARCHAR](50) NULL,
324

325
	[InboundDate] [VARCHAR](14) NULL,
326

327
	[ReadDate] [VARCHAR](14) NULL,
328

329
	[ExecuteDate] [VARCHAR](14) NULL,
330

331
	[ExecuteUser] [VARCHAR](150) NULL,
332

333
	[ExecuteEmployeeID] [VARCHAR](8) NULL,
334

335
	[WorkFlowStatus] [VARCHAR](3) NULL,
336

337
	[TaskStatus] [VARCHAR](4) NULL,
338

339
	[ConditionResult] [VARCHAR](500) NULL,
340

341
	[TaskFrom] [VARCHAR](50) NULL,
342

343
	[TaskTo] [VARCHAR](50) NULL,
344

345
	[FlowType] [VARCHAR](3) NULL,
346

347
	[MailSent] [VARCHAR](1) NULL
348

349
	,EmployeeID VARCHAR(8)
350

351
)
352

353

354

355
INSERT INTO @TRunTask
356

357
SELECT DISTINCT runtask.*, twf.EmployeeID
358

359
FROM PCMWFRUNTASK AS runtask
360

361
INNER JOIN @t_wf AS twf
362

363
	ON runtask.RegID = twf.RegID
364

365
WHERE (TaskIDRun IN ('create ','apv_ds', 'apv_nha') OR WorkFlowStatus = 'F')
366

367
	AND runtask.BizFlowID IN ('MD_PMS_Final','MD_PMS_Goal','MD_PMS_Review')
368

369
	AND (runtask.BizFlowID = @BizFlowID OR @BizFlowID = '')
370

371

372

373
INSERT INTO @t_result
374

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

377
FROM @TRunTask AS runtask
378

379
LEFT JOIN PHRPA0001 AS pa1
380

381
	ON runtask.ExecuteEmployeeID = pa1.EmployeeID
382

383
	AND pa1.StartDate <= @now AND pa1.EndDate >= @now
384

385
LEFT JOIN @t_emp AS temp
386

387
	ON runtask.EmployeeID = temp.EmployeeID
388

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

391
	ON TMaxSeq.BizFlowID = runtask.BizFlowID AND TMaxSeq.RegID = runtask.RegID
392

393
WHERE TMaxSeq.MaxSeq = runtask.Sequence
394

395
ORDER BY runtask.RegID, runtask.BizFlowID ASC
396

397

398

399
INSERT INTO @t_result
400

401
SELECT DISTINCT EmployeeID ,EmployeeName ,DivID ,DivDesc ,Organization ,OrgDesc ,Position ,PosDesc ,Job ,JobDesc ,RegID ,BizFlowID ,[Sequence] ,TaskIDRun ,TaskStatus ,ExecuteEmployeeID ,ExecuteEmpName
402

403
FROM @t_pa47
404

405
WHERE LEFT(StartDate,4) = @Period
406

407

408

409
SELECT * FROM @t_result
(19-19/46)