Project

General

Profile

Bug #3948 » Rpt_HR_PY_eSPT_2014_202510101140.sql

Tri Rizqiaty, 10/10/2025 11:41 AM

 
1
??USE [MinovaHR_Indomobil_Prod]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[Rpt_HR_PY_eSPT_2014]    Script Date: 10/10/2025 11.10.10 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER procedure [dbo].[Rpt_HR_PY_eSPT_2014]
16

17
	@landscape varchar(3),
18

19
	@company_code varchar(4),
20

21
	@year varchar(4),
22

23
	@tax_office varchar(8),
24

25
	@employee_status varchar(2) = null,
26

27
	@payroll_group varchar(2) = null,
28

29
	@emp_id_beg varchar(8) = null,
30

31
	@emp_id_end varchar(8) = NULL
32

33
AS
34

35
SET NOCOUNT ON;
36

37

38

39
--DECLARE @landscape varchar(3) = '100'
40

41
--DECLARE @company_code varchar(4) = '1000'
42

43
--DECLARE @year varchar(4) = '2025'
44

45
--DECLARE @tax_office varchar(8) = 'BDG'
46

47
--DECLARE @employee_status varchar(2) = ''
48

49
--DECLARE @payroll_group varchar(2) = '13'
50

51
--DECLARE @emp_id_beg varchar(8) = ''--'20240091'
52

53
--DECLARE @emp_id_end varchar(8) = ''--'20240091'
54

55

56

57
DECLARE @begda INT
58

59
DECLARE @endda INT
60

61
DECLARE @employee_status_beg VARCHAR(2)
62

63
DECLARE @employee_status_end VARCHAR(2)
64

65
DECLARE @payroll_group_beg VARCHAR(2)
66

67
DECLARE @payroll_group_END VARCHAR(2)
68

69

70

71
--Set begin & end of period
72

73
SET @begda = @year + '0101'
74

75
SET @endda = @year + '1231'
76

77

78

79
--Set employee status
80

81
IF @employee_status = '' or  @employee_status is null 
82

83
BEGIN
84

85
	SET @employee_status_beg = '00'
86

87
	SET @employee_status_end = '99'
88

89
END
90

91
ELSE
92

93
BEGIN
94

95
	SET @employee_status_beg = @employee_status
96

97
	SET @employee_status_end = @employee_status
98

99
END
100

101

102

103
--Set employee group
104

105
IF @payroll_group = '' or @payroll_group  is null
106

107
BEGIN
108

109
	SET @payroll_group_beg = @payroll_group
110

111
	SET @payroll_group_END = @payroll_group
112

113
END
114

115
ELSE
116

117
BEGIN
118

119
	SET @payroll_group_beg = @payroll_group
120

121
	SET @payroll_group_END = @payroll_group
122

123
END
124

125

126

127

128

129
--Set employee id start
130

131
IF @emp_id_beg = '' or  @emp_id_beg is null 
132

133
BEGIN
134

135
	SET @emp_id_beg = '00000000'
136

137
	SET @emp_id_end = '99999999'
138

139
END
140

141

142

143
IF @emp_id_end = '' or  @emp_id_end is null 
144

145
	SET @emp_id_end =  @emp_id_beg 
146

147

148

149
--Get system parameter
150

151
DECLARE @is_encrypted VARCHAR
152

153
DECLARE @npwp_address_subtype VARCHAR(4)
154

155

156

157
SELECT @is_encrypted = val1
158

159
FROM dbo.base_cust_parameter
160

161
WHERE
162

163
	landscape = @landscape
164

165
	AND param = 'HR_PY_ENCRYPTED'
166

167
	AND start_date <= @endda
168

169
	AND end_date >= @endda
170

171

172

173
SELECT @npwp_address_subtype = val1
174

175
FROM dbo.base_cust_parameter
176

177
WHERE
178

179
	landscape = @landscape
180

181
	AND param = 'HR_PY_NPWP_ADDRESS_SUBTYPE'
182

183
	AND start_date <= @endda
184

185
	AND end_date >= @endda
186

187

188

189
--#ENDregion
190

191

192

193

194

195
--Get employee tax office list
196

197

198

199
DECLARE @emp_office table (
200

201
	[landscape] [VARCHAR](3) not null,
202

203
	[emp_subarea] [VARCHAR](4) not null,
204

205
	[emp_area] [VARCHAR](4) not null,
206

207
	[emp_subarea_description] [nVARCHAR](250) null,
208

209
	[tax_office] [VARCHAR](3) null,
210

211
	[npwp] [VARCHAR](30) null,
212

213
	[address] [VARCHAR](300) null,
214

215
	[employee_office_group] [VARCHAR](100) null,
216

217
	[ump_code] [VARCHAR](100) null,
218

219
	[remarks] [VARCHAR](100) null)
220

221

222

223
INSERT INTO @emp_office
224

225
SELECT *
226

227
FROM
228

229
	base_cust_ref_emp_office
230

231
WHERE
232

233
	landscape = @landscape
234

235
	AND tax_office = @tax_office
236

237
	
238

239
--Get Employee Tobe Processed
240

241
DECLARE @employee_tobe_process2 table 
242

243
(
244

245
	landscape VARCHAR(3),
246

247
	emp_id VARCHAR(8),
248

249
	start_date INT,
250

251
	end_date INT,
252

253
	employee_status VARCHAR(2)
254

255
)
256

257

258

259
DECLARE @employee_tobe_process table 
260

261
(
262

263
	landscape VARCHAR(3),
264

265
	emp_id VARCHAR(8),
266

267
	start_date INT,
268

269
	end_date INT
270

271
)
272

273

274

275
DECLARE @payroll_header TABLE (employee_id varchar(8), start_date varchar(8), end_date varchar(8), employee_office varchar(4), tax_office varchar(10), run_period_month VARCHAR(2))
276

277
DECLARE @payroll_header_tmp TABLE (employee_id varchar(8), start_date varchar(8), end_date varchar(8), employee_office varchar(4), tax_office varchar(10), run_period_month VARCHAR(2))
278

279
DECLARE @payroll_header0 TABLE (employee_id varchar(8), start_date varchar(8), end_date varchar(8), employee_office varchar(4), tax_office varchar(10), run_period_month VARCHAR(2))
280

281

282

283
INSERT INTO @payroll_header_tmp
284

285
SELECT DISTINCT employee_id, ph.start_date, ph.end_date, md2.employee_office, md2.tax_office, run_period_month
286

287
		FROM hr_tr0300 ph
288

289
		INNER JOIN hr_md_emp_md0002 md2
290

291
				ON md2.landscape = ph.landscape
292

293
					AND md2.emp_id = ph.employee_id
294

295
			WHERE ph.landscape = @landscape 
296

297
			AND ph.start_date >= @begda 
298

299
			AND ph.end_date <= @endda
300

301
			AND md2.start_date <= ph.end_date
302

303
			AND md2.end_date >= ph.end_date
304

305
			AND employee_id BETWEEN @emp_id_beg AND @emp_id_end
306

307
			AND (md2.payroll_group = @payroll_group OR @payroll_group = '')
308

309
----SELECT DISTINCT employee_id FROm @payroll_header_tmp order by employee_id asc	
310

311
--get the latest run data
312

313
INSERT INTO @payroll_header0
314

315
SELECT py_head.*
316

317
FROM
318

319
  @payroll_header_tmp as py_head
320

321
  inner join (SELECT employee_id
322

323
				   , start_date
324

325
				   , end_date
326

327
				   , max(run_period_month) as run_period_month
328

329
			  FROM
330

331
				  @payroll_header_tmp
332

333
			  group by
334

335
				  employee_id
336

337
				, start_date
338

339
				, end_date) a
340

341
	  on py_head.employee_id = a.employee_id 
342

343
		 and py_head.start_date = a.start_date 
344

345
		 and py_head.end_date = a.end_date
346

347
		 and py_head.run_period_month = a.run_period_month
348

349
			
350

351
INSERT INTO @payroll_header
352

353
SELECT DISTINCT employee_id, start_date, end_date, employee_office, ph0.tax_office, run_period_month
354

355
		FROM @payroll_header0 ph0
356

357
			LEFT OUTER JOIN @emp_office eo
358

359
				ON (ph0.employee_office = eo.emp_subarea OR ph0.tax_office = eo.tax_office)
360

361
		WHERE eo.landscape = @landscape
362

363
			AND ((ph0.tax_office = @tax_office) OR 
364

365
				 (eo.tax_office = @tax_office AND (ISNULL(ph0.tax_office, '') = '')))
366

367
				
368

369
			
370

371
DECLARE @count_pay_header INT
372

373
	  
374

375
SELECT @count_pay_header = COUNT(*)
376

377
FROM @payroll_header
378

379

380

381
IF (@count_pay_header = 0)
382

383
BEGIN
384

385
	INSERT INTO @payroll_header
386

387
	SELECT DISTINCT employee_id, start_date, end_date, employee_office, ph0.tax_office, run_period_month
388

389
			FROM @payroll_header0 ph0
390

391
			WHERE ph0.tax_office = @tax_office
392

393
END	
394

395
			
396

397
	
398

399
--get list spliiter running payroll for others TAX Office.
400

401

402

403
SELECT DISTINCT employee_id, start_date, end_date, employee_office, run_period_month
404

405
INTO #tmp0
406

407
	FROM @payroll_header0 ph0
408

409
	WHERE NOT EXISTS 
410

