Project

General

Profile

Bug #2664 » Rpt_IMFI_HR_PY_TaxComponent_detail_20240322.sql

Tri Rizqiaty, 03/22/2024 02:01 PM

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

3
	@landscape AS VARCHAR(3),
4

5
	@companycode AS VARCHAR(5),
6

7
	@paygroup AS VARCHAR(5),
8

9
	@payperiod AS VARCHAR(6),
10

11
	@tax_office VARCHAR(12),
12

13
	@emp_id varchar(12)
14

15
AS
16

17

18

19
--DECLARE @landscape AS VARCHAR(3) 
20

21
--DECLARE @companycode AS VARCHAR(5) 
22

23
--DECLARE @paygroup AS VARCHAR(5) 
24

25
--DECLARE @payperiod AS VARCHAR(6) 
26

27
--DECLARE @tax_office VARCHAR(12)
28

29
--DECLARE @emp_id VARCHAR(8)
30

31
--SET @landscape = '100'
32

33
--SET @companycode = '1000' 
34

35
--SET @paygroup = '11'
36

37
--SET @payperiod = '202403'
38

39
--SET @tax_office = ''
40

41
--SET @emp_id = '20000003'
42

43

44

45

46

47
DECLARE @companyname AS NVARCHAR(50)
48

49
DECLARE @companylogo AS VARBINARY(MAX)
50

51
DECLARE @payrollgroup AS NVARCHAR(50)
52

53
DECLARE @paymonth AS NVARCHAR(2)
54

55
DECLARE @payyear AS NVARCHAR(4)
56

57
DECLARE @begda AS NVARCHAR(8)
58

59
DECLARE @endda AS NVARCHAR(8)
60

61
DECLARE @enddate AS VARCHAR(8)
62

63
SET @paymonth = RIGHT(@payperiod,2)
64

65
SET @payyear = LEFT(@payperiod,4)
66

67
SET @begda = @payperiod + '01'
68

69
SET @endda = convert(NVARCHAR(8),dateadd(d,-1, dateadd(m, 1, @begda)), 112)
70

71

72

73
DECLARE @last_date AS varchar(12) 
74

75
DECLARE @last_year AS varchar(8)
76

77
DECLARE @last_month AS varchar(8)
78

79
SET @last_date = convert(VARCHAR(6), dateadd(d,0, dateadd(m,-1, @begda)), 112)
80

81
SET @last_year = LEFT(@last_date,4)
82

83
SET @last_month = RIGHT(@last_date,2)
84

85

86

87
-----//----- tabel-tabel internal
88

89
DECLARE @tbl_emp TABLE (
90

91
	emp_id varchar(8)
92

93
	,emp_name varchar(250)
94

95
	,[bank_id] [varchar](2) 
96

97
	,[bank_account] [varchar](50) 
98

99
	,[pay_grade] [varchar](8) 
100

101
	,[tax_status] [varchar](8) 
102

103
	,[npwp] [varchar](50) 
104

105
	,[jamsostek_type] [varchar](4) 
106

107
	,[jamsostek] [varchar](50) 
108

109
	,[jamsostek_level] [varchar](5)
110

111
	,[cost_center] [varchar](8) 
112

113
	,[employee_area] [varchar](4) 
114

115
	,[employee_office] [varchar](4) 
116

117
	,[employee_status] [varchar](8) 
118

119
	,[employee_type] [varchar](8) 
120

121
	,[employee_subtype] [varchar](8) 
122

123
	,[payroll_group] [varchar](8) 
124

125
	,[organization] [varchar](8) 
126

127
	,[position] [varchar](8) 
128

129
	,[job] [varchar](8) 
130

131
	,office_name varchar(250) 
132

133
	,pygroup varchar(10)
134

135
	,pygroup_desc varchar(250)
136

137
	,tax_desc varchar(250)
138

139
	,npwp_taxoffice varchar(50)
140

141
	)
142

143
	
144

145
DECLARE @tbl_py TABLE (
146

147
	emp_id varchar(8)
148

149
	,this_amount decimal(18,0)
150

151
	,wage_type VARCHAR(10)
152

153
	,wage_type_desc VARCHAR(100)
154

155
	,jum_emp DECIMAL(18,0)
156

157
	)
158

159

160

161
DECLARE @tbl_py_last TABLE (
162

163
	emp_id varchar(8)
164

165
	,last_amount decimal(18,0)
166

167
	,wage_type VARCHAR(10)
168

169
	,wage_type_desc VARCHAR(100)
170

171
	,jum_emp DECIMAL(18,0)
172

173
	)
174

175

176

177
DECLARE @tbl_tr_enc TABLE
178

179
	(landscape varchar (3),
180

181
	 employee_id varchar(8),
182

183
	 payPeriodMonth varchar(2),
184

185
	 payPeriodYear varchar(4),
186

187
	 runPeriodMonth varchar(2),
188

189
	 runPeriodYear varchar(4),
190

191
	 wage_type varchar(4),
192

193
	 amount varchar(250),
194

195
	 rate varchar(250),
196

197
	 flg_retro varchar(3),
198

199
	 flg_period VARCHAR(20),
200

201
	 wt_group VARCHAR(100))
202

203

204

205
DECLARE @tbl_tr_dec TABLE
206

207
	(landscape varchar (3),
208

209
	 employee_id varchar(8),
210

211
	 payPeriodMonth varchar(2),
212

213
	 payPeriodYear varchar(4),
214

215
	 runPeriodMonth varchar(2),
216

217
	 runPeriodYear varchar(4),
218

219
	 wage_type varchar(4),
220

221
	 amount decimal(18,0),
222

223
	 rate decimal(18,0),
224

225
	 flg_retro varchar(3),
226

227
	 flg_period VARCHAR(20),
228

229
	 wt_group VARCHAR(100))
230

231

232

233
DECLARE @tbl_tr_dec_sum TABLE
234

235
	(landscape varchar (3),
236

237
	 employee_id varchar(8),
238

239
	 payPeriodMonth varchar(2),
240

241
	 payPeriodYear varchar(4),
242

243
	 runPeriodMonth varchar(2),
244

245
	 runPeriodYear varchar(4),
246

247
	 wage_type varchar(4),
248

249
	 amount decimal(18,0),
250

251
	 rate decimal(18,0),
252

253
	 flg_retro varchar(1),
254

255
	 flg_period VARCHAR(20),
256

257
	 wt_group VARCHAR(100))
258

259
	 
260

261
DECLARE @t_paygroup TABLE
262

263
(
264

265
	paygroup VARCHAR(5)
266

267
)
268

269

270

271
DECLARE @t_wt TABLE
272

273
(
274

275
	wt VARCHAR(8),
276

277
	wt_group VARCHAR(100)
278

279
)
280

281

282

283
SELECT @companyname = description
284

285
	 , @companylogo = logo
286

287
FROM
288

289
	base_cust_ref_companycode
290

291
WHERE
292

293
	(landscape = @landscape)
294

295
	AND (companycode = @companycode)
296

297

298

299
SELECT @payrollgroup = description
300

301
FROM
302

303
	base_cust_ref_payroll_group
304

305
WHERE
306

307
	(landscape = @landscape)
308

309
	AND (payroll_group = @paygroup)
310

311

312

313
-----//----- get wt
314

315
INSERT INTO @t_wt
316

317
SELECT val1, val2 FROM base_cust_parameter WHERE param = 'RPT_IMFI_TAX_COMPONENT'
318

319

320

321
-----//----- pengambilan data employee
322

323
INSERT INTO @tbl_emp 	
324

325
SELECT  DISTINCT tr300.employee_id
326

327
		,md3.no_tht--,md1.full_name
328

329
		--,CASE WHEN md3.bank_account_name <> '' THEN md3.bank_account_name ELSE md1.full_name END
330

331
		,md3.[bank_id]
332

333
		,md3.[bank_account]
334

335
		,md3.[pay_grade]
336

337
		,md3.[tax_status]
338

339
		,md3.[npwp]
340

341
		,md3.[jamsostek_type]
342

343
		,md3.[jamsostek]
344

345
		,md3.[jamsostek_level]
346

347
		,tr300.[cost_center]
348

349
		,tr300.[employee_area]
350

351
		,tr300.[employee_office]
352

353
		,tr300.[employee_status]
354

355
		,tr300.[employee_type]
356

357
		,tr300.[employee_subtype]
358

359
		,tr300.[payroll_group]
360

361
		,tr300.[organization]
362

363
		,tr300.[position]
364

365
		,tr300.[job]
366

367
		,office.emp_subarea_description
368

369
		,md2.payroll_group
370

371
		,pyg.description
372

373
		,tax.description
374

375
		,office.npwp
376

377
FROM hr_tr0300 AS tr300
378

379
LEFT JOIN hr_md_emp_md0001 AS md1
380

381
	ON tr300.landscape = md1.landscape
382

383
	AND tr300.employee_id = md1.emp_id 
384

385
	AND md1.start_date <= @endda AND md1.end_date >= @endda
386

387
LEFT JOIN hr_md_emp_md0002 AS md2
388

389
	ON md2.landscape = tr300.landscape
390

391
	AND md2.emp_id = tr300.employee_id
392

393
	AND md2.start_date < = @endda AND md2.end_date >= @endda	 
394

395
LEFT JOIN hr_md_emp_md0003 AS md3
396

397
	ON tr300.landscape = md3.landscape
398

399
	AND tr300.employee_id = md3.emp_id 
400

401
	AND md3.start_date <= @endda AND md3.end_date >= @endda 
402

403
LEFT JOIN base_cust_ref_emp_office AS office
404

405
	ON office.emp_subarea = tr300.employee_office
406

407
	AND office.landscape = tr300.landscape 
408

409
LEFT JOIN base_cust_ref_tax_office AS tax
410

411
	ON tax.landscape = md2.landscape
412

413
	AND tax.tax_office = office.tax_office
414

415
LEFT JOIN dbo.base_cust_ref_payroll_group AS pyg
416

417
	ON pyg.landscape = md2.landscape
418

419
	AND pyg.payroll_group = md2.payroll_group
420

421
WHERE tr300.landscape = @landscape
422

423
	AND tr300.payroll_group = @paygroup 
424

425
	AND tr300.pay_period_month = @paymonth AND tr300.pay_period_year = @payyear
426

427
	AND tr300.run_period_month = @paymonth AND tr300.run_period_year = @payyear 
428

429
	AND (tr300.company_id = @companycode OR @companycode = '')
430

431
	AND (office.tax_office = @tax_office OR @tax_office = '')
432

433
	AND (tr300.employee_id = @emp_id OR @emp_id = '')
434

435

436

437
--------------- get data payroll --------------
438

439
INSERT INTO @tbl_tr_enc
440

441
SELECT  pr.landscape , pr.employee_id, 
442

443
		pr.pay_period_month, pr.pay_period_year, 
444

445
	    pr.run_period_month, pr.run_period_year, 
446

447
	    pr.wage_type, pr.amount, pr.rate, 'N', 'now'
448

449
	    ,wt.wt_group
450

451
FROM hr_tr0301 pr  WITH (NOLOCK)
452

453
	INNER JOIN @tbl_emp emp
454

455
		ON pr.employee_id = emp.emp_id
456

457
	INNER JOIN @t_wt wt
458

459
		ON pr.wage_type = wt.wt
460

461
WHERE pr.pay_period_month = @paymonth AND pr.pay_period_year = @payyear 
462

463
	AND pr.run_period_month = @paymonth AND pr.run_period_year = @payyear 
464

465
	--AND pr.wage_type in (SELECT * FROM base_cust_parameter WHERE PARAM = 'RPT_IMFI_TAX_COMPONENT')
466

467
	
468

469
INSERT INTO @tbl_tr_enc
470

471
SELECT	pr.landscape, pr.employee_id, 
472

473
		pr.pay_period_month, pr.pay_period_year, 
474

475
		pr.run_period_month, pr.run_period_year, 
476

477
		pr.wage_type, pr.amount, pr.rate, 'R', 'now'
478

479
		,wt.wt_group
480

481
FROM hr_tr0301_retro pr  WITH (NOLOCK)
482

483
	INNER JOIN @tbl_emp emp
484

485
		ON pr.employee_id = emp.emp_id
486

487
	INNER JOIN @t_wt wt
488

489
		ON pr.wage_type = wt.wt
490

491
WHERE pr.pay_period_month = @paymonth AND pr.pay_period_year = @payyear 
492

493
	AND pr.run_period_month = @paymonth AND pr.run_period_year = @payyear 
494

495
	AND (pr.wage_type NOT IN ('MT','5000','50001'))
496

497
	--AND pr.wage_type in ('1000','1300','1202','1221','1222','1223','1224','1225','1226','1227','1228','1229','1304','1200','1201','1301','1203','1210','1212','1213','1302','1500','1205','1231','1232','1233','1234','1235','1303','1501','1504','2000','2001','2002','2003','1502','6000','6200','6202','6203','6204','6205','6206','6207','6500','6501','6502','6503','6504','1503','3000','3100','3200','5000','5001','JER3','JER2','TD','TI','MT','TP') ----------- tambahin wage_type apa aja ya---------
498

499

500

501
INSERT INTO @tbl_tr_enc
502

503
SELECT  pr.landscape , pr.employee_id, 
504

505
		pr.pay_period_month, pr.pay_period_year, 
506

507
	    pr.run_period_month, pr.run_period_year, 
508

509
	    pr.wage_type, pr.amount, pr.rate, 'N', 'last'
510

511
	    ,wt.wt_group
512

513
FROM hr_tr0301 pr  WITH (NOLOCK)
514

515
	INNER JOIN @tbl_emp emp
516

517
		ON pr.employee_id = emp.emp_id
518

519
	INNER JOIN @t_wt wt
520

521
		ON pr.wage_type = wt.wt
522

523
WHERE pr.pay_period_month = @last_month AND pr.pay_period_year = @last_year 
524

525
	AND pr.run_period_month = @last_month AND pr.run_period_year = @last_year
526

527
	--AND pr.wage_type in ('1000','1300','1202','1221','1222','1223','1224','1225','1226','1227','1228','1229','1304','1200','1201','1301','1203','1210','1212','1213','1302','1500','1205','1231','1232','1233','1234','1235','1303','1501','1504','2000','2001','2002','2003','1502','6000','6200','6202','6203','6204','6205','6206','6207','6500','6501','6502','6503','6504','1503','3000','3100','3200','5000','5001','JER3','JER2','TD','TI','MT','TP') ----------- tambahin wage_type apa aja ya---------
528

529
	
530

531
INSERT INTO @tbl_tr_enc
532

533
SELECT	pr.landscape, pr.employee_id, 
534

535
		pr.pay_period_month, pr.pay_period_year, 
536

537
		pr.run_period_month, pr.run_period_year, 
538

539
		pr.wage_type, pr.amount, pr.rate, 'R', 'last'
540

541
		,wt.wt_group
542

543
FROM hr_tr0301_retro pr  WITH (NOLOCK)
544

545
	INNER JOIN @tbl_emp emp
546

547
		ON pr.employee_id = emp.emp_id
548

549
	INNER JOIN @t_wt wt
550

551
		ON pr.wage_type = wt.wt
552

553
WHERE pr.pay_period_month = @last_month AND pr.pay_period_year = @last_year 
554

555
	AND pr.run_period_month = @last_month AND pr.run_period_year = @last_year
556

557
	AND (pr.wage_type NOT IN ('MT','5000','50001'))
558

559
	--AND pr.wage_type in ('1000','1300','1202','1221','1222','1223','1224','1225','1226','1227','1228','1229','1304','1200','1201','1301','1203','1210','1212','1213','1302','1500','1205','1231','1232','1233','1234','1235','1303','1501','1504','2000','2001','2002','2003','1502','6000','6200','6202','6203','6204','6205','6206','6207','6500','6501','6502','6503','6504','1503','3000','3100','3200','5000','5001','JER3','JER2','TD','TI','MT','TP') ----------- tambahin wage_type apa aja ya---------
560

561
	 
562

563
INSERT INTO @tbl_tr_dec
564

565
SELECT pr.landscape, pr.employee_id, 
566

567
	   pr.payPeriodMonth, pr.payPeriodYear, 
568

569
	   pr.runPeriodMonth, pr.runPeriodYear, pr.wage_type,
570

571
	   CONVERT(decimal(18,0), dbo.SDE(pr.amount, 'M!N0V@2010')),
572

573
	   CONVERT(decimal(18,0), dbo.SDE(pr.rate, 'M!N0V@2010')),  pr.flg_retro, pr.flg_period
574

575
	   ,wt_group
576

577
FROM @tbl_tr_enc pr
578

579

580

581
INSERT INTO @tbl_tr_dec_sum
582

583
SELECT tbl_tr_dec.landscape, employee_id,
584

585
	   payPeriodMonth, payPeriodYear,
586

587
	   runPeriodMonth, runPeriodYear, wage_type,
588

589
	   SUM(amount)AS amount,
590

591
	   SUM(rate) AS rate,
592

593
	   min(flg_retro) AS flg_retro, flg_period
594

595
	   ,wt_group
596

597
FROM @tbl_tr_dec AS tbl_tr_dec
598

599
GROUP BY tbl_tr_dec.landscape, employee_id, 
600

601
		 payPeriodMonth, payPeriodYear,
602

603
		 runPeriodMonth,runPeriodYear, wage_type, flg_period
604

605
		 ,wt_group
606

607

608

609

610

611
-----//----- data payroll bulan ini
612

613
INSERT INTO @tbl_py 
614

615
SELECT  tbl_tr_dec_sum.employee_id
616

617
		,tbl_tr_dec_sum.amount 'amount'
618

619
		,tbl_tr_dec_sum.wage_type
620

621
		,wt_group
622

623
		,1
624

625
FROM @tbl_tr_dec_sum AS tbl_tr_dec_sum 
626

627
WHERE flg_period = 'now'
628

629

630

631
-----//------ pengambilan data bulan lalu
632

633
INSERT INTO @tbl_py_last  
634

635
SELECT  tbl_tr_dec_sum.employee_id
636

637
		,tbl_tr_dec_sum.amount 'amount'
638

639
		,tbl_tr_dec_sum.wage_type
640

641
		,wt_group
642

643
		,1
644

645
FROM @tbl_tr_dec_sum AS tbl_tr_dec_sum 
646

647
WHERE flg_period = 'last'
648

649

650

651
--SELECT DISTINCT tbl_emp.employee_office 
652

653
--			,tbl_emp.office_name 
654

655
--			,tbl_emp.tax_desc
656

657
--			,isnull(SUM(tbl_py.this_amount), 0) AS this_amount
658

659
--			,tbl_py.wage_type_desc
660

661
--			,tbl_py.jum_emp
662

663
--			--,SUM(tbl_py.jum_emp) AS jum_emp
664

665
--FROM @tbl_emp AS tbl_emp
666

667
--INNER JOIN @tbl_py AS tbl_py
668

669
--	ON tbl_py.emp_id = tbl_emp.emp_id  
670

671
--WHERE tbl_py.this_amount > 0
672

673
--GROUP BY tbl_emp.employee_office
674

675
--		,tbl_emp.office_name 
676

677
--		,tbl_emp.tax_desc
678

679
--		,tbl_py.wage_type_desc
680

681
--		,tbl_py.jum_emp
682

683

684

685
--SELECT DISTINCT tbl_emp.emp_id
686

687
--			,tbl_emp.employee_office 
688

689
--			,tbl_emp.office_name 
690

691
--			,tbl_emp.tax_desc
692

693
--			,isnull(tbl_py.this_amount, 0) AS this_amount
694

695
--			,tbl_py.wage_type_desc
696

697
--			,jum.jum_emp
698

699
--	FROM @tbl_emp AS tbl_emp
700

701
--	INNER JOIN @tbl_py AS tbl_py
702

703
--		ON tbl_py.emp_id = tbl_emp.emp_id 
704

705
--	LEFT JOIN ( 
706

707
--				SELECT tbl_emp.employee_office 
708

709
--						,tbl_emp.office_name 
710

711
--						,tbl_emp.tax_desc
712

713
--						,COUNT(tbl_emp.emp_id) AS jum_emp 
714

715
--				FROM @tbl_emp AS tbl_emp
716

717
--				GROUP BY tbl_emp.employee_office 
718

719
--						,tbl_emp.office_name 
720

721
--						,tbl_emp.tax_desc
722

723
--			  ) AS jum
724

725
--		ON tbl_emp.employee_office  = jum.employee_office 
726

727
--		AND tbl_emp.tax_desc = jum.tax_desc
728

729
--	WHERE tbl_py.this_amount > 0
730

731

732

733
---//----- data result 
734

735
SELECT * FROM 
736

737
(
738

739
SELECT DISTINCT  tbl_emp.emp_id , tbl_emp.emp_name,
740

741
tbl_emp.employee_office 
742

743
			,tbl_emp.office_name 
744

745
			,tbl_emp.tax_desc
746

747
			,tbl_emp.npwp_taxoffice
748

749
			,isnull(SUM(tbl_py.this_amount), 0) AS this_amount
750

751
			,tbl_py.wage_type_desc
752

753
			,jum.jum_emp
754

755
	FROM @tbl_emp AS tbl_emp
756

757
	INNER JOIN @tbl_py AS tbl_py
758

759
		ON tbl_py.emp_id = tbl_emp.emp_id 
760

761
	LEFT JOIN ( 
762

763
				SELECT tbl_emp.employee_office 
764

765
						,tbl_emp.office_name 
766

767
						,tbl_emp.tax_desc
768

769
						,COUNT(tbl_emp.emp_id) AS jum_emp 
770

771
				FROM @tbl_emp AS tbl_emp
772

773
				GROUP BY tbl_emp.employee_office 
774

775
						,tbl_emp.office_name 
776

777
						,tbl_emp.tax_desc
778

779
			  ) AS jum
780

781
		ON tbl_emp.employee_office  = jum.employee_office 
782

783
		AND tbl_emp.tax_desc = jum.tax_desc
784

785
	--WHERE tbl_py.this_amount > 0
786

787
	GROUP BY tbl_emp.emp_id , tbl_emp.emp_name,
788

789
tbl_emp.employee_office 
790

791
			,tbl_emp.office_name, tbl_emp.tax_desc
792

793
		,tbl_py.wage_type_desc
794

795
		,jum.jum_emp
796

797
		,tbl_emp.npwp_taxoffice
798

799
) AS SourceTable
800

801
PIVOT
802

803
(
804

805
	SUM (this_amount)
806

807
FOR wage_type_desc IN
808

809
(	[Basic Salary], 
810

811
	[HP Allowance],
812

813
	[Meal Allowance],
814

815
	[Non Taxable Income],
816

817
	[Rapel/Other Allowance],
818

819
	[Tax],
820

821
	[Tax Allowance],
822

823
	[Total Allowance],
824

825
	[Total Income],
826

827
	[Total Tax Component],
828

829
	[Transport Allowance],
830

831
	[Position Allowance],
832

833
	[Insentif Allowance],
834

835
	[Medical],
836

837
	[THR/Bonus],
838

839
	[Total Deduction],
840

841
	[Overtime],
842

843
	[JKK/JKM],
844

845
	[Tax Paid]
846

847
	
848

849
)
850

851
) AS pvt
852

853

(6-6/7)