Project

General

Profile

Bug #1069 » RptSPTahun_20220426.sql

Tri Rizqiaty, 04/26/2022 10:31 AM

 
1
??USE [MinovaES_AJTM_Pertalife_Prod]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[RptSPTahun]    Script Date: 26/04/2022 10.24.11 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[RptSPTahun]
16

17
    @CompanyID VARCHAR(4) = NULL ,
18

19
    @Year VARCHAR(4) ,
20

21
    @TaxOffice VARCHAR(10) ,
22

23
    @EmployeeStatus VARCHAR(2) = NULL ,
24

25
    @PayrollGroup VARCHAR(2) = NULL ,
26

27
    @EmployeeIDFrom VARCHAR(8) = NULL ,
28

29
    @EmployeeIDTo VARCHAR(8) = NULL
30

31
AS 
32

33
    SET NOCOUNT ON;
34

35

36

37
--DECLARE @CompanyID varchar(4) = ''
38

39
--DECLARE @Year varchar(4) = '2022'
40

41
--DECLARE @TaxOffice varchar(8) = 'JKT'
42

43
--DECLARE @EmployeeStatus varchar(2) = null
44

45
--DECLARE @PayrollGroup varchar(2) = ''
46

47
--DECLARE @EmployeeIDFrom varchar(8) = '10640422'--'00000300'
48

49
--DECLARE @EmployeeIDTo varchar(8) = NULL
50

51

52

53

54

55
    DECLARE @begda INT
56

57
    DECLARE @endda INT
58

59
    DECLARE @employee_status_beg VARCHAR(5)
60

61
    DECLARE @employee_status_end VARCHAR(5)
62

63
    DECLARE @payroll_group_beg VARCHAR(5)
64

65
    DECLARE @payroll_group_END VARCHAR(5)
66

67

68

69
--//Set begin & end of period
70

71
    SET @begda = @Year + '0101'
72

73
    SET @endda = @Year + '1231'
74

75

76

77
--//Set employee status
78

79
    IF @EmployeeStatus = ''
80

81
        OR @EmployeeStatus IS NULL 
82

83
        BEGIN
84

85
            SET @employee_status_beg = '00000'
86

87
            SET @employee_status_end = '99999'
88

89
        END
90

91
    ELSE 
92

93
        BEGIN
94

95
            SET @employee_status_beg = @EmployeeStatus
96

97
            SET @employee_status_end = @EmployeeStatus
98

99
        END
100

101

102

103
--//Set employee group
104

105
    IF @PayrollGroup = ''
106

107
        OR @PayrollGroup IS NULL 
108

109
        BEGIN
110

111
            SET @payroll_group_beg = '00000'
112

113
            SET @payroll_group_END = '99999'
114

115
        END
116

117
    ELSE 
118

119
        BEGIN
120

121
            SET @payroll_group_beg = @PayrollGroup
122

123
            SET @payroll_group_END = @PayrollGroup
124

125
        END
126

127

128

129

130

131
--//Set employee id start
132

133
    IF @EmployeeIDFrom = ''
134

135
        OR @EmployeeIDFrom IS NULL 
136

137
        BEGIN
138

139
            SET @EmployeeIDFrom = '00000000'
140

141
            SET @EmployeeIDTo = '99999999'
142

143
        END
144

145

146

147
    IF @EmployeeIDTo = ''
148

149
        OR @EmployeeIDTo IS NULL 
150

151
        SET @EmployeeIDTo = @EmployeeIDFrom 
152

153

154

155
--//Get system parameter
156

157
    DECLARE @is_encrypted VARCHAR
158

159
    DECLARE @npwp_address_subtype VARCHAR(4)
160

161

162

163
    SELECT  @is_encrypted = Value1
164

165
    FROM    dbo.PCMEPGENPARAM
166

167
    WHERE   Parameter = 'HR_PY_ENCRYPTED'
168

169
            AND StartDate <= @endda
170

171
            AND EndDate >= @endda
172

173

174

175
    SELECT  @npwp_address_subtype = Value1
176

177
    FROM    dbo.PCMEPGENPARAM
178

179
    WHERE   Parameter = 'HR_PY_NPWP_ADDRESS_SUBTYPE'
180

181
            AND StartDate <= @endda
182

183
            AND EndDate >= @endda
184

185

186

187
-----// Get employee tax office list
188

189
    DECLARE @emp_office TABLE
190

191
        (
192

193
          [StartDate] [varchar](8) NOT NULL ,
194

195
          [EndDate] [varchar](8) NOT NULL ,
196

197
          [EmployeeOffice] [varchar](4) NOT NULL ,
198

199
          [EmployeeOfficeDesc] [varchar](50) NULL ,
200

201
          [EmployeeArea] [varchar](4) NOT NULL ,
202

203
          [TaxOffice] [varchar](4) NULL ,
204

205
          [NPWP] [varchar](50) NULL ,
206

207
          [Address] [varchar](500) NULL ,
208

209
          [EmployeeOfficeGroup] [varchar](5) NULL ,
210

211
          [MinimumWageRegional] [varchar](4) NULL ,
212

213
          [Notes] [varchar](500) NULL ,
214

215
          [CreateBy] [varchar](18) NULL ,
216

217
          [CreateDate] [varchar](14) NULL ,
218

219
          [ChangeBy] [varchar](18) NULL ,
220

221
          [ChangeDate] [varchar](14) NULL
222

223
        )
224

225

226

227
    INSERT  INTO @emp_office
228

229
            SELECT  [StartDate] ,
230

231
                    [EndDate] ,
232

233
                    [EmployeeOffice] ,
234

235
                    [EmployeeOfficeDesc] ,
236

237
                    [EmployeeArea] ,
238

239
                    [TaxOffice] ,
240

241
                    [NPWP] ,
242

243
                    [Address] ,
244

245
                    [EmployeeOfficeGroup] ,
246

247
                    [MinimumWageRegional] ,
248

249
                    [Notes] ,
250

251
                    [CreateBy] ,
252

253
                    [CreateDate] ,
254

255
                    [ChangeBy] ,
256

257
                    [ChangeDate]
258

259
            FROM    dbo.PCMEPEMPOFF
260

261
            WHERE   TaxOffice = @TaxOffice
262

263
	
264

265
--Get Employee Tobe Processed
266

267
    DECLARE @employee_tobe_process2 TABLE
268

269
        (
270

271
          emp_id VARCHAR(8) ,
272

273
          start_date INT ,
274

275
          end_date INT ,
276

277
          employee_status VARCHAR(2)
278

279
        )
280

281

282

283
    DECLARE @employee_tobe_process TABLE
284

285
        (
286

287
          emp_id VARCHAR(8) ,
288

289
          start_date INT ,
290

291
          end_date INT
292

293
        )
294

295

296

297
    DECLARE @payroll_header TABLE
298

299
        (
300

301
          employee_id VARCHAR(8) ,
302

303
          start_date VARCHAR(8) ,
304

305
          end_date VARCHAR(8) ,
306

307
          employee_office VARCHAR(4) ,
308

309
          run_period_month VARCHAR(2)
310

311
        )
312

313
    DECLARE @payroll_header_tmp TABLE
314

315
        (
316

317
          employee_id VARCHAR(8) ,
318

319
          start_date VARCHAR(8) ,
320

321
          end_date VARCHAR(8) ,
322

323
          employee_office VARCHAR(4) ,
324

325
          run_period_month VARCHAR(2)
326

327
        )
328

329
    DECLARE @payroll_header0 TABLE
330

331
        (
332

333
          employee_id VARCHAR(8) ,
334

335
          start_date VARCHAR(8) ,
336

337
          end_date VARCHAR(8) ,
338

339
          employee_office VARCHAR(4) ,
340

341
          run_period_month VARCHAR(2)
342

343
        )
344

345

346

347
    INSERT  INTO @payroll_header_tmp
348

349
            SELECT DISTINCT
350

351
                    md2.EmployeeID ,
352

353
                    ph.StartDate ,
354

355
                    ph.EndDate ,
356

357
                    md2.EmployeeOffice ,
358

359
                    RunPeriodMonth
360

361
            FROM    dbo.PHRPYTR0300 ph
362

363
                    INNER JOIN dbo.PHRPA0002 md2 ON md2.EmployeeID = ph.EmployeeID
364

365
            WHERE   ph.StartDate >= @begda
366

367
                    AND ph.EndDate <= @endda
368

369
                    AND md2.StartDate <= ph.EndDate
370

371
                    AND md2.EndDate >= ph.EndDate
372

373
                    AND md2.EmployeeID BETWEEN @EmployeeIDFrom
374

375
                                       AND     @EmployeeIDTo
376

377
				
378

379
--//get the latest run data
380

381
    INSERT  INTO @payroll_header0
382

383
            SELECT  py_head.*
384

385
            FROM    @payroll_header_tmp AS py_head
386

387
                    INNER JOIN ( SELECT employee_id ,
388

389
                                        start_date ,
390

391
                                        end_date ,
392

393
                                        MAX(run_period_month) AS run_period_month
394

395
                                 FROM   @payroll_header_tmp
396

397
                                 GROUP BY employee_id ,
398

399
                                        start_date ,
400

401
                                        end_date
402

403
                               ) a ON py_head.employee_id = a.employee_id
404

405
                                      AND py_head.start_date = a.start_date
406

407
                                      AND py_head.end_date = a.end_date
408

409
                                      AND py_head.run_period_month = a.run_period_month
410

411
			
412

413
    INSERT  INTO @payroll_header
414

415
            SELECT DISTINCT
416

417
                    employee_id ,
418

419
                    start_date ,
420

421
                    end_date ,
422

423
                    employee_office ,
424

425
                    run_period_month
426

427
            FROM    @payroll_header0 ph0
428

429
                    INNER JOIN @emp_office eo ON ph0.employee_office = eo.EmployeeOffice
430

431
					
432

433
----//get list spliiter running payroll for others TAX Office.
434

435
    SELECT DISTINCT
436

437
            employee_id ,
438

439
            start_date ,
440

441
            end_date ,
442

443
            employee_office ,
444

445
            run_period_month
446

447
    INTO    #tmp0
448

449
    FROM    @payroll_header0 ph0
450

451
    WHERE   NOT EXISTS ( SELECT *
452

453
                         FROM   @payroll_header ph
454

455
                         WHERE  ph0.employee_id = ph.employee_id
456

457
                                AND ph0.start_date = ph.start_date
458

459
                                AND ph0.end_date = ph.end_date
460

461
                                AND ph0.employee_office = ph.employee_office
462

463
                                AND ph0.run_period_month = ph.run_period_month )
464

465
		
466

467
-- Get list date range splitter.
468

469
    SELECT  a.employee_id ,
470

471
            a.start_date mindt0 ,
472

473
            b.start_date maxdt0
474

475
    INTO    #tmp
476

477
    FROM    @payroll_header a ,
478

479
            @payroll_header b
480

481
    WHERE   a.employee_id = b.employee_id
482

483
            AND b.start_date > a.start_date
484

485
            AND ( CONVERT(INT, SUBSTRING(b.start_date, 5, 2))
486

487
                  - CONVERT(INT, SUBSTRING(a.start_date, 5, 2)) ) > 1
488

489
            AND ( SELECT    COUNT(*)
490

491
                  FROM      @payroll_header c
492

493
                  WHERE     ( CONVERT(INT, SUBSTRING(a.start_date, 5, 2)) < CONVERT(INT, SUBSTRING(c.start_date,
494

495
                                                              5, 2)) )
496

497
                            AND ( CONVERT(INT, SUBSTRING(b.start_date, 5, 2)) > CONVERT(INT, SUBSTRING(c.end_date,
498

499
                                                              5, 2)) )
500

501
                            AND c.employee_id = a.employee_id
502

503
                ) = 0
504

505
            AND ( SELECT    COUNT(*)
506

507
                  FROM      #tmp0 d
508

509
                  WHERE     d.employee_id = a.employee_id
510

511
                            AND a.start_date < d.start_date
512

513
                            AND b.start_date > d.end_date
514

515
                ) <> 0
516

517
	
518

519
    DROP TABLE #tmp0
520

521

522

523

524

525
    DECLARE @n_empty_range INT
526

527
	  
528

529
    SELECT  @n_empty_range = COUNT(*)
530

531
    FROM    #tmp	  
532

533

534

535
    IF ( @n_empty_range <> 0 ) 
536

537
        BEGIN
538

539
            INSERT  INTO @employee_tobe_process
540

541
                    SELECT  ddd.employee_id ,
542

543
                            ddd.mindt ,
544

545
                            ddd.maxdt
546

547
                    FROM    ( SELECT    dd.employee_id ,
548

549
                                        MIN(dd.start_date) mindt ,
550

551
                                        MAX(dd.end_date) maxdt
552

553
                              FROM      ( SELECT    x.employee_id ,
554

555
                                                    x.start_date ,
556

557
                                                    x.end_date ,
558

559
                                                    SUM(ISNULL(d.flag, 0)) flag
560

561
                                          FROM      @payroll_header x
562

563
                                                    LEFT OUTER JOIN ( SELECT
564

565
                                                              a.* ,
566

567
                                                              1 'flag'
568

569
                                                              FROM
570

571
                                                              @payroll_header a
572

573
                                                              LEFT OUTER JOIN #tmp b ON a.employee_id = b.employee_id
574

575
                                                              WHERE
576

577
                                                              a.start_date <= b.mindt0
578

579
                                                              AND a.end_date < b.maxdt0
580

581
                                                              ) d ON x.employee_id = d.employee_id
582

583
                                                              AND x.start_date = d.start_date
584

585
                                                              AND x.end_date = d.end_date
586

587
                                          GROUP BY  x.employee_id ,
588

589
                                                    x.start_date ,
590

591
                                                    x.end_date
592

593
                                        ) dd
594

595
                              GROUP BY  dd.employee_id ,
596

597
                                        dd.flag
598

599
                            ) ddd
600

601
                    ORDER BY ddd.employee_id ,
602

603
                            ddd.mindt	
604

605
        END
606

607
    ELSE 
608

609
        BEGIN
610

611
            INSERT  INTO @employee_tobe_process
612

613
                    SELECT  main.employee_id ,
614

615
                            mindate.mindt ,
616

617
                            maxdate.maxdt
618

619
                    FROM    ( SELECT DISTINCT
620

621
                                        employee_id
622

623
                              FROM      @payroll_header
624

625
                            ) main
626

627
                            INNER JOIN ( SELECT ph.employee_id ,
628

629
                                                MIN(ph.start_date) mindt
630

631
                                         FROM   @payroll_header ph
632

633
                                         GROUP BY employee_id
634

635
                                       ) mindate ON main.employee_id = mindate.employee_id
636

637
                            INNER JOIN ( SELECT employee_id ,
638

639
                                                MAX(end_date) maxdt
640

641
                                         FROM   @payroll_header ph
642

643
                                         GROUP BY employee_id
644

645
                                       ) maxdate ON main.employee_id = maxdate.employee_id
646

647
        END
648

649
				
650

651
    DROP TABLE #tmp           
652

653
                
654

655
    DECLARE @kode_form VARCHAR(7)
656

657
    DECLARE @tahun_pajak VARCHAR(4)
658

659
    DECLARE @pembetulan INT
660

661
    DECLARE @nomor_urut VARCHAR(7)
662

663
    DECLARE @npwp_pegawai VARCHAR(15)
664

665
    DECLARE @nama_pegawai VARCHAR(50)
666

667
    DECLARE @alamat_pegawai VARCHAR(255)
668

669
    DECLARE @jabatan_pegawai VARCHAR(30)
670

671
    DECLARE @jenis_kelamin VARCHAR(1)
672

673
    DECLARE @status_pegawai VARCHAR(1)
674

675
    DECLARE @status_kawin VARCHAR(1)
676

677
    DECLARE @flag_asing VARCHAR(1)
678

679
    DECLARE @status_ptkp VARCHAR(2)
680

681
    DECLARE @jumlah_tanggungan VARCHAR(1)
682

683
    DECLARE @masa_perolehan_1 VARCHAR(2)
684

685
    DECLARE @masa_perolehan_2 VARCHAR(2)
686

687
    DECLARE @flag_status VARCHAR(1)
688

689
    DECLARE @a1 DECIMAL
690

691
    DECLARE @flg_a2 VARCHAR(1)
692

693
    DECLARE @a2 DECIMAL
694

695
    DECLARE @a3 DECIMAL
696

697
    DECLARE @a4 DECIMAL
698

699
    DECLARE @a5 DECIMAL
700

701
    DECLARE @a6 DECIMAL
702

703
    DECLARE @a7 DECIMAL
704

705
    DECLARE @a8 DECIMAL
706

707
    DECLARE @a9 DECIMAL
708

709
    DECLARE @a10 DECIMAL
710

711
    DECLARE @a11 DECIMAL
712

713
    DECLARE @a12 DECIMAL
714

715
    DECLARE @a13 DECIMAL
716

717
    DECLARE @a14 DECIMAL
718

719
    DECLARE @a15 DECIMAL
720

721
    DECLARE @a16 DECIMAL
722

723
    DECLARE @a16_flag DECIMAL
724

725
    DECLARE @a17 DECIMAL
726

727
    DECLARE @a18 DECIMAL
728

729
    DECLARE @a19 DECIMAL
730

731
    DECLARE @a19b DECIMAL
732

733
    DECLARE @a20 DECIMAL
734

735
    DECLARE @a21 DECIMAL
736

737
    DECLARE @a22 DECIMAL
738

739
    DECLARE @a22a DECIMAL
740

741
    DECLARE @a22b DECIMAL
742

743
    DECLARE @a23 DECIMAL
744

745
    DECLARE @a24 DECIMAL
746

747
    DECLARE @flg_a24 VARCHAR(1)
748

749
    DECLARE @bln_a24 VARCHAR(6)
750

751
    DECLARE @masa_pajak VARCHAR(10)
752

753
    DECLARE @kode_pajak VARCHAR(30)
754

755
    DECLARE @npwp_pemotong VARCHAR(15)
756

757
    DECLARE @nama_pemotong VARCHAR(200)
758

759
    DECLARE @company_name VARCHAR(200)
760

761
    DECLARE @a19murni DECIMAL
762

763
    DECLARE @a17_att DECIMAL
764

765
    DECLARE @ktp VARCHAR(50)
766

767

768

769
    DECLARE @jml_bulan_perolehan INT
770

771
    DECLARE @tot_biaya_jabatan DECIMAL
772

773

774

775
    DECLARE @result TABLE
776

777
        (
778

779
          kode_form VARCHAR(7) ,
780

781
          tahun_pajak VARCHAR(4) ,
782

783
          pembetulan INT ,
784

785
          nomor_urut CHAR(7) ,
786

787
          npwp_pegawai VARCHAR(30) ,
788

789
          nama_pegawai VARCHAR(50) ,
790

791
          alamat_pegawai VARCHAR(255) ,
792

793
          jabatan_pegawai VARCHAR(30) ,
794

795
          jenis_kelamin VARCHAR(5) ,
796

797
          status_pegawai VARCHAR(5) ,
798

799
          status_kawin VARCHAR(5) ,
800

801
          flag_asing VARCHAR(1) ,
802

803
          status_ptkp VARCHAR(5) ,
804

805
          jumlah_tanggungan VARCHAR(1) ,
806

807
          masa_perolehan_1 VARCHAR(2) ,
808

809
          masa_perolehan_2 VARCHAR(2) ,
810

811
          flag_status VARCHAR(1) ,
812

813
          a1 DECIMAL ,
814

815
          flg_a2 VARCHAR(1) ,
816

817
          a2 DECIMAL ,
818

819
          a3 DECIMAL ,
820

821
          a4 DECIMAL ,
822

823
          a5 DECIMAL ,
824

825
          a6 DECIMAL ,
826

827
          a7 DECIMAL ,
828

829
          a8 DECIMAL ,
830

831
          a9 DECIMAL ,
832

833
          a10 DECIMAL ,
834

835
          a11 DECIMAL ,
836

837
          a12 DECIMAL ,
838

839
          a13 DECIMAL ,
840

841
          a14 DECIMAL ,
842

843
          a15 DECIMAL ,
844

845
          a16 DECIMAL ,
846

847
          a17 DECIMAL ,
848

849
          a18 DECIMAL ,
850

851
          a19 DECIMAL ,
852

853
          a20 DECIMAL ,
854

855
          a21 DECIMAL ,
856

857
          a22 DECIMAL ,
858

859
          a22a DECIMAL ,
860

861
          a22b DECIMAL ,
862

863
          a23 DECIMAL ,
864

865
          a24 DECIMAL ,
866

867
          flg_a24 VARCHAR(1) ,
868

869
          bln_a24 VARCHAR(6)
870

871
	--,emp_id VARCHAR(20)
872

873
          ,
874

875
          KTP VARCHAR(50) ,
876

877
          nama_pemotong VARCHAR(200) ,
878

879
          npwp_pemotong VARCHAR(30) ,
880

881
          kode_pajak VARCHAR(30)
882

883
	--,company_name VARCHAR(200)
884

885
        )                   
886

887
 
888

889
    DECLARE @cu0300 TABLE
890

891
        (
892

893
          [code] [nVARCHAR](4) NOT NULL ,
894

895
          [start_date] [nVARCHAR](8) NOT NULL ,
896

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

899
          [spt_no] [INT] NULL
900

901
        )
902

903

904

905
    DECLARE @cu0300_tmp TABLE
906

907
        (
908

909
          [code] [nVARCHAR](4) NOT NULL ,
910

911
          [start_date] [nVARCHAR](8) NOT NULL ,
912

913
          [end_date] [nVARCHAR](8) NOT NULL ,
914

915
          [spt_no] [INT] NULL
916

917
        )
918

919
	
920

921
    DECLARE @tbl_tr_prev_ori TABLE
922

923
        (
924

925
          employee_id VARCHAR(8) ,
926

927
          wage_type VARCHAR(4) ,
928

929
          amount DECIMAL ,
930

931
          spt_no INT ,
932

933
          run_period_month VARCHAR(2)
934

935
        )
936

937

938

939
    DECLARE @tbl_tr_prev_ori_tmp TABLE
940

941
        (
942

943
          employee_id VARCHAR(8) ,
944

945
          wage_type VARCHAR(4) ,
946

947
          amount DECIMAL ,
948

949
          spt_no INT ,
950

951
          run_period_month VARCHAR(2)
952

953
        )
954

955
 
956

957
    DECLARE @tbl_tr_prev_cum TABLE
958

959
        (
960

961
          employee_id VARCHAR(8) ,
962

963
          wage_type VARCHAR(4) ,
964

965
          amount DECIMAL ,
966

967
          spt_no INT ,
968

969
          run_period_month VARCHAR(2)
970

971
        )
972

973

974

975
    DECLARE @tbl_tr_prev_cum_tmp TABLE
976

977
        (
978

979
          employee_id VARCHAR(8) ,
980

981
          wage_type VARCHAR(4) ,
982

983
          amount DECIMAL ,
984

985
          spt_no INT ,
986

987
          run_period_month VARCHAR(2)
988

989
        )
990

991

992

993
    DECLARE @tbl_tr_dec_ori TABLE
994

995
        (
996

997
          employee_id VARCHAR(8) ,
998

999
          wage_type VARCHAR(4) ,
1000

1001
          amount DECIMAL ,
1002

1003
          spt_no INT ,
1004

1005
          run_period_month VARCHAR(2)
1006

1007
        )
1008

1009

1010

1011
    DECLARE @tbl_tr_dec_ori_tmp TABLE
1012

1013
        (
1014

1015
          employee_id VARCHAR(8) ,
1016

1017
          wage_type VARCHAR(4) ,
1018

1019
          amount DECIMAL ,
1020

1021
          spt_no INT ,
1022

1023
          run_period_month VARCHAR(2)
1024

1025
        )
1026

1027
 
1028

1029
    DECLARE @tbl_tr_dec TABLE
1030

1031
        (
1032

1033
          employee_id VARCHAR(8) ,
1034

1035
          wage_type VARCHAR(4) ,
1036

1037
          amount DECIMAL ,
1038

1039
          spt_no INT ,
1040

1041
          run_period_month VARCHAR(2)
1042

1043
        )
1044

1045

1046

1047
    DECLARE @tbl_tr_dec_tmp TABLE
1048

1049
        (
1050

1051
          employee_id VARCHAR(8) ,
1052

1053
          wage_type VARCHAR(4) ,
1054

1055
          amount DECIMAL ,
1056

1057
          spt_no INT ,
1058

1059
          run_period_month VARCHAR(2)
1060

1061
        )
1062

1063

1064

1065
    DECLARE @tbl_tr_dec_total TABLE
1066

1067
        (
1068

1069
          employee_id VARCHAR(8) ,
1070

1071
          amount DECIMAL ,
1072

1073
          spt_no INT
1074

1075
        )
1076

1077
	 
1078

1079
    DECLARE @tbl_tr_enc TABLE
1080

1081
        (
1082

1083
          employee_id VARCHAR(8) ,
1084

1085
          wage_type VARCHAR(4) ,
1086

1087
          amount VARCHAR(250) ,
1088

1089
          spt_no INT
1090

1091
        )
1092

1093
                   
1094

1095
    SET @kode_form = 'D113248'
1096

1097
    SET @tahun_pajak = @Year
1098

1099
    SET @pembetulan = 0
1100

1101
 
1102

1103
    DECLARE @c_landscape VARCHAR(3)
1104

1105
    DECLARE @c_emp_id VARCHAR(8)
1106

1107
    DECLARE @c_start_date INT
1108

1109
    DECLARE @c_end_date INT
1110

1111

1112

1113
    DECLARE @last_period_payroll INT
1114

1115
    DECLARE @previous_period_payroll INT
1116

1117
    DECLARE @previous_period_payroll0 INT
1118

1119
    DECLARE @previous_period_payroll_varchar VARCHAR(2)
1120

1121

1122

1123
----//Run Cursor
1124

1125
    DECLARE cur_employee CURSOR
1126

1127
    FOR
1128

1129
        SELECT  *
1130

1131
        FROM    @employee_tobe_process
1132

1133
    OPEN cur_employee
1134

1135
    FETCH cur_employee INTO @c_emp_id, @c_start_date, @c_end_date
1136

1137
    WHILE @@fetch_status = 0 
1138

1139
        BEGIN  
1140

1141
            SET @last_period_payroll = @c_end_date
1142

1143
            SET @nomor_urut = CONVERT(INTEGER, RIGHT(@c_emp_id, 7))
1144

1145

1146

1147
            SELECT  @npwp_pegawai = REPLACE(REPLACE(ISNULL(NPWP,
1148

1149
                                                           '000000000000000'),
1150

1151
                                                    '.', ''), '-', '') ,
1152

1153
                    @status_kawin = CASE LEFT(TaxStatus, 1)
1154

1155
                                      WHEN 'T' THEN '1'
1156

1157
                                      ELSE '2'
1158

1159
                                    END ,
1160

1161
                    @status_ptkp = a.TaxStatus ,
1162

1163
                    @jumlah_tanggungan = CASE RIGHT(TaxStatus, 1)
1164

1165
                                           WHEN 'K' THEN '0'
1166

1167
                                           ELSE RIGHT(TaxStatus, 1)
1168

1169
                                         END
1170

1171
            FROM    dbo.PHRPA0003 AS a
1172

1173
            WHERE   EmployeeID = @c_emp_id
1174

1175
                    AND StartDate <= @c_end_date
1176

1177
                    AND EndDate >= @c_end_date
1178

1179
	
1180

1181
            SELECT  DISTINCT
1182

1183
                    @a17 = PTKP
1184

1185
            FROM    dbo.PHRPYCU0302
1186

1187
            WHERE   StartDate <= @c_end_date
1188

1189
                    AND EndDate >= @c_end_date
1190

1191
                    AND TaxStatus = ( SELECT DISTINCT
1192

1193
                                                TaxStatus
1194

1195
                                      FROM      dbo.PHRPA0003
1196

1197
                                      WHERE     EmployeeID = @c_emp_id
1198

1199
                                                AND StartDate <= @c_end_date
1200

1201
                                                AND EndDate >= @c_end_date
1202

1203
                                    )
1204

1205

1206

1207
            SELECT  @nama_pegawai = FullName ,
1208

1209
                    @jenis_kelamin = b.GenderDescription ,
1210

1211
                    @ktp = c.IDDescription
1212

1213
            FROM    dbo.PHRPA0001 AS a
1214

1215
                    LEFT JOIN dbo.PHRPAGENDER AS b ON a.Gender = b.Gender
1216

1217
                                                      AND b.StartDate <= @c_end_date
1218

1219
                                                      AND b.EndDate >= @c_end_date
1220

1221
                    LEFT JOIN dbo.PHRPA0013 AS c ON a.EmployeeID = c.EmployeeID
1222

1223
                                                    AND c.StartDate <= @c_end_date
1224

1225
                                                    AND c.EndDate >= @c_end_date
1226

1227
            WHERE   a.EmployeeID = @c_emp_id
1228

1229
                    AND a.StartDate <= @c_end_date
1230

1231
                    AND a.EndDate >= @c_end_date
1232

1233
                    AND c.IDType = '01'
1234

1235
	 
1236

1237
            SELECT  @nama_pemotong = t.TaxOfficeDescription ,
1238

1239
                    @npwp_pemotong = o.NPWP
1240

1241
            FROM    dbo.PHRPA0002 AS a
1242

1243
                    LEFT JOIN dbo.PCMEPEMPOFF AS o ON a.EmployeeOffice = o.EmployeeOffice
1244

1245
                                                      AND o.StartDate <= @c_end_date
1246

1247
                                                      AND o.EndDate >= @c_end_date
1248

1249
                    LEFT JOIN dbo.PHRPYTAXOFF AS t ON t.TaxOffice = o.TaxOffice
1250

1251
                                                      AND t.StartDate <= @c_end_date
1252

1253
                                                      AND t.EndDate >= @c_end_date
1254

1255
            WHERE   a.StartDate <= @c_end_date
1256

1257
                    AND a.EndDate >= @c_end_date
1258

1259
                    AND a.EmployeeID = @c_emp_id
1260

1261
			
1262

1263
            SELECT  @kode_pajak = e.TaxCode
1264

1265
            FROM    dbo.PHRPA0002 AS a
1266

1267
                    LEFT JOIN dbo.PCMEPEMPTYP AS e ON a.EmployeeType = e.EmployeeType
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
	--//alamat & flag status belakangan
1278

1279
            SELECT  @alamat_pegawai = REPLACE(md06.Address, ',', ' ')
1280

1281
            FROM    dbo.PHRPA0006 AS md06
1282

1283
            WHERE   EmployeeID = @c_emp_id
1284

1285
                    AND StartDate <= @c_end_date
1286

1287
                    AND EndDate >= @c_end_date
1288

1289
                    AND AddressType = @npwp_address_subtype
1290

1291

1292

1293
            SELECT  @jabatan_pegawai = mdobj.ObjectDescription
1294

1295
            FROM    dbo.PHRPA0002 AS md02
1296

1297
                    INNER JOIN dbo.PHROM0001 AS mdobj ON md02.Position = mdobj.ObjectID
1298

1299
                                                         AND mdobj.ObjectClass = 'P'
1300

1301
                                                         AND mdobj.StartDate <= @c_end_date
1302

1303
                                                         AND mdobj.EndDate >= @c_end_date
1304

1305
            WHERE   md02.EmployeeID = @c_emp_id
1306

1307
                    AND md02.StartDate <= @c_end_date
1308

1309
                    AND md02.EndDate >= @c_end_date
1310

1311
	
1312

1313
            SELECT  @status_pegawai = CASE EmployeeStatus
1314

1315
                                        WHEN '01' THEN '1'
1316

1317
                                        WHEN '03' THEN '2'
1318

1319
                                        ELSE '1'
1320

1321
                                      END ,
1322

1323
                    @flag_asing = CASE EmployeeType
1324

1325
                                    WHEN '05' THEN '1'
1326

1327
                                    ELSE '0'
1328

1329
                                  END
1330

1331
            FROM    dbo.PHRPA0002 AS md02
1332

1333
            WHERE   EmployeeID = @c_emp_id
1334

1335
                    AND StartDate <= @c_end_date
1336

1337
                    AND EndDate >= @c_end_date
1338

1339

1340

1341
            SET @masa_perolehan_1 = CONVERT(INTEGER, SUBSTRING(CONVERT(VARCHAR, @c_start_date),
1342

1343
                                                              5, 2))
1344

1345
            SET @masa_perolehan_2 = CONVERT(INTEGER, SUBSTRING(CONVERT(VARCHAR, @c_end_date),
1346

1347
                                                              5, 2))
1348

1349
            SET @jml_bulan_perolehan = ( CONVERT(INT, @masa_perolehan_2)
1350

1351
                                         - CONVERT(INT, @masa_perolehan_1) + 1 )
1352

1353

1354

1355
	--//#region getwtconfiguration
1356

1357
            DELETE  @cu0300_tmp
1358

1359

1360

1361
            INSERT  INTO @cu0300_tmp
1362

1363
                    SELECT  WageTypeDefinition ,
1364

1365
                            StartDate ,
1366

1367
                            EndDate ,
1368

1369
                            SPTNo
1370

1371
                    FROM    dbo.PHRPYCU0300
1372

1373
                    WHERE   StartDate <= @c_end_date
1374

1375
                            AND EndDate >= @c_start_date
1376

1377
                            AND SPTNo > 0
1378

1379

1380

1381
            UPDATE  @cu0300_tmp
1382

1383
            SET     start_date = @begda
1384

1385
            WHERE   start_date < @c_start_date
1386

1387
	  
1388

1389
            UPDATE  @cu0300_tmp
1390

1391
            SET     end_date = @endda
1392

1393
            WHERE   end_date > @c_end_date
1394

1395

1396

1397
--/*
1398

1399
            DELETE  @cu0300
1400

1401

1402

1403
            INSERT  INTO @cu0300
1404

1405
                    SELECT  cu0300.*
1406

1407
                    FROM    @cu0300_tmp AS cu0300
1408

1409
                            INNER JOIN ( SELECT code ,
1410

1411
                                                MIN(start_date) AS start_date ,
1412

1413
                                                MAX(end_date) AS end_date
1414

1415
                                         FROM   @cu0300_tmp
1416

1417
                                         GROUP BY code
1418

1419
                                       ) a ON cu0300.code = a.code
1420

1421
                                              AND cu0300.end_date = a.end_date
1422

1423

1424

1425
            DELETE  @tbl_tr_dec
1426

1427
            DELETE  @tbl_tr_dec_ori
1428

1429

1430

1431
            DELETE  @tbl_tr_dec_tmp
1432

1433
            DELETE  @tbl_tr_dec_ori_tmp
1434

1435

1436

1437
            DECLARE @cc_landscape VARCHAR(3)
1438

1439
            DECLARE @cc_code VARCHAR(4)
1440

1441
            DECLARE @cc_start_date INT
1442

1443
            DECLARE @cc_end_date INT
1444

1445
            DECLARE @cc_spt_no INT
1446

1447

1448

1449
            INSERT  INTO @tbl_tr_dec_tmp
1450

1451
                    SELECT  tr301.EmployeeID ,
1452

1453
                            tr301.WageType ,
1454

1455
                            CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount), '0'),
1456

1457
                                         ',', '.') AS DECIMAL(22, 0)) ,
1458

1459
                            cu300.spt_no ,
1460

1461
                            tr301.RunPeriodMonth
1462

1463
                    FROM    dbo.PHRPYTR0301CUM AS tr301
1464

1465
                            INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1466

1467
                    WHERE   tr301.EmployeeID = @c_emp_id
1468

1469
                            AND tr301.PayPeriodMonth = SUBSTRING(CONVERT(VARCHAR, @last_period_payroll),
1470

1471
                                                              5, 2)
1472

1473
                            AND tr301.PayPeriodYear = tr301.RunPeriodYear
1474

1475
                            AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1476

1477
                                                           4)
1478

1479
		  
1480

1481
	--//get the latest run data
1482

1483
            INSERT  INTO @tbl_tr_dec
1484

1485
                    SELECT  tr_dec.*
1486

1487
                    FROM    @tbl_tr_dec_tmp AS tr_dec
1488

1489
                            INNER JOIN ( SELECT employee_id ,
1490

1491
                                                wage_type ,
1492

1493
                                                MAX(run_period_month) AS run_period_month
1494

1495
                                         FROM   @tbl_tr_dec_tmp
1496

1497
                                         GROUP BY employee_id ,
1498

1499
                                                wage_type
1500

1501
                                       ) a ON tr_dec.employee_id = a.employee_id
1502

1503
                                              AND tr_dec.wage_type = a.wage_type
1504

1505
                                              AND tr_dec.run_period_month = a.run_period_month
1506

1507

1508

1509

1510

1511
            INSERT  INTO @tbl_tr_dec_ori_tmp
1512

1513
                    SELECT  tr301.EmployeeID ,
1514

1515
                            tr301.WageType ,
1516

1517
                            CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount), '0'),
1518

1519
                                         ',', '.') AS DECIMAL(22, 0)) ,
1520

1521
                            cu300.spt_no ,
1522

1523
                            tr301.RunPeriodMonth
1524

1525
                    FROM    dbo.PHRPYTR0301 AS tr301
1526

1527
                            INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1528

1529
                    WHERE   tr301.EmployeeID = @c_emp_id
1530

1531
                            AND tr301.PayPeriodMonth = SUBSTRING(CONVERT(VARCHAR, @last_period_payroll),
1532

1533
                                                              5, 2)
1534

1535
                            AND tr301.PayPeriodYear = tr301.RunPeriodYear
1536

1537
                            AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1538

1539
                                                           4)
1540

1541
		  
1542

1543
	--//get the latest run data
1544

1545
            INSERT  INTO @tbl_tr_dec_ori
1546

1547
                    SELECT  tr_dec_ori.*
1548

1549
                    FROM    @tbl_tr_dec_ori_tmp AS tr_dec_ori
1550

1551
                            INNER JOIN ( SELECT employee_id ,
1552

1553
                                                wage_type ,
1554

1555
                                                MAX(run_period_month) AS run_period_month
1556

1557
                                         FROM   @tbl_tr_dec_ori_tmp
1558

1559
                                         GROUP BY employee_id ,
1560

1561
                                                wage_type
1562

1563
                                       ) a ON tr_dec_ori.employee_id = a.employee_id
1564

1565
                                              AND tr_dec_ori.wage_type = a.wage_type
1566

1567
                                              AND tr_dec_ori.run_period_month = a.run_period_month
1568

1569
		
1570

1571
            IF ( @masa_perolehan_1 > '1'
1572

1573
                 OR @masa_perolehan_1 > '01'
1574

1575
               ) 
1576

1577
                BEGIN
1578

1579
                    SET @previous_period_payroll = CONVERT(INT, @masa_perolehan_1)
1580

1581
                        - 1
1582

1583
                    IF ( @previous_period_payroll < 10 ) 
1584

1585
                        SET @previous_period_payroll_varchar = '0'
1586

1587
                            + CONVERT(VARCHAR(1), @previous_period_payroll)
1588

1589
                    ELSE 
1590

1591
                        SET @previous_period_payroll_varchar = CONVERT(VARCHAR(2), @previous_period_payroll)
1592

1593
			
1594

1595
		--//get the latest pay period if previous period no pay period.
1596

1597
                    SET @previous_period_payroll0 = @previous_period_payroll
1598

1599
                    SELECT TOP ( 1 )
1600

1601
                            @previous_period_payroll0 = CONVERT(INT, PayPeriodMonth)
1602

1603
                    FROM    dbo.PHRPYTR0300
1604

1605
                    WHERE   EmployeeID = @c_emp_id
1606

1607
                            AND PayPeriodMonth <= @previous_period_payroll_varchar
1608

1609
                            AND PayPeriodYear = LEFT(@last_period_payroll, 4)
1610

1611
                            AND RunPeriodYear = LEFT(@last_period_payroll, 4)
1612

1613
                    ORDER BY PayPeriodMonth DESC
1614

1615
			
1616

1617
                    IF ( @previous_period_payroll0 < 10 ) 
1618

1619
                        SET @previous_period_payroll_varchar = '0'
1620

1621
                            + CONVERT(VARCHAR(1), @previous_period_payroll0)
1622

1623
                    ELSE 
1624

1625
                        SET @previous_period_payroll_varchar = CONVERT(VARCHAR(2), @previous_period_payroll0)
1626

1627
					
1628

1629
                    DELETE  FROM @tbl_tr_prev_ori
1630

1631
                    DELETE  FROM @tbl_tr_prev_cum
1632

1633
		
1634

1635
                    DELETE  FROM @tbl_tr_prev_ori_tmp
1636

1637
                    DELETE  FROM @tbl_tr_prev_cum_tmp
1638

1639

1640

1641
                    INSERT  INTO @tbl_tr_prev_ori_tmp
1642

1643
                            SELECT  tr301.EmployeeID ,
1644

1645
                                    tr301.WageType ,
1646

1647
                                    CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount),
1648

1649
                                                        '0'), ',', '.') AS DECIMAL(22,
1650

1651
                                                              0)) ,
1652

1653
                                    cu300.spt_no ,
1654

1655
                                    tr301.RunPeriodMonth
1656

1657
                            FROM    dbo.PHRPYTR0301 AS tr301
1658

1659
                                    INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1660

1661
                            WHERE   tr301.EmployeeID = @c_emp_id
1662

1663
                                    AND tr301.PayPeriodMonth = @previous_period_payroll_varchar
1664

1665
                                    AND tr301.PayPeriodYear = tr301.RunPeriodYear
1666

1667
                                    AND tr301.RunPeriodMonth = LEFT(@last_period_payroll,
1668

1669
                                                              4)
1670

1671

1672

1673
		--//get the latest run data
1674

1675
                    INSERT  INTO @tbl_tr_prev_ori
1676

1677
                            SELECT  tr_prev_ori.*
1678

1679
                            FROM    @tbl_tr_prev_ori_tmp AS tr_prev_ori
1680

1681
                                    INNER JOIN ( SELECT employee_id ,
1682

1683
                                                        wage_type ,
1684

1685
                                                        MAX(run_period_month) AS run_period_month
1686

1687
                                                 FROM   @tbl_tr_prev_ori_tmp
1688

1689
                                                 GROUP BY employee_id ,
1690

1691
                                                        wage_type
1692

1693
                                               ) a ON tr_prev_ori.employee_id = a.employee_id
1694

1695
                                                      AND tr_prev_ori.wage_type = a.wage_type
1696

1697
                                                      AND tr_prev_ori.run_period_month = a.run_period_month
1698

1699

1700

1701
                    INSERT  INTO @tbl_tr_prev_cum_tmp
1702

1703
                            SELECT  tr301.EmployeeID ,
1704

1705
                                    tr301.WageType ,
1706

1707
                                    CAST(REPLACE(ISNULL(dbo.GetPEN(tr301.Amount),
1708

1709
                                                        '0'), ',', '.') AS DECIMAL(22,
1710

1711
                                                              0)) ,
1712

1713
                                    cu300.spt_no ,
1714

1715
                                    tr301.RunPeriodMonth
1716

1717
                            FROM    dbo.PHRPYTR0301CUM AS tr301
1718

1719
                                    INNER JOIN @cu0300 AS cu300 ON cu300.code = tr301.WageType
1720

1721
                            WHERE   tr301.EmployeeID = @c_emp_id
1722

1723
                                    AND tr301.PayPeriodMonth = @previous_period_payroll_varchar
1724

1725
                                    AND tr301.PayPeriodYear = tr301.RunPeriodYear
1726

1727
                                    AND tr301.RunPeriodYear = LEFT(@last_period_payroll,
1728

1729
                                                              4)
1730

1731

1732

1733
		--//get the latest run data
1734

1735
                    INSERT  INTO @tbl_tr_prev_cum
1736

1737
                            SELECT  tr_prev_cum.*
1738

1739
                            FROM    @tbl_tr_prev_cum_tmp AS tr_prev_cum
1740

1741
                                    INNER JOIN ( SELECT employee_id ,
1742

1743
                                                        wage_type ,
1744

1745
                                                        MAX(run_period_month) AS run_period_month
1746

1747
                                                 FROM   @tbl_tr_prev_cum_tmp
1748

1749
                                                 GROUP BY employee_id ,
1750

1751
                                                        wage_type
1752

1753
                                               ) a ON tr_prev_cum.employee_id = a.employee_id
1754

1755
                                                      AND tr_prev_cum.wage_type = a.wage_type
1756

1757
                                                      AND tr_prev_cum.run_period_month = a.run_period_month	
1758

1759
                END 
1760

1761

1762

1763
            DECLARE @emp_status VARCHAR(2) ,
1764

1765
                @emp_type VARCHAR(2) ,
1766

1767
                @movement_type VARCHAR(2) ,
1768

1769
                @movement_reason VARCHAR(2) ,
1770

1771
                @emp_type_payroll VARCHAR(20) ,
1772

1773
                @movement_reason_payroll VARCHAR(20) ,
1774

1775
                @is_pegawai_baru VARCHAR(1)
1776

1777
		
1778

1779
            DECLARE @death_mov_reason VARCHAR(5)
1780

1781
            SELECT TOP ( 1 )
1782

1783
                    @death_mov_reason = Value1
1784

1785
            FROM    dbo.PCMEPGENPARAM
1786

1787
            WHERE   Parameter = 'HR_ESPT_MOV_REASON_DEATH'
1788

1789
                    AND StartDate <= @endda
1790

1791
                    AND EndDate >= @endda
1792

1793
		
1794

1795
            SELECT  @emp_status = md02.EmployeeStatus ,
1796

1797
                    @emp_type = md02.EmployeeType ,
1798

1799
                    @movement_type = md02.MovementType ,
1800

1801
                    @movement_reason = md02.MovementReason ,
1802

1803
                    @emp_type_payroll = ret.PayrollProcess ,
1804

1805
                    @movement_reason_payroll = rmr.PayrollProcess
1806

1807
            FROM    dbo.PHRPA0002 md02
1808

1809
                    INNER JOIN dbo.PCMEPEMPTYP ret ON md02.EmployeeType = ret.EmployeeType
1810

1811
                    INNER JOIN dbo.PCMEPMOVR rmr ON md02.MovementReason = rmr.MovementReason
1812

1813
            WHERE   EmployeeID = @c_emp_id
1814

1815
                    AND md02.StartDate <= @endda
1816

1817
                    AND md02.EndDate >= @endda
1818

1819
		
1820

1821
	
1822

1823
            SET @is_pegawai_baru = '0'
1824

1825
            IF @c_start_date > @begda 
1826

1827
                BEGIN
1828

1829
                    SELECT  @is_pegawai_baru = CASE WHEN HiringDate >= @c_start_date
1830

1831
                                                    THEN '1'
1832

1833
                                                    ELSE '0'
1834

1835
                                               END
1836

1837
                    FROM    dbo.PHRPA0015
1838

1839
                    WHERE   EmployeeID = @c_emp_id
1840

1841
                END
1842

1843

1844

1845
	--//Setting flag status
1846

1847
            IF @emp_status = '01'
1848

1849
                AND @masa_perolehan_1 = '1'
1850

1851
                AND @masa_perolehan_2 = '12'
1852

1853
                AND ISNULL(@emp_type_payroll, '') <> 'EXP' 
1854

1855
                SET @flag_status = '0'
1856

1857
            ELSE 
1858

1859
                IF @emp_status = '01'
1860

1861
                    AND @masa_perolehan_1 = '1'
1862

1863
                    AND @masa_perolehan_2 = '12'
1864

1865
                    AND ISNULL(@emp_type_payroll, '') = 'EXP' 
1866

1867
                    SET @flag_status = '3'
1868

1869
                ELSE 
1870

1871
                    IF @emp_status = '01'
1872

1873
                        AND @masa_perolehan_2 <> '12' 
1874

1875
                        SET @flag_status = '1'
1876

1877
                    ELSE 
1878

1879
                        IF @is_pegawai_baru = '1' 
1880

1881
                            SET @flag_status = '4'
1882

1883
                        ELSE 
1884

1885
                            IF @emp_status = '01'
1886

1887
                                AND @masa_perolehan_2 <> '1'
1888

1889
                                AND @masa_perolehan_2 = '12' 
1890

1891
                                SET @flag_status = '5'
1892

1893
                            ELSE 
1894

1895
                                IF ( @movement_type = '17'
1896

1897
                                     OR @emp_status <> '01'
1898

1899
                                   ) 
1900

1901
                                    BEGIN
1902

1903
                                        IF @movement_reason = '12' 
1904

1905
                                            SET @flag_status = '2'
1906

1907
                                        ELSE 
1908

1909
                                            IF @movement_reason = @death_mov_reason
1910

1911
                                                OR @emp_type_payroll = 'EXP' 
1912

1913
                                                SET @flag_status = '3'
1914

1915
                                            ELSE 
1916

1917
                                                IF @masa_perolehan_1 = '1'
1918

1919
                                                    AND @masa_perolehan_2 = '12' 
1920

1921
                                                    SET @flag_status = '0'
1922

1923
                                                ELSE 
1924

1925
                                                    SET @flag_status = '2'
1926

1927
                                    END
1928

1929

1930

1931
            SELECT  @a1 = ISNULL(SUM(amount), 0)
1932

1933
            FROM    @tbl_tr_dec
1934

1935
            WHERE   spt_no = 1
1936

1937
            GROUP BY spt_no
1938

1939

1940

1941
            IF ( @masa_perolehan_1 <> '1' ) 
1942

1943
                SELECT  @a1 = @a1 - ISNULL(SUM(amount), 0)
1944

1945
                FROM    @tbl_tr_prev_cum
1946

1947
                WHERE   spt_no = 1
1948

1949
                GROUP BY spt_no
1950

1951

1952

1953
            SET @a1 = ISNULL(@a1, 0)
1954

1955
            SELECT  @a2 = ISNULL(SUM(amount), 0)
1956

1957
            FROM    @tbl_tr_dec
1958

1959
            WHERE   spt_no = 2
1960

1961
            GROUP BY spt_no
1962

1963

1964

1965
            IF ( @masa_perolehan_1 <> '1' ) 
1966

1967
                SELECT  @a2 = @a2 - ISNULL(SUM(amount), 0)
1968

1969
                FROM    @tbl_tr_prev_cum
1970

1971
                WHERE   spt_no = 2
1972

1973
                GROUP BY spt_no
1974

1975
				  
1976

1977
				
1978

1979
            SET @a2 = ISNULL(@a2, 0)
1980

1981
	
1982

1983
            SELECT  @a3 = ISNULL(SUM(amount), 0)
1984

1985
            FROM    @tbl_tr_dec
1986

1987
            WHERE   spt_no = 3
1988

1989
            GROUP BY spt_no
1990

1991
	  
1992

1993
            IF ( @masa_perolehan_1 <> '1' ) 
1994

1995
                SELECT  @a3 = @a3 - ISNULL(SUM(amount), 0)
1996

1997
                FROM    @tbl_tr_prev_cum
1998

1999
                WHERE   spt_no = 3
2000

2001
                GROUP BY spt_no
2002

2003
				  
2004

2005
            SET @a3 = ISNULL(@a3, 0)
2006

2007
	
2008

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

2011
            FROM    @tbl_tr_dec
2012

2013
            WHERE   spt_no = 4
2014

2015
            GROUP BY spt_no
2016

2017
	
2018

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

2021
	
2022

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

2025
            FROM    @tbl_tr_dec
2026

2027
            WHERE   spt_no = 5
2028

2029
            GROUP BY spt_no
2030

2031
					  
2032

2033
            IF ( @masa_perolehan_1 <> '1' ) 
2034

2035
                SELECT  @a5 = @a5 - ISNULL(SUM(amount), 0)
2036

2037
                FROM    @tbl_tr_prev_cum
2038

2039
                WHERE   spt_no = 5
2040

2041
                GROUP BY spt_no
2042

2043
					  
2044

2045
            SET @a5 = ISNULL(@a5, 0)
2046

2047
            SELECT  @a6 = ISNULL(SUM(amount), 0)
2048

2049
            FROM    @tbl_tr_dec
2050

2051
            WHERE   spt_no = 6
2052

2053
            GROUP BY spt_no
2054

2055
	
2056

2057
            SET @a6 = ISNULL(@a6, 0)
2058

2059

2060

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

2063

2064

2065
            SELECT  @a8 = ISNULL(SUM(amount), 0)
2066

2067
            FROM    @tbl_tr_dec
2068

2069
            WHERE   spt_no = 8
2070

2071
            GROUP BY spt_no
2072

2073
					  
2074

2075
            IF ( @masa_perolehan_1 <> '1' ) 
2076

2077
                SELECT  @a8 = @a8 - ISNULL(SUM(amount), 0)
2078

2079
                FROM    @tbl_tr_prev_cum
2080

2081
                WHERE   spt_no = 8
2082

2083
                GROUP BY spt_no
2084

2085

2086

2087
            SET @a8 = ISNULL(@a8, 0)
2088

2089

2090

2091
            SET @a9 = ISNULL(@a7 + @a8, 0)
2092

2093

2094

2095
            SELECT  @a10 = ISNULL(SUM(amount), 0)
2096

2097
            FROM    @tbl_tr_dec
2098

2099
            WHERE   spt_no = 10
2100

2101
            GROUP BY spt_no
2102

2103

2104

2105
            IF ( @masa_perolehan_1 <> '1' ) 
2106

2107
                SELECT  @a10 = @a10 - ISNULL(SUM(amount), 0)
2108

2109
                FROM    @tbl_tr_prev_cum
2110

2111
                WHERE   spt_no = 10
2112

2113
                GROUP BY spt_no
2114

2115

2116

2117
            SET @a10 = ISNULL(@a10, 0)
2118

2119

2120

2121
            SET @tot_biaya_jabatan = 500000 * @jml_bulan_perolehan
2122

2123
            IF ( @a10 > @tot_biaya_jabatan ) 
2124

2125
                BEGIN
2126

2127
                    SET @a10 = @tot_biaya_jabatan
2128

2129
                    SET @a11 = 0
2130

2131
                END
2132

2133

2134

2135
            SELECT  @a11 = ISNULL(SUM(amount), 0)
2136

2137
            FROM    @tbl_tr_dec
2138

2139
            WHERE   spt_no = 11
2140

2141
            GROUP BY spt_no
2142

2143
					  
2144

2145
            IF ( @masa_perolehan_1 <> '1' ) 
2146

2147
                SELECT  @a11 = @a11 - ISNULL(SUM(amount), 0)
2148

2149
                FROM    @tbl_tr_prev_cum
2150

2151
                WHERE   spt_no = 11
2152

2153
                GROUP BY spt_no
2154

2155
					  
2156

2157
            SET @a11 = ISNULL(@a11, 0)
2158

2159

2160

2161
            IF ( ( @a10 + @a11 ) > @tot_biaya_jabatan ) 
2162

2163
                BEGIN 
2164

2165
                    SET @a11 = @tot_biaya_jabatan - @a10
2166

2167
                END
2168

2169

2170

2171
            SELECT  @a12 = ISNULL(SUM(amount), 0)
2172

2173
            FROM    @tbl_tr_dec
2174

2175
            WHERE   spt_no = 12
2176

2177
            GROUP BY spt_no
2178

2179

2180

2181
            IF ( @masa_perolehan_1 <> '1' ) 
2182

2183
                SELECT  @a12 = @a12 - ISNULL(SUM(amount), 0)
2184

2185
                FROM    @tbl_tr_prev_cum
2186

2187
                WHERE   spt_no = 12
2188

2189
                GROUP BY spt_no
2190

2191

2192

2193
            SET @a12 = ISNULL(@a12, 0)
2194

2195
	
2196

2197
            SET @a13 = ISNULL(@a10 + @a11 + @a12, 0)
2198

2199
	
2200

2201
            SET @a14 = ISNULL(@a9 - @a13, 0)
2202

2203

2204

2205
            SELECT  @a15 = ISNULL(SUM(amount), 0)
2206

2207
            FROM    @tbl_tr_dec_ori
2208

2209
            WHERE   spt_no = 15
2210

2211
            GROUP BY spt_no
2212

2213
            SET @a15 = ISNULL(@a15, 0)
2214

2215

2216

2217
            SET @a16 = ISNULL(@a14 + @a15, 0)
2218

2219

2220

2221
	--//spt_no 16 case khusus flag_status khusus
2222

2223
            SELECT  @a16_flag = ISNULL(SUM(amount), 0)
2224

2225
            FROM    @tbl_tr_dec_ori
2226

2227
            WHERE   spt_no = 16
2228

2229
            GROUP BY spt_no
2230

2231
            SET @a16_flag = ISNULL(@a16_flag, 0)
2232

2233

2234

2235
            IF @movement_reason = @death_mov_reason
2236

2237
                OR ISNULL(@emp_type_payroll, '') = 'EXP' 
2238

2239
                BEGIN
2240

2241
                    SELECT  @a16 = CASE WHEN ISNULL(@emp_type_payroll, '') = 'EXP'
2242

2243
                                        THEN @a16
2244

2245
                                        ELSE @a16 * 12
2246

2247
                                             / ( CONVERT(INT, @masa_perolehan_2)
2248

2249
                                                 - CONVERT(INT, @masa_perolehan_1)
2250

2251
                                                 + 1 )
2252

2253
                                   END
2254

2255
                END
2256

2257
	
2258

2259
            IF @flag_status = '1'
2260

2261
                OR @flag_status = '3' 
2262

2263
                BEGIN
2264

2265
                    SET @a16 = @a16_flag
2266

2267
                END
2268

2269

2270

2271
            SET @a18 = @a16 - @a17
2272

2273
	
2274

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

2277
                BEGIN
2278

2279
                    DECLARE @Pembulatan1000 AS VARCHAR(19)
2280

2281
                    SET @Pembulatan1000 = CAST(@a18 AS VARCHAR(19)); 		
2282

2283
                    SET @a18 = SUBSTRING(@Pembulatan1000, 1,
2284

2285
                                         LEN(RTRIM(@Pembulatan1000)) - 3)
2286

2287
                        + REPLICATE('0', 3); 		
2288

2289
                END
2290

2291

2292

2293
	--//ambil mt murni tanpa kondisi
2294

2295
            SELECT  @a19murni = ISNULL(SUM(amount), 0)
2296

2297
            FROM    @tbl_tr_dec
2298

2299
            WHERE   spt_no = 19
2300

2301
            GROUP BY spt_no
2302

2303

2304

2305
	--//ambil att murni tanpa kondisi
2306

2307
            SELECT  @a17_att = ISNULL(SUM(amount), 0)
2308

2309
            FROM    @tbl_tr_dec_ori
2310

2311
            WHERE   spt_no = 99
2312

2313
            GROUP BY spt_no
2314

2315

2316

2317
	--//cek status employee apakah sudah resign
2318

2319
            SELECT  @a19 = ISNULL(SUM(amount), 0)
2320

2321
            FROM    @tbl_tr_dec
2322

2323
            WHERE   spt_no = 19
2324

2325
            GROUP BY spt_no
2326

2327

2328

2329
            IF ISNULL(@emp_type_payroll, '') = 'EXP' 
2330

2331
                BEGIN
2332

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

2335
                    FROM    @tbl_tr_prev_cum
2336

2337
                    WHERE   spt_no = 19
2338

2339
                    GROUP BY spt_no
2340

2341
                    SET @a19 = @a19 * 12 / ( CONVERT(INT, @masa_perolehan_2)
2342

2343
                                             - CONVERT(INT, @masa_perolehan_1)
2344

2345
                                             + 1 )			
2346

2347
                END
2348

2349
            ELSE 
2350

2351
                IF ( @movement_type = 17
2352

2353
                     OR @emp_status <> '01'
2354

2355
                   ) 
2356

2357
                    BEGIN
2358

2359
                        IF @movement_reason = '12' 
2360

2361
                            BEGIN
2362

2363
                                SET @a19 = ISNULL(@a19murni, 0)
2364

2365
                            END
2366

2367
                    END
2368

2369
                ELSE 
2370

2371
                    BEGIN
2372

2373
                        IF ( ( @masa_perolehan_1 = '1' )
2374

2375
                             AND ( @masa_perolehan_2 <> '12' )
2376

2377
                           ) 
2378

2379
                            BEGIN
2380

2381
                                SET @a19 = @a19 * 12
2382

2383
                                    / CONVERT(INT, @masa_perolehan_2)
2384

2385
                            END
2386

2387
                    END
2388

2389

2390

2391
            SET @a19 = ISNULL(@a19, 0)
2392

2393

2394

2395
            SELECT  @a20 = CASE WHEN CONVERT(INT, @masa_perolehan_1) > 1
2396

2397
                                THEN ISNULL(SUM(amount), 0)
2398

2399
                                ELSE 0
2400

2401
                           END
2402

2403
            FROM    @tbl_tr_dec_ori
2404

2405
            WHERE   spt_no = 20
2406

2407
            GROUP BY spt_no
2408

2409

2410

2411
            SET @a20 = ISNULL(@a20, 0)
2412

2413
			
2414

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

2417
            DECLARE @flag_running VARCHAR(200)
2418

2419
            SELECT  @flag_running = CASE WHEN COUNT(tr.EmployeeID) <= 0
2420

2421
                                         THEN 'no_data'
2422

2423
                                         ELSE 'yes_data'
2424

2425
                                    END
2426

2427
            FROM    dbo.PHRPYTR0300 AS tr
2428

2429
            WHERE   tr.RunPeriodMonth = tr.PayPeriodMonth
2430

2431
                    AND tr.RunPeriodYear = tr.PayPeriodYear
2432

2433
                    AND tr.RunPeriodMonth = @previous_period_payroll_varchar
2434

2435
                    AND tr.EmployeeID = @c_emp_id
2436

2437
	------------------ // pengecekan running selesai // ------------------ 
2438

2439

2440

2441
            IF ( @emp_status = '01'
2442

2443
                 AND NOT ( @masa_perolehan_1 = '1'
2444

2445
                           AND @masa_perolehan_2 = '12'
2446

2447
                         )
2448

2449
               )
2450

2451
                OR ISNULL(@emp_type_payroll, '') = 'EXP'
2452

2453
                OR @movement_reason = @death_mov_reason 
2454

2455
                BEGIN	
2456

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

2459
                        BEGIN
2460

2461
                            SET @a21 = ISNULL(@a19murni - 0, 0)
2462

2463
                        END 
2464

2465
                    ELSE 
2466

2467
                        BEGIN
2468

2469
                            SET @a21 = ISNULL(@a19murni - @a20, 0)
2470

2471
                        END --@a2--@a19 								
2472

2473
                END
2474

2475

2476

2477
		--ELSE
2478

2479
            SET @a21 = ISNULL(@a19 - @a20, 0)
2480

2481

2482

2483
		----// sementara di hard-code dulu, untuk handling case mks.
2484

2485

2486

2487
            SET @a22 = @a21 + @a20
2488

2489
            SET @a22a = 0
2490

2491
            SET @a22b = @a21
2492

2493
            SET @a23 = ISNULL(@a21 - @a22, 0)
2494

2495
            SET @a24 = ISNULL(@a23, 0)
2496

2497

2498

2499
            SET @bln_a24 = SUBSTRING(CONVERT(VARCHAR, @c_end_date), 5, 2)
2500

2501
                + LEFT(CONVERT(VARCHAR, @c_end_date), 4) 
2502

2503

2504

2505
            IF ( @a21 - @a22 = 0 ) 
2506

2507
                BEGIN
2508

2509
                    SET @flg_a24 = '0'
2510

2511
                    SET @bln_a24 = ''
2512

2513
                END
2514

2515

2516

2517
            IF ( @a21 - @a22 > 0 ) 
2518

2519
                BEGIN
2520

2521
                    SET @flg_a24 = '1'
2522

2523
                END
2524

2525

2526

2527
            IF ( @a21 - @a22 < 0 ) 
2528

2529
                BEGIN
2530

2531
                    SET @flg_a24 = '2'
2532

2533
                END
2534

2535

2536

2537
            SET @flg_a2 = '0'
2538

2539
		
2540

2541
		--//Pegawai yang dipindahkan
2542

2543
            SET @flg_a2 = '1'
2544

2545

2546

2547
            DELETE  @tbl_tr_dec
2548

2549
		
2550

2551
            INSERT  INTO @result
2552

2553
                    SELECT  @kode_form ,
2554

2555
                            @tahun_pajak ,
2556

2557
                            @pembetulan ,
2558

2559
                            CONVERT(CHAR, RIGHT('0000000'
2560

2561
                                                + CONVERT(VARCHAR(7), @nomor_urut),
2562

2563
                                                7)) AS nomor_urut ,
2564

2565
                            @npwp_pegawai ,
2566

2567
                            @nama_pegawai ,
2568

2569
                            @alamat_pegawai ,
2570

2571
                            @jabatan_pegawai ,
2572

2573
                            @jenis_kelamin ,
2574

2575
                            @status_pegawai ,
2576

2577
                            @status_kawin ,
2578

2579
                            @flag_asing ,
2580

2581
                            @status_ptkp ,
2582

2583
                            @jumlah_tanggungan ,
2584

2585
                            @masa_perolehan_1 ,
2586

2587
                            @masa_perolehan_2 ,
2588

2589
                            @flag_status ,
2590

2591
                            @a1 ,
2592

2593
                            @flg_a2 ,
2594

2595
                            @a2 ,
2596

2597
                            @a3 ,
2598

2599
                            @a4 ,
2600

2601
                            @a5 ,
2602

2603
                            @a6 ,
2604

2605
                            @a7 ,
2606

2607
                            @a8 ,
2608

2609
                            @a9 ,
2610

2611
                            @a10 ,
2612

2613
                            @a11 ,
2614

2615
                            @a12 ,
2616

2617
                            @a13 ,
2618

2619
                            @a14 ,
2620

2621
                            @a15 ,
2622

2623
                            @a16 ,
2624

2625
                            @a17 ,
2626

2627
                            @a18 ,
2628

2629
                            @a17_att ,
2630

2631
                            @a20 ,
2632

2633
                            @a21 ,
2634

2635
                            @a22 ,
2636

2637
                            @a22a ,
2638

2639
                            @a22b ,
2640

2641
                            @a23 ,
2642

2643
                            @a24 ,
2644

2645
                            @flg_a24 ,
2646

2647
                            @bln_a24 ,
2648

2649
                            @ktp
2650

2651
		--, @c_emp_id
2652

2653
                            ,
2654

2655
                            @nama_pemotong ,
2656

2657
                            @npwp_pemotong ,
2658

2659
                            @kode_pajak
2660

2661
		--, @company_name
2662

2663
					
2664

2665

2666

2667
            SET @nomor_urut = NULL
2668

2669
            SET @npwp_pegawai = NULL
2670

2671
            SET @nama_pegawai = NULL
2672

2673
            SET @alamat_pegawai = NULL
2674

2675
            SET @jabatan_pegawai = NULL
2676

2677
            SET @jenis_kelamin = NULL
2678

2679
            SET @status_pegawai = NULL
2680

2681
            SET @status_kawin = NULL
2682

2683
            SET @flag_asing = NULL
2684

2685
            SET @status_ptkp = NULL
2686

2687
            SET @jumlah_tanggungan = NULL
2688

2689
            SET @masa_perolehan_1 = NULL
2690

2691
            SET @masa_perolehan_2 = NULL
2692

2693
            SET @flag_status = NULL
2694

2695
            SET @a1 = NULL
2696

2697
            SET @flg_a2 = NULL
2698

2699
            SET @a2 = NULL
2700

2701
            SET @a3 = NULL
2702

2703
            SET @a4 = NULL
2704

2705
            SET @a5 = NULL
2706

2707
            SET @a6 = NULL
2708

2709
            SET @a7 = NULL
2710

2711
            SET @a8 = NULL
2712

2713
            SET @a9 = NULL
2714

2715
            SET @a10 = NULL
2716

2717
            SET @a11 = NULL
2718

2719
            SET @a12 = NULL
2720

2721
            SET @a13 = NULL
2722

2723
            SET @a14 = NULL
2724

2725
            SET @a15 = NULL
2726

2727
            SET @a16 = NULL
2728

2729
            SET @a16_flag = NULL
2730

2731
            SET @a17 = NULL
2732

2733
            SET @a18 = NULL
2734

2735
            SET @a19 = NULL
2736

2737
            SET @a20 = NULL
2738

2739
            SET @a21 = NULL
2740

2741
            SET @a22 = NULL
2742

2743
            SET @a22a = NULL
2744

2745
            SET @a22b = NULL
2746

2747
            SET @a23 = NULL
2748

2749
            SET @a24 = NULL
2750

2751
            SET @flg_a24 = NULL
2752

2753
            SET @bln_a24 = NULL
2754

2755

2756

2757
            FETCH cur_employee INTO @c_emp_id, @c_start_date, @c_end_date   
2758

2759
        END
2760

2761
    CLOSE cur_employee
2762

2763
    DEALLOCATE cur_employee
2764

2765

2766

2767
    UPDATE  @result
2768

2769
    SET     npwp_pegawai = '000000000000000'
2770

2771
    WHERE   LEN(npwp_pegawai) < 15
2772

2773

2774

2775
    UPDATE  @result
2776

2777
    SET     alamat_pegawai = '-'
2778

2779
    WHERE   alamat_pegawai = ''
2780

2781
            OR alamat_pegawai IS NULL
2782

2783
		
2784

2785
    SELECT  masa_perolehan_2 AS TaxPeriod ,
2786

2787
            tahun_pajak AS TaxableYear,
2788

2789
            pembetulan AS TaxCorrection ,
2790

2791
            '1.1-' + CONVERT(CHAR(2), RIGHT('00'
2792

2793
                                            + CONVERT(VARCHAR(2), masa_perolehan_2),
2794

2795
                                            2)) + '.' + RIGHT(@Year, 2) + '-'
2796

2797
            + nomor_urut AS WithholdingTax ,
2798

2799
            --CONVERT(CHAR(2), RIGHT('00' + CONVERT(VARCHAR(2), masa_perolehan_2),
2800

2801
            --                       2)) AS bulan_bukti_potong ,
2802

2803
            --RIGHT(@Year, 2) AS tahun_bukti_potong ,
2804

2805
            --nomor_urut ,
2806

2807
            masa_perolehan_1 AS AcquisitionPeriod ,
2808

2809
            masa_perolehan_2 AS AcquisitionPeriodFinal ,
2810

2811
            npwp_pegawai AS NPWP ,
2812

2813
            --RIGHT(npwp_pegawai, 3) AS tiga_akhir_npwp_pegawai ,
2814

2815
            --SUBSTRING(npwp_pegawai, 10, 3) AS enam_akhir_npwp_pegawai ,
2816

2817
            --LEFT(npwp_pegawai, 9) AS awal_npwp_pegawai ,
2818

2819
            --SUBSTRING(npwp_pegawai, 1, 2) + '.' + SUBSTRING(npwp_pegawai, 3, 3)
2820

2821
            --+ '.' + SUBSTRING(npwp_pegawai, 6, 3) + '.'
2822

2823
            --+ SUBSTRING(npwp_pegawai, 9, 1) AS awal_titik_npwp_pegawai ,
2824

2825
            ktp AS EmployeeID ,
2826

2827
            nama_pegawai AS Name,
2828

2829
            alamat_pegawai AS Address,
2830

2831
            CASE WHEN jenis_kelamin = 'W'
2832

2833
                      OR jenis_kelamin = 'Wanita'
2834

2835
                      OR jenis_kelamin = 'Female'
2836

2837
                      OR jenis_kelamin = 'F' THEN 'F'
2838

2839
                 WHEN jenis_kelamin = 'P'
2840

2841
                      OR jenis_kelamin = 'Pria'
2842

2843
                      OR jenis_kelamin = 'Male'
2844

2845
                      OR jenis_kelamin = 'M' THEN 'M'
2846

2847
            END AS Gender ,
2848

2849
            CASE WHEN status_ptkp = 'TK' THEN 'TK'
2850

2851
                 WHEN status_ptkp = 'K1'
2852

2853
                      OR status_ptkp = 'K2'
2854

2855
                      OR status_ptkp = 'K3' THEN 'K'
2856

2857
                 WHEN status_ptkp = 'T1'
2858

2859
                      OR status_ptkp = 'T2'
2860

2861
                      OR status_ptkp = 'T3' THEN 'HB'
2862

2863
            END AS PTKPStatus ,
2864

2865
            CASE WHEN status_ptkp = 'TK' THEN '0'
2866

2867
                 ELSE RIGHT(status_ptkp, 1)
2868

2869
            END AS NumberOfChildren --,jumlah_tanggungan
2870

2871
            ,
2872

2873
            jabatan_pegawai AS JobDescription ,
2874

2875
            CASE WHEN flag_asing = 0 THEN 'N'
2876

2877
                 ELSE 'Y'
2878

2879
            END AS NonResidentTaxpayer ,
2880

2881
            '' AS CountryCode ,
2882

2883
            kode_pajak AS TaxCode ,
2884

2885
            a1 AS Amount1 ,
2886

2887
            a2 AS Amount2 ,
2888

2889
            a3 AS Amount3 ,
2890

2891
            a4 AS Amount4 ,
2892

2893
            a5 AS Amount5 ,
2894

2895
            a6 AS Amount6 ,
2896

2897
            a8 AS Amount7 ,
2898

2899
            a9 AS Amount8 ,
2900

2901
            a10 + a11 AS Amount9 ,
2902

2903
            a12 AS Amount10 ,
2904

2905
            a13 AS Amount11 ,
2906

2907
            a14 AS Amount12 ,
2908

2909
            a15 AS Amount13 ,
2910

2911
            CASE WHEN a16 < 0 THEN 0
2912

2913
                 ELSE a16
2914

2915
            END AS Amount14 ,
2916

2917
            a17 AS Amount15 ,
2918

2919
            CASE WHEN a18 < 0 THEN 0
2920

2921
                 ELSE a18
2922

2923
            END AS Amount16 ,
2924

2925
            a19 AS Amount17 --@a17_att AS a17 
2926

2927
            ,
2928

2929
            CASE WHEN a20 < 0 THEN 0
2930

2931
                 ELSE a20
2932

2933
            END AS Amount18 ,
2934

2935
            a22 AS Amount19 ,--a21 AS Amount19 , dicomment by Tri nwh 20220426
2936

2937
            a22 AS Amount20 ,
2938

2939
            '' AS MovementStatus ,
2940

2941
            npwp_pemotong AS NPWPPemotong ,
2942

2943
            --RIGHT(npwp_pemotong, 3) AS tiga_akhir_npwp_pemotong ,
2944

2945
            --SUBSTRING(npwp_pemotong, 10, 3) AS enam_akhir_npwp_pemotong ,
2946

2947
            --LEFT(npwp_pemotong, 9) AS awal_npwp_pemotong ,
2948

2949
            --SUBSTRING(npwp_pemotong, 1, 2) + '.' + SUBSTRING(npwp_pemotong, 3,
2950

2951
            --                                                 3) + '.'
2952

2953
            --+ SUBSTRING(npwp_pemotong, 6, 3) + '.' + SUBSTRING(npwp_pemotong,
2954

2955
            --                                                  9, 1) AS awal_titik_npwp_pemotong ,
2956

2957
            nama_pemotong AS NamaPemotong ,
2958

2959
            dbo.fn_formatdatetime(GETDATE(), 'dd/mm/yyyy') AS TanggalBuktiPotong 
2960

2961
            --dbo.fn_formatdatetime(GETDATE(), 'dd') AS day_tgl_bukti_potong ,
2962

2963
            --dbo.fn_formatdatetime(GETDATE(), 'mm') AS month_tgl_bukti_potong ,
2964

2965
            --dbo.fn_formatdatetime(GETDATE(), 'yyyy') AS year_tgl_bukti_potong
2966

2967
    FROM    @result
2968

2969

(2-2/2)