411
		(
412

413
			SELECT * 
414

415
			FROM @payroll_header ph
416

417
			WHERE ph0.employee_id = ph.employee_id
418

419
				AND ph0.start_date = ph.start_date
420

421
				AND ph0.end_date = ph.end_date
422

423
				AND ph0.employee_office = ph.employee_office
424

425
				AND ph0.tax_office = ph.tax_office
426

427
				AND ph0.run_period_month = ph.run_period_month
428

429
		)
430

431
	
432

433
-- Get list date range splitter.
434

435
SELECT a.employee_id, a.start_date mindt0, b.start_date maxdt0
436

437
INTO #tmp
438

439
FROM @payroll_header a, @payroll_header b
440

441
WHERE a.employee_id = b.employee_id
442

443
	AND b.start_date > a.start_date
444

445
	AND (convert(INT,substring(b.start_date,5,2)) - convert(INT,substring(a.start_date,5,2))) > 1
446

447
	AND (
448

449
			SELECT COUNT(*)
450

451
			FROM @payroll_header c
452

453
			WHERE (convert(INT,substring(a.start_date,5,2)) < convert(INT,substring(c.start_date,5,2)))
454

455
				AND (convert(INT,substring(b.start_date,5,2)) > convert(INT,substring(c.end_date,5,2)))
456

457
				AND c.employee_id = a.employee_id
458

459
		  ) = 0
460

461
	AND (
462

463
			SELECT COUNT(*)
464

465
			FROM #tmp0 d
466

467
			WHERE d.employee_id = a.employee_id
468

469
				AND a.start_date < d.start_date
470

471
				AND b.start_date > d.end_date
472

473
		) <> 0
474

475
	
476

477
DROP TABLE #tmp0
478

479

480

481

482

483
DECLARE @n_empty_range INT  
484

485
SELECT @n_empty_range = COUNT(*)
486

487
FROM #tmp	  
488

489
  
490

491
IF (@n_empty_range <> 0)
492

493
BEGIN
494

495
	INSERT INTO @employee_tobe_process
496

497
	SELECT ddd.landscape, ddd.employee_id, ddd.mindt, ddd.maxdt
498

499
	FROM
500

501
	(
502

503
		SELECT @landscape 'landscape', dd.employee_id, MIN(dd.start_date) mindt, MAX(dd.end_date) maxdt
504

505
		FROM
506

507
		(
508

509
			SELECT x.employee_id, x.start_date, x.end_date, SUM(ISNULL(d.flag, 0)) flag
510

511
			FROM @payroll_header x
512

513
			LEFT OUTER JOIN
514

515
			(
516

517
				SELECT a.*, 1 'flag'
518

519
				FROM @payroll_header a
520

521
				LEFT OUTER JOIN #tmp b
522

523
					ON a.employee_id = b.employee_id
524

525
				WHERE a.start_date <= b.mindt0
526

527
					AND a.end_date < b.maxdt0
528

529
			) d
530

531
			ON x.employee_id = d.employee_id
532

533
				AND x.start_date = d.start_date
534

535
				AND x.end_date = d.end_date
536

537
			GROUP BY x.employee_id, x.start_date, x.end_date
538

539
		) dd
540

541
		GROUP BY dd.employee_id, dd.flag	
542

543
	) ddd
544

545
	ORDER BY ddd.employee_id, ddd.mindt		
546

547
END
548

549
ELSE
550

551
BEGIN
552

553
	INSERT INTO @employee_tobe_process
554

555
	SELECT @landscape, main.employee_id, mindate.mindt, maxdate.maxdt
556

557
		FROM (SELECT DISTINCT employee_id 
558

559
			FROM @payroll_header) main
560

561
		INNER JOIN (SELECT ph.employee_id, MIN(ph.start_date) mindt 
562

563
			FROM @payroll_header ph
564

565
			GROUP BY employee_id) mindate
566

567
			ON main.employee_id = mindate.employee_id
568

569
		INNER JOIN (SELECT employee_id, MAX(end_date) maxdt 
570

571
			FROM @payroll_header ph
572

573
			GROUP BY employee_id) maxdate
574

575
			ON main.employee_id = maxdate.employee_id
576

577
END
578

579
				
580

581
DROP TABLE #tmp
582

583
  
584

585
--SELECT * FROM @employee_tobe_process   
586

587
               
588

589
DECLARE @kode_form VARCHAR(7)
590

591
DECLARE @tahun_pajak VARCHAR(4)
592

593
DECLARE @pembetulan INT
594

595
DECLARE @nomor_urut VARCHAR(7)
596

597
DECLARE @npwp_pegawai VARCHAR(15)
598

599
DECLARE @nama_pegawai VARCHAR(50)
600

601
DECLARE @alamat_pegawai VARCHAR(255)
602

603
DECLARE @jabatan_pegawai VARCHAR(30)
604

605
DECLARE @jenis_kelamin VARCHAR(1)
606

607
DECLARE @status_pegawai VARCHAR(1)
608

609
DECLARE @status_kawin VARCHAR(1)
610

611
DECLARE @flag_asing VARCHAR(1)
612

613
DECLARE @status_ptkp  VARCHAR(2)
614

615
DECLARE @jumlah_tanggungan VARCHAR(1)
616

617
DECLARE @masa_perolehan_1 VARCHAR(2)
618

619
DECLARE @masa_perolehan_2 VARCHAR(2)
620

621
DECLARE @flag_status  VARCHAR(1)
622

623
DECLARE @a1 decimal
624

625
DECLARE @flg_a2 VARCHAR(1)
626

627
DECLARE @a2 decimal
628

629
DECLARE @a3 decimal
630

631
DECLARE @a4 decimal
632

633
DECLARE @a5 decimal
634

635
DECLARE @a6 decimal
636

637
DECLARE @a7 decimal
638

639
DECLARE @a8 decimal
640

641
DECLARE @a9 decimal
642

643
DECLARE @a10 decimal
644

645
DECLARE @a11 decimal
646

647
DECLARE @a12 decimal
648

649
DECLARE @a13 decimal
650

651
DECLARE @a14 decimal
652

653
DECLARE @a15 decimal
654

655
DECLARE @a16 DECIMAL
656

657
DECLARE @a16_flag DECIMAL
658

659
DECLARE @a17 decimal
660

661
DECLARE @a18 decimal
662

663
DECLARE @a19 decimal
664

665
DECLARE @a19b decimal
666

667
DECLARE @a20 decimal
668

669
DECLARE @a21 decimal
670

671
DECLARE @a22 decimal
672

673
DECLARE @a22a decimal
674

675
DECLARE @a22b decimal
676

677
DECLARE @a23 decimal
678

679
DECLARE @a24 decimal
680

681
DECLARE @flg_a24 VARCHAR(1)
682

683
DECLARE @bln_a24 VARCHAR(6)
684

685
DECLARE @masa_pajak VARCHAR(10)
686

687
DECLARE @kode_pajak VARCHAR(30)
688

689
DECLARE @npwp_pemotong VARCHAR(15)
690

691
DECLARE @nama_pemotong VARCHAR(200)
692

693
DECLARE @company_name VARCHAR(200)
694

695
DECLARE @a19murni DECIMAL
696

697
DECLARE @a17_att DECIMAL
698

699
DECLARE @ktp VARCHAR(50)
700

701

702

703
DECLARE @jml_bulan_perolehan int
704

705
DECLARE @tot_biaya_jabatan decimal
706

707

708

709
DECLARE @result table (              
710

711
	 kode_form VARCHAR(7)
712

713
	,tahun_pajak VARCHAR(4)
714

715
	,pembetulan INT
716

717
	,nomor_urut CHAR(7)
718

719
	,npwp_pegawai VARCHAR(30)
720

721
	,nama_pegawai VARCHAR(50)
722

723
	,alamat_pegawai VARCHAR(255)
724

725
	,jabatan_pegawai VARCHAR(30)
726

727
	,jenis_kelamin VARCHAR(5)
728

729
	,status_pegawai VARCHAR(5)
730

731
	,status_kawin VARCHAR(5)
732

733
	,flag_asing VARCHAR(1)
734

735
	,status_ptkp  VARCHAR(5)
736

737
	,jumlah_tanggungan VARCHAR(1)
738

739
	,masa_perolehan_1 VARCHAR(2)
740

741
	,masa_perolehan_2 VARCHAR(2)
742

743
	,flag_status  VARCHAR(1)
744

745
	,a1 decimal
746

747
	,flg_a2 VARCHAR(1)
748

749
	,a2 DECIMAL
750

751
	,a3 decimal
752

753
	,a4 decimal
754

755
	,a5 decimal
756

757
	,a6 decimal
758

759
	,a7 decimal
760

761
	,a8 decimal
762

763
	,a9 decimal
764

765
	,a10 decimal
766

767
	,a11 decimal
768

769
	,a12 decimal
770

771
	,a13 decimal
772

773
	,a14 decimal
774

775
	,a15 decimal
776

777
	,a16 decimal
778

779
	,a17 decimal
780

781
	,a18 decimal
782

783
	,a19 decimal
784

785
	,a20 decimal
786

787
	,a21 decimal
788

789
	,a22 decimal
790

791
	,a22a decimal
792

793
	,a22b decimal
794

795
	,a23 decimal
796

797
	,a24 decimal
798

799
	,flg_a24 VARCHAR(1)
800

801
	,bln_a24 VARCHAR(6)
802

803
	,KTP VARCHAR(50)
804

805
	,nama_pemotong VARCHAR(200)
806

807
	,npwp_pemotong VARCHAR(30)
808

809
	,kode_pajak VARCHAR(30)
810

811
	,company_name VARCHAR(200)
812

813
	,emp_id VARCHAR(20)
814

815
)                   
816

817
 
818

819
DECLARE @cu0300 table(
820

821
	[landscape] [VARCHAR](3) not null,
822

823
	[code] [nVARCHAR](4) not null,
824

825
	[start_date] [nVARCHAR](8) not null,
826

827
	[end_date] [nVARCHAR](8) not null,	
828

829
	[spt_no] [INT] null
830

831
)
832

833

834

835
DECLARE @cu0300_tmp table(
836

837
	[landscape] [VARCHAR](3) not null,
838

839
	[code] [nVARCHAR](4) not null,
840

841
	[start_date] [nVARCHAR](8) not null,
842

843
	[end_date] [nVARCHAR](8) not null,	
844

845
	[spt_no] [INT] null
846

847
)
848

849
	
850

851
DECLARE @tbl_tr_prev_ori table (
852

853
	landscape VARCHAR (3),
854

855
	 employee_id VARCHAR(8),
856

857
	 wage_type VARCHAR(4),
858

859
	 amount DECIMAL,
860

861
	 spt_no INT,
862

863
	 run_period_month VARCHAR(2)
864

865
)
866

867

868

869
DECLARE @tbl_tr_prev_ori_tmp table (
870

871
	landscape VARCHAR (3),
872

873
	 employee_id VARCHAR(8),
874

875
	 wage_type VARCHAR(4),
876

877
	 amount DECIMAL,
878

879
	 spt_no INT,
880

881
	 run_period_month VARCHAR(2)
882

883
)
884

885
 
886

887
DECLARE @tbl_tr_prev_cum table (
888

889
	landscape VARCHAR (3),
890

891
	 employee_id VARCHAR(8),
892

893
	 wage_type VARCHAR(4),
894

895
	 amount DECIMAL,
896

897
	 spt_no INT,
898

899
	 run_period_month VARCHAR(2)
900

901
)
902

903

904

905
DECLARE @tbl_tr_prev_cum_tmp table (
906

907
	landscape VARCHAR (3),
908

909
	 employee_id VARCHAR(8),
910

911
	 wage_type VARCHAR(4),
912

913
	 amount DECIMAL,
914

915
	 spt_no INT,
916

917
	 run_period_month VARCHAR(2)
918

919
)
920

921

922

923
DECLARE @tbl_tr_dec_ori table (
924

925
	landscape VARCHAR (3),
926

927
	 employee_id VARCHAR(8),
928

929
	 wage_type VARCHAR(4),
930

931
	 amount DECIMAL,
932

933
	 spt_no INT,
934

935
	 run_period_month VARCHAR(2)
936

937
)
938

939

940

941
DECLARE @tbl_tr_dec_ori_tmp table (
942

943
	landscape VARCHAR (3),
944

945
	 employee_id VARCHAR(8),
946

947
	 wage_type VARCHAR(4),
948

949
	 amount DECIMAL,
950

951
	 spt_no INT,
952

953
	 run_period_month VARCHAR(2)
954

955
)
956

957
 
958

959
DECLARE @tbl_tr_dec table (
960

961
	landscape VARCHAR (3),
962

963
	 employee_id VARCHAR(8),
964

965
	 wage_type VARCHAR(4),
966

967
	 amount DECIMAL,
968

969
	 spt_no INT,
970

971
	 run_period_month VARCHAR(2)
972

973
)
974

975

976

977
DECLARE @tbl_tr_dec_tmp table (
978

979
	landscape VARCHAR (3),
980

981
	 employee_id VARCHAR(8),
982

983
	 wage_type VARCHAR(4),
984

985
	 amount DECIMAL,
986

987
	 spt_no INT,
988

989
	 run_period_month VARCHAR(2)
990

991
)
992

993

994

995
DECLARE @tbl_tr_dec_total table(
996

997
	landscape VARCHAR (3),
998

999
	 employee_id VARCHAR(8),
1000

1001
	 amount decimal,
1002

1003
	 spt_no INT
1004

1005
)
1006

1007
	 
1008

1009
DECLARE @tbl_tr_enc table(
1010

1011
	 landscape VARCHAR (3),
1012

1013
	 employee_id VARCHAR(8),
1014

1015
	 wage_type VARCHAR(4),
1016

1017
	 amount VARCHAR(250),
1018

1019
	 spt_no INT
1020

1021
)
1022

1023
                   
1024

1025
SET @kode_form = 'D113248'
1026

1027
SET @tahun_pajak = @year
1028

1029
SET @pembetulan = 0
1030

1031
 
1032

1033
DECLARE @c_landscape VARCHAR(3)
1034

1035
DECLARE @c_emp_id VARCHAR(8)
1036

1037
DECLARE @c_start_date INT
1038

1039
DECLARE @c_end_date INT
1040

1041

1042

1043
DECLARE @last_period_payroll INT
1044

1045
DECLARE @previous_period_payroll INT
1046

1047
DECLARE @previous_period_payroll0 INT
1048

1049
DECLARE @previous_period_payroll_varchar VARCHAR(2)
1050

1051
-- Run Cursor
1052

1053
DECLARE cur_employee CURSOR FOR
1054

1055
SELECT * FROM @employee_tobe_process
1056

1057
OPEN cur_employee
1058

1059
 
1060

1061
FETCH cur_employee INTO @c_landscape,
1062

1063
                    @c_emp_id,
1064

1065
                    @c_start_date,
1066

1067
                    @c_end_date
1068

1069

1070

1071
WHILE @@fetch_status = 0
1072

1073
BEGIN
1074

1075
   
1076

1077
    SET @last_period_payroll = @c_end_date
1078

1079
	
1080

1081
	SET @nomor_urut = convert(integer,right(@c_emp_id,7))
1082

1083

1084

1085
	SELECT @npwp_pegawai = replace(replace(isnull(npwp, '000000000000000'), '.', ''), '-', '')
1086

1087
		 , @status_kawin = case LEFT(tax_status, 1)
1088

1089
						   when 'T' then
1090

1091
							   '1'
1092

1093
						   ELSE
1094

1095
							   '2'
1096

1097
						   END
1098

1099
		 --, @status_ptkp = case LEFT(tax_status, 1)
1100

1101
			--			   when 'T' then
1102

1103
			--				   '1'
1104

1105
			--			   ELSE
1106

1107
			--				   '2'
1108

1109
			--			   END
1110

1111
		 , @status_ptkp = a.tax_status
1112

1113
		 , @jumlah_tanggungan = case right(tax_status, 1)
1114

1115
								when 'K' then
1116

1117
									'0'
1118

1119
								ELSE
1120

1121
									right(tax_status, 1)
1122

1123
								END
1124

1125
		 , @nama_pegawai = a.no_tht -------// add by Tri nwh 20220722
1126

1127
	FROM
1128

1129
		hr_md_emp_md0003 AS a
1130

1131
	--LEFT JOIN dbo.base_cust_ref_tax_status AS b
1132

1133
	--	ON a.landscape = b.landscape AND a.tax_status = b.code
1134

1135
	WHERE
1136

1137
		a.landscape = @c_landscape
1138

1139
		and
1140

1141
		emp_id = @c_emp_id
1142

1143
		and
1144

1145
		start_date <= @c_end_date
1146

1147
		and
1148

1149
		end_date >= @c_end_date
1150

1151
	
1152

1153
	SELECT  DISTINCT @a17 = ptkp
1154

1155
	FROM
1156

1157
		[dbo].[hr_cu0302]
1158

1159
	WHERE
1160

1161
		landscape = @c_landscape
1162

1163
		and
1164

1165
		start_date <= @c_end_date
1166

1167
		and
1168

1169
		end_date >= @c_end_date
1170

1171
		and status = (SELECT DISTINCT tax_status
1172

1173
					  FROM
1174

1175
						  hr_md_emp_md0003
1176

1177
					  WHERE
1178

1179
						  landscape = @c_landscape
1180

1181
						  and
1182

1183
						  emp_id = @c_emp_id
1184

1185
						  and
1186

1187
						  start_date <= @c_end_date
1188

1189
						  and
1190

1191
						  end_date >= @c_end_date)
1192

1193

1194

1195

1196

1197
	  --SELECT @nama_pegawai = full_name												------// comment by Tri nwh 20220722
1198

1199
		 --  ,@jenis_kelamin = b.description--, @jenis_kelamin = convert(INT, gender)	------// comment by Tri nwh 20220722	
1200

1201
		 --  ,@ktp = a.ktp																------// comment by Tri nwh 20220722
1202

1203
		SELECT @jenis_kelamin = b.description--, @jenis_kelamin = convert(INT, gender)	
1204

1205
		,@ktp = a.ktp
1206

1207
	  FROM
1208

1209
		  hr_md_emp_md0001 AS a
1210

1211
	  LEFT JOIN dbo.base_cust_ref_gender AS b
1212

1213
		ON a.landscape = b.landscape AND a.gender = b.code
1214

1215
	  WHERE
1216

1217
		  a.landscape = @c_landscape
1218

1219
		  and
1220

1221
		  emp_id = @c_emp_id
1222

1223
		  and
1224

1225
		  start_date <= @c_end_date
1226

1227
		  and
1228

1229
		  end_date > -@c_end_date
1230

1231

1232

1233
	  SELECT @nama_pemotong = t.description , @npwp_pemotong = o.npwp
1234

1235
	  FROM dbo.hr_md_emp_md0002 AS a
1236

1237
	  LEFT JOIN dbo.base_cust_ref_emp_office AS o
1238

1239
		ON a.landscape = o.landscape AND a.employee_office = o.emp_subarea
1240

1241
	  LEFT JOIN dbo.base_cust_ref_tax_office AS t
1242

1243
		ON a.landscape = t.landscape AND t.tax_office = o.tax_office
1244

1245
	  WHERE a.landscape = @landscape 
1246

1247
			AND a.start_date <= @c_end_date AND end_date >= @c_end_date
1248

1249
			AND a.emp_id = @c_emp_id
1250

1251

1252

1253

1254

1255
		
1256

1257
	  SELECT @kode_pajak = e.kode_pajak, @company_name = g.description
1258

1259
	  FROM dbo.hr_md_emp_md0002 AS a
1260

1261
	  LEFT JOIN dbo.base_cust_ref_emp_type AS e
1262

1263
		ON a.landscape = e.landscape AND a.employee_type = e.emp_type
1264

1265
	  LEFT JOIN dbo.base_cust_ref_companycode AS g
1266

1267
		ON a.landscape = g.landscape AND a.company_id = g.companycode
1268

1269
	  WHERE a.landscape = @landscape 
1270

1271
			AND a.start_date <= @c_end_date AND end_date >= @c_end_date
1272

1273
			AND a.emp_id = @c_emp_id
1274

1275
			
1276

1277
	  --alamat & flag status belakangan
1278

1279
	  SELECT @alamat_pegawai = replace(street, ',', ' ')
1280

1281
	  FROM
1282

1283
		  hr_md_emp_md0006 as md06
1284

1285
	  WHERE
1286

1287
		  landscape = @c_landscape
1288

1289
		  and
1290

1291
		  emp_id = @c_emp_id
1292

1293
		  and
1294

1295
		  start_date <= @c_end_date
1296

1297
		  and
1298

1299
		  end_date >= @c_end_date
1300

1301
		  and address_type = @npwp_address_subtype
1302

1303

1304

1305
	  SELECT @jabatan_pegawai = mdobj.description
1306

1307
	  FROM
1308

1309
		  hr_md_emp_md0002 as md02
1310

1311
		  inner join hr_md_orm_object as mdobj
1312

1313
			  on
1314

1315
			  md02.landscape = mdobj.landscape
1316

1317
			  and
1318

1319
			  md02.position = mdobj.object
1320

1321
			  and
1322

1323
			  md02.emp_id = @c_emp_id
1324

1325
			  and
1326

1327
			  md02.start_date <= @c_end_date
1328

1329
			  and
1330

1331
			  md02.end_date > -@c_end_date
1332

1333
			  and
1334

1335
			  mdobj.start_date <= @c_end_date
1336

1337
			  and
1338

1339
			  mdobj.end_date > -@c_end_date
1340

1341
			  and
1342

1343
			  mdobj.class = 'P'
1344

1345

1346

1347
	  SELECT @status_pegawai = case employee_status
1348

1349
							   when '01' then
1350

1351
								   '1'
1352

1353
							   when '03' then
1354

1355
								   '2'
1356

1357
							   ELSE
1358

1359
								   '1'
1360

1361
							   END
1362

1363
		   , @flag_asing = case employee_type
1364

1365
						   when '99' then
1366

1367
							   '1'
1368

1369
						   ELSE
1370

1371
							   '0'
1372

1373
						   END
1374

1375
	  FROM
1376

1377
		  hr_md_emp_md0002 as md02
1378

1379
	  WHERE
1380

1381
		  landscape = @c_landscape
1382

1383
		  and
1384

1385
		  emp_id = @c_emp_id
1386

1387
		  and
1388

1389
		  start_date <= @c_end_date
1390

1391
		  and
1392

1393
		  end_date >= @c_end_date 
1394

1395

1396

1397

1398

1399

1400

1401
	SET
1402

1403
	@masa_perolehan_1 = convert(INTeger,substring(convert(VARCHAR, @c_start_date),5,2))
1404

1405

1406

1407
	SET
1408

1409
	@masa_perolehan_2 = convert(INTeger,substring(convert(VARCHAR, @c_end_date),5,2))
1410

1411
	
1412

1413
	SET @jml_bulan_perolehan = (CONVERT(int, @masa_perolehan_2) - CONVERT(int, @masa_perolehan_1) + 1)
1414

1415

1416

1417
				  --#region getwtconfiguration
1418

1419
	DELETE @cu0300_tmp
1420

1421

1422

1423
	INSERT INTO @cu0300_tmp
1424

1425
	SELECT landscape
1426

1427
	   , code
1428

1429
	   , start_date
1430

1431
	   , end_date
1432

1433
	   , spt_no
1434

1435
	FROM
1436

1437
	  hr_cu0300
1438

1439
	WHERE
1440

1441
	  landscape = @c_landscape
1442

1443
	  and
1444

1445
	  start_date <= @c_end_date
1446

1447
	  and
1448

1449
	  end_date >= @c_start_date
1450

1451
	  and
1452

1453
	  spt_no > 0
1454

1455

1456

1457
	UPDATE @cu0300_tmp
1458

1459
	SET
1460

1461
	  start_date = @begda
1462

1463
	WHERE
1464

1465
	  start_date < @c_start_date
1466

1467
	  
1468

1469
	UPDATE @cu0300_tmp
1470

1471
	SET
1472

1473
	  end_date = @endda
1474

1475
	WHERE
1476

1477
	  end_date > @c_end_date
1478

1479

1480

1481

1482

1483
	DELETE @cu0300
1484

1485

1486

1487
	INSERT INTO @cu0300
1488

1489
	SELECT cu0300.*
1490

1491
	FROM
1492

1493
	  @cu0300_tmp as cu0300
1494

1495
	  inner join (SELECT landscape
1496

1497
					   , code
1498

1499
					   , min(start_date) as start_date
1500

1501
					   , max(end_date) as end_date
1502

1503
				  FROM
1504

1505
					  @cu0300_tmp
1506

1507
				  group by
1508

1509
					  landscape
1510

1511
					, code) a
1512

1513
		  on cu0300.landscape = a.landscape and cu0300.code = a.code and cu0300.end_date = a.end_date
1514

1515

1516

1517
DELETE @tbl_tr_dec
1518

1519
DELETE @tbl_tr_dec_ori
1520

1521

1522

1523
DELETE @tbl_tr_dec_tmp
1524

1525
DELETE @tbl_tr_dec_ori_tmp
1526

1527

1528

1529
DECLARE @cc_landscape VARCHAR(3)
1530

1531
DECLARE @cc_code VARCHAR(4)
1532

1533
DECLARE @cc_start_date INT
1534

1535
DECLARE @cc_end_date INT
1536

1537
DECLARE @cc_spt_no INT
1538

1539

1540

1541
		INSERT INTO @tbl_tr_dec_tmp
1542

1543
		SELECT tr301.landscape
1544

1545
		   , tr301.employee_id
1546

1547
		   , tr301.wage_type
1548

1549
		   , case @is_encrypted
1550

1551
			 when '0' then
1552

1553
				 convert(decimal, tr301.amount)
1554

1555
			 ELSE
1556

1557
				 convert(decimal, dbo.SDE(tr301.amount, N'M!N0V@2010'))
1558

1559
			 END
1560

1561
		   , cu300.spt_no
1562

1563
		   , tr301.run_period_month
1564

1565
		FROM
1566

1567
		  hr_tr0301_cum as tr301
1568

1569
		  INNER JOIN @cu0300 as cu300
1570

1571
			ON cu300.code = tr301.wage_type
1572

1573
		WHERE
1574

1575
		  tr301.landscape = @landscape
1576

1577
		  and tr301.employee_id = @c_emp_id
1578

1579
		  and tr301.pay_period_month = substring(convert(VARCHAR, @last_period_payroll), 5, 2)
1580

1581
		  and tr301.pay_period_year = tr301.run_period_year
1582

1583
		  and tr301.run_period_year = left(@last_period_payroll, 4)
1584

1585
		 
1586

1587
		--get the latest run data
1588

1589
		INSERT INTO @tbl_tr_dec
1590

1591
		SELECT tr_dec.*
1592

1593
		FROM
1594

1595
		  @tbl_tr_dec_tmp as tr_dec
1596

1597
		  inner join (SELECT landscape
1598

1599
						   , employee_id
1600

1601
						   , wage_type
1602

1603
						   , max(run_period_month) as run_period_month
1604

1605
					  FROM
1606

1607
						  @tbl_tr_dec_tmp
1608

1609
					  group by
1610

1611
						  landscape
1612

1613
						, employee_id
1614

1615
						, wage_type) a
1616

1617
			  on tr_dec.landscape = a.landscape 
1618

1619
				 and tr_dec.employee_id = a.employee_id 
1620

1621
				 and tr_dec.wage_type = a.wage_type
1622

1623
				 and tr_dec.run_period_month = a.run_period_month
1624

1625

1626

1627

1628

1629
		INSERT INTO @tbl_tr_dec_ori_tmp
1630

1631
		SELECT tr301.landscape
1632

1633
		   , tr301.employee_id
1634

1635
		   , tr301.wage_type
1636

1637
		   , case @is_encrypted
1638

1639
			 when '0' then
1640

1641
				 convert(decimal, tr301.amount)
1642

1643
			 ELSE
1644

1645
				 convert(decimal, dbo.SDE(tr301.amount, N'M!N0V@2010'))
1646

1647
			 END
1648

1649
		   , cu300.spt_no
1650

1651
		   , tr301.run_period_month
1652

1653
		   
1654

1655
		FROM
1656

1657
		  hr_tr0301 as tr301
1658

1659
		  INNER JOIN @cu0300 as cu300
1660

1661
			ON cu300.code = tr301.wage_type
1662

1663
		WHERE
1664

1665
		  tr301.landscape = @landscape
1666

1667
		  and tr301.employee_id = @c_emp_id
1668

1669
		  and tr301.pay_period_month = substring(convert(VARCHAR, @last_period_payroll), 5, 2)
1670

1671
		  and tr301.pay_period_year = tr301.run_period_year
1672

1673
		  and tr301.run_period_year = left(@last_period_payroll, 4)
1674

1675
		  
1676

1677
		--get the latest run data
1678

1679
		INSERT INTO @tbl_tr_dec_ori
1680

1681
		SELECT tr_dec_ori.*
1682

1683
		FROM
1684

1685
		  @tbl_tr_dec_ori_tmp as tr_dec_ori
1686

1687
		  inner join (SELECT landscape
1688

1689
						   , employee_id
1690

1691
						   , wage_type
1692

1693
						   , max(run_period_month) as run_period_month
1694

1695
					  FROM
1696

1697
						  @tbl_tr_dec_ori_tmp
1698

1699
					  group by
1700

1701
						  landscape
1702

1703
						, employee_id
1704

1705
						, wage_type) a
1706

1707
			  on tr_dec_ori.landscape = a.landscape 
1708

1709
				 and tr_dec_ori.employee_id = a.employee_id 
1710

1711
				 and tr_dec_ori.wage_type = a.wage_type
1712

1713
				 and tr_dec_ori.run_period_month = a.run_period_month
1714

1715
		
1716

1717
		IF (@masa_perolehan_1 > '1' OR @masa_perolehan_1 > '01')
1718

1719
		BEGIN
1720

1721
			SET @previous_period_payroll = CONVERT(int, @masa_perolehan_1) - 1
1722

1723
			IF (@previous_period_payroll < 10)
1724

1725
				SET @previous_period_payroll_varchar = '0' + CONVERT(varchar(1), @previous_period_payroll)
1726

1727
			ELSE
1728

1729
				SET @previous_period_payroll_varchar = CONVERT(varchar(2), @previous_period_payroll)
1730

1731
			
1732

1733
			--get the latest pay period if previous period no pay period.
1734

1735
			SET @previous_period_payroll0 = @previous_period_payroll
1736

1737
			SELECT TOP(1) @previous_period_payroll0 = CONVERT(int, pay_period_month)
1738

1739
			FROM dbo.hr_tr0300
1740

1741
			WHERE landscape = @landscape
1742

1743
			  and employee_id = @c_emp_id
1744

1745
			  and pay_period_month <= @previous_period_payroll_varchar
1746

1747
			  and pay_period_year = left(@last_period_payroll, 4)
1748

1749
			  and run_period_year = left(@last_period_payroll, 4)
1750

1751
			ORDER BY pay_period_month DESC
1752

1753
			
1754

1755
			IF (@previous_period_payroll0 < 10)
1756

1757
				SET @previous_period_payroll_varchar = '0' + CONVERT(varchar(1), @previous_period_payroll0)
1758

1759
			ELSE
1760

1761
				SET @previous_period_payroll_varchar = CONVERT(varchar(2), @previous_period_payroll0)
1762

1763
						
1764

1765
			DELETE FROM @tbl_tr_prev_ori
1766

1767
			DELETE FROM @tbl_tr_prev_cum
1768

1769
			
1770

1771
			DELETE FROM @tbl_tr_prev_ori_tmp
1772

1773
			DELETE FROM @tbl_tr_prev_cum_tmp
1774

1775

1776

1777
			INSERT INTO @tbl_tr_prev_ori_tmp
1778

1779
			SELECT tr301.landscape
1780

1781
			   , tr301.employee_id
1782

1783
			   , tr301.wage_type
1784

1785
			   , case @is_encrypted
1786

1787
				 when '0' then
1788

1789
					 convert(decimal, tr301.amount)
1790

1791
				 ELSE
1792

1793
					 convert(decimal, dbo.SDE(tr301.amount, N'M!N0V@2010'))
1794

1795
				 END
1796

1797
			   , cu300.spt_no
1798

1799
			   , tr301.run_period_month
1800

1801
			FROM
1802

1803
			  hr_tr0301 as tr301
1804

1805
			  INNER JOIN @cu0300 as cu300
1806

1807
				ON cu300.code = tr301.wage_type
1808

1809
			WHERE
1810

1811
			  tr301.landscape = @landscape
1812

1813
			  and tr301.employee_id = @c_emp_id
1814

1815
			  --and tr301.run_period_month = @previous_period_payroll_varchar
1816

1817
			  and tr301.pay_period_month = @previous_period_payroll_varchar
1818

1819
			  and tr301.pay_period_year = tr301.run_period_year
1820

1821
			  and tr301.run_period_year = left(@last_period_payroll, 4)
1822

1823

1824

1825
			--get the latest run data
1826

1827
			INSERT INTO @tbl_tr_prev_ori
1828

1829
			SELECT tr_prev_ori.*
1830

1831
			FROM
1832

1833
			  @tbl_tr_prev_ori_tmp as tr_prev_ori
1834

1835
			  inner join (SELECT landscape
1836

1837
							   , employee_id
1838

1839
							   , wage_type
1840

1841
							   , max(run_period_month) as run_period_month
1842

1843
						  FROM
1844

1845
							  @tbl_tr_prev_ori_tmp
1846

1847
						  group by
1848

1849
							  landscape
1850

1851
							, employee_id
1852

1853
							, wage_type) a
1854

1855
				  on tr_prev_ori.landscape = a.landscape 
1856

1857
					 and tr_prev_ori.employee_id = a.employee_id 
1858

1859
					 and tr_prev_ori.wage_type = a.wage_type
1860

1861
					 and tr_prev_ori.run_period_month = a.run_period_month
1862

1863

1864

1865
			INSERT INTO @tbl_tr_prev_cum_tmp
1866

1867
			SELECT tr301.landscape
1868

1869
			   , tr301.employee_id
1870

1871
			   , tr301.wage_type
1872

1873
			   , case @is_encrypted
1874

1875
				 when '0' then
1876

1877
					 convert(decimal, tr301.amount)
1878

1879
				 ELSE
1880

1881
					 convert(decimal, dbo.SDE(tr301.amount, N'M!N0V@2010'))
1882

1883
				 END
1884

1885
			   , cu300.spt_no
1886

1887
			   , tr301.run_period_month
1888

1889
			FROM
1890

1891
			  hr_tr0301_cum as tr301
1892

1893
			  INNER JOIN @cu0300 as cu300
1894

1895
				ON cu300.code = tr301.wage_type
1896

1897
			WHERE
1898

1899
			  tr301.landscape = @landscape
1900

1901
			  and tr301.employee_id = @c_emp_id
1902

1903
			  --and tr301.run_period_month = @previous_period_payroll_varchar
1904

1905
			  and tr301.pay_period_month = @previous_period_payroll_varchar
1906

1907
			  and tr301.pay_period_year = tr301.run_period_year
1908

1909
			  and tr301.run_period_year = left(@last_period_payroll, 4)
1910

1911

1912

1913
			--get the latest run data
1914

1915
			INSERT INTO @tbl_tr_prev_cum
1916

1917
			SELECT tr_prev_cum.*
1918

1919
			FROM
1920

1921
			  @tbl_tr_prev_cum_tmp as tr_prev_cum
1922

1923
			  inner join (SELECT landscape
1924

1925
							   , employee_id
1926

1927
							   , wage_type
1928

1929
							   , max(run_period_month) as run_period_month
1930

1931
						  FROM
1932

1933
							  @tbl_tr_prev_cum_tmp
1934

1935
						  group by
1936

1937
							  landscape
1938

1939
							, employee_id
1940

1941
							, wage_type) a
1942

1943
				  on tr_prev_cum.landscape = a.landscape 
1944

1945
					 and tr_prev_cum.employee_id = a.employee_id 
1946

1947
					 and tr_prev_cum.wage_type = a.wage_type
1948

1949
					 and tr_prev_cum.run_period_month = a.run_period_month	
1950

1951
		END 
1952

1953

1954

1955
	DECLARE @emp_status varchar(2), 
1956

1957
		@emp_type varchar(2),
1958

1959
		@movement_type varchar(2),
1960

1961
		@movement_reason varchar(2),
1962

1963
		@emp_type_payroll varchar(20),
1964

1965
		@movement_reason_payroll varchar(20),
1966

1967
		@is_pegawai_baru varchar(1)
1968

1969
		
1970

1971
	DECLARE @death_mov_reason varchar(5)
1972

1973
	SELECT TOP(1) @death_mov_reason = val1
1974

1975
	FROM base_cust_parameter
1976

1977
	WHERE landscape = @landscape
1978

1979
		AND [param] = 'HR_ESPT_MOV_REASON_DEATH'
1980

1981
		AND [start_date] <= @endda
1982

1983
		AND end_date >= @endda
1984

1985
		
1986

1987
	SELECT @emp_status = employee_status,
1988

1989
		@emp_type = employee_type,
1990

1991
		@movement_type = movement_type,
1992

1993
		@movement_reason = reason,
1994

1995
		@emp_type_payroll = ret.payroll_process,
1996

1997
		@movement_reason_payroll = rmr.payroll_process
1998

1999
	FROM hr_md_emp_md0002 md02
2000

2001
		INNER JOIN base_cust_ref_emp_type ret
2002

2003
			ON emp_type = employee_type
2004

2005
		INNER JOIN base_cust_ref_mov_reason rmr
2006

2007
			ON code = reason
2008

2009
	WHERE emp_id = @c_emp_id
2010

2011
		AND start_date <= @endda
2012

2013
		AND end_date >= @endda
2014

2015
		
2016

2017
	
2018

2019
	SET @is_pegawai_baru = '0'
2020

2021
	IF @c_start_date > @begda
2022

2023
	BEGIN
2024

2025
		SELECT @is_pegawai_baru = CASE WHEN hiring_date >= @c_start_date THEN '1' ELSE '0' END
2026

2027
		FROM hr_md_emp_md0015
2028

2029
		WHERE emp_id = @c_emp_id
2030

2031
	END
2032

2033

2034

2035
		-- Setting flag status
2036

2037
		--SELECT @emp_status, @masa_perolehan_1, @masa_perolehan_2, @emp_type_payroll, @movement_reason_payroll
2038

2039
		IF @emp_status = '01' AND @masa_perolehan_1 = '1' AND @masa_perolehan_2 = '12' AND ISNULL(@emp_type_payroll,'') <> 'EXP'
2040

2041
			SET @flag_status = '0'
2042

2043
		ELSE IF @emp_status = '01' AND @masa_perolehan_1 = '1' AND @masa_perolehan_2 = '12' AND ISNULL(@emp_type_payroll,'') = 'EXP'
2044

2045
			SET @flag_status = '3'
2046

2047
		ELSE IF @emp_status = '01' AND @masa_perolehan_2 <> '12'
2048

2049
			SET @flag_status = '1'
2050

2051
		ELSE IF @is_pegawai_baru = '1'
2052

2053
			SET @flag_status = '4'
2054

2055
		ELSE IF @emp_status = '01' AND @masa_perolehan_2 <> '1' AND @masa_perolehan_2 = '12'
2056

2057
			SET @flag_status = '5'
2058

2059
		ELSE IF (@movement_type = '17' OR @emp_status <> '01') 
2060

2061
		BEGIN
2062

2063
			IF @movement_reason = '12'
2064

2065
				SET @flag_status = '2'
2066

2067
			ELSE IF @emp_type_payroll = 'EXP' OR @movement_reason = @death_mov_reason
2068

2069
				SET @flag_status = '3'
2070

2071
			ELSE IF @masa_perolehan_1 = '1' AND @masa_perolehan_2 = '12'
2072

2073
				SET @flag_status = '0'
2074

2075
			ELSE
2076

2077
				SET @flag_status = '2'
2078

2079
		END
2080

2081
		
2082

2083
				  SELECT @a1 = isnull(sum(amount), 0)
2084

2085
				  FROM
2086

2087
					  @tbl_tr_dec
2088

2089
				  WHERE
2090

2091
					  spt_no = 1
2092

2093
				  group by
2094

2095
					  spt_no
2096

2097
				
2098

2099
				IF (@masa_perolehan_1 <> '1')
2100

2101
					SELECT @a1 = @a1 - isnull(sum(amount), 0)
2102

2103
				  FROM
2104

2105
					  @tbl_tr_prev_cum
2106

2107
				  WHERE
2108

2109
					  spt_no = 1
2110

2111
				  group by
2112

2113
					  spt_no
2114

2115

2116

2117
SET @a1=isnull(@a1,0)
2118

2119
				  SELECT @a2 = isnull(sum(amount), 0)
2120

2121
				  FROM
2122

2123
					  @tbl_tr_dec
2124

2125
				  WHERE
2126

2127
					  spt_no = 2
2128

2129
				  group by
2130

2131
					  spt_no
2132

2133

2134

2135
				IF (@masa_perolehan_1 <> '1')
2136

2137
					SELECT @a2 = @a2 - isnull(sum(amount), 0)
2138

2139
				  FROM
2140

2141
					  @tbl_tr_prev_cum
2142

2143
				  WHERE
2144

2145
					  spt_no = 2
2146

2147
				  group by
2148

2149
					  spt_no
2150

2151
				  
2152

2153
				
2154

2155
SET @a2=isnull(@a2,0)
2156

2157
				  SELECT @a3 = isnull(sum(amount), 0)
2158

2159
				  FROM
2160

2161
					  @tbl_tr_dec
2162

2163
				  WHERE
2164

2165
					  spt_no = 3
2166

2167
				  group by
2168

2169
					  spt_no
2170

2171
					  
2172

2173
  				IF (@masa_perolehan_1 <> '1')
2174

2175
					SELECT @a3 = @a3 - isnull(sum(amount), 0)
2176

2177
				  FROM
2178

2179
					  @tbl_tr_prev_cum
2180

2181
				  WHERE
2182

2183
					  spt_no = 3
2184

2185
				  group by
2186

2187
					  spt_no
2188

2189

2190

2191
					  
2192

2193
SET @a3=isnull(@a3,0)
2194

2195
				  SELECT @a4 = isnull(sum(amount), 0)
2196

2197
				  FROM
2198

2199
					  @tbl_tr_dec
2200

2201
				  WHERE
2202

2203
					  spt_no = 4
2204

2205
				  group by
2206

2207
					  spt_no
2208

2209
SET @a4=isnull(@a4,0)
2210

2211
				  SELECT @a5 = isnull(sum(amount), 0)
2212

2213
				  FROM
2214

2215
					  @tbl_tr_dec
2216

2217
				  WHERE
2218

2219
					  spt_no = 5
2220

2221
				  group by
2222

2223
					  spt_no
2224

2225
					  
2226

2227
				IF (@masa_perolehan_1 <> '1')
2228

2229
					SELECT @a5 = @a5 - isnull(sum(amount), 0)
2230

2231
				  FROM
2232

2233
					  @tbl_tr_prev_cum
2234

2235
				  WHERE
2236

2237
					  spt_no = 5
2238

2239
				  group by
2240

2241
					  spt_no
2242

2243
					  
2244

2245
SET @a5=isnull(@a5,0)
2246

2247
				  SELECT @a6 = isnull(sum(amount), 0)
2248

2249
				  FROM
2250

2251
					  @tbl_tr_dec
2252

2253
				  WHERE
2254

2255
					  spt_no = 6
2256

2257
				  group by
2258

2259
					  spt_no
2260

2261
SET @a6=isnull(@a6,0)
2262

2263

2264

2265
SET @a7=isnull(@a1+@a2+@a3+@a4+@a5+@a6,0)
2266

2267

2268

2269
				  SELECT @a8 = isnull(sum(amount), 0)
2270

2271
				  FROM
2272

2273
					  @tbl_tr_dec
2274

2275
				  WHERE
2276

2277
					  spt_no = 8
2278

2279
				  group by
2280

2281
					  spt_no
2282

2283
					  
2284

2285
  				IF (@masa_perolehan_1 <> '1')
2286

2287
					SELECT @a8 = @a8 - isnull(sum(amount), 0)
2288

2289
				  FROM
2290

2291
					  @tbl_tr_prev_cum
2292

2293
				  WHERE
2294

2295
					  spt_no = 8
2296

2297
				  group by
2298

2299
					  spt_no
2300

2301

2302

2303
SET @a8=isnull(@a8,0)
2304

2305

2306

2307
SET @a9=isnull(@a7+@a8,0)
2308

2309

2310

2311
				  SELECT @a10 = isnull(sum(amount), 0)
2312

2313
				  FROM
2314

2315
					  @tbl_tr_dec
2316

2317
				  WHERE
2318

2319
					  spt_no = 10
2320

2321
				  group by
2322

2323
					  spt_no
2324

2325

2326

2327
				IF (@masa_perolehan_1 <> '1')
2328

2329
					SELECT @a10 = @a10 - isnull(sum(amount), 0)
2330

2331
				  FROM
2332

2333
					  @tbl_tr_prev_cum
2334

2335
				  WHERE
2336

2337
					  spt_no = 10
2338

2339
				  group by
2340

2341
					  spt_no
2342

2343

2344

2345
SET @a10=isnull(@a10,0)
2346

2347

2348

2349
SET @tot_biaya_jabatan = 500000 * @jml_bulan_perolehan
2350

2351
IF (@a10 > @tot_biaya_jabatan)
2352

2353
BEGIN
2354

2355
	--SET @a10 = @tot_biaya_jabatan ---// comment by Tri 2024130 IMFI
2356

2357
	SET @a11 = 0
2358

2359
END
2360

2361

2362

2363
				  SELECT @a11 = isnull(sum(amount), 0)
2364

2365
				  FROM
2366

2367
					  @tbl_tr_dec
2368

2369
				  WHERE
2370

2371
					  spt_no = 11
2372

2373
				  group by
2374

2375
					  spt_no
2376

2377
					  
2378

2379
				IF (@masa_perolehan_1 <> '1')
2380

2381
					SELECT @a11 = @a11 - isnull(sum(amount), 0)
2382

2383
				  FROM
2384

2385
					  @tbl_tr_prev_cum
2386

2387
				  WHERE
2388

2389
					  spt_no = 11
2390

2391
				  group by
2392

2393
					  spt_no
2394

2395
					  
2396

2397
SET @a11=isnull(@a11,0)
2398

2399

2400

2401
/*IF ((@a10 + @a11) > @tot_biaya_jabatan) ---// comment by Tri 2024130 IMFI
2402

2403
BEGIN
2404

2405
	SET @a11 = @tot_biaya_jabatan - @a10	
2406

2407
END*/
2408

2409

2410

2411
				  SELECT @a12 = isnull(sum(amount), 0)
2412

2413
				  FROM
2414

2415
					  @tbl_tr_dec
2416

2417
				  WHERE
2418

2419
					  spt_no = 12
2420

2421
				  group by
2422

2423
					  spt_no
2424

2425

2426

2427
				IF (@masa_perolehan_1 <> '1')
2428

2429
					SELECT @a12 = @a12 - isnull(sum(amount), 0)
2430

2431
				  FROM
2432

2433
					  @tbl_tr_prev_cum
2434

2435
				  WHERE
2436

2437
					  spt_no = 12
2438

2439
				  group by
2440

2441
					  spt_no
2442

2443

2444

2445
SET @a12=isnull(@a12,0)
2446

2447

2448

2449
SET @a13=isnull(@a10+@a11+@a12,0)
2450

2451
SET @a14=isnull(@a9-@a13,0)
2452

2453

2454

2455
				  SELECT @a15 = isnull(sum(amount), 0)
2456

2457
				  FROM
2458

2459
					  @tbl_tr_dec_ori
2460

2461
				  WHERE
2462

2463
					  spt_no = 15
2464

2465
				  group by
2466

2467
					  spt_no
2468

2469
SET @a15=isnull(@a15,0)
2470

2471
--select @a14, @a15
2472

2473
SET @a16=isnull(@a14+@a15,0)
2474

2475

2476

2477
-- spt_no 16 case khusus flag_status khusus
2478

2479
				  SELECT @a16_flag = isnull(sum(amount), 0)
2480

2481
				  FROM
2482

2483
					  @tbl_tr_dec_ori
2484

2485
				  WHERE
2486

2487
					  spt_no = 16
2488

2489
				  group by
2490

2491
					  spt_no
2492

2493
SET @a16_flag=isnull(@a16_flag,0)
2494

2495

2496

2497
	IF @movement_reason = @death_mov_reason
2498

2499
		OR ISNULL(@emp_type_payroll,'') = 'EXP'
2500

2501
	BEGIN
2502

2503
		SELECT @a16 = CASE WHEN ISNULL(@emp_type_payroll,'') = 'EXP' THEN @a16 ELSE @a16 * 12 / (CONVERT(int, @masa_perolehan_2) - CONVERT(int, @masa_perolehan_1) + 1) END
2504

2505
	END
2506

2507

2508

2509
	IF @flag_status = '1' OR @flag_status = '3'
2510

2511
	BEGIN
2512

2513
		SET @a16 = @a16_flag
2514

2515
	END
2516

2517
	
2518

2519
	SET @a18 = @a16 - @a17
2520

2521

2522

2523
	if(right(RTRIM(CAST(@a18 as varchar(19))),3) <> '000')
2524

2525
	BEGIN
2526

2527
		DECLARE @Pembulatan1000 AS VARCHAR(19)
2528

2529
		SET @Pembulatan1000 = CAST(@a18 as varchar(19)); 	
2530

2531
		----SET @a18 = SUBSTRING(@Pembulatan1000,1,LEN(RTRIM(@Pembulatan1000)) - 3) + REPLICATE('0',3); 	
2532

2533
		IF LEN(@Pembulatan1000) > 3
2534

2535
			SET @a18 = SUBSTRING(@Pembulatan1000, 1, LEN(RTRIM(@Pembulatan1000)) - 3) + REPLICATE('0', 3)
2536

2537
		ELSE
2538

2539
			SET @a18 = @Pembulatan1000
2540

2541
	END
2542

2543

2544

2545
--ambil mt murni tanpa kondisi
2546

2547
	 SELECT @a19murni = isnull(sum(amount), 0)
2548

2549
	  FROM
2550

2551
		  @tbl_tr_dec
2552

2553
	  WHERE
2554

2555
		  spt_no = 19
2556

2557
	  group by
2558

2559
		  spt_no
2560

2561

2562

2563
--ambil att murni tanpa kondisi
2564

2565
	 SELECT @a17_att = isnull(sum(amount), 0)
2566

2567
	  FROM
2568

2569
		  @tbl_tr_dec_ori
2570

2571
	  WHERE
2572

2573
		  spt_no = 99
2574

2575
	  group by
2576

2577
		  spt_no
2578

2579

2580

2581
--cek status employee apakah sudah resign
2582

2583
	  SELECT @a19 = isnull(sum(amount), 0)
2584

2585
	  FROM
2586

2587
		  @tbl_tr_dec
2588

2589
	  WHERE
2590

2591
		  spt_no = 19
2592

2593
	  group by
2594

2595
		  spt_no
2596

2597

2598

2599
	  IF ISNULL(@emp_type_payroll,'') = 'EXP'
2600

2601
	  BEGIN
2602

2603
		  SELECT @a19b = isnull(sum(amount), 0)
2604

2605
		  FROM
2606

2607
			  @tbl_tr_prev_cum
2608

2609
		  WHERE
2610

2611
			  spt_no = 19
2612

2613
		  group by
2614

2615
			  spt_no
2616

2617

2618

2619
			SET @a19 = @a19 * 12 / (CONVERT(int, @masa_perolehan_2) - CONVERT(int, @masa_perolehan_1) + 1)			
2620

2621
		
2622

2623
	  END
2624

2625
	ELSE IF (@movement_type = 17 OR @emp_status <> '01')
2626

2627
	BEGIN
2628

2629
	  IF @movement_reason = '12'
2630

2631
	  BEGIN
2632

2633
		SET @a19 = isnull(@a19murni,0)
2634

2635
	  END
2636

2637
	END
2638

2639
	ELSE
2640

2641
	BEGIN
2642

2643
		IF ((@masa_perolehan_1 = '1') AND (@masa_perolehan_2 <> '12'))
2644

2645
		BEGIN
2646

2647
			SET @a19 = @a19 * 12 / CONVERT(int, @masa_perolehan_2)
2648

2649
		END
2650

2651
	END
2652

2653

2654

2655
	SET @a19=isnull(@a19,0)
2656

2657

2658

2659
				  SELECT @a20 = CASE WHEN CONVERT(int,@masa_perolehan_1) > 1 THEN isnull(sum(amount), 0) ELSE 0 END
2660

2661
				  FROM
2662

2663
					  @tbl_tr_dec_ori
2664

2665
				  WHERE
2666

2667
					  spt_no = 20
2668

2669
				  group by
2670

2671
					  spt_no
2672

2673

2674

2675
			SET @a20=isnull(@a20,0)
2676

2677

2678

2679

2680

2681
		IF (@emp_status = '01' AND NOT (@masa_perolehan_1 = '1' AND @masa_perolehan_2 = '12'))
2682

2683
			OR ISNULL(@emp_type_payroll,'') = 'EXP'
2684

2685
			OR @movement_reason = @death_mov_reason
2686

2687
		BEGIN
2688

2689
			SET @a21 = isnull(@a19murni-@a20,0)--@a2--@a19 
2690

2691
		END
2692

2693

2694

2695
		ELSE
2696

2697
			SET @a21= isnull(@a19-@a20,0)
2698

2699

2700

2701
		---- sementara di hard-code dulu, untuk handling case mks.
2702

2703

2704

2705
		SET @a22 = @a21 + @a20
2706

2707
		SET @a22a = 0
2708

2709
		SET @a22b = @a21
2710

2711
		SET @a23=isnull(@a21-@a22,0)
2712

2713
		SET @a24=isnull(@a23,0)
2714

2715

2716

2717
		SET @bln_a24 = substring(convert(VARCHAR,@c_end_date),5,2) +  left(convert(VARCHAR,@c_end_date),4) 
2718

2719

2720

2721
		IF( @a21-@a22 = 0)
2722

2723
		BEGIN
2724

2725
		SET @flg_a24 = '0'
2726

2727
		SET @bln_a24 = ''
2728

2729
		END
2730

2731

2732

2733
		IF( @a21-@a22 > 0)
2734

2735
		BEGIN
2736

2737
		SET @flg_a24 = '1'
2738

2739
		END
2740

2741

2742

2743
		IF( @a21-@a22 < 0)
2744

2745
		BEGIN
2746

2747
		SET @flg_a24 = '2'
2748

2749
		END
2750

2751

2752

2753
		SET @flg_a2 = '0'
2754

2755
		
2756

2757
		--Pegawai yang dipindahkan
2758

2759
		SET @flg_a2 = '1'
2760

2761

2762

2763
				  delete @tbl_tr_dec
2764

2765
				
2766

2767
				
2768

2769
					DECLARE @TglHiring VARCHAR(20) = ''
2770

2771
					SELECT @TglHiring = hiring_date FROM hr_md_emp_md0015 where emp_id = @c_emp_id and LEFT(hiring_date, 4)= @year
2772

2773

2774

2775
				  insert				  INTo					  @result
2776

2777
				  SELECT @kode_form
2778

2779
					   , @tahun_pajak
2780

2781
					   , @pembetulan
2782

2783
					   , CONVERT(char, RIGHT('0000000' + CONVERT(VARCHAR(7),@nomor_urut),7)) AS nomor_urut
2784

2785
					   , @npwp_pegawai
2786

2787
					   , @nama_pegawai
2788

2789
					   , @alamat_pegawai
2790

2791
					   , @jabatan_pegawai
2792

2793
					   , @jenis_kelamin
2794

2795
					   , @status_pegawai
2796

2797
					   , @status_kawin
2798

2799
					   , @flag_asing
2800

2801
					   , @status_ptkp
2802

2803
					   , @jumlah_tanggungan
2804

2805
					   , CASE WHEN @TglHiring <> '' THEN CASE WHEN @TglHiring < @c_start_date THEN CONVERT(DECIMAL(18,0),SUBSTRING(@TglHiring, 5,2)) ELSE @masa_perolehan_1 END ELSE @masa_perolehan_1 END masa_perolehan_1
2806

2807
					   --, @masa_perolehan_1
2808

2809
					   , @masa_perolehan_2
2810

2811
					   , @flag_status
2812

2813
					   , @a1
2814

2815
					   , @flg_a2
2816

2817
					   , @a2
2818

2819
					   , @a3
2820

2821
					   , @a4
2822

2823
					   , @a5
2824

2825
					   , @a6
2826

2827
					   , @a7
2828

2829
					   , @a8
2830

2831
					   , @a9
2832

2833
					   , @a10
2834

2835
					   , @a11
2836

2837
					   , @a12
2838

2839
					   , @a13
2840

2841
					   , @a14
2842

2843
					   , CASE WHEN @movement_reason = @death_mov_reason THEN @a16 - @a14 ELSE @a15 END --@a15 ----//edit tri 20241228 meninggal dr @a15
2844

2845
					   , @a16
2846

2847
					   , @a17
2848

2849
					   , @a18
2850

2851
					   , CASE WHEN @movement_reason = @death_mov_reason THEN @a19 ELSE @a17_att END --@a17_att --@a19 ----//edit tri 20241228 meninggal dr @a17_att
2852

2853
					   , @a20
2854

2855
					   , @a21
2856

2857
					   , @a22
2858

2859
					   , @a22a
2860

2861
					   , @a22b
2862

2863
					   , @a23
2864

2865
					   , @a24
2866

2867
					   , @flg_a24
2868

2869
					   , @bln_a24
2870

2871
					   , @ktp --@c_emp_id
2872

2873
					   , @nama_pemotong
2874

2875
					   , @npwp_pemotong
2876

2877
					   , @kode_pajak
2878

2879
					   , @company_name
2880

2881
					   , @c_emp_id
2882

2883

2884

2885

2886

2887
SET @nomor_urut = null
2888

2889
SET @npwp_pegawai = null
2890

2891
SET @nama_pegawai = null
2892

2893
SET @alamat_pegawai = null
2894

2895
SET @jabatan_pegawai = null
2896

2897
SET @jenis_kelamin = null
2898

2899
SET @status_pegawai = null
2900

2901
SET @status_kawin = null
2902

2903
SET @flag_asing = null
2904

2905
SET @status_ptkp = null
2906

2907
SET @jumlah_tanggungan = null
2908

2909
SET @masa_perolehan_1 = null
2910

2911
SET @masa_perolehan_2 = null
2912

2913
SET @flag_status = null
2914

2915
SET @a1 = null
2916

2917
SET @flg_a2 = null
2918

2919
SET @a2 = null
2920

2921
SET @a3 = null
2922

2923
SET @a4 = null
2924

2925
SET @a5 = null
2926

2927
SET @a6 = null
2928

2929
SET @a7 = null
2930

2931
SET @a8 = null
2932

2933
SET @a9 = null
2934

2935
SET @a10 = null
2936

2937
SET @a11 = null
2938

2939
SET @a12 = null
2940

2941
SET @a13 = null
2942

2943
SET @a14 = null
2944

2945
SET @a15 = null
2946

2947
SET @a16 = NULL
2948

2949
SET @a16_flag = NULL
2950

2951
SET @a17 = null
2952

2953
SET @a18 = null
2954

2955
SET @a19 = null
2956

2957
SET @a20 = null
2958

2959
SET @a21 = null
2960

2961
SET @a22 = null
2962

2963
SET @a22a = null
2964

2965
SET @a22b = null
2966

2967
SET @a23 = null
2968

2969
SET @a24 = null
2970

2971
SET @flg_a24 = null
2972

2973
SET @bln_a24 = NULL 
2974

2975

2976

2977
		fetch cur_employee INTo @c_landscape,
2978

2979
							@c_emp_id,
2980

2981
							@c_start_date,
2982

2983
							@c_end_date   
2984

2985

2986

2987
   END
2988

2989

2990

2991
close cur_employee
2992

2993

2994

2995
deallocate cur_employee
2996

2997

2998

2999
		update @result
3000

3001
		SET
3002

3003
			npwp_pegawai = '000000000000000'
3004

3005
		WHERE
3006

3007
			len(npwp_pegawai) < 15
3008

3009
		update @result
3010

3011
		SET
3012

3013
			alamat_pegawai = '-'
3014

3015
		WHERE
3016

3017
			alamat_pegawai = '' or
3018

3019
			alamat_pegawai is null
3020

3021
		
3022

3023
		--SET @masa_pajak = (CONVERT(DECIMAL(22,0),@masa_perolehan_2))- (CONVERT(DECIMAL(22,0),@masa_perolehan_1)) + 1
3024

3025

3026

3027
		SELECT 
3028

3029
			masa_perolehan_2 AS masa_pajak
3030

3031
			,tahun_pajak
3032

3033
			,pembetulan 
3034

3035
			--,'1.1-' + CONVERT(CHAR(2), RIGHT('00' + CONVERT(VARCHAR(2),masa_perolehan_2),2)) + '.' + RIGHT(@year,2) + '-' + nomor_urut AS no_bukti_potong 
3036

3037
			,'1.1-' + CONVERT(CHAR(2), RIGHT('00' + CONVERT(VARCHAR(2),masa_perolehan_2),2)) + '.' + RIGHT(@year,2) + '-' + CONVERT(char, RIGHT('0000000' + CONVERT(VARCHAR(7),ROW_NUMBER() OVER(ORDER BY emp_id DESC)),7)) AS no_bukti_potong 
3038

3039
			--,CASE WHEN @TglHiring < @c_start_date THEN CONVERT(DECIMAL(18,0),SUBSTRING(@TglHiring, 5,2)) ELSE masa_perolehan_1 END masa_perolehan_1
3040

3041
			,masa_perolehan_1
3042

3043
			,masa_perolehan_2 
3044

3045
			,npwp_pegawai
3046

3047
			,ktp AS NIK
3048

3049
			,nama_pegawai 
3050

3051
			,alamat_pegawai 
3052

3053
			,CASE 
3054

3055
				WHEN jenis_kelamin = 'W' OR jenis_kelamin = 'Wanita' OR jenis_kelamin = 'Female' OR jenis_kelamin = 'F' THEN 'F'
3056

3057
				WHEN jenis_kelamin = 'P' OR jenis_kelamin = 'Pria' OR jenis_kelamin = 'Male' OR jenis_kelamin = 'M' THEN 'M'
3058

3059
			 END AS jenis_kelamin
3060

3061
			,CASE 
3062

3063
				WHEN status_ptkp = 'TK' THEN 'TK'
3064

3065
				WHEN status_ptkp = 'K0' OR status_ptkp = 'K1' OR status_ptkp = 'K2' OR status_ptkp = 'K3' THEN 'K' 
3066

3067
				WHEN status_ptkp = 'T1' OR status_ptkp = 'T2' OR status_ptkp = 'T3' THEN 'HB'	
3068

3069
			 END AS status_ptkp
3070

3071
			,CASE WHEN status_ptkp = 'TK' THEN '0' ELSE RIGHT(status_ptkp, 1) END AS jumlah_tanggungan --,jumlah_tanggungan
3072

3073
			,jabatan_pegawai AS nama_jabatan
3074

3075
			,CASE WHEN flag_asing = 0 THEN 'N' ELSE 'Y' END AS wp_luar_negeri
3076

3077
			,'' AS kode_negara
3078

3079
			,kode_pajak AS kode_pajak
3080

3081
			--,status_pegawai 
3082

3083
			--,status_kawin 
3084

3085
			--,flag_asing 	
3086

3087
			--,flag_status  
3088

3089
			,a1 AS a1
3090

3091
			--,flg_a2 
3092

3093
			,a2 AS a2
3094

3095
			,a3 AS a3
3096

3097
			,a4 AS a4
3098

3099
			,a5 AS a5
3100

3101
			,a6 AS a6
3102

3103
			,a8 AS a7
3104

3105
			,a9 AS a8
3106

3107
			,a10 + a11 AS a9
3108

3109
			,a12 AS a10
3110

3111
			,a13 AS a11
3112

3113
			,a14 AS a12
3114

3115
			,a15 AS a13
3116

3117
			,CASE WHEN a16 < 0 THEN 0 ELSE a16 END AS a14
3118

3119
			,a17 AS a15
3120

3121
			,CASE WHEN a18 < 0 THEN 0 ELSE a18 END AS a16
3122

3123
			,a19 AS a17 --@a17_att AS a17 
3124

3125
			,CASE WHEN a20 < 0 THEN 0 ELSE a20 END AS a18
3126

3127
			,a21 AS a19
3128

3129
			,a22 AS a20
3130

3131
			,'' AS status_pindah
3132

3133
			,npwp_pemotong AS npwp_pemotong
3134

3135
			,company_name AS nama_pemotong --nama_pemotong AS nama_pemotong
3136

3137
			,dbo.fn_formatdatetime(GETDATE(),'dd/mm/yyyy') AS tgl_bukti_potong
3138

3139
		FROM @result
3140

3141
		--where ktp = '3173026111930001'
3142

3143

(3-3/4)