Project

General

Profile

Bug #2912 » RptSPTahun_202407251433.sql

Tri Rizqiaty, 07/25/2024 02:33 PM

 
1
??ALTER PROCEDURE [dbo].[RptSPTahun]
2

3
    @CompanyID VARCHAR(4) = NULL ,
4

5
    @Year VARCHAR(4) ,
6

7
    @TaxOffice VARCHAR(10) ,
8

9
    @EmployeeStatus VARCHAR(2) = NULL ,
10

11
    @PayrollGroup VARCHAR(2) = NULL ,
12

13
    @EmployeeIDFrom VARCHAR(8) = NULL ,
14

15
    @EmployeeIDTo VARCHAR(8) = NULL
16

17
AS 
18

19
    SET NOCOUNT ON;
20

21

22

23
--DECLARE @CompanyID varchar(4) = ''
24

25
--DECLARE @Year varchar(4) = '2024'
26

27
--DECLARE @TaxOffice varchar(8) = 'JKT'
28

29
--DECLARE @EmployeeStatus varchar(2) = null
30

31
--DECLARE @PayrollGroup varchar(2) = ''
32

33
--DECLARE @EmployeeIDFrom varchar(8) = '00000017'--'00000300'
34

35
--DECLARE @EmployeeIDTo varchar(8) = NULL
36

37

38

39

40

41
    DECLARE @begda INT
42

43
    DECLARE @endda INT
44

45
    DECLARE @employee_status_beg VARCHAR(5)
46

47
    DECLARE @employee_status_end VARCHAR(5)
48

49
    DECLARE @payroll_group_beg VARCHAR(5)
50

51
    DECLARE @payroll_group_END VARCHAR(5)
52

53

54

55
--//Set begin & end of period
56

57
    SET @begda = @Year + '0101'
58

59
    SET @endda = @Year + '1231'
60

61

62

63
--//Set employee status
64

65
    IF @EmployeeStatus = ''
66

67
        OR @EmployeeStatus IS NULL 
68

69
        BEGIN
70

71
            SET @employee_status_beg = '00000'
72

73
            SET @employee_status_end = '99999'
74

75
        END
76

77
    ELSE 
78

79
        BEGIN
80

81
            SET @employee_status_beg = @EmployeeStatus
82

83
            SET @employee_status_end = @EmployeeStatus
84

85
        END
86

87

88

89
--//Set employee group
90

91
    IF @PayrollGroup = ''
92

93
        OR @PayrollGroup IS NULL 
94

95
        BEGIN
96

97
            SET @payroll_group_beg = '00000'
98

99
            SET @payroll_group_END = '99999'
100

101
        END
102

103
    ELSE 
104

105
        BEGIN
106

107
            SET @payroll_group_beg = @PayrollGroup
108

109
            SET @payroll_group_END = @PayrollGroup
110

111
        END
112

113

114

115

116

117
--//Set employee id start
118

119
    IF @EmployeeIDFrom = ''
120

121
        OR @EmployeeIDFrom IS NULL 
122

123
        BEGIN
124

125
            SET @EmployeeIDFrom = '00000000'
126

127
            SET @EmployeeIDTo = '99999999'
128

129
        END
130

131

132

133
    IF @EmployeeIDTo = ''
134

135
        OR @EmployeeIDTo IS NULL 
136

137
        SET @EmployeeIDTo = @EmployeeIDFrom 
138

139

140

141
--//Get system parameter
142

143
    DECLARE @is_encrypted VARCHAR
144

145
    DECLARE @npwp_address_subtype VARCHAR(4)
146

147

148

149
    SELECT  @is_encrypted = Value1
150

151
    FROM    dbo.PCMEPGENPARAM
152

153
    WHERE   Parameter = 'HR_PY_ENCRYPTED'
154

155
            AND StartDate <= @endda
156

157
            AND EndDate >= @endda
158

159

160

161
    SELECT  @npwp_address_subtype = Value1
162

163
    FROM    dbo.PCMEPGENPARAM
164

165
    WHERE   Parameter = 'HR_PY_NPWP_ADDRESS_SUBTYPE'
166

167
            AND StartDate <= @endda
168

169
            AND EndDate >= @endda
170

171

172

173
-----// Get employee tax office list
174

175
    DECLARE @emp_office TABLE
176

177
        (
178

179
          [StartDate] [varchar](8) NOT NULL ,
180

181
          [EndDate] [varchar](8) NOT NULL ,
182

183
          [EmployeeOffice] [varchar](4) NOT NULL ,
184

185
          [EmployeeOfficeDesc] [varchar](50) NULL ,
186

187
          [EmployeeArea] [varchar](4) NOT NULL ,
188

189
          [TaxOffice] [varchar](4) NULL ,
190

191
          [NPWP] [varchar](50) NULL ,
192

193
          [Address] [varchar](500) NULL ,
194

195
          [EmployeeOfficeGroup] [varchar](5) NULL ,
196

197
          [MinimumWageRegional] [varchar](4) NULL ,
198

199
          [Notes] [varchar](500) NULL ,
200

201
          [CreateBy] [varchar](18) NULL ,
202

203
          [CreateDate] [varchar](14) NULL ,
204

205
          [ChangeBy] [varchar](18) NULL ,
206

207
          [ChangeDate] [varchar](14) NULL
208

209
        )
210

211

212

213
    INSERT  INTO @emp_office
214

215
            SELECT  [StartDate] ,
216

217
                    [EndDate] ,
218

219
                    [EmployeeOffice] ,
220

221
                    [EmployeeOfficeDesc] ,
222

223
                    [EmployeeArea] ,
224

225
                    [TaxOffice] ,
226

227
                    [NPWP] ,
228

229
                    [Address] ,
230

231
                    [EmployeeOfficeGroup] ,
232

233
                    [MinimumWageRegional] ,
234

235
                    [Notes] ,
236

237
                    [CreateBy] ,
238

239
                    [CreateDate] ,
240

241
                    [ChangeBy] ,
242

243
                    [ChangeDate]
244

245
            FROM    dbo.PCMEPEMPOFF
246

247
            WHERE   TaxOffice = @TaxOffice
248

249
	
250

251
--Get Employee Tobe Processed
252

253
    DECLARE @employee_tobe_process2 TABLE
254

255
        (
256

257
          emp_id VARCHAR(8) ,
258

259
          start_date INT ,
260

261
          end_date INT ,
262

263
          employee_status VARCHAR(2)
264

265
        )
266

267

268

269
    DECLARE @employee_tobe_process TABLE
270

271
        (
272

273
          emp_id VARCHAR(8) ,
274

275
          start_date INT ,
276

277
          end_date INT
278

279
        )
280

281

282

283
    DECLARE @payroll_header TABLE
284

285
        (
286

287
          employee_id VARCHAR(8) ,
288

289
          start_date VARCHAR(8) ,
290

291
          end_date VARCHAR(8) ,
292

293
          employee_office VARCHAR(4) ,
294

295
          run_period_month VARCHAR(2)
296

297
        )
298

299
    DECLARE @payroll_header_tmp TABLE
300

301
        (
302

303
          employee_id VARCHAR(8) ,
304

305
          start_date VARCHAR(8) ,
306

307
          end_date VARCHAR(8) ,
308

309
          employee_office VARCHAR(4) ,
310

311
          run_period_month VARCHAR(2)
312

313
        )
314

315
    DECLARE @payroll_header0 TABLE
316

317
        (
318

319
          employee_id VARCHAR(8) ,
320

321
          start_date VARCHAR(8) ,
322

323
          end_date VARCHAR(8) ,
324

325
          employee_office VARCHAR(4) ,
326

327
          run_period_month VARCHAR(2)
328

329
        )
330

331

332

333
    INSERT  INTO @payroll_header_tmp
334

335
            SELECT DISTINCT
336

337
                    md2.EmployeeID ,
338

339
                    ph.StartDate ,
340

341
                    ph.EndDate ,
342

343
                    md2.EmployeeOffice ,
344

345
                    RunPeriodMonth
346

347
            FROM    dbo.PHRPYTR0300 ph
348

349
                    INNER JOIN dbo.PHRPA0002 md2 ON md2.EmployeeID = ph.EmployeeID
350

351
            WHERE   ph.StartDate >= @begda
352

353
                    AND ph.EndDate <= @endda
354

355
                    AND md2.StartDate <= ph.EndDate
356

357
                    AND md2.EndDate >= ph.EndDate
358

359
                    AND md2.EmployeeID BETWEEN @EmployeeIDFrom
360

361
                                       AND     @EmployeeIDTo
362

363
				
364

365
--//get the latest run data
366

367
    INSERT  INTO @payroll_header0
368

369
            SELECT  py_head.*
370

371
            FROM    @payroll_header_tmp AS py_head
372

373
                    INNER JOIN ( SELECT employee_id ,
374

375
                                        start_date ,
376

377
                                        end_date ,
378

379
                                        MAX(run_period_month) AS run_period_month
380

381
                                 FROM   @payroll_header_tmp
382

383
                                 GROUP BY employee_id ,
384

385
                                        start_date ,
386

387
                                        end_date
388

389
                               ) a ON py_head.employee_id = a.employee_id
390

391
                                      AND py_head.start_date = a.start_date
392

393
                                      AND py_head.end_date = a.end_date
394

395
                                      AND py_head.run_period_month = a.run_period_month
396

397
			
398

399
    INSERT  INTO @payroll_header
400

401
            SELECT DISTINCT
402

403
                    employee_id ,
404

405
                    start_date ,
406

407
                    end_date ,
408

409
                    employee_office ,
410

411
                    run_period_month
412

413
            FROM    @payroll_header0 ph0
414

415
                    INNER JOIN @emp_office eo ON ph0.employee_office = eo.EmployeeOffice
416

417
					
418

419
----//get list spliiter running payroll for others TAX Office.
420

421
    SELECT DISTINCT
422

423
            employee_id ,
424

425
            start_date ,
426

427
            end_date ,
428

429
            employee_office ,
430

431
            run_period_month
432

433
    INTO    #tmp0
434

435
    FROM    @payroll_header0 ph0
436

437
    WHERE   NOT EXISTS ( SELECT *
438

439
                         FROM   @payroll_header ph
440

441
                         WHERE  ph0.employee_id = ph.employee_id
442

443
                                AND ph0.start_date = ph.start_date
444

445
                                AND ph0.end_date = ph.end_date
446

447
                                AND ph0.employee_office = ph.employee_office
448

449
                                AND ph0.run_period_month = ph.run_period_month )
450

451
		
452

453
-- Get list date range splitter.
454

455
    SELECT  a.employee_id ,
456

457
            a.start_date mindt0 ,
458

459
            b.start_date maxdt0
460

461
    INTO    #tmp
462

463
    FROM    @payroll_header a ,
464

465
            @payroll_header b
466

467
    WHERE   a.employee_id = b.employee_id
468

469
            AND b.start_date > a.start_date
470

471
            AND ( CONVERT(INT, SUBSTRING(b.start_date, 5, 2))
472

473
                  - CONVERT(INT, SUBSTRING(a.start_date, 5, 2)) ) > 1
474

475
            AND ( SELECT    COUNT(*)
476

477
                  FROM      @payroll_header c
478

479
                  WHERE     ( CONVERT(INT, SUBSTRING(a.start_date, 5, 2)) < CONVERT(INT, SUBSTRING(c.start_date,
480

481
                                                              5, 2)) )
482

483
                            AND ( CONVERT(INT, SUBSTRING(b.start_date, 5, 2)) > CONVERT(INT, SUBSTRING(c.end_date,
484

485
                                                              5, 2)) )
486

487
                            AND c.employee_id = a.employee_id
488

489
                ) = 0
490

491
            AND ( SELECT    COUNT(*)
492

493
                  FROM      #tmp0 d
494

495
                  WHERE     d.employee_id = a.employee_id
496

497
                            AND a.start_date < d.start_date
498

499
                            AND b.start_date > d.end_date
500

501
                ) <> 0
502

503
	
504

505
    DROP TABLE #tmp0
506

507

508

509

510

511
    DECLARE @n_empty_range INT
512

513
	  
514

515
    SELECT  @n_empty_range = COUNT(*)
516

517
    FROM    #tmp	  
518

519

520

521
    IF ( @n_empty_range <> 0 ) 
522

523
        BEGIN
524

525
            INSERT  INTO @employee_tobe_process
526

527
                    SELECT  ddd.employee_id ,
528

529
                            ddd.mindt ,
530

531
                            ddd.maxdt
532

533
                    FROM    ( SELECT    dd.employee_id ,
534

535
                                        MIN(dd.start_date) mindt ,
536

537
                                        MAX(dd.end_date) maxdt
538

539
                              FROM      ( SELECT    x.employee_id ,
540

541
                                                    x.start_date ,
542

543
                                                    x.end_date ,
544

545
                                                    SUM(ISNULL(d.flag, 0)) flag
546

547
                                          FROM      @payroll_header x
548

549
                                                    LEFT OUTER JOIN ( SELECT
550

551
                                                              a.* ,
552

553
                                                              1 'flag'
554

555
                                                              FROM
556

557
                                                              @payroll_header a
558

559
                                                              LEFT OUTER JOIN #tmp b ON a.employee_id = b.employee_id
560

561
                                                              WHERE
562

563
                                                              a.start_date <= b.mindt0
564

565
                                                              AND a.end_date < b.maxdt0
566

567
                                                              ) d ON x.employee_id = d.employee_id
568

569
                                                              AND x.start_date = d.start_date
570

571
                                                              AND x.end_date = d.end_date
572

573
                                          GROUP BY  x.employee_id ,
574

575
                                                    x.start_date ,
576

577
                                                    x.end_date
578

579
                                        ) dd
580

581
                              GROUP BY  dd.employee_id ,
582

583
                                        dd.flag
584

585
                            ) ddd
586

587
                    ORDER BY ddd.employee_id ,
588

589
                            ddd.mindt	
590

591
        END
592

593
    ELSE 
594

595
        BEGIN
596

597
            INSERT  INTO @employee_tobe_process
598

599
                    SELECT  main.employee_id ,
600

601
                            mindate.mindt ,
602

603
                            maxdate.maxdt
604

605
                    FROM    ( SELECT DISTINCT
606

607
                                        employee_id
608

609
                              FROM      @payroll_header
610

611
                            ) main
612

613
                            INNER JOIN ( SELECT ph.employee_id ,
614

615
                                                MIN(ph.start_date) mindt
616

617
                                         FROM   @payroll_header ph
618

619
                                         GROUP BY employee_id
620

621
                                       ) mindate ON main.employee_id = mindate.employee_id
622

623
                            INNER JOIN ( SELECT employee_id ,
624

625
                                                MAX(end_date) maxdt
626

627
                                         FROM   @payroll_header ph
628

629
                                         GROUP BY employee_id
630

631
                                       ) maxdate ON main.employee_id = maxdate.employee_id
632

633
        END
634

635
				
636

637
    DROP TABLE #tmp           
638

639
                
640

641
    DECLARE @kode_form VARCHAR(7)
642

643
    DECLARE @tahun_pajak VARCHAR(4)
644

645
    DECLARE @pembetulan INT
646

647
    DECLARE @nomor_urut VARCHAR(7)
648

649
    DECLARE @npwp_pegawai VARCHAR(15)
650

651
    DECLARE @nama_pegawai VARCHAR(50)
652

653
    DECLARE @alamat_pegawai VARCHAR(255)
654

655
    DECLARE @jabatan_pegawai VARCHAR(30)
656

657
    DECLARE @jenis_kelamin VARCHAR(1)
658

659
    DECLARE @status_pegawai VARCHAR(1)
660

661
    DECLARE @status_kawin VARCHAR(1)
662

663
    DECLARE @flag_asing VARCHAR(1)
664

665
    DECLARE @status_ptkp VARCHAR(2)
666

667
    DECLARE @jumlah_tanggungan VARCHAR(1)
668

669
    DECLARE @masa_perolehan_1 VARCHAR(2)
670

671
    DECLARE @masa_perolehan_2 VARCHAR(2)
672

673
    DECLARE @flag_status VARCHAR(1)
674

675
    DECLARE @a1 DECIMAL
676

677
    DECLARE @flg_a2 VARCHAR(1)
678

679
    DECLARE @a2 DECIMAL
680

681
    DECLARE @a3 DECIMAL
682

683
    DECLARE @a4 DECIMAL
684

685
    DECLARE @a5 DECIMAL
686

687
    DECLARE @a6 DECIMAL
688

689
    DECLARE @a7 DECIMAL
690

691
    DECLARE @a8 DECIMAL
692

693
    DECLARE @a9 DECIMAL
694

695
    DECLARE @a10 DECIMAL
696

697
    DECLARE @a11 DECIMAL
698

699
    DECLARE @a12 DECIMAL
700

701
    DECLARE @a13 DECIMAL
702

703
    DECLARE @a14 DECIMAL
704

705
    DECLARE @a15 DECIMAL
706

707
    DECLARE @a16 DECIMAL
708

709
    DECLARE @a16_flag DECIMAL
710

711
    DECLARE @a17 DECIMAL
712

713
    DECLARE @a18 DECIMAL
714

715
    DECLARE @a19 DECIMAL
716

717
    DECLARE @a19b DECIMAL
718

719
    DECLARE @a20 DECIMAL
720

721
    DECLARE @a21 DECIMAL
722

723
    DECLARE @a22 DECIMAL
724

725
    DECLARE @a22a DECIMAL
726

727
    DECLARE @a22b DECIMAL
728

729
    DECLARE @a23 DECIMAL
730

731
    DECLARE @a24 DECIMAL
732

733
    DECLARE @flg_a24 VARCHAR(1)
734

735
    DECLARE @bln_a24 VARCHAR(6)
736

737
    DECLARE @masa_pajak VARCHAR(10)
738

739
    DECLARE @kode_pajak VARCHAR(30)
740

741
    DECLARE @npwp_pemotong VARCHAR(15)
742

743
    DECLARE @nama_pemotong VARCHAR(200)
744

745
    DECLARE @company_name VARCHAR(200)
746

747
    DECLARE @a19murni DECIMAL
748

749
    DECLARE @a17_att DECIMAL
750

751
    DECLARE @ktp VARCHAR(50)
752

753

754

755
    DECLARE @jml_bulan_perolehan INT
756

757
    DECLARE @tot_biaya_jabatan DECIMAL
758

759

760

761
    DECLARE @result TABLE
762

763
        (
764

765
          kode_form VARCHAR(7) ,
766

767
          tahun_pajak VARCHAR(4) ,
768

769
          pembetulan INT ,
770

771
          nomor_urut CHAR(7) ,
772

773
          npwp_pegawai VARCHAR(30) ,
774

775
          nama_pegawai VARCHAR(50) ,
776

777
          alamat_pegawai VARCHAR(255) ,
778

779
          jabatan_pegawai VARCHAR(30) ,
780

781
          jenis_kelamin VARCHAR(5) ,
782

783
          status_pegawai VARCHAR(5) ,
784

785
          status_kawin VARCHAR(5) ,
786

787
          flag_asing VARCHAR(1) ,
788

789
          status_ptkp VARCHAR(5) ,
790

791
          jumlah_tanggungan VARCHAR(1) ,
792

793
          masa_perolehan_1 VARCHAR(2) ,
794

795
          masa_perolehan_2 VARCHAR(2) ,
796

797
          flag_status VARCHAR(1) ,
798

799
          a1 DECIMAL ,
800

801
          flg_a2 VARCHAR(1) ,
802

803
          a2 DECIMAL ,
804

805
          a3 DECIMAL ,
806

807
          a4 DECIMAL ,
808

809
          a5 DECIMAL ,
810

811
          a6 DECIMAL ,
812

813
          a7 DECIMAL ,
814

815
          a8 DECIMAL ,
816

817
          a9 DECIMAL ,
818

819
          a10 DECIMAL ,
820

821
          a11 DECIMAL ,
822

823
          a12 DECIMAL ,
824

825
          a13 DECIMAL ,
826

827
          a14 DECIMAL ,
828

829
          a15 DECIMAL ,
830

831
          a16 DECIMAL ,
832

833
          a17 DECIMAL ,
834

835
          a18 DECIMAL ,
836

837
          a19 DECIMAL ,
838

839
          a20 DECIMAL ,
840

841
          a21 DECIMAL ,
842

843
          a22 DECIMAL ,
844

845
          a22a DECIMAL ,
846

847
          a22b DECIMAL ,
848

849
          a23 DECIMAL ,
850

851
          a24 DECIMAL ,
852

853
          flg_a24 VARCHAR(1) ,
854

855
          bln_a24 VARCHAR(6)
856

857
	--,emp_id VARCHAR(20)
858

859
          ,
860

861
          KTP VARCHAR(50) ,
862

863
          nama_pemotong VARCHAR(200) ,
864

865
          npwp_pemotong VARCHAR(30) ,
866

867
          kode_pajak VARCHAR(30)
868

869
	--,company_name VARCHAR(200)
870

871
        )                   
872

873
 
874

875
    DECLARE @cu0300 TABLE
876

877
        (
878

879
          [code] [nVARCHAR](4) NOT NULL ,
880

881
          [start_date] [nVARCHAR](8) NOT NULL ,
882

883
          [end_date] [nVARCHAR](8) NOT NULL ,
884

885
          [spt_no] [INT] NULL
886

887
        )
888

889

890

891
    DECLARE @cu0300_tmp TABLE
892

893
        (
894

895
          [code] [nVARCHAR](4) NOT NULL ,
896

897
          [start_date] [nVARCHAR](8) NOT NULL ,
898

899
          [end_date] [nVARCHAR](8) NOT NULL ,
900

901
          [spt_no] [INT] NULL
902

903
        )
904

905
	
906

907
    DECLARE @tbl_tr_prev_ori TABLE
908

909
        (
910

911
          employee_id VARCHAR(8) ,
912

913
          wage_type VARCHAR(4) ,
914

915
          amount DECIMAL ,
916

917
          spt_no INT ,
918

919
          run_period_month VARCHAR(2)
920

921
        )
922

923

924

925
    DECLARE @tbl_tr_prev_ori_tmp TABLE
926

927
        (
928

929
          employee_id VARCHAR(8) ,
930

931
          wage_type VARCHAR(4) ,
932

933
          amount DECIMAL ,
934

935
          spt_no INT ,
936

937
          run_period_month VARCHAR(2)
938

939
        )
940

941
 
942

943
    DECLARE @tbl_tr_prev_cum TABLE
944

945
        (
946

947
          employee_id VARCHAR(8) ,
948

949
          wage_type VARCHAR(4) ,
950

951
          amount DECIMAL ,
952

953
          spt_no INT ,
954

955
          run_period_month VARCHAR(2)
956

957
        )
958

959

960

961
    DECLARE @tbl_tr_prev_cum_tmp TABLE
962

963
        (
964

965
          employee_id VARCHAR(8) ,
966

967
          wage_type VARCHAR(4) ,
968

969
          amount DECIMAL ,
970

971
          spt_no INT ,
972

973
          run_period_month VARCHAR(2)
974

975
        )
976

977

978

979
    DECLARE @tbl_tr_dec_ori TABLE
980

981
        (
982

983
          employee_id VARCHAR(8) ,
984

985
          wage_type VARCHAR(4) ,
986

987
          amount DECIMAL ,
988

989
          spt_no INT ,
990

991
          run_period_month VARCHAR(2)
992

993
        )
994

995

996

997
    DECLARE @tbl_tr_dec_ori_tmp TABLE
998

999
        (
1000

1001
          employee_id VARCHAR(8) ,
1002

1003
          wage_type VARCHAR(4) ,
1004

1005
          amount DECIMAL ,
1006

1007
          spt_no INT ,
1008

1009
          run_period_month VARCHAR(2)
1010

1011
        )
1012

1013
 
1014

1015
    DECLARE @tbl_tr_dec TABLE
1016

1017
        (
1018

1019
          employee_id VARCHAR(8) ,
1020

1021
          wage_type VARCHAR(4) ,
1022

1023
          amount DECIMAL ,
1024

1025
          spt_no INT ,
1026

1027
          run_period_month VARCHAR(2)
1028

1029
        )
1030

1031

1032

1033
    DECLARE @tbl_tr_dec_tmp TABLE
1034

1035
        (
1036

1037
          employee_id VARCHAR(8) ,
1038

1039
          wage_type VARCHAR(4) ,
1040

1041
          amount DECIMAL ,
1042

1043
          spt_no INT ,
1044

1045
          run_period_month VARCHAR(2)
1046

1047
        )
1048

1049

1050

1051
    DECLARE @tbl_tr_dec_total TABLE
1052

1053
        (
1054

1055
          employee_id VARCHAR(8) ,
1056

1057
          amount DECIMAL ,
1058

1059
          spt_no INT
1060

1061
        )
1062

1063
	 
1064

1065
    DECLARE @tbl_tr_enc TABLE
1066

1067
        (
1068

1069
          employee_id VARCHAR(8) ,
1070

1071
          wage_type VARCHAR(4) ,
1072

1073
          amount VARCHAR(250) ,
1074

1075
          spt_no INT
1076

1077
        )
1078

1079
                   
1080

1081
    SET @kode_form = 'D113248'
1082

1083
    SET @tahun_pajak = @Year
1084

1085
    SET @pembetulan = 0
1086

1087
 
1088

1089
    DECLARE @c_landscape VARCHAR(3)
1090

1091
    DECLARE @c_emp_id VARCHAR(8)
1092

1093
    DECLARE @c_start_date INT
1094

1095
    DECLARE @c_end_date INT
1096

1097

1098

1099
    DECLARE @last_period_payroll INT
1100

1101
    DECLARE @previous_period_payroll INT
1102

1103
    DECLARE @previous_period_payroll0 INT
1104

1105
    DECLARE @previous_period_payroll_varchar VARCHAR(2)
1106

1107

1108

1109
----//Run Cursor
1110

1111
    DECLARE cur_employee CURSOR
1112

1113
    FOR
1114

1115
        SELECT  *
1116

1117
        FROM    @employee_tobe_process
1118

1119
    OPEN cur_employee
1120

1121
    FETCH cur_employee INTO @c_emp_id, @c_start_date, @c_end_date
1122

1123
    WHILE @@fetch_status = 0 
1124

1125
        BEGIN  
1126

1127
            SET @last_period_payroll = @c_end_date
1128

1129
            SET @nomor_urut = CONVERT(INTEGER, RIGHT(@c_emp_id, 7))
1130

1131

1132

1133
            SELECT  @npwp_pegawai = REPLACE(REPLACE(ISNULL(NPWP,
1134

1135
                                                           '000000000000000'),
1136

1137
                                                    '.', ''), '-', '') ,
1138

1139
                    @status_kawin = CASE LEFT(TaxStatus, 1)
1140

1141
                                      WHEN 'T' THEN '1'
1142

1143
                                      ELSE '2'
1144

1145
                                    END ,
1146

1147
                    @status_ptkp = a.TaxStatus ,
1148

1149
                    @jumlah_tanggungan = CASE RIGHT(TaxStatus, 1)
1150

1151
                                           WHEN 'K' THEN '0'
1152

1153
                                           ELSE RIGHT(TaxStatus, 1)
1154

1155
                                         END
1156

1157
            FROM    dbo.PHRPA0003 AS a
1158

1159
            WHERE   EmployeeID = @c_emp_id
1160

1161
                    AND StartDate <= @c_end_date
1162

1163
                    AND EndDate >= @c_end_date
1164

1165
	
1166

1167
            SELECT  DISTINCT
1168

1169
                    @a17 = PTKP
1170

1171
            FROM    dbo.PHRPYCU0302
1172

1173
            WHERE   StartDate <= @c_end_date
1174

1175
                    AND EndDate >= @c_end_date
1176

1177
                    AND TaxStatus = ( SELECT DISTINCT
1178

1179
                                                TaxStatus
1180

1181
                                      FROM      dbo.PHRPA0003
1182

1183
                                      WHERE     EmployeeID = @c_emp_id
1184

1185
                                                AND StartDate <= @c_end_date
1186

1187
                                                AND EndDate >= @c_end_date
1188

1189
                                    )
1190

1191

1192

1193
            SELECT  @nama_pegawai = FullName ,
1194

1195
                    @jenis_kelamin = b.GenderDescription ,
1196

1197
                    @ktp = c.IDDescription
1198

1199
            FROM    dbo.PHRPA0001 AS a
1200

1201
                    LEFT JOIN dbo.PHRPAGENDER AS b ON a.Gender = b.Gender
1202

1203
                                                      AND b.StartDate <= @c_end_date
1204

1205
                                                      AND b.EndDate >= @c_end_date
1206

1207
                    LEFT JOIN dbo.PHRPA0013 AS c ON a.EmployeeID = c.EmployeeID
1208

1209
                                                    AND c.StartDate <= @c_end_date
1210

1211
                                                    AND c.EndDate >= @c_end_date
1212

1213
            WHERE   a.EmployeeID = @c_emp_id
1214

1215
                    AND a.StartDate <= @c_end_date
1216

1217
                    AND a.EndDate >= @c_end_date
1218

1219
					AND c.IDType = '01' 
1220

1221

1222

1223
			IF(@ktp IS NULL) ------ tidak punya master data id / ktp add by Tri nwh 20240723
1224

1225
			BEGIN
1226

1227
				 SELECT  @nama_pegawai = FullName ,
1228

1229
                    @jenis_kelamin = b.GenderDescription ,
1230

1231
                    @ktp = a.IDCard
1232

1233
				 FROM    dbo.PHRPA0001 AS a
1234

1235
                 LEFT JOIN dbo.PHRPAGENDER AS b ON a.Gender = b.Gender
1236

1237
                                                      AND b.StartDate <= @c_end_date
1238

1239
                                                      AND b.EndDate >= @c_end_date
1240

1241
					WHERE   a.EmployeeID = @c_emp_id
1242

1243
                    AND a.StartDate <= @c_end_date
1244

1245
                    AND a.EndDate >= @c_end_date
1246

1247
			END
1248

1249
			
1250

1251
            SELECT  @nama_pemotong = t.TaxOfficeDescription ,
1252

1253
                    @npwp_pemotong = o.NPWP
1254

1255
            FROM    dbo.PHRPA0002 AS a
1256

1257
                    LEFT JOIN dbo.PCMEPEMPOFF AS o ON a.EmployeeOffice = o.EmployeeOffice
1258

1259
                                                      AND o.StartDate <= @c_end_date
1260

1261
                                                      AND o.EndDate >= @c_end_date
1262

1263
                    LEFT JOIN dbo.PHRPYTAXOFF AS t ON t.TaxOffice = o.TaxOffice
1264

1265
                                                      AND t.StartDate <= @c_end_date
1266

1267
                                                      AND t.EndDate >= @c_end_date
1268

1269
            WHERE   a.StartDate <= @c_end_date
1270

1271
                    AND a.EndDate >= @c_end_date
1272

1273
                    AND a.EmployeeID = @c_emp_id
1274

1275
			
1276

1277
            SELECT  @kode_pajak = e.TaxCode
1278

1279
            FROM    dbo.PHRPA0002 AS a
1280

1281
                    LEFT JOIN dbo.PCMEPEMPTYP AS e ON a.EmployeeType = e.EmployeeType
1282

1283
            WHERE   a.StartDate <= @c_end_date
1284

1285
                    AND a.EndDate >= @c_end_date
1286

1287
                    AND a.EmployeeID = @c_emp_id
1288

1289
			
1290

1291
	--//alamat & flag status belakangan
1292

1293
            SELECT  @alamat_pegawai = REPLACE(md06.Address, ',', ' ')
1294

1295
            FROM    dbo.PHRPA0006 AS md06
1296

1297
            WHERE   EmployeeID = @c_emp_id
1298

1299
                    AND StartDate <= @c_end_date
1300

1301
                    AND EndDate >= @c_end_date
1302

1303
                    AND AddressType = @npwp_address_subtype
1304

1305

1306

1307
            SELECT  @jabatan_pegawai = mdobj.ObjectDescription
1308

1309
            FROM    dbo.PHRPA0002 AS md02
1310

1311
                    INNER JOIN dbo.PHROM0001 AS mdobj ON md02.Position = mdobj.ObjectID
1312

1313
                                                         AND mdobj.ObjectClass = 'P'
1314

1315
                                                         AND mdobj.StartDate <= @c_end_date
1316

1317
                                                         AND mdobj.EndDate >= @c_end_date
1318

1319
            WHERE   md02.EmployeeID = @c_emp_id
1320

1321
                    AND md02.StartDate <= @c_end_date
1322

1323
                    AND md02.EndDate >= @c_end_date
1324

1325
	
1326

1327
            SELECT  @status_pegawai = CASE EmployeeStatus
1328

1329
                                        WHEN '01' THEN '1'
1330

1331
                                        WHEN '03' THEN '2'
1332

1333
                                        ELSE '1'
1334

1335
                                      END ,
1336

1337
                    @flag_asing = CASE EmployeeType
1338

1339
                                    WHEN '05' THEN '1'
1340

1341
                                    ELSE '0'
1342

1343
                                  END
1344

1345
            FROM    dbo.PHRPA0002 AS md02
1346

1347
            WHERE   EmployeeID = @c_emp_id
1348

1349
                    AND StartDate <= @c_end_date
1350

1351
                    AND EndDate >= @c_end_date
1352

1353

1354

1355
            SET @masa_perolehan_1 = CONVERT(INTEGER, SUBSTRING(CONVERT(VARCHAR, @c_start_date),
1356

1357
                                                              5, 2))
1358

1359
            SET @masa_perolehan_2 = CONVERT(INTEGER, SUBSTRING(CONVERT(VARCHAR, @c_end_date),
1360

1361
                                                              5, 2))
1362

1363
            SET @jml_bulan_perolehan = ( CONVERT(INT, @masa_perolehan_2)
1364

1365
                                         - CONVERT(INT, @masa_perolehan_1) + 1 )
1366

1367

1368

1369
	--//#region getwtconfiguration
1370

1371
            DELETE  @cu0300_tmp
1372

1373

1374

1375
            INSERT  INTO @cu0300_tmp
1376

1377
                    SELECT  WageTypeDefinition ,
1378

1379
                            StartDate ,
1380

1381
                            EndDate ,
1382

1383
                            SPTNo
1384

1385
                    FROM    dbo.PHRPYCU0300
1386

1387
                    WHERE   StartDate <= @c_end_date
1388

1389
                            AND EndDate >= @c_start_date
1390

1391
                            AND SPTNo > 0
1392

1393

1394

1395
            UPDATE  @cu0300_tmp
1396

1397
            SET     start_date = @begda
1398

1399
            WHERE   start_date < @c_start_date
1400

1401
	  
1402

1403
            UPDATE  @cu0300_tmp
1404

1405
            SET     end_date = @endda
1406

1407
            WHERE   end_date > @c_end_date
1408

1409

1410

1411
--/*
1412

1413
            DELETE  @cu0300
1414

1415

1416

1417
            INSERT  INTO @cu0300
1418

1419
                    SELECT  cu0300.*
1420

1421
                    FROM    @cu0300_tmp AS cu0300
1422

1423
                            INNER JOIN ( SELECT code ,
1424

1425
                                                MIN(start_date) AS start_date ,
1426

1427
                                                MAX(end_date) AS end_date
1428

1429
                                         FROM   @cu0300_tmp
1430

1431
                                         GROUP BY code
1432

1433
                                       ) a ON cu0300.code = a.code
1434

1435
                                              AND cu0300.end_date = a.end_date
1436

1437

1438

1439
            DELETE  @tbl_tr_dec
1440

1441
            DELETE  @tbl_tr_dec_ori
1442

1443

1444

1445
            DELETE  @tbl_tr_dec_tmp
1446

1447
            DELETE  @tbl_tr_dec_ori_tmp
1448

1449

1450

1451
            DECLARE @cc_landscape VARCHAR(3)
1452

1453
            DECLARE @cc_code VARCHAR(4)
1454

1455
            DECLARE @cc_start_date INT
1456

1457
            DECLARE @cc_end_date INT
1458

1459
            DECLARE @cc_spt_no INT
1460

1461

1462

1463
            INSERT  INTO @tbl_tr_dec_tmp
1464

1465
                    SELECT  tr301.EmployeeID ,
1466

1467
                            tr301.WageType ,
1468

1469
                            CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount), '0'),
1470

1471
                                         ',', '.') AS DECIMAL(22, 0)) ,
1472

1473
                            cu300.spt_no ,
1474

1475
                            tr301.RunPeriodMonth
1476

1477
                    FROM    dbo.PHRPYTR0301CUM AS tr301
1478

1479
                            INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1480

1481
                    WHERE   tr301.EmployeeID = @c_emp_id
1482

1483
                            AND tr301.PayPeriodMonth = SUBSTRING(CONVERT(VARCHAR, @last_period_payroll),
1484

1485
                                                              5, 2)
1486

1487
                            AND tr301.PayPeriodYear = tr301.RunPeriodYear
1488

1489
                            AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1490

1491
                                                           4)
1492

1493
		  
1494

1495
	--//get the latest run data
1496

1497
            INSERT  INTO @tbl_tr_dec
1498

1499
                    SELECT  tr_dec.*
1500

1501
                    FROM    @tbl_tr_dec_tmp AS tr_dec
1502

1503
                            INNER JOIN ( SELECT employee_id ,
1504

1505
                                                wage_type ,
1506

1507
                                                MAX(run_period_month) AS run_period_month
1508

1509
                                         FROM   @tbl_tr_dec_tmp
1510

1511
                                         GROUP BY employee_id ,
1512

1513
                                                wage_type
1514

1515
                                       ) a ON tr_dec.employee_id = a.employee_id
1516

1517
                                              AND tr_dec.wage_type = a.wage_type
1518

1519
                                              AND tr_dec.run_period_month = a.run_period_month
1520

1521

1522

1523

1524

1525
            INSERT  INTO @tbl_tr_dec_ori_tmp
1526

1527
                    SELECT  tr301.EmployeeID ,
1528

1529
                            tr301.WageType ,
1530

1531
                            CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount), '0'),
1532

1533
                                         ',', '.') AS DECIMAL(22, 0)) ,
1534

1535
                            cu300.spt_no ,
1536

1537
                            tr301.RunPeriodMonth
1538

1539
                    FROM    dbo.PHRPYTR0301 AS tr301
1540

1541
                            INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1542

1543
                    WHERE   tr301.EmployeeID = @c_emp_id
1544

1545
                            AND tr301.PayPeriodMonth = SUBSTRING(CONVERT(VARCHAR, @last_period_payroll),
1546

1547
                                                              5, 2)
1548

1549
                            AND tr301.PayPeriodYear = tr301.RunPeriodYear
1550

1551
                            AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1552

1553
                                                           4)
1554

1555
		  
1556

1557
	--//get the latest run data
1558

1559
            INSERT  INTO @tbl_tr_dec_ori
1560

1561
                    SELECT  tr_dec_ori.*
1562

1563
                    FROM    @tbl_tr_dec_ori_tmp AS tr_dec_ori
1564

1565
                            INNER JOIN ( SELECT employee_id ,
1566

1567
                                                wage_type ,
1568

1569
                                                MAX(run_period_month) AS run_period_month
1570

1571
                                         FROM   @tbl_tr_dec_ori_tmp
1572

1573
                                         GROUP BY employee_id ,
1574

1575
                                                wage_type
1576

1577
                                       ) a ON tr_dec_ori.employee_id = a.employee_id
1578

1579
                                              AND tr_dec_ori.wage_type = a.wage_type
1580

1581
                                              AND tr_dec_ori.run_period_month = a.run_period_month
1582

1583
		
1584

1585
            IF ( @masa_perolehan_1 > '1'
1586

1587
                 OR @masa_perolehan_1 > '01'
1588

1589
               ) 
1590

1591
                BEGIN
1592

1593
                    SET @previous_period_payroll = CONVERT(INT, @masa_perolehan_1)
1594

1595
                        - 1
1596

1597
                    IF ( @previous_period_payroll < 10 ) 
1598

1599
                        SET @previous_period_payroll_varchar = '0'
1600

1601
                            + CONVERT(VARCHAR(1), @previous_period_payroll)
1602

1603
                    ELSE 
1604

1605
                        SET @previous_period_payroll_varchar = CONVERT(VARCHAR(2), @previous_period_payroll)
1606

1607
			
1608

1609
		--//get the latest pay period if previous period no pay period.
1610

1611
                    SET @previous_period_payroll0 = @previous_period_payroll
1612

1613
                    SELECT TOP ( 1 )
1614

1615
                            @previous_period_payroll0 = CONVERT(INT, PayPeriodMonth)
1616

1617
                    FROM    dbo.PHRPYTR0300
1618

1619
                    WHERE   EmployeeID = @c_emp_id
1620

1621
                            AND PayPeriodMonth <= @previous_period_payroll_varchar
1622

1623
                            AND PayPeriodYear = LEFT(@last_period_payroll, 4)
1624

1625
                            AND RunPeriodYear = LEFT(@last_period_payroll, 4)
1626

1627
                    ORDER BY PayPeriodMonth DESC
1628

1629
			
1630

1631
                    IF ( @previous_period_payroll0 < 10 ) 
1632

1633
                        SET @previous_period_payroll_varchar = '0'
1634

1635
                            + CONVERT(VARCHAR(1), @previous_period_payroll0)
1636

1637
                    ELSE 
1638

1639
                        SET @previous_period_payroll_varchar = CONVERT(VARCHAR(2), @previous_period_payroll0)
1640

1641
					
1642

1643
                    DELETE  FROM @tbl_tr_prev_ori
1644

1645
                    DELETE  FROM @tbl_tr_prev_cum
1646

1647
		
1648

1649
                    DELETE  FROM @tbl_tr_prev_ori_tmp
1650

1651
                    DELETE  FROM @tbl_tr_prev_cum_tmp
1652

1653

1654

1655
                    INSERT  INTO @tbl_tr_prev_ori_tmp
1656

1657
                            SELECT  tr301.EmployeeID ,
1658

1659
                                    tr301.WageType ,
1660

1661
                                    CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount),
1662

1663
                                                        '0'), ',', '.') AS DECIMAL(22,
1664

1665
                                                              0)) ,
1666

1667
                                    cu300.spt_no ,
1668

1669
                                    tr301.RunPeriodMonth
1670

1671
                            FROM    dbo.PHRPYTR0301 AS tr301
1672

1673
                                    INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1674

1675
                            WHERE   tr301.EmployeeID = @c_emp_id
1676

1677
                                    AND tr301.PayPeriodMonth = @previous_period_payroll_varchar
1678

1679
                                    AND tr301.PayPeriodYear = tr301.RunPeriodYear
1680

1681
                                    AND tr301.RunPeriodMonth = LEFT(@last_period_payroll,
1682

1683
                                                              4)
1684

1685

1686

1687
		--//get the latest run data
1688

1689
                    INSERT  INTO @tbl_tr_prev_ori
1690

1691
                            SELECT  tr_prev_ori.*
1692

1693
                            FROM    @tbl_tr_prev_ori_tmp AS tr_prev_ori
1694

1695
                                    INNER JOIN ( SELECT employee_id ,
1696

1697
                                                        wage_type ,
1698

1699
                                                        MAX(run_period_month) AS run_period_month
1700

1701
                                                 FROM   @tbl_tr_prev_ori_tmp
1702

1703
                                                 GROUP BY employee_id ,
1704

1705
                                                        wage_type
1706

1707
                                               ) a ON tr_prev_ori.employee_id = a.employee_id
1708

1709
                                                      AND tr_prev_ori.wage_type = a.wage_type
1710

1711
                                                      AND tr_prev_ori.run_period_month = a.run_period_month
1712

1713

1714

1715
                    INSERT  INTO @tbl_tr_prev_cum_tmp
1716

1717
                            SELECT  tr301.EmployeeID ,
1718

1719
                                    tr301.WageType ,
1720

1721
                                    CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount),
1722

1723
                                                        '0'), ',', '.') AS DECIMAL(22,
1724

1725
                                                              0)) ,
1726

1727
                                    cu300.spt_no ,
1728

1729
                                    tr301.RunPeriodMonth
1730

1731
                            FROM    dbo.PHRPYTR0301CUM AS tr301
1732

1733
                                    INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1734

1735
                            WHERE   tr301.EmployeeID = @c_emp_id
1736

1737
                                    AND tr301.PayPeriodMonth = @previous_period_payroll_varchar
1738

1739
                                    AND tr301.PayPeriodYear = tr301.RunPeriodYear
1740

1741
                                    AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1742

1743
                                                              4)
1744

1745

1746

1747
		--//get the latest run data
1748

1749
                    INSERT  INTO @tbl_tr_prev_cum
1750

1751
                            SELECT  tr_prev_cum.*
1752

1753
                            FROM    @tbl_tr_prev_cum_tmp AS tr_prev_cum
1754

1755
                                    INNER JOIN ( SELECT employee_id ,
1756

1757
                                                        wage_type ,
1758

1759
                                                        MAX(run_period_month) AS run_period_month
1760

1761
                                                 FROM   @tbl_tr_prev_cum_tmp
1762

1763
                                                 GROUP BY employee_id ,
1764

1765
                                                        wage_type
1766

1767
                                               ) a ON tr_prev_cum.employee_id = a.employee_id
1768

1769
                                                      AND tr_prev_cum.wage_type = a.wage_type
1770

1771
                                                      AND tr_prev_cum.run_period_month = a.run_period_month	
1772

1773
                END 
1774

1775

1776

1777
            DECLARE @emp_status VARCHAR(2) ,
1778

1779
                @emp_type VARCHAR(2) ,
1780

1781
                @movement_type VARCHAR(2) ,
1782

1783
                @movement_reason VARCHAR(2) ,
1784

1785
                @emp_type_payroll VARCHAR(20) ,
1786

1787
                @movement_reason_payroll VARCHAR(20) ,
1788

1789
                @is_pegawai_baru VARCHAR(1)
1790

1791
		
1792

1793
            DECLARE @death_mov_reason VARCHAR(5)
1794

1795
            SELECT TOP ( 1 )
1796

1797
                    @death_mov_reason = Value1
1798

1799
            FROM    dbo.PCMEPGENPARAM
1800

1801
            WHERE   Parameter = 'HR_ESPT_MOV_REASON_DEATH'
1802

1803
                    AND StartDate <= @endda
1804

1805
                    AND EndDate >= @endda
1806

1807
		
1808

1809
            SELECT  @emp_status = md02.EmployeeStatus ,
1810

1811
                    @emp_type = md02.EmployeeType ,
1812

1813
                    @movement_type = md02.MovementType ,
1814

1815
                    @movement_reason = md02.MovementReason ,
1816

1817
                    @emp_type_payroll = ret.PayrollProcess ,
1818

1819
                    @movement_reason_payroll = rmr.PayrollProcess
1820

1821
            FROM    dbo.PHRPA0002 md02
1822

1823
                    INNER JOIN dbo.PCMEPEMPTYP ret ON md02.EmployeeType = ret.EmployeeType
1824

1825
                    INNER JOIN dbo.PCMEPMOVR rmr ON md02.MovementReason = rmr.MovementReason
1826

1827
            WHERE   EmployeeID = @c_emp_id
1828

1829
                    AND md02.StartDate <= @endda
1830

1831
                    AND md02.EndDate >= @endda
1832

1833
		
1834

1835
	
1836

1837
            SET @is_pegawai_baru = '0'
1838

1839
            IF @c_start_date > @begda 
1840

1841
                BEGIN
1842

1843
                    SELECT  @is_pegawai_baru = CASE WHEN HiringDate >= @c_start_date
1844

1845
                                                    THEN '1'
1846

1847
                                                    ELSE '0'
1848

1849
                                               END
1850

1851
                    FROM    dbo.PHRPA0015
1852

1853
                    WHERE   EmployeeID = @c_emp_id
1854

1855
                END
1856

1857

1858

1859
	--//Setting flag status
1860

1861
            IF @emp_status = '01'
1862

1863
                AND @masa_perolehan_1 = '1'
1864

1865
                AND @masa_perolehan_2 = '12'
1866

1867
                AND ISNULL(@emp_type_payroll, '') <> 'EXP' 
1868

1869
                SET @flag_status = '0'
1870

1871
            ELSE 
1872

1873
                IF @emp_status = '01'
1874

1875
                    AND @masa_perolehan_1 = '1'
1876

1877
                    AND @masa_perolehan_2 = '12'
1878

1879
                    AND ISNULL(@emp_type_payroll, '') = 'EXP' 
1880

1881
                    SET @flag_status = '3'
1882

1883
                ELSE 
1884

1885
                    IF @emp_status = '01'
1886

1887
                        AND @masa_perolehan_2 <> '12' 
1888

1889
                        SET @flag_status = '1'
1890

1891
                    ELSE 
1892

1893
                        IF @is_pegawai_baru = '1' 
1894

1895
                            SET @flag_status = '4'
1896

1897
                        ELSE 
1898

1899
                            IF @emp_status = '01'
1900

1901
                                AND @masa_perolehan_2 <> '1'
1902

1903
                                AND @masa_perolehan_2 = '12' 
1904

1905
                                SET @flag_status = '5'
1906

1907
                            ELSE 
1908

1909
                                IF ( @movement_type = '17'
1910

1911
                                     OR @emp_status <> '01'
1912

1913
                                   ) 
1914

1915
                                    BEGIN
1916

1917
                                        IF @movement_reason = '12' 
1918

1919
                                            SET @flag_status = '2'
1920

1921
                                        ELSE 
1922

1923
                                            IF @movement_reason = @death_mov_reason
1924

1925
                                                OR @emp_type_payroll = 'EXP' 
1926

1927
                                                SET @flag_status = '3'
1928

1929
                                            ELSE 
1930

1931
                                                IF @masa_perolehan_1 = '1'
1932

1933
                                                    AND @masa_perolehan_2 = '12' 
1934

1935
                                                    SET @flag_status = '0'
1936

1937
                                                ELSE 
1938

1939
                                                    SET @flag_status = '2'
1940

1941
                                    END
1942

1943

1944

1945
            SELECT  @a1 = ISNULL(SUM(amount), 0)
1946

1947
            FROM    @tbl_tr_dec
1948

1949
            WHERE   spt_no = 1
1950

1951
            GROUP BY spt_no
1952

1953

1954

1955
            IF ( @masa_perolehan_1 <> '1' ) 
1956

1957
                SELECT  @a1 = @a1 - ISNULL(SUM(amount), 0)
1958

1959
                FROM    @tbl_tr_prev_cum
1960

1961
                WHERE   spt_no = 1
1962

1963
                GROUP BY spt_no
1964

1965

1966

1967
            SET @a1 = ISNULL(@a1, 0)
1968

1969
            SELECT  @a2 = ISNULL(SUM(amount), 0)
1970

1971
            FROM    @tbl_tr_dec
1972

1973
            WHERE   spt_no = 2
1974

1975
            GROUP BY spt_no
1976

1977

1978

1979
            IF ( @masa_perolehan_1 <> '1' ) 
1980

1981
                SELECT  @a2 = @a2 - ISNULL(SUM(amount), 0)
1982

1983
                FROM    @tbl_tr_prev_cum
1984

1985
                WHERE   spt_no = 2
1986

1987
                GROUP BY spt_no
1988

1989
				  
1990

1991
				
1992

1993
            SET @a2 = ISNULL(@a2, 0)
1994

1995
	
1996

1997
            SELECT  @a3 = ISNULL(SUM(amount), 0)
1998

1999
            FROM    @tbl_tr_dec
2000

2001
            WHERE   spt_no = 3
2002

2003
            GROUP BY spt_no
2004

2005
	  
2006

2007
            IF ( @masa_perolehan_1 <> '1' ) 
2008

2009
                SELECT  @a3 = @a3 - ISNULL(SUM(amount), 0)
2010

2011
                FROM    @tbl_tr_prev_cum
2012

2013
                WHERE   spt_no = 3
2014

2015
                GROUP BY spt_no
2016

2017
				  
2018

2019
            SET @a3 = ISNULL(@a3, 0)
2020

2021
	
2022

2023
            SELECT  @a4 = ISNULL(SUM(amount), 0)
2024

2025
            FROM    @tbl_tr_dec
2026

2027
            WHERE   spt_no = 4
2028

2029
            GROUP BY spt_no
2030

2031
	
2032

2033
            SET @a4 = ISNULL(@a4, 0)
2034

2035
	
2036

2037
            SELECT  @a5 = ISNULL(SUM(amount), 0)
2038

2039
            FROM    @tbl_tr_dec
2040

2041
            WHERE   spt_no = 5
2042

2043
            GROUP BY spt_no
2044

2045
					  
2046

2047
            IF ( @masa_perolehan_1 <> '1' ) 
2048

2049
                SELECT  @a5 = @a5 - ISNULL(SUM(amount), 0)
2050

2051
                FROM    @tbl_tr_prev_cum
2052

2053
                WHERE   spt_no = 5
2054

2055
                GROUP BY spt_no
2056

2057
					  
2058

2059
            SET @a5 = ISNULL(@a5, 0)
2060

2061
            SELECT  @a6 = ISNULL(SUM(amount), 0)
2062

2063
            FROM    @tbl_tr_dec
2064

2065
            WHERE   spt_no = 6
2066

2067
            GROUP BY spt_no
2068

2069
	
2070

2071
            SET @a6 = ISNULL(@a6, 0)
2072

2073

2074

2075
            SET @a7 = ISNULL(@a1 + @a2 + @a3 + @a4 + @a5 + @a6, 0)
2076

2077

2078

2079
            SELECT  @a8 = ISNULL(SUM(amount), 0)
2080

2081
            FROM    @tbl_tr_dec
2082

2083
            WHERE   spt_no = 8
2084

2085
            GROUP BY spt_no
2086

2087
					  
2088

2089
            IF ( @masa_perolehan_1 <> '1' ) 
2090

2091
                SELECT  @a8 = @a8 - ISNULL(SUM(amount), 0)
2092

2093
                FROM    @tbl_tr_prev_cum
2094

2095
                WHERE   spt_no = 8
2096

2097
                GROUP BY spt_no
2098

2099

2100

2101
            SET @a8 = ISNULL(@a8, 0)
2102

2103

2104

2105
            SET @a9 = ISNULL(@a7 + @a8, 0)
2106

2107

2108

2109
            SELECT  @a10 = ISNULL(SUM(amount), 0)
2110

2111
            FROM    @tbl_tr_dec
2112

2113
            WHERE   spt_no = 10
2114

2115
            GROUP BY spt_no
2116

2117

2118

2119
            IF ( @masa_perolehan_1 <> '1' ) 
2120

2121
                SELECT  @a10 = @a10 - ISNULL(SUM(amount), 0)
2122

2123
                FROM    @tbl_tr_prev_cum
2124

2125
                WHERE   spt_no = 10
2126

2127
                GROUP BY spt_no
2128

2129

2130

2131
            SET @a10 = ISNULL(@a10, 0)
2132

2133

2134

2135
            SET @tot_biaya_jabatan = 500000 * @jml_bulan_perolehan
2136

2137
            IF ( @a10 > @tot_biaya_jabatan ) 
2138

2139
                BEGIN
2140

2141
                    SET @a10 = @tot_biaya_jabatan
2142

2143
                    SET @a11 = 0
2144

2145
                END
2146

2147

2148

2149
            SELECT  @a11 = ISNULL(SUM(amount), 0)
2150

2151
            FROM    @tbl_tr_dec
2152

2153
            WHERE   spt_no = 11
2154

2155
            GROUP BY spt_no
2156

2157
					  
2158

2159
            IF ( @masa_perolehan_1 <> '1' ) 
2160

2161
                SELECT  @a11 = @a11 - ISNULL(SUM(amount), 0)
2162

2163
                FROM    @tbl_tr_prev_cum
2164

2165
                WHERE   spt_no = 11
2166

2167
                GROUP BY spt_no
2168

2169
					  
2170

2171
            SET @a11 = ISNULL(@a11, 0)
2172

2173

2174

2175
            IF ( ( @a10 + @a11 ) > @tot_biaya_jabatan ) 
2176

2177
                BEGIN 
2178

2179
                    SET @a11 = @tot_biaya_jabatan - @a10
2180

2181
                END
2182

2183

2184

2185
            SELECT  @a12 = ISNULL(SUM(amount), 0)
2186

2187
            FROM    @tbl_tr_dec
2188

2189
            WHERE   spt_no = 12
2190

2191
            GROUP BY spt_no
2192

2193

2194

2195
            IF ( @masa_perolehan_1 <> '1' ) 
2196

2197
                SELECT  @a12 = @a12 - ISNULL(SUM(amount), 0)
2198

2199
                FROM    @tbl_tr_prev_cum
2200

2201
                WHERE   spt_no = 12
2202

2203
                GROUP BY spt_no
2204

2205

2206

2207
            SET @a12 = ISNULL(@a12, 0)
2208

2209
	
2210

2211
            SET @a13 = ISNULL(@a10 + @a11 + @a12, 0)
2212

2213
	
2214

2215
            SET @a14 = ISNULL(@a9 - @a13, 0)
2216

2217

2218

2219
            SELECT  @a15 = ISNULL(SUM(amount), 0)
2220

2221
            FROM    @tbl_tr_dec_ori
2222

2223
            WHERE   spt_no = 15
2224

2225
            GROUP BY spt_no
2226

2227
            SET @a15 = ISNULL(@a15, 0)
2228

2229

2230

2231
            SET @a16 = ISNULL(@a14 + @a15, 0)
2232

2233

2234

2235
	--//spt_no 16 case khusus flag_status khusus
2236

2237
            SELECT  @a16_flag = ISNULL(SUM(amount), 0)
2238

2239
            FROM    @tbl_tr_dec_ori
2240

2241
            WHERE   spt_no = 16
2242

2243
            GROUP BY spt_no
2244

2245
            SET @a16_flag = ISNULL(@a16_flag, 0)
2246

2247

2248

2249
            IF @movement_reason = @death_mov_reason
2250

2251
                OR ISNULL(@emp_type_payroll, '') = 'EXP' 
2252

2253
                BEGIN
2254

2255
                    SELECT  @a16 = CASE WHEN ISNULL(@emp_type_payroll, '') = 'EXP'
2256

2257
                                        THEN @a16
2258

2259
                                        ELSE @a16 * 12
2260

2261
                                             / ( CONVERT(INT, @masa_perolehan_2)
2262

2263
                                                 - CONVERT(INT, @masa_perolehan_1)
2264

2265
                                                 + 1 )
2266

2267
                                   END
2268

2269
                END
2270

2271
	
2272

2273
            IF @flag_status = '1'
2274

2275
                OR @flag_status = '3' 
2276

2277
                BEGIN
2278

2279
                    SET @a16 = @a16_flag
2280

2281
                END
2282

2283

2284

2285
            SET @a18 = @a16 - @a17
2286

2287
	
2288

2289
            IF ( RIGHT(RTRIM(CAST(@a18 AS VARCHAR(19))), 3) <> '000' ) 
2290

2291
                BEGIN
2292

2293
                    DECLARE @Pembulatan1000 AS VARCHAR(19)
2294

2295
                    SET @Pembulatan1000 = CAST(@a18 AS VARCHAR(19)); 		
2296

2297
                    SET @a18 = SUBSTRING(@Pembulatan1000, 1,
2298

2299
                                         LEN(RTRIM(@Pembulatan1000)) - 3)
2300

2301
                        + REPLICATE('0', 3); 		
2302

2303
                END
2304

2305

2306

2307
	--//ambil mt murni tanpa kondisi
2308

2309
            SELECT  @a19murni = ISNULL(SUM(amount), 0)
2310

2311
            FROM    @tbl_tr_dec
2312

2313
            WHERE   spt_no = 19
2314

2315
            GROUP BY spt_no
2316

2317

2318

2319
	--//ambil att murni tanpa kondisi
2320

2321
            SELECT  @a17_att = ISNULL(SUM(amount), 0)
2322

2323
            FROM    @tbl_tr_dec_ori
2324

2325
            WHERE   spt_no = 99
2326

2327
            GROUP BY spt_no
2328

2329

2330

2331
	--//cek status employee apakah sudah resign
2332

2333
            SELECT  @a19 = ISNULL(SUM(amount), 0)
2334

2335
            FROM    @tbl_tr_dec
2336

2337
            WHERE   spt_no = 19
2338

2339
            GROUP BY spt_no
2340

2341

2342

2343
            IF ISNULL(@emp_type_payroll, '') = 'EXP' 
2344

2345
                BEGIN
2346

2347
                    SELECT  @a19b = ISNULL(SUM(amount), 0)
2348

2349
                    FROM    @tbl_tr_prev_cum
2350

2351
                    WHERE   spt_no = 19
2352

2353
                    GROUP BY spt_no
2354

2355
                    SET @a19 = @a19 * 12 / ( CONVERT(INT, @masa_perolehan_2)
2356

2357
                                             - CONVERT(INT, @masa_perolehan_1)
2358

2359
                                             + 1 )			
2360

2361
                END
2362

2363
            ELSE 
2364

2365
                IF ( @movement_type = 17
2366

2367
                     OR @emp_status <> '01'
2368

2369
                   ) 
2370

2371
                    BEGIN
2372

2373
                        IF @movement_reason = '12' 
2374

2375
                            BEGIN
2376

2377
                                SET @a19 = ISNULL(@a19murni, 0)
2378

2379
                            END
2380

2381
                    END
2382

2383
                ELSE 
2384

2385
                    BEGIN
2386

2387
                        IF ( ( @masa_perolehan_1 = '1' )
2388

2389
                             AND ( @masa_perolehan_2 <> '12' )
2390

2391
                           ) 
2392

2393
                            BEGIN
2394

2395
                                SET @a19 = @a19 * 12
2396

2397
                                    / CONVERT(INT, @masa_perolehan_2)
2398

2399
                            END
2400

2401
                    END
2402

2403

2404

2405
            SET @a19 = ISNULL(@a19, 0)
2406

2407

2408

2409
            SELECT  @a20 = CASE WHEN CONVERT(INT, @masa_perolehan_1) > 1
2410

2411
                                THEN ISNULL(SUM(amount), 0)
2412

2413
                                ELSE 0
2414

2415
                           END
2416

2417
            FROM    @tbl_tr_dec_ori
2418

2419
            WHERE   spt_no = 20
2420

2421
            GROUP BY spt_no
2422

2423

2424

2425
            SET @a20 = ISNULL(@a20, 0)
2426

2427
			
2428

2429
	------------------ // cek apa sdh pernah running di period sebelum, untuk kebutuhan init paycum, mengganggap a20 lama atau a18 baru menjadi 0 // -----------------
2430

2431
            DECLARE @flag_running VARCHAR(200)
2432

2433
            SELECT  @flag_running = CASE WHEN COUNT(tr.EmployeeID) <= 0
2434

2435
                                         THEN 'no_data'
2436

2437
                                         ELSE 'yes_data'
2438

2439
                                    END
2440

2441
            FROM    dbo.PHRPYTR0300 AS tr
2442

2443
            WHERE   tr.RunPeriodMonth = tr.PayPeriodMonth
2444

2445
                    AND tr.RunPeriodYear = tr.PayPeriodYear
2446

2447
                    AND tr.RunPeriodMonth = @previous_period_payroll_varchar
2448

2449
                    AND tr.EmployeeID = @c_emp_id
2450

2451
	------------------ // pengecekan running selesai // ------------------ 
2452

2453

2454

2455
            IF ( @emp_status = '01'
2456

2457
                 AND NOT ( @masa_perolehan_1 = '1'
2458

2459
                           AND @masa_perolehan_2 = '12'
2460

2461
                         )
2462

2463
               )
2464

2465
                OR ISNULL(@emp_type_payroll, '') = 'EXP'
2466

2467
                OR @movement_reason = @death_mov_reason 
2468

2469
                BEGIN	
2470

2471
                    IF @flag_running = 'no_data'  -----// by Tri 20151229 untuk perubahan case upload init paycum
2472

2473
                        BEGIN
2474

2475
                            SET @a21 = ISNULL(@a19murni - 0, 0)
2476

2477
                        END 
2478

2479
                    ELSE 
2480

2481
                        BEGIN
2482

2483
                            SET @a21 = ISNULL(@a19murni - @a20, 0)
2484

2485
                        END --@a2--@a19 								
2486

2487
                END
2488

2489

2490

2491
--		ELSE
2492

2493
            SET @a21 = ISNULL(@a19 - @a20, 0)
2494

2495

2496

2497
		----// sementara di hard-code dulu, untuk handling case mks.
2498

2499

2500

2501
            SET @a22 = @a21 + @a20
2502

2503
            SET @a22a = 0
2504

2505
            SET @a22b = @a21
2506

2507
            SET @a23 = ISNULL(@a21 - @a22, 0)
2508

2509
            SET @a24 = ISNULL(@a23, 0)
2510

2511

2512

2513
            SET @bln_a24 = SUBSTRING(CONVERT(VARCHAR, @c_end_date), 5, 2)
2514

2515
                + LEFT(CONVERT(VARCHAR, @c_end_date), 4) 
2516

2517

2518

2519
            IF ( @a21 - @a22 = 0 ) 
2520

2521
                BEGIN
2522

2523
                    SET @flg_a24 = '0'
2524

2525
                    SET @bln_a24 = ''
2526

2527
                END
2528

2529

2530

2531
            IF ( @a21 - @a22 > 0 ) 
2532

2533
                BEGIN
2534

2535
                    SET @flg_a24 = '1'
2536

2537
                END
2538

2539

2540

2541
            IF ( @a21 - @a22 < 0 ) 
2542

2543
                BEGIN
2544

2545
                    SET @flg_a24 = '2'
2546

2547
                END
2548

2549

2550

2551
            SET @flg_a2 = '0'
2552

2553
		
2554

2555
		--//Pegawai yang dipindahkan
2556

2557
            SET @flg_a2 = '1'
2558

2559

2560

2561
            DELETE  @tbl_tr_dec
2562

2563
		
2564

2565
            INSERT  INTO @result
2566

2567
                    SELECT  @kode_form ,
2568

2569
                            @tahun_pajak ,
2570

2571
                            @pembetulan ,
2572

2573
                            CONVERT(CHAR, RIGHT('0000000'
2574

2575
                                                + CONVERT(VARCHAR(7), @nomor_urut),
2576

2577
                                                7)) AS nomor_urut ,
2578

2579
                            @npwp_pegawai ,
2580

2581
                            @nama_pegawai ,
2582

2583
                            @alamat_pegawai ,
2584

2585
                            @jabatan_pegawai ,
2586

2587
                            @jenis_kelamin ,
2588

2589
                            @status_pegawai ,
2590

2591
                            @status_kawin ,
2592

2593
                            @flag_asing ,
2594

2595
                            @status_ptkp ,
2596

2597
                            @jumlah_tanggungan ,
2598

2599
                            @masa_perolehan_1 ,
2600

2601
                            @masa_perolehan_2 ,
2602

2603
                            @flag_status ,
2604

2605
                            @a1 ,
2606

2607
                            @flg_a2 ,
2608

2609
                            @a2 ,
2610

2611
                            @a3 ,
2612

2613
                            @a4 ,
2614

2615
                            @a5 ,
2616

2617
                            @a6 ,
2618

2619
                            @a7 ,
2620

2621
                            @a8 ,
2622

2623
                            @a9 ,
2624

2625
                            @a10 ,
2626

2627
                            @a11 ,
2628

2629
                            @a12 ,
2630

2631
                            @a13 ,
2632

2633
                            @a14 ,
2634

2635
                            @a15 ,
2636

2637
                            @a16 ,
2638

2639
                            @a17 ,
2640

2641
                            @a18 ,
2642

2643
                            @a17_att ,
2644

2645
                            @a20 ,
2646

2647
                            @a21 ,
2648

2649
                            @a22 ,
2650

2651
                            @a22a ,
2652

2653
                            @a22b ,
2654

2655
                            @a23 ,
2656

2657
                            @a24 ,
2658

2659
                            @flg_a24 ,
2660

2661
                            @bln_a24 ,
2662

2663
                            @ktp
2664

2665
		--, @c_emp_id
2666

2667
                            ,
2668

2669
                            @nama_pemotong ,
2670

2671
                            @npwp_pemotong ,
2672

2673
                            @kode_pajak
2674

2675
		--, @company_name
2676

2677
					
2678

2679

2680

2681
            SET @nomor_urut = NULL
2682

2683
            SET @npwp_pegawai = NULL
2684

2685
            SET @nama_pegawai = NULL
2686

2687
            SET @alamat_pegawai = NULL
2688

2689
            SET @jabatan_pegawai = NULL
2690

2691
            SET @jenis_kelamin = NULL
2692

2693
            SET @status_pegawai = NULL
2694

2695
            SET @status_kawin = NULL
2696

2697
            SET @flag_asing = NULL
2698

2699
            SET @status_ptkp = NULL
2700

2701
            SET @jumlah_tanggungan = NULL
2702

2703
            SET @masa_perolehan_1 = NULL
2704

2705
            SET @masa_perolehan_2 = NULL
2706

2707
            SET @flag_status = NULL
2708

2709
            SET @a1 = NULL
2710

2711
            SET @flg_a2 = NULL
2712

2713
            SET @a2 = NULL
2714

2715
            SET @a3 = NULL
2716

2717
            SET @a4 = NULL
2718

2719
            SET @a5 = NULL
2720

2721
            SET @a6 = NULL
2722

2723
            SET @a7 = NULL
2724

2725
            SET @a8 = NULL
2726

2727
            SET @a9 = NULL
2728

2729
            SET @a10 = NULL
2730

2731
            SET @a11 = NULL
2732

2733
            SET @a12 = NULL
2734

2735
            SET @a13 = NULL
2736

2737
            SET @a14 = NULL
2738

2739
            SET @a15 = NULL
2740

2741
            SET @a16 = NULL
2742

2743
            SET @a16_flag = NULL
2744

2745
            SET @a17 = NULL
2746

2747
            SET @a18 = NULL
2748

2749
            SET @a19 = NULL
2750

2751
            SET @a20 = NULL
2752

2753
            SET @a21 = NULL
2754

2755
            SET @a22 = NULL
2756

2757
            SET @a22a = NULL
2758

2759
            SET @a22b = NULL
2760

2761
            SET @a23 = NULL
2762

2763
            SET @a24 = NULL
2764

2765
            SET @flg_a24 = NULL
2766

2767
            SET @bln_a24 = NULL
2768

2769

2770

2771
            FETCH cur_employee INTO @c_emp_id, @c_start_date, @c_end_date   
2772

2773
        END
2774

2775
    CLOSE cur_employee
2776

2777
    DEALLOCATE cur_employee
2778

2779

2780

2781
    UPDATE  @result
2782

2783
    SET     npwp_pegawai = '000000000000000'
2784

2785
    WHERE   LEN(npwp_pegawai) < 15
2786

2787

2788

2789
    UPDATE  @result
2790

2791
    SET     alamat_pegawai = '-'
2792

2793
    WHERE   alamat_pegawai = ''
2794

2795
            OR alamat_pegawai IS NULL
2796

2797
		
2798

2799
    SELECT  masa_perolehan_2 AS TaxPeriod ,
2800

2801
            tahun_pajak AS TaxableYear,
2802

2803
            pembetulan AS TaxCorrection ,
2804

2805
            '1.1-' + CONVERT(CHAR(2), RIGHT('00'
2806

2807
                                            + CONVERT(VARCHAR(2), masa_perolehan_2),
2808

2809
                                            2)) + '.' + RIGHT(@Year, 2) + '-'
2810

2811
            + nomor_urut AS WithholdingTax ,
2812

2813
            --CONVERT(CHAR(2), RIGHT('00' + CONVERT(VARCHAR(2), masa_perolehan_2),
2814

2815
            --                       2)) AS bulan_bukti_potong ,
2816

2817
            --RIGHT(@Year, 2) AS tahun_bukti_potong ,
2818

2819
            --nomor_urut ,
2820

2821
            masa_perolehan_1 AS AcquisitionPeriod ,
2822

2823
            masa_perolehan_2 AS AcquisitionPeriodFinal ,
2824

2825
            npwp_pegawai AS NPWP ,
2826

2827
            --RIGHT(npwp_pegawai, 3) AS tiga_akhir_npwp_pegawai ,
2828

2829
            --SUBSTRING(npwp_pegawai, 10, 3) AS enam_akhir_npwp_pegawai ,
2830

2831
            --LEFT(npwp_pegawai, 9) AS awal_npwp_pegawai ,
2832

2833
            --SUBSTRING(npwp_pegawai, 1, 2) + '.' + SUBSTRING(npwp_pegawai, 3, 3)
2834

2835
            --+ '.' + SUBSTRING(npwp_pegawai, 6, 3) + '.'
2836

2837
            --+ SUBSTRING(npwp_pegawai, 9, 1) AS awal_titik_npwp_pegawai ,
2838

2839
            ktp AS EmployeeID ,
2840

2841
            nama_pegawai AS Name,
2842

2843
            alamat_pegawai AS Address,
2844

2845
            CASE WHEN jenis_kelamin = 'W'
2846

2847
                      OR jenis_kelamin = 'Wanita'
2848

2849
                      OR jenis_kelamin = 'Female'
2850

2851
                      OR jenis_kelamin = 'F' --OR jenis_kelamin = '02' OR jenis_kelamin = 'Perempuan' 
2852

2853
					  THEN 'F'
2854

2855
                 WHEN jenis_kelamin = 'P'
2856

2857
                      OR jenis_kelamin = 'Pria'
2858

2859
                      OR jenis_kelamin = 'Male'
2860

2861
                      OR jenis_kelamin = 'M' --OR jenis_kelamin = '01' OR jenis_kelamin = 'Laki-laki' 
2862

2863
					  THEN 'M'
2864

2865
            END AS Gender ,
2866

2867
            CASE WHEN status_ptkp = 'TK' THEN 'TK'
2868

2869
                 WHEN status_ptkp = 'K1'
2870

2871
                      OR status_ptkp = 'K2'
2872

2873
                      OR status_ptkp = 'K3' THEN 'K'
2874

2875
                 WHEN status_ptkp = 'T1'
2876

2877
                      OR status_ptkp = 'T2'
2878

2879
                      OR status_ptkp = 'T3' THEN 'HB'
2880

2881
            END AS PTKPStatus ,
2882

2883
            CASE WHEN status_ptkp = 'TK' THEN '0'
2884

2885
                 ELSE RIGHT(status_ptkp, 1)
2886

2887
            END AS NumberOfChildren --,jumlah_tanggungan
2888

2889
            ,
2890

2891
            jabatan_pegawai AS JobDescription ,
2892

2893
            CASE WHEN flag_asing = 0 THEN 'N'
2894

2895
                 ELSE 'Y'
2896

2897
            END AS NonResidentTaxpayer ,
2898

2899
            '' AS CountryCode ,
2900

2901
            kode_pajak AS TaxCode ,
2902

2903
            a1 AS Amount1 ,
2904

2905
            a2 AS Amount2 ,
2906

2907
            a3 AS Amount3 ,
2908

2909
            a4 AS Amount4 ,
2910

2911
            a5 AS Amount5 ,
2912

2913
            a6 AS Amount6 ,
2914

2915
            a8 AS Amount7 ,
2916

2917
            a9 AS Amount8 ,
2918

2919
            a10 + a11 AS Amount9 ,
2920

2921
            a12 AS Amount10 ,
2922

2923
            a13 AS Amount11 ,
2924

2925
            a14 AS Amount12 ,
2926

2927
            a15 AS Amount13 ,
2928

2929
            CASE WHEN a16 < 0 THEN 0
2930

2931
                 ELSE a16
2932

2933
            END AS Amount14 ,
2934

2935
            a17 AS Amount15 ,
2936

2937
            CASE WHEN a18 < 0 THEN 0
2938

2939
                 ELSE a18
2940

2941
            END AS Amount16 ,
2942

2943
            a19 AS Amount17 --@a17_att AS a17 
2944

2945
            ,
2946

2947
            CASE WHEN a20 < 0 THEN 0
2948

2949
                 ELSE a20
2950

2951
            END AS Amount18 ,
2952

2953
            a21 AS Amount19 ,
2954

2955
            a22 AS Amount20 ,
2956

2957
            '' AS MovementStatus ,
2958

2959
            npwp_pemotong AS NPWPPemotong ,
2960

2961
            --RIGHT(npwp_pemotong, 3) AS tiga_akhir_npwp_pemotong ,
2962

2963
            --SUBSTRING(npwp_pemotong, 10, 3) AS enam_akhir_npwp_pemotong ,
2964

2965
            --LEFT(npwp_pemotong, 9) AS awal_npwp_pemotong ,
2966

2967
            --SUBSTRING(npwp_pemotong, 1, 2) + '.' + SUBSTRING(npwp_pemotong, 3,
2968

2969
            --                                                 3) + '.'
2970

2971
            --+ SUBSTRING(npwp_pemotong, 6, 3) + '.' + SUBSTRING(npwp_pemotong,
2972

2973
            --                                                  9, 1) AS awal_titik_npwp_pemotong ,
2974

2975
            nama_pemotong AS NamaPemotong ,
2976

2977
            dbo.fn_formatdatetime(GETDATE(), 'dd/mm/yyyy') AS TanggalBuktiPotong 
2978

2979
            --dbo.fn_formatdatetime(GETDATE(), 'dd') AS day_tgl_bukti_potong ,
2980

2981
            --dbo.fn_formatdatetime(GETDATE(), 'mm') AS month_tgl_bukti_potong ,
2982

2983
            --dbo.fn_formatdatetime(GETDATE(), 'yyyy') AS year_tgl_bukti_potong
2984

2985
    FROM    @result
2986

2987

(2-2/4)