Project

General

Profile

Bug #3809 » PRPTPAALLEMPLOYEE_20250825.sql

Tri Rizqiaty, 08/25/2025 01:54 PM

 
1
USE [MinovaES_BIA_BaseServerCloud]
2
GO
3
/****** Object:  StoredProcedure [dbo].[PRPTPAALLEMPLOYEE]    Script Date: 25/08/2025 10.20.15 ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[PRPTPAALLEMPLOYEE]
9
    (
10
      @CompanyID VARCHAR(5) ,
11
      @EmployeeStatus VARCHAR(5) ,
12
      @EmployeeType VARCHAR(5) ,
13
      @EmployeeArea VARCHAR(5) ,
14
      @EmployeeOffice VARCHAR(5) ,
15
      @PayrollGroup VARCHAR(5) ,
16
      @Date VARCHAR(12) ,
17
      @UserID VARCHAR(12) ,
18
      @MenuID VARCHAR(10)
19
    )
20
AS 
21

    
22
--DECLARE @CompanyID VARCHAR(20) = '1000'
23
--DECLARE @EmployeeStatus VARCHAR(20) = '01'
24
--DECLARE @EmployeeType VARCHAR(20)= ''
25
--DECLARE @EmployeeArea VARCHAR(20)= '0001'
26
--DECLARE @EmployeeOffice VARCHAR(20) = '0001'
27
--DECLARE @PayrollGroup VARCHAR(20) = ''
28
--DECLARE @Date VARCHAR(12) = '20250807'
29
--DECLARE @UserID VARCHAR(10) = 'nando'
30
--DECLARE @MenuID VARCHAR(10) = 'PAR19'
31

    
32

    
33
------------------ // Get Otorisasi //---------------
34

    
35
DECLARE @TableResult TABLE ( EmployeeID VARCHAR(20) )
36
		
37
INSERT  INTO @TableResult
38
        EXEC dbo.GETEMPIDAUTHBYMENU @MenuID = @MenuID, -- varchar(max)
39
            @UserID = @UserID
40
 -- varchar(max)
41
    
42
------------------ // End Get Otorisasi //---------------
43

    
44

    
45
DECLARE @now VARCHAR(12) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmdd')
46

    
47
DECLARE @PermanentDate VARCHAR(5)
48
SELECT  @PermanentDate = Value1
49
FROM    PCMEPGENPARAM
50
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_PRMNTDATE'
51
DECLARE @PermanentDate2 VARCHAR(5)
52
SELECT  @PermanentDate2 = Value1
53
FROM    PCMEPGENPARAM
54
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_DATETYP'
55
DECLARE @HiringDate VARCHAR(5)
56
SELECT  @HiringDate = Value1
57
FROM    PCMEPGENPARAM
58
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_HIRINGDATE'
59
DECLARE @LastAssign VARCHAR(5)
60
SELECT  @LastAssign = Value1
61
FROM    PCMEPGENPARAM
62
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_LASTASSGNMNT'
63
DECLARE @Resign VARCHAR(5)
64
SELECT  @Resign = Value1
65
FROM    PCMEPGENPARAM
66
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_RESIGN'
67
DECLARE @Expired VARCHAR(5)
68
SELECT  @Expired = Value1
69
FROM    PCMEPGENPARAM
70
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_DATESPEC'
71
DECLARE @joingroup VARCHAR(5)
72
SELECT  @joingroup = Value1
73
FROM    PCMEPGENPARAM
74
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_DATETYP_JOINGROUP'
75
DECLARE @Resident VARCHAR(5)
76
SELECT  @Resident = Value1
77
FROM    PCMEPGENPARAM
78
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_RESIDENT'
79
DECLARE @HP VARCHAR(5)
80
SELECT  @HP = Value1
81
FROM    PCMEPGENPARAM
82
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_COMMTYPHP'
83
DECLARE @Email VARCHAR(5)
84
SELECT  @Email = Value1
85
FROM    PCMEPGENPARAM
86
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_COMMTYPEMAIL'
87
DECLARE @IDKTP VARCHAR(5)
88
SELECT  @IDKTP = Value1
89
FROM    PCMEPGENPARAM
90
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_IDKTP'
91
DECLARE @IDPassport VARCHAR(5)
92
SELECT  @IDPassport = Value1
93
FROM    PCMEPGENPARAM
94
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_IDPSSPRT'
95
DECLARE @IDSIMA VARCHAR(5)
96
SELECT  @IDSIMA = Value1
97
FROM    PCMEPGENPARAM
98
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_IDSIMA'
99
DECLARE @IDSIMB VARCHAR(5)
100
SELECT  @IDSIMB = Value1
101
FROM    PCMEPGENPARAM
102
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_IDSIMB'
103
DECLARE @IDSIMC VARCHAR(5)
104
SELECT  @IDSIMC = Value1
105
FROM    PCMEPGENPARAM
106
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_IDSIMC'
107
DECLARE @ResidentKTP VARCHAR(5)
108
SELECT  @ResidentKTP = Value1
109
FROM    PCMEPGENPARAM
110
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_RESIDENTKTP'
111
DECLARE @ResidentKost VARCHAR(5)
112
SELECT  @ResidentKost = Value1
113
FROM    PCMEPGENPARAM
114
WHERE   Parameter = 'PRPTPAALLEMPLOYEE_RESIDENTKOST'
115

    
116
DECLARE @par_pension VARCHAR(10)
117
SELECT  @par_pension = Value1
118
FROM    dbo.PCMEPGENPARAM
119
WHERE   Parameter = 'MDREMINDERMAXAGEPENSION'
120

    
121

    
122
DECLARE @tbl_3 TABLE
123
    (
124
      emp_id VARCHAR(18) ,
125
      edu_level VARCHAR(180) ,
126
      major VARCHAR(600) ,
127
      gpa VARCHAR(180) ,
128
      edu_level_desc VARCHAR(200) ,
129
      edu_start VARCHAR(80) ,
130
      institution VARCHAR(200)
131
    )
132

    
133
	
134
    --INSERT  INTO @tbl_3
135
    --        SELECT  a.* ,
136
    --                edu_level.description
137
    --        FROM    ( SELECT    emp_id ,
138
    --                            MAX(edu_level) AS edu_level ,
139
    --                            major ,
140
    --                            institution ,
141
    --                            CONVERT(DECIMAL(18, 2), gpa) AS gpa,
142
    --                            MAX (start_date) AS edu_start
143
    --                  FROM      dbo.hr_md_emp_md0008 AS md08
144
    --                  GROUP BY  emp_id ,
145
    --                            major ,
146
    --                            institution ,
147
    --                            gpa
148
    --                ) AS a
149
--    --                LEFT JOIN base_cust_ref_edu_level AS edu_level ON a.edu_level = edu_level.code
150
--INSERT  INTO @tbl_3
151
--       -- SELECT  TOP(1)
152
--        SELECT  EmployeeID ,
153
--      -- start_date, 
154
--       --edu_type,
155
--                edu.EducationLevel ,
156
--                Major ,
157
--                --Institution ,
158
--                CASE WHEN inst.InstitutionDescription = 'OTHERS'
159
--                     THEN edu.OtherInstitution
160
--                     ELSE inst.InstitutionDescription
161
--                END AS Institution ,
162
--                GPA ,
163
--                edu_level.EducationLevelDescription ,
164
--                edu.StartDate
165
--        FROM    dbo.PHRPA0008 AS edu
166
--                LEFT JOIN PHRPAEDULVL AS edu_level ON edu.EducationLevel = edu_level.EducationLevel
167
--                LEFT JOIN PHRPAINST inst ON edu.Institution = inst.InstitutionType
168
--        WHERE   edu.EndDate = ( SELECT  MAX(EndDate)
169
--                                FROM    dbo.PHRPA0008 AS x
170
--                                WHERE   x.EmployeeID = edu.EmployeeID
171
--                                        AND x.EducationType = 'F'
172
--                              )
173
--                AND edu.StartDate <= @Date
174
--                AND edu.EndDate >= @Date
175
--                AND edu.LastEducation = '1'
176
--        ORDER BY edu.Sequence DESC
177
INSERT  INTO @tbl_3
178
        SELECT  EmployeeID ,
179
                edu.EducationLevel ,
180
                Major ,
181
                GPA ,
182
                edu_level.EducationLevelDescription ,
183
                edu.StartDate ,
184
                CASE WHEN inst.InstitutionDescription = 'OTHERS'
185
                     THEN edu.OtherInstitution
186
                     ELSE inst.InstitutionDescription
187
                END AS Institution
188
        FROM    dbo.PHRPA0008 AS edu
189
                LEFT JOIN PHRPAEDULVL AS edu_level ON edu.EducationLevel = edu_level.EducationLevel
190
                LEFT JOIN PHRPAINST inst ON edu.Institution = inst.InstitutionType
191
        WHERE   edu.LastEducation = '1'
192
        ORDER BY edu.Sequence DESC
193
DECLARE @tbl_1 TABLE
194
    (
195
      level1 VARCHAR(50) ,
196
      level1_desc VARCHAR(500) ,
197
      level2 VARCHAR(50) ,
198
      level2_desc VARCHAR(500) ,
199
      level3 VARCHAR(50) ,
200
      level3_desc VARCHAR(500) ,
201
      level4 VARCHAR(50) ,
202
      level4_desc VARCHAR(500) ,
203
      level5 VARCHAR(50) ,
204
      level5_desc VARCHAR(500) ,
205
      level6 VARCHAR(50) ,
206
      level6_desc VARCHAR(500) ,
207
      level7 VARCHAR(50) ,
208
      level7_desc VARCHAR(500) ,
209
      level8 VARCHAR(50) ,
210
      level8_desc VARCHAR(500) ,
211
      emp_id VARCHAR(50)
212
    )
213

    
214

    
215
    --INSERT  INTO @tbl_1
216
            --SELECT DISTINCT
217
            --        a.org_id_01 ,
218
            --        a.org_name_01 ,
219
            --        a.org_id_02 ,
220
            --        a.org_name_02 ,
221
            --        a.org_id_03 ,
222
            --        a.org_name_03 ,
223
            --        a.org_id_04 ,
224
            --        a.org_name_04 ,
225
            --        a.org_id_05 ,
226
            --        a.org_name_05 ,
227
            --        a.org_id_06 ,
228
            --        a.org_name_06 ,
229
            --        a.org_id_07 ,
230
            --        a.org_name_07 ,
231
            --        a.org_id_08 ,
232
            --        a.org_name_08 ,
233
            --        md2.EmployeeID
234
            --FROM    dbo.GetOrgInOrgWide('00000001', @Date) AS a
235
            --        INNER JOIN dbo.PHRPA0002 AS md2 ON a.org_id = md2.Organization
236
            --                                           AND md2.StartDate <= @Date
237
            --                                           AND md2.EndDate >= @Date                                                          	 
238
	
239
DECLARE @tbl_2 TABLE
240
    (
241
      emp_id VARCHAR(18) ,
242
      movement_type VARCHAR(12) ,
243
      jumlah DECIMAL(18, 0)
244
    )	
245

    
246
INSERT  INTO @tbl_2
247
        SELECT DISTINCT
248
                EmployeeID ,
249
                MovementType ,
250
                COUNT(StartDate)
251
        FROM    dbo.PHRPA0002 WITH ( NOLOCK )
252
        --WHERE   MovementType = '60'
253
        GROUP BY EmployeeID ,
254
                MovementType
255

    
256
DECLARE @tbl_md2_last TABLE
257
    (
258
      --landscape VARCHAR(3) ,
259
      emp_id VARCHAR(18) ,
260
      start_date VARCHAR(8) ,
261
      end_date VARCHAR(8) ,
262
      movement_type VARCHAR(10) ,
263
      reason VARCHAR(20) ,
264
      company_id VARCHAR(4) ,
265
      costcenter VARCHAR(18) ,
266
      employee_area VARCHAR(50) ,
267
      employee_office VARCHAR(50) ,
268
      employee_status VARCHAR(50) ,
269
      employee_type VARCHAR(50) ,
270
      employee_subtype VARCHAR(50) ,
271
      tax_office VARCHAR(50) ,
272
      payroll_group VARCHAR(20) ,
273
      organization VARCHAR(50) ,
274
      position VARCHAR(50) ,
275
      job VARCHAR(50) ,
276
      remark VARCHAR(MAX),
277
	  divisioncode VARCHAR(10)
278
	  
279

    
280
          --additional_1 VARCHAR(8) ,
281
          --datedifff VARCHAR(MAX)
282
        
283
        
284
    )
285

    
286
INSERT  INTO @tbl_md2_last
287
        SELECT  tbl2.* --,
288
                    --DATEDIFF(DAY, tbl2.realDate, @Date) datedifff
289
        FROM    ( SELECT    EmployeeID ,
290
                            StartDate ,
291
                            EndDate ,
292
                            MovementType ,
293
                            MovementReason ,
294
                            CompanyID ,
295
                            CostCenter ,
296
                            EmployeeArea ,
297
                            EmployeeOffice ,
298
                            EmployeeStatus ,
299
                            EmployeeType ,
300
                            EmployeeSubType ,
301
                            TaxOffice ,
302
                            PayrollGroup ,
303
                            Organization ,
304
                            Position ,
305
                            Job ,
306
                            Notes ,
307
							DivisionCode
308
							
309

    
310
                                --CASE WHEN ISNULL(additional_1, '') = ''
311
                                --     THEN StartDate
312
                                --     ELSE additional_1
313
                                --END AS realDate
314
                  FROM      dbo.PHRPA0002 WITH ( NOLOCK )
315
                ) AS tbl2
316
                        
317
SELECT DISTINCT 
318
        md01.EmployeeID ,
319
        md01.FullName ,
320
        md01.ExternalID ,
321
		md01.NumberOfChildren,
322
        md02_last.company_id ,
323
        CONVERT(DATE, md02_hiring.StartDate) AS join_date ,
324
        CASE WHEN  md02_last.employee_type = '01' THEN CONVERT(DATE, md02_last.start_date) ELSE '' END AS permanent_date, ---- CONVERT(DATE, md39_permanent.Date) AS permanent_date , ----// change for BIA 20250825
325
        CONVERT(DATE, md39_joingroup.Date) AS join_group ,
326
        mov_type_last.MovementTypeDescription AS effective_type_status ,
327
        CONVERT(DATE, md02_last.start_date) AS effective_date ,
328
            --CONVERT(DATE, md02_last.additional_1) AS real_date ,
329
        md02_last.employee_status ,
330
        emp_status_last.EmployeeStatusDescription AS emp_status ,
331
        --CONVERT(DATE, md02_resign.StartDate) AS resign_date ,
332
        CONVERT(DATE,md02_resign.StartDate) AS resign_date ,
333
		CONVERT(DATE, md02_enddate.EndDate) AS end_date,
334
        emp_type_last.EmployeeTypeDescription AS employee_type ,
335
        CASE WHEN ( md39_contract.Date >= @Date )
336
             THEN CONVERT(DATE, md39_contract.Date)
337
             ELSE NULL
338
        END expired_status ,
339
        --tbl_2.jumlah AS contract_extent ,
340
        ws_type.WorkScheduleTypeDesc AS workschedule_type ,
341
        md03.TaxStatus ,
342
        md02_last.employee_area AS area_code ,
343
        emp_area_last.EmployeeAreaDescription AS area_desc ,
344
        md02_last.employee_office AS office_code ,
345
        emp_office_last.EmployeeOfficeDesc AS office_desc ,
346
        md02_last.payroll_group AS payroll_group_id ,
347
        payroll_group_last.PayrollGroupDescription AS payroll_group ,
348
        emp_sub_type_desc.EmployeeSubTypeDesc AS employee_subtype ,
349
        tbl_1.level1 ,
350
        tbl_1.level1_desc ,
351
        tbl_1.level2 ,
352
        tbl_1.level2_desc ,
353
        tbl_1.level3 ,
354
        tbl_1.level3_desc ,
355
        tbl_1.level4 ,
356
        tbl_1.level4_desc ,
357
        tbl_1.level5 ,
358
        tbl_1.level5_desc ,
359
        tbl_1.level6 ,
360
        tbl_1.level6_desc ,
361
        tbl_1.level7 ,
362
        tbl_1.level7_desc ,
363
        tbl_1.level8 ,
364
        tbl_1.level8_desc ,
365
            --md02_last.costcenter AS cc_code ,
366
            --cc.description AS cc_desc ,
367
            md02_last.position AS pos_code ,
368
			pos.ObjectDescription AS pos_desc,
369
            --p.description AS pos_desc ,
370
            --md02_last.job AS job_code ,
371
            --j.description AS job_desc ,
372
        pay_grade.PayrollGradeDescription AS pay_grade ,
373
        md01.NickName ,
374
        gender.GenderDescription AS gender ,
375
        md01.BirthPlace ,
376
        CONVERT (DATE, md01.BirthDate) AS birth_date ,
377
        FLOOR(DATEDIFF(DAY, md01.BirthDate, @Date) / 365.25) AS age ,
378
        dbo.GetDateDiffTahunBulanHari(md02_hiring.StartDate, @now) AS MasaKerja ,
379
        CASE WHEN ( FLOOR(DATEDIFF(DAY, md01.BirthDate, @Date) / 365.25) ) > @par_pension
380
             THEN 'YES'
381
             ELSE ''
382
        END AS Flag_Pension ,
383
        md06_resident.Address ,
384
        ( SELECT    ProvinceDescription
385
          FROM      PHRPAPROV
386
          WHERE     Province = md06_resident.Province
387
        ) AS province ,
388
            --md06_resident.location ,
389
        md06_resident.PostalCode ,
390
        md06_resident.TelephoneNumber ,
391
            --md12_hp.CommunicationDescription AS cellphone ,
392
        md12_email.CommunicationDescription AS email ,
393
        religion.ReligionDescription AS religion ,
394
        marital_status.MaritalStatusDescription AS marital_status ,
395
		--tax_status.TaxStatusDescription AS marital_status,
396
        --md11.BloodType ,
397
        bld.BloodTypeDescription AS BloodType ,
398
        --md13_ktp.IDDescription AS id ,
399
		md01.IDCard AS id,
400
        CONVERT(DATE, md13_ktp.EndDate) AS ktp_expired ,
401
        md06_ktp.Address AS ktp_address ,
402
        ( SELECT    ProvinceDescription
403
          FROM      PHRPAPROV
404
          WHERE     Province = md06_ktp.Province
405
        ) AS ktp_province ,
406
        md06_ktp.PostalCode AS ktp_postalcode ,
407
            --( SELECT    description
408
            --  FROM      base_cust_ref_id_type
409
            --  WHERE     code = md13_a.id_type
410
            --) AS id_a ,
411
            --md13_a.id_description AS id_a_no ,
412
            --CONVERT(DATE, md13_a.end_date) AS id_a_expired ,
413
            --( SELECT    description
414
            --  FROM      base_cust_ref_id_type
415
            --  WHERE     code = md13_b.id_type
416
            --) AS id_b ,
417
            --md13_b.id_description AS id_b_no ,
418
            --CONVERT(DATE, md13_b.end_date) AS id_b_expired ,
419
            --( SELECT    description
420
            --  FROM      base_cust_ref_id_type
421
            --  WHERE     code = md13_c.id_type
422
            --) AS id_c ,
423
        md13_c.IDDescription AS id_c_no ,
424
        CONVERT(DATE, md13_c.EndDate) AS id_c_expired ,
425
        md13_passport.IDDescription AS id_password_no ,
426
        CONVERT(DATE, md13_passport.EndDate) AS id_password_expired ,
427
            --md06_cp.contact_person AS cp_name ,
428
        md06_cp.Address AS cp_address ,
429
        md12_hp.CommunicationDescription AS cp_tlp, --md06_cp.TelephoneNumber AS cp_tlp , -----// edit tri 20250610 redmine 3659
430
        md06_cp.CellphoneNumber AS cp_cell ,
431
        md03.NPWP ,
432
            --CASE WHEN md03.npwp_date = '' THEN ''
433
            --     ELSE dbo.fn_formatdatetime(md03.npwp_date, 'dd mmm yyyy')
434
            --END AS npwp_date ,
435
            --md03.BPJSTKType ,
436
            --jams_type.description AS jams_type ,
437
           -- md03.BPJSTKNumber ,
438
            --CASE WHEN md03.additional_1 = '' THEN ''
439
            --     ELSE dbo.fn_formatdatetime(md03.additional_1, 'dd mmm yyyy')
440
            --END AS additional_1 ,
441
            --pension_type.PensionTypeDescription AS pension_type ,
442
            --md03.PensionType ,
443
            --CASE WHEN md03.additional_2 = '' THEN ''
444
            --     ELSE dbo.fn_formatdatetime(md03.additional_2, 'dd mmm yyyy')
445
            --END AS additional_2 ,
446
        cust_bank_id.BankDescription AS bank_id ,
447
        md03.BankAccount ,
448
        md03.BankAccountName ,
449
        tbl_3.edu_level_desc ,
450
        tbl_3.major ,
451
        tbl_3.institution ,
452
        tbl_3.gpa ,
453
        md02_last.remark ,
454
		md02_last.reason,
455
		emp_mov_reason.MovementReasonDesc,
456
		emp_division.DivisionCodeDescription,
457
		emp_division.EstateCode,
458
		emp_class.PayrollGrade,
459
		emp_class.PayrollClass,
460
		pay_class.PayrollClassDescription,
461
		emp_office_last.CodeOffice,
462
		'00'+emp_office_last.CodeOffice AS Plant,
463
		emp_ethnic.EthnicDescription,
464
		md13a.BenefitNo AS BPJSKESEHATAN,
465
		md13.BenefitNo AS BPJSKETENAGAKERJAAN
466

    
467
		
468
		    --CASE WHEN ISNULL(gapok.amount, '') = '' THEN 0
469
            --     ELSE CONVERT(DECIMAL, dbo.GetPEN(@landscape, gapok.amount))
470
            --END amount_gapok ,
471
            --CASE WHEN ( SELECT  valuation
472
            --            FROM    hr_cu0300
473
            --            WHERE   code = makan.wage_type
474
            --          ) = 'I2'
475
            --     THEN ( SELECT  amount
476
            --            FROM    hr_cu0304
477
            --            WHERE   start_date <= @Date
478
            --                    AND end_date >= @Date
479
            --                    AND wage_type = makan.wage_type
480
            --                    AND ( pay_grade = md03.pay_grade
481
            --                          OR pay_grade = '*'
482
            --                        )
483
            --                    AND ( pay_class = md03.pay_class
484
            --                          OR pay_class = '*'
485
            --                        )
486
            --                    AND ( pay_area = md03.pay_area
487
            --                          OR pay_area = '*'
488
            --                        )
489
            --          )
490
            --     ELSE ( CASE WHEN ISNULL(makan.amount, '') = '' THEN 0
491
            --                 ELSE CONVERT(DECIMAL, dbo.GetPEN(makan.amount))
492
            --            END )
493
            --END amount_makan ,
494
            --CASE WHEN ( SELECT  valuation
495
            --            FROM    hr_cu0300
496
            --            WHERE   code = ttp.wage_type
497
            --          ) = 'I2'
498
            --     THEN ( SELECT  amount
499
            --            FROM    hr_cu0304
500
            --            WHERE   start_date <= @Date
501
            --                    AND end_date >= @Date
502
            --                    AND wage_type = ttp.wage_type
503
            --                    AND ( pay_grade = md03.pay_grade
504
            --                          OR pay_grade = '*'
505
            --                        )
506
            --                    AND ( pay_class = md03.pay_class
507
            --                          OR pay_class = '*'
508
            --                        )
509
            --                    AND ( pay_area = md03.pay_area
510
            --                          OR pay_area = '*'
511
            --                        )
512
            --          )
513
            --     ELSE ( CASE WHEN ISNULL(ttp.amount, '') = '' THEN 0
514
            --                 ELSE CONVERT(DECIMAL, dbo.GetPEN(@landscape,
515
            --                                                  ttp.amount))
516
            --            END )
517
            --END amount_transport ,
518
            --CASE WHEN ( SELECT  valuation
519
            --            FROM    hr_cu0300
520
            --            WHERE   code = hp.wage_type
521
            --          ) = 'I2'
522
            --     THEN ( SELECT  amount
523
            --            FROM    hr_cu0304
524
            --            WHERE   start_date <= @Date
525
            --                    AND end_date >= @Date
526
            --                    AND wage_type = hp.wage_type
527
            --                    AND ( pay_grade = md03.pay_grade
528
            --                          OR pay_grade = '*'
529
            --                        )
530
            --                    AND ( pay_class = md03.pay_class
531
            --                          OR pay_class = '*'
532
            --                        )
533
            --                    AND ( pay_area = md03.pay_area
534
            --                          OR pay_area = '*'
535
            --                        )
536
            --          )
537
            --     ELSE ( SELECT  amount
538
            --            FROM    hr_cu0303
539
            --            WHERE   start_date <= @Date
540
            --                    AND end_date >= @Date
541
            --                    AND wage_type = hp.wage_type
542
            --          )
543
            --END amount_hp ,
544
            --CASE WHEN ( SELECT  valuation
545
            --            FROM    hr_cu0300
546
            --            WHERE   code = tj.wage_type
547
            --          ) = 'I2'
548
            --     THEN ( SELECT  amount
549
            --            FROM    hr_cu0304
550
            --            WHERE   start_date <= @Date
551
            --                    AND end_date >= @Date
552
            --                    AND wage_type = tj.wage_type
553
            --                    AND ( pay_grade = md03.pay_grade
554
            --                          OR pay_grade = '*'
555
            --                        )
556
            --                    AND ( pay_class = md03.pay_class
557
            --                          OR pay_class = '*'
558
            --                        )
559
            --                    AND ( pay_area = md03.pay_area
560
            --                          OR pay_area = '*'
561
            --                        )
562
            --          )
563
            --     ELSE ( SELECT  amount
564
            --            FROM    hr_cu0303
565
            --            WHERE   start_date <= @Date
566
            --                    AND end_date >= @Date
567
            --                    AND wage_type = tj.wage_type	
568
            --          )
569
            --END amount_jabatan
570
FROM    dbo.PHRPA0001 md01 --@tbl_personal AS md01
571
        LEFT JOIN PHRPAGENDER AS gender ON md01.Gender = gender.Gender
572
        LEFT JOIN dbo.PHRPA0039 pa39 ON md01.EmployeeID = pa39.EmployeeID
573
                                        AND pa39.DateType = '0001'
574
        LEFT JOIN PHRPARELIGI AS religion ON md01.Religion = religion.Religion
575
		LEFT JOIN PHRPA0003 AS taxmd on  md01.EmployeeID=taxmd.EmployeeID and taxmd.EndDate='99991231'
576
		LEFT JOIN PHRPYTAXSTAT AS tax_status on taxmd.TaxStatus=tax_status.TaxStatus
577
        LEFT JOIN PHRPAMSTAT AS marital_status ON md01.MaritalStatus = marital_status.MaritalStatus
578
		and md01.EndDate='99991231'
579
        LEFT JOIN PHRPA0002 AS md02_hiring ON md01.EmployeeID = md02_hiring.EmployeeID -- Hiring Date
580
                                              AND md02_hiring.MovementType = @HiringDate
581
        --LEFT JOIN PHRPA0002 AS md02_permanent ON md01.EmployeeID = md02_permanent.EmployeeID -- Hiring Permanent
582
        --                                         --AND md02_permanent.MovementType = @PermanentDate
583
        --                                         --AND md02_permanent.employeetype = '01'
584
								--				   AND md02_permanent.StartDate <= @Date
585
                                             --AND md02_permanent.EndDate >= @Date
586
        LEFT JOIN @tbl_md2_last AS md02_last ON md01.EmployeeID = md02_last.emp_id
587
                                                AND md02_last.start_date <= @Date		-- Last Assignment dirubah
588
                                                AND md02_last.end_date >= @Date
589
                                                AND md02_last.payroll_group <> @LastAssign
590
		LEFT JOIN PHROM0001 AS pos ON  md02_last.position=pos.ObjectID
591
												AND pos.ObjectClass='P'
592
                                                    --AND md02_last.datedifff = ( SELECT
593
                                                              --MIN(tbl_last.datedifff)
594
                                                              --FROM
595
                                                              --@tbl_md2_last tbl_last
596
                                                              --WHERE
597
                                                              --tbl_last.start_date <= @Date  --dirubah
598
                                                              --AND tbl_last.end_date >= @Date
599
                                                              --AND tbl_last.payroll_group <> '99'
600
                                                              --AND md01.emp_id = tbl_last.emp_id
601
                                                              --)
602
        LEFT JOIN PCMEPMOVTYP AS mov_type_last ON md02_last.movement_type = mov_type_last.MovementType
603
        LEFT JOIN PCMEPEMPTYP AS emp_type_last ON md02_last.employee_type = emp_type_last.EmployeeType
604
        LEFT JOIN PCMEPEMPAREA AS emp_area_last ON md02_last.employee_area = emp_area_last.EmployeeArea
605
        LEFT JOIN PCMEPEMPOFF AS emp_office_last ON md02_last.employee_office = emp_office_last.EmployeeOffice
606
        LEFT JOIN PHRPYPGRUP AS payroll_group_last ON md02_last.payroll_group = payroll_group_last.PayrollGroup
607
        LEFT JOIN PCMEPEMPSTAT AS emp_status_last ON md02_last.employee_status = emp_status_last.EmployeeStatus
608
        LEFT JOIN PCMEPEMPSTYP AS emp_sub_type_desc ON md02_last.employee_subtype = emp_sub_type_desc.EmployeeSubType
609
		LEFT JOIN PCMEPMOVR AS emp_mov_reason ON md02_last.reason = emp_mov_reason.MovementReason AND emp_mov_reason.MovementType='17'
610
		LEFT JOIN PCMEMPDVSCODE AS  emp_division ON md02_last.divisioncode = emp_division.DivisionCode
611
		LEFT JOIN PHRPA0003 AS  emp_class ON md02_last.emp_id = emp_class.EmployeeID and emp_class.EndDate='99991231'
612
		left join PHRPYPCLASS AS pay_class on emp_class.PayrollClass=pay_class.PayrollClass and pay_class.EndDate='99991231' and pay_class.PayrollArea=taxmd.PayrollArea
613
		--Update 23/11/2022 by Shofwan
614
		LEFT JOIN PHRPAETHNIC AS  emp_ethnic ON md01.Ethnic = emp_ethnic.Ethnic
615
		LEFT JOIN PHRPA0022 AS md13 ON md13.EmployeeID= md01.EmployeeID AND md13.BenefitType='B001' and md13.EndDate='99991231'
616
		LEFT JOIN PHRPA0022 AS md13a ON md13a.EmployeeID= md01.EmployeeID AND md13a.BenefitType='B002' and md13a.EndDate='99991231'
617
		
618

    
619

    
620

    
621
            --LEFT OUTER JOIN hr_md_orm_object cc ON cc.landscape = @landscape
622
            --                                       AND cc.start_date <= @Date
623
            --                                       AND cc.end_date >= @Date
624
            --                                       AND md02_last.costcenter = cc.object
625
            --                                       AND cc.class = 'CC'
626
            --LEFT OUTER JOIN hr_md_orm_object o ON o.landscape = @landscape
627
            --                                      AND o.start_date <= @Date
628
            --                                      AND o.end_date >= @Date
629
            --                                      AND md02_last.organization = o.object
630
            --                                      AND o.class = 'O'
631
            --LEFT OUTER JOIN hr_md_orm_object p ON p.landscape = @landscape
632
            --                                      AND p.start_date <= @Date
633
            --                                      AND p.end_date >= @Date
634
            --                                      AND md02_last.position = p.object
635
            --                         --AND md02_last.payroll_group <> '99'
636
            --                                      AND p.class = 'P'
637
            --LEFT OUTER JOIN hr_md_orm_object j ON j.landscape = @landscape
638
            --                                      AND j.start_date <= @Date
639
            --                                      AND j.end_date >= @Date
640
            --                                      AND md02_last.job = j.object
641
            --                                      AND j.class = 'J'
642
        --LEFT JOIN phrpa0039 AS md39_group ON md01.EmployeeID = md39_group.EmployeeID				-- Date Spesification, Join Date Group
643
        --                                     AND md39_group.DateType = '10'
644
        --                                     AND md39_group.StartDate <= @Date
645
        --                                     AND md39_group.EndDate >= @Date
646
        LEFT JOIN PHRPA0002 AS md02_resign ON md01.EmployeeID = md02_resign.EmployeeID			-- Resign
647
                                              AND md02_resign.MovementType = @Resign
648
		LEFT JOIN PHRPA0002 AS md02_enddate ON md01.EmployeeID=md02_enddate.EmployeeID
649
												AND md02_enddate.EndDate='99991231'
650
                                                    --AND md02_resign.end_date = '99991231'
651
        --LEFT JOIN phrpa0002 AS md02_contract ON md01.EmployeeID = md02_contract.EmployeeID
652
        --                                        AND md02_contract.MovementType = '19'
653
		LEFT JOIN PHRPA0039 AS md39_permanent ON md01.EmployeeID = md39_permanent.EmployeeID
654
			and md39_permanent.DateType='0004'
655

    
656
        LEFT JOIN PHRPA0039 AS md39_contract ON md01.EmployeeID = md39_contract.EmployeeID		-- Date Spesification, expired contract dengan code 02
657
                                                AND md39_contract.DateType = @Expired
658
                                                AND md39_contract.Sequence = ( SELECT
659
                                                              MAX(md39_contracte.Sequence)
660
                                                              FROM
661
                                                              PHRPA0039 md39_contracte
662
                                                              WHERE
663
                                                              md39_contracte.EmployeeID = md39_contract.EmployeeID
664
                                                              AND md39_contracte.DateType = @Expired
665
                                                              )
666
        LEFT JOIN PHRPA0039 AS md39_joingroup ON md01.EmployeeID = md39_joingroup.EmployeeID		-- Date Spesification, expired contract dengan code 02
667
                                                 AND md39_joingroup.DateType = @joingroup
668
                                                 AND md39_joingroup.Sequence = ( SELECT
669
                                                              MAX(md39_joingroupe.Sequence)
670
                                                              FROM
671
                                                              PHRPA0039 md39_joingroupe
672
                                                              WHERE
673
                                                              md39_joingroupe.EmployeeID = md39_joingroup.EmployeeID
674
                                                              AND md39_joingroupe.DateType = @joingroup
675
                                                              )                                                     
676
        --LEFT JOIN hr_md_emp_md0002 AS md02_appointment ON md01.emp_id = md02_appointment.emp_id		-- Appointment
677
        --                                                  AND md02_appointment.movement_type = '20'
678
        LEFT JOIN PHRPA0025 AS md25 ON md01.EmployeeID = md25.EmployeeID							-- Working Schedule
679
                                       AND md25.StartDate <= @Date
680
                                       AND md25.EndDate >= @Date
681
        LEFT JOIN PHRTMWSTYP AS ws_type ON md25.WorkScheduleType = ws_type.WorkScheduleType
682
        LEFT JOIN PHRPA0003 AS md03 ON md01.EmployeeID = md03.EmployeeID						--Payroll Basic
683
                                       AND md03.StartDate <= @Date
684
                                       AND md03.EndDate >= @Date
685
            --LEFT JOIN PHRPYPENSTYP AS pension_type ON md03.PensionType = pension_type.PensionType
686
        LEFT JOIN PHRPYBANKTYP AS cust_bank_id ON md03.BankType = cust_bank_id.BankType
687
        LEFT JOIN PHRPYPGRAD AS pay_grade ON md03.PayrollGrade = pay_grade.PayrollGrade and md03.PayrollClass=pay_grade.PayrollClass
688
        LEFT JOIN PHRPA0006 AS md06_resident ON md01.EmployeeID = md06_resident.EmployeeID
689
                                                AND md06_resident.AddressType = @Resident
690
                                                       --AND md06_resident.end_date = '99991231'
691
                                                AND md06_resident.StartDate <= @Date
692
                                                AND md06_resident.EndDate >= @Date
693
                                                AND md06_resident.Sequence = ( SELECT
694
                                                              MAX(md06_st.Sequence)
695
                                                              FROM
696
                                                              PHRPA0006 md06_st
697
                                                              WHERE
698
                                                              md06_st.AddressType = @Resident
699
                                                              AND md06_st.EmployeeID = md06_resident.EmployeeID
700
                                                              )
701
        LEFT JOIN PHRPA0012 AS md12_hp ON md01.EmployeeID = md12_hp.EmployeeID
702
                                          AND md12_hp.CommunicationType = @HP
703
                                          AND md12_hp.Sequence = ( SELECT
704
                                                              MAX(md12_st.Sequence)
705
                                                              FROM
706
                                                              PHRPA0012 md12_st
707
                                                              WHERE
708
                                                              md12_st.EmployeeID = md12_hp.EmployeeID
709
                                                              AND md12_st.CommunicationType = @HP
710
                                                              )
711
        LEFT JOIN PHRPA0012 AS md12_email ON md01.EmployeeID = md12_email.EmployeeID
712
                                             AND md12_email.CommunicationType = @Email
713
                                             AND md12_email.Sequence = ( SELECT
714
                                                              MAX(md12e_st.Sequence)
715
                                                              FROM
716
                                                              PHRPA0012 md12e_st
717
                                                              WHERE
718
                                                              md12e_st.EmployeeID = md12_email.EmployeeID
719
                                                              AND md12e_st.CommunicationType = @Email
720
                                                              )
721
        LEFT JOIN PHRPA0011 AS md11 ON md01.EmployeeID = md11.EmployeeID
722
        LEFT JOIN PHRPABLODTYP AS bld ON md11.BloodType = bld.BloodType
723
        LEFT JOIN PHRPA0013 AS md13_ktp ON md01.EmployeeID = md13_ktp.EmployeeID
724
                                           AND md13_ktp.IDType = @IDKTP
725
                                           AND md13_ktp.Sequence = ( SELECT
726
                                                              MAX(md13_ktpe.Sequence)
727
                                                              FROM
728
                                                              PHRPA0013 md13_ktpe
729
                                                              WHERE
730
                                                              md13_ktpe.EmployeeID = md13_ktp.EmployeeID
731
                                                              AND md13_ktpe.IDType = @IDKTP
732
                                                              )
733
        LEFT JOIN PHRPA0013 AS md13_a ON md01.EmployeeID = md13_a.EmployeeID
734
                                         AND md13_a.IDType = @IDSIMA
735
        LEFT JOIN PHRPA0013 AS md13_b ON md01.EmployeeID = md13_b.EmployeeID
736
                                         AND md13_b.IDType = @IDSIMB
737
        LEFT JOIN PHRPA0013 AS md13_c ON md01.EmployeeID = md13_c.EmployeeID
738
                                         AND md13_c.IDType = @IDSIMC
739
        LEFT JOIN PHRPA0013 AS md13_passport ON md01.EmployeeID = md13_passport.EmployeeID
740
                                                AND md13_passport.IDType = @IDPassport
741
        LEFT JOIN PHRPA0006 AS md06_ktp ON md01.EmployeeID = md06_ktp.EmployeeID
742
                                           AND md06_ktp.AddressType = @ResidentKTP
743
                                           AND md06_ktp.StartDate <= @Date
744
                                           AND md06_ktp.EndDate >= @Date
745
                                                  --AND md06_ktp.end_date = '99991231'
746
                                           AND md06_ktp.Sequence = ( SELECT
747
                                                              MAX(md6_st.Sequence)
748
                                                              FROM
749
                                                              PHRPA0006 md6_st
750
                                                              WHERE
751
                                                              md6_st.AddressType = @ResidentKTP
752
                                                              AND md6_st.EmployeeID = md06_ktp.EmployeeID
753
                                                              )
754
        LEFT JOIN PHRPA0006 AS md06_cp ON md01.EmployeeID = md06_cp.EmployeeID
755
                                          AND md06_cp.AddressType = @ResidentKost
756
                                          AND md06_cp.StartDate <= @Date
757
                                          AND md06_cp.EndDate >= @Date
758
                                          AND md06_cp.Sequence = ( SELECT
759
                                                              MAX(md6_st.Sequence)
760
                                                              FROM
761
                                                              PHRPA0006 md6_st
762
                                                              WHERE
763
                                                              md6_st.AddressType = @ResidentKost
764
                                                              AND md6_st.EmployeeID = md06_cp.EmployeeID
765
                                                              )
766
        INNER JOIN PHRPA0015 AS md15 ON md01.EmployeeID = md15.EmployeeID
767
        LEFT JOIN @tbl_1 AS tbl_1 ON md01.EmployeeID = tbl_1.emp_id
768
        INNER JOIN @TableResult AS tr ON tr.EmployeeID = md01.EmployeeID
769
        LEFT JOIN @tbl_2 AS tbl_2 ON md01.EmployeeID = tbl_2.emp_id
770
        LEFT JOIN @tbl_3 AS tbl_3 ON md01.EmployeeID = tbl_3.emp_id
771
            --LEFT JOIN dbo.phrpa0004 gapok ON md02_last.emp_id = gapok.emp_id -- GAPOK
772
            --                                        AND gapok.start_date <= @Date
773
            --                                        AND gapok.end_date >= @Date
774
            --                                        AND gapok.wage_type = '1000'
775
            --LEFT JOIN dbo.phrpa0004 makan ON md02_last.emp_id = makan.emp_id -- MAKAN
776
            --                                        AND makan.start_date <= @Date
777
            --                                        AND makan.end_date >= @Date
778
            --                                        AND ( makan.wage_type IN (
779
            --                                              '1200', '1201' )
780
            --                                              OR makan.wage_type IN (
781
            --                                              SELECT
782
            --                                                  val1
783
            --                                              FROM
784
            --                                                  base_cust_parameter
785
            --                                              WHERE
786
            --                                                  param = 'IMFI_WAGE_TYPE_MK'
787
            --                                                  AND start_date <= @Date
788
            --                                                  AND end_date >= @Date )
789
            --                                            )
790
            --LEFT JOIN dbo.phrpa0004 ttp ON md02_last.emp_id = ttp.emp_id -- TRANSPORT
791
            --                                      AND ttp.start_date <= @Date
792
            --                                      AND ttp.end_date >= @Date
793
            --                                      AND ( ttp.wage_type IN (
794
            --                                            '1203', '1210', '1212' )
795
            --                                            OR ttp.wage_type IN (
796
            --                                            SELECT
797
            --                                                  val1
798
            --                                            FROM  base_cust_parameter
799
            --                                            WHERE param = 'IMFI_WAGE_TYPE_TP'
800
            --                                                  AND start_date <= @Date
801
            --                                                  AND end_date >= @Date )
802
            --                                          )
803
            --LEFT JOIN dbo.phrpa0004 hp ON md02_last.emp_id = hp.emp_id -- HP
804
            --                                     AND hp.start_date <= @Date
805
            --                                     AND hp.end_date >= @Date
806
            --                                     AND ( hp.wage_type = '1205'
807
            --                                           OR ( hp.wage_type >= '1231'
808
            --                                                AND hp.wage_type <= '1235'
809
            --                                              )
810
            --                                           OR hp.wage_type IN (
811
            --                                           SELECT val1
812
            --                                           FROM   base_cust_parameter
813
            --                                           WHERE  param = 'IMFI_WAGE_TYPE_HP'
814
            --                                                  AND start_date <= @Date
815
            --                                                  AND end_date >= @Date )
816
            --                                         )
817
            --LEFT JOIN dbo.phrpa0004 tj ON md02_last.EmployeeID = tj.EmployeeID -- JABATAN
818
            --                                     AND tj.StartDate <= @Date
819
            --                                     AND tj.EndDate >= @Date
820
            --                                     AND ( tj.WageType = '1202'
821
            --                                           OR ( tj.WageType >= '1221'
822
            --                                                AND tj.WageType <= '1229'
823
            --                                              )
824
            --                                           OR tj.WageType IN (
825
            --                                           SELECT val1
826
            --                                           FROM   base_cust_parameter
827
            --                                           WHERE  param = 'IMFI_WAGE_TYPE_TJ'
828
            --                                                  AND start_date <= @Date
829
            --                                                  AND end_date >= @Date )
830
            --                                         )
831
WHERE   ( md02_last.company_id = @CompanyID
832
          OR @CompanyID = ''
833
        )
834
        AND md01.StartDate <= @Date
835
        AND md01.EndDate >= @Date
836
        AND ( md02_last.payroll_group = @PayrollGroup
837
              OR @PayrollGroup = ''
838
            )
839
        AND ( md02_last.employee_status = @EmployeeStatus
840
              OR @EmployeeStatus = ''
841
            )
842
        AND ( md02_last.employee_area = @EmployeeArea
843
              OR @EmployeeArea = ''
844
            )
845
        AND ( md02_last.employee_office = @EmployeeOffice
846
              OR @EmployeeOffice = ''
847
            )
848
        AND ( md02_last.employee_type = @EmployeeType
849
              OR @EmployeeType = ''
850
            )
851
        AND ( md02_last.company_id = @CompanyID
852
              OR @CompanyID = ''
853
            )
854
		--AND md02_last.emp_id = '20050767'
855
		--AND md01.EmployeeID ='11010018'
856
ORDER BY md02_last.employee_office ,
857
        md01.EmployeeID
(9-9/9)