Project

General

Profile

Bug #2916 » Rpt_IMFI_HR_PY_TaxComponent_202407240953.sql

Tri Rizqiaty, 07/24/2024 10:42 AM

 
1
??USE [MinovaHR_Indomobil_Prod]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[Rpt_IMFI_HR_PY_TaxComponent]    Script Date: 24/07/2024 09.52.38 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[Rpt_IMFI_HR_PY_TaxComponent] 
16

17
	@landscape AS VARCHAR(3),
18

19
	@companycode AS VARCHAR(5),
20

21
	@paygroup AS VARCHAR(5),
22

23
	@payperiod AS VARCHAR(6),
24

25
	@tax_office VARCHAR(12),
26

27
	@emp_id VARCHAR(12)
28

29
AS
30

31

32

33
--DECLARE @landscape AS VARCHAR(3) 
34

35
--DECLARE @companycode AS VARCHAR(5) 
36

37
--DECLARE @paygroup AS VARCHAR(5) 
38

39
--DECLARE @payperiod AS VARCHAR(6) 
40

41
--DECLARE @tax_office VARCHAR(12)
42

43
--DECLARE @emp_id VARCHAR(12)
44

45
--SET @landscape = '100'
46

47
--SET @companycode = '1000' 
48

49
--SET @paygroup = '11'
50

51
--SET @payperiod = '201904'
52

53
--SET @tax_office = ''
54

55
--SET @emp_id = ''
56

57

58

59

60

61
DECLARE @companyname AS NVARCHAR(50)
62

63
DECLARE @companylogo AS VARBINARY(MAX)
64

65
DECLARE @payrollgroup AS NVARCHAR(50)
66

67
DECLARE @paymonth AS NVARCHAR(2)
68

69
DECLARE @payyear AS NVARCHAR(4)
70

71
DECLARE @begda AS NVARCHAR(8)
72

73
DECLARE @endda AS NVARCHAR(8)
74

75
DECLARE @enddate AS VARCHAR(8)
76

77
SET @paymonth = RIGHT(@payperiod,2)
78

79
SET @payyear = LEFT(@payperiod,4)
80

81
SET @begda = @payperiod + '01'
82

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

85

86

87
DECLARE @last_date AS varchar(12) 
88

89
DECLARE @last_year AS varchar(8)
90

91
DECLARE @last_month AS varchar(8)
92

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

95
SET @last_year = LEFT(@last_date,4)
96

97
SET @last_month = RIGHT(@last_date,2)
98

99

100

101
-----//----- tabel-tabel internal
102

103
DECLARE @tbl_emp TABLE (
104

105
	emp_id varchar(8)
106

107
	,emp_name varchar(250)
108

109
	,[bank_id] [varchar](2) 
110

111
	,[bank_account] [varchar](50) 
112

113
	,[pay_grade] [varchar](8) 
114

115
	,[tax_status] [varchar](8) 
116

117
	,[npwp] [varchar](50) 
118

119
	,[jamsostek_type] [varchar](4) 
120

121
	,[jamsostek] [varchar](50) 
122

123
	,[jamsostek_level] [varchar](5)
124

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

127
	,[employee_area] [varchar](4) 
128

129
	,[employee_office] [varchar](4) 
130

131
	,[employee_status] [varchar](8) 
132

133
	,[employee_type] [varchar](8) 
134

135
	,[employee_subtype] [varchar](8) 
136

137
	,[payroll_group] [varchar](8) 
138

139
	,[organization] [varchar](8) 
140

141
	,[position] [varchar](8) 
142

143
	,[job] [varchar](8) 
144

145
	,office_name varchar(250) 
146

147
	,pygroup varchar(10)
148

149
	,pygroup_desc varchar(250)
150

151
	,tax_desc varchar(250)
152

153
	,npwp_taxoffice varchar(50)
154

155
	)
156

157
	
158

159
DECLARE @tbl_py TABLE (
160

161
	emp_id varchar(8)
162

163
	,this_amount decimal(18,0)
164

165
	,wage_type VARCHAR(10)
166

167
	,wage_type_desc VARCHAR(100)
168

169
	,jum_emp DECIMAL(18,0)
170

171
	)
172

173

174

175
DECLARE @tbl_py_last TABLE (
176

177
	emp_id varchar(8)
178

179
	,last_amount decimal(18,0)
180

181
	,wage_type VARCHAR(10)
182

183
	,wage_type_desc VARCHAR(100)
184

185
	,jum_emp DECIMAL(18,0)
186

187
	)
188

189

190

191
DECLARE @tbl_tr_enc TABLE
192

193
	(landscape varchar (3),
194

195
	 employee_id varchar(8),
196

197
	 payPeriodMonth varchar(2),
198

199
	 payPeriodYear varchar(4),
200

201
	 runPeriodMonth varchar(2),
202

203
	 runPeriodYear varchar(4),
204

205
	 wage_type varchar(4),
206

207
	 amount varchar(250),
208

209
	 rate varchar(250),
210

211
	 flg_retro varchar(3),
212

213
	 flg_period VARCHAR(20),
214

215
	 wt_group VARCHAR(100))
216

217

218

219
DECLARE @tbl_tr_dec TABLE
220

221
	(landscape varchar (3),
222

223
	 employee_id varchar(8),
224

225
	 payPeriodMonth varchar(2),
226

227
	 payPeriodYear varchar(4),
228

229
	 runPeriodMonth varchar(2),
230

231
	 runPeriodYear varchar(4),
232

233
	 wage_type varchar(4),
234

235
	 amount bigint,
236

237
	 rate bigint,
238

239
	 flg_retro varchar(3),
240

241
	 flg_period VARCHAR(20),
242

243
	 wt_group VARCHAR(100))
244

245

246

247
DECLARE @tbl_tr_dec_sum TABLE
248

249
	(landscape varchar (3),
250

251
	 employee_id varchar(8),
252

253
	 payPeriodMonth varchar(2),
254

255
	 payPeriodYear varchar(4),
256

257
	 runPeriodMonth varchar(2),
258

259
	 runPeriodYear varchar(4),
260

261
	 wage_type varchar(4),
262

263
	 amount bigint,
264

265
	 rate bigint,
266

267
	 flg_retro varchar(1),
268

269
	 flg_period VARCHAR(20),
270

271
	 wt_group VARCHAR(100))
272

273
	 
274

275
DECLARE @t_paygroup TABLE
276

277
(
278

279
	paygroup VARCHAR(5)
280

281
)
282

283

284

285
DECLARE @t_wt TABLE
286

287
(
288

289
	wt VARCHAR(8),
290

291
	wt_group VARCHAR(100)
292

293
)
294

295

296

297
SELECT @companyname = description
298

299
	 , @companylogo = logo
300

301
FROM
302

303
	base_cust_ref_companycode
304

305
WHERE
306

307
	(landscape = @landscape)
308

309
	AND (companycode = @companycode)
310

311

312

313
SELECT @payrollgroup = description
314

315
FROM
316

317
	base_cust_ref_payroll_group
318

319
WHERE
320

321
	(landscape = @landscape)
322

323
	AND (payroll_group = @paygroup)
324

325

326

327
-----//----- get wt
328

329
INSERT INTO @t_wt
330

331
SELECT val1, val2 FROM base_cust_parameter WHERE param = 'RPT_IMFI_TAX_COMPONENT'
332

333

334

335
-----//----- pengambilan data employee
336

337
INSERT INTO @tbl_emp 	
338

339
SELECT  DISTINCT tr300.employee_id
340

341
		,md3.[no_tht] --,CASE WHEN md3.bank_account_name <> '' THEN md3.bank_account_name ELSE md1.full_name END
342

343
		,md3.[bank_id]
344

345
		,md3.[bank_account]
346

347
		,md3.[pay_grade]
348

349
		,md3.[tax_status]
350

351
		,md3.[npwp]
352

353
		,md3.[jamsostek_type]
354

355
		,md3.[jamsostek]
356

357
		,md3.[jamsostek_level]
358

359
		,tr300.[cost_center]
360

361
		,tr300.[employee_area]
362

363
		,tr300.[employee_office]
364

365
		,tr300.[employee_status]
366

367
		,tr300.[employee_type]
368

369
		,tr300.[employee_subtype]
370

371
		,tr300.[payroll_group]
372

373
		,tr300.[organization]
374

375
		,tr300.[position]
376

377
		,tr300.[job]
378

379
		,office.emp_subarea_description
380

381
		,md2.payroll_group
382

383
		,pyg.description
384

385
		,tax.description
386

387
		,office.npwp
388

389
FROM hr_tr0300 AS tr300
390

391
LEFT JOIN hr_md_emp_md0001 AS md1
392

393
	ON tr300.landscape = md1.landscape
394

395
	AND tr300.employee_id = md1.emp_id 
396

397
	AND md1.start_date <= @endda AND md1.end_date >= @endda
398

399
LEFT JOIN hr_md_emp_md0002 AS md2
400

401
	ON md2.landscape = tr300.landscape
402

403
	AND md2.emp_id = tr300.employee_id
404

405
	AND md2.start_date < = @endda AND md2.end_date >= @endda	 
406

407
LEFT JOIN hr_md_emp_md0003 AS md3
408

409
	ON tr300.landscape = md3.landscape
410

411
	AND tr300.employee_id = md3.emp_id 
412

413
	AND md3.start_date <= @endda AND md3.end_date >= @endda 
414

415
LEFT JOIN base_cust_ref_emp_office AS office
416

417
	ON office.emp_subarea = tr300.employee_office
418

419
	AND office.landscape = tr300.landscape 
420

421
LEFT JOIN base_cust_ref_tax_office AS tax
422

423
	ON tax.landscape = md2.landscape
424

425
	AND tax.tax_office = office.tax_office
426

427
LEFT JOIN dbo.base_cust_ref_payroll_group AS pyg
428

429
	ON pyg.landscape = md2.landscape
430

431
	AND pyg.payroll_group = md2.payroll_group
432

433
WHERE tr300.landscape = @landscape
434

435
	AND tr300.payroll_group = @paygroup 
436

437
	AND tr300.pay_period_month = @paymonth AND tr300.pay_period_year = @payyear
438

439
	AND tr300.run_period_month = @paymonth AND tr300.run_period_year = @payyear 
440

441
	AND (tr300.company_id = @companycode OR @companycode = '')
442

443
	AND (office.tax_office = @tax_office OR @tax_office = '')
444

445
	AND (tr300.employee_id = @emp_id OR @emp_id = '')
446

447

448

449
--------------- get data payroll --------------
450

451
INSERT INTO @tbl_tr_enc
452

453
SELECT  pr.landscape , pr.employee_id, 
454

455
		pr.pay_period_month, pr.pay_period_year, 
456

457
	    pr.run_period_month, pr.run_period_year, 
458

459
	    pr.wage_type, pr.amount, pr.rate, 'N', 'now'
460

461
	    ,wt.wt_group
462

463
FROM hr_tr0301 pr  WITH (NOLOCK)
464

465
	INNER JOIN @tbl_emp emp
466

467
		ON pr.employee_id = emp.emp_id
468

469
	INNER JOIN @t_wt wt
470

471
		ON pr.wage_type = wt.wt
472

473
WHERE pr.pay_period_month = @paymonth AND pr.pay_period_year = @payyear 
474

475
	AND pr.run_period_month = @paymonth AND pr.run_period_year = @payyear 
476

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

479
	
480

481
INSERT INTO @tbl_tr_enc
482

483
SELECT	pr.landscape, pr.employee_id, 
484

485
		pr.pay_period_month, pr.pay_period_year, 
486

487
		pr.run_period_month, pr.run_period_year, 
488

489
		pr.wage_type, pr.amount, pr.rate, 'R', 'now'
490

491
		,wt.wt_group
492

493
FROM hr_tr0301_retro pr  WITH (NOLOCK)
494

495
	INNER JOIN @tbl_emp emp
496

497
		ON pr.employee_id = emp.emp_id
498

499
	INNER JOIN @t_wt wt
500

501
		ON pr.wage_type = wt.wt
502

503
WHERE pr.pay_period_month = @paymonth AND pr.pay_period_year = @payyear 
504

505
	AND pr.run_period_month = @paymonth AND pr.run_period_year = @payyear 
506

507
	--AND (pr.wage_type NOT IN ('MT','5000','5001','MRT','MIT'))
508

509
	--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---------
510

511

512

513
INSERT INTO @tbl_tr_enc
514

515
SELECT  pr.landscape , pr.employee_id, 
516

517
		pr.pay_period_month, pr.pay_period_year, 
518

519
	    pr.run_period_month, pr.run_period_year, 
520

521
	    pr.wage_type, pr.amount, pr.rate, 'N', 'last'
522

523
	    ,wt.wt_group
524

525
FROM hr_tr0301 pr  WITH (NOLOCK)
526

527
	INNER JOIN @tbl_emp emp
528

529
		ON pr.employee_id = emp.emp_id
530

531
	INNER JOIN @t_wt wt
532

533
		ON pr.wage_type = wt.wt
534

535
WHERE pr.pay_period_month = @last_month AND pr.pay_period_year = @last_year 
536

537
	AND pr.run_period_month = @last_month AND pr.run_period_year = @last_year
538

539
	--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---------
540

541
	
542

543
INSERT INTO @tbl_tr_enc
544

545
SELECT	pr.landscape, pr.employee_id, 
546

547
		pr.pay_period_month, pr.pay_period_year, 
548

549
		pr.run_period_month, pr.run_period_year, 
550

551
		pr.wage_type, pr.amount, pr.rate, 'R', 'last'
552

553
		,wt.wt_group
554

555
FROM hr_tr0301_retro pr  WITH (NOLOCK)
556

557
	INNER JOIN @tbl_emp emp
558

559
		ON pr.employee_id = emp.emp_id
560

561
	INNER JOIN @t_wt wt
562

563
		ON pr.wage_type = wt.wt
564

565
WHERE pr.pay_period_month = @last_month AND pr.pay_period_year = @last_year 
566

567
	AND pr.run_period_month = @last_month AND pr.run_period_year = @last_year
568

569
	--AND (pr.wage_type NOT IN ('MT','5000','5001','MRT','MIT'))
570

571
	--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---------
572

573
	 
574

575
INSERT INTO @tbl_tr_dec
576

577
SELECT pr.landscape, pr.employee_id, 
578

579
	   pr.payPeriodMonth, pr.payPeriodYear, 
580

581
	   pr.runPeriodMonth, pr.runPeriodYear, pr.wage_type,
582

583
	   CONVERT(decimal(22,0), dbo.SDE(pr.amount, 'M!N0V@2010')),
584

585
	   CONVERT(decimal(22,0), dbo.SDE(pr.rate, 'M!N0V@2010')),  pr.flg_retro, pr.flg_period
586

587
	   ,wt_group
588

589
FROM @tbl_tr_enc pr
590

591

592

593
INSERT INTO @tbl_tr_dec_sum
594

595
SELECT tbl_tr_dec.landscape, employee_id,
596

597
	   payPeriodMonth, payPeriodYear,
598

599
	   runPeriodMonth, runPeriodYear, wage_type,
600

601
	   SUM(amount) AS amount,
602

603
	   SUM(rate)  AS rate, 
604

605
	   min(flg_retro) AS flg_retro, flg_period
606

607
	   ,wt_group
608

609
FROM @tbl_tr_dec AS tbl_tr_dec
610

611
GROUP BY tbl_tr_dec.landscape, employee_id, 
612

613
		 payPeriodMonth, payPeriodYear,
614

615
		 runPeriodMonth,runPeriodYear, wage_type, flg_period
616

617
		 ,wt_group
618

619

620

621

622

623
-----//----- data payroll bulan ini
624

625
INSERT INTO @tbl_py 
626

627
SELECT  tbl_tr_dec_sum.employee_id
628

629
		,tbl_tr_dec_sum.amount 'amount'
630

631
		,tbl_tr_dec_sum.wage_type
632

633
		,wt_group
634

635
		,1
636

637
FROM @tbl_tr_dec_sum AS tbl_tr_dec_sum 
638

639
WHERE flg_period = 'now'
640

641

642

643
-----//------ pengambilan data bulan lalu
644

645
INSERT INTO @tbl_py_last  
646

647
SELECT  tbl_tr_dec_sum.employee_id
648

649
		,tbl_tr_dec_sum.amount 'amount'
650

651
		,tbl_tr_dec_sum.wage_type
652

653
		,wt_group
654

655
		,1
656

657
FROM @tbl_tr_dec_sum AS tbl_tr_dec_sum 
658

659
WHERE flg_period = 'last'
660

661

662

663
--SELECT DISTINCT tbl_emp.employee_office 
664

665
--			,tbl_emp.office_name 
666

667
--			,tbl_emp.tax_desc
668

669
--			,isnull(SUM(tbl_py.this_amount), 0) AS this_amount
670

671
--			,tbl_py.wage_type_desc
672

673
--			,tbl_py.jum_emp
674

675
--			--,SUM(tbl_py.jum_emp) AS jum_emp
676

677
--FROM @tbl_emp AS tbl_emp
678

679
--INNER JOIN @tbl_py AS tbl_py
680

681
--	ON tbl_py.emp_id = tbl_emp.emp_id  
682

683
--WHERE tbl_py.this_amount > 0
684

685
--GROUP BY tbl_emp.employee_office
686

687
--		,tbl_emp.office_name 
688

689
--		,tbl_emp.tax_desc
690

691
--		,tbl_py.wage_type_desc
692

693
--		,tbl_py.jum_emp
694

695

696

697
--SELECT DISTINCT tbl_emp.emp_id
698

699
--			,tbl_emp.employee_office 
700

701
--			,tbl_emp.office_name 
702

703
--			,tbl_emp.tax_desc
704

705
--			,isnull(tbl_py.this_amount, 0) AS this_amount
706

707
--			,tbl_py.wage_type_desc
708

709
--			,jum.jum_emp
710

711
--	FROM @tbl_emp AS tbl_emp
712

713
--	INNER JOIN @tbl_py AS tbl_py
714

715
--		ON tbl_py.emp_id = tbl_emp.emp_id 
716

717
--	LEFT JOIN ( 
718

719
--				SELECT tbl_emp.employee_office 
720

721
--						,tbl_emp.office_name 
722

723
--						,tbl_emp.tax_desc
724

725
--						,COUNT(tbl_emp.emp_id) AS jum_emp 
726

727
--				FROM @tbl_emp AS tbl_emp
728

729
--				GROUP BY tbl_emp.employee_office 
730

731
--						,tbl_emp.office_name 
732

733
--						,tbl_emp.tax_desc
734

735
--			  ) AS jum
736

737
--		ON tbl_emp.employee_office  = jum.employee_office 
738

739
--		AND tbl_emp.tax_desc = jum.tax_desc
740

741
--	WHERE tbl_py.this_amount > 0
742

743

744

745
---//----- data result 
746

747
SELECT * FROM 
748

749
(
750

751
SELECT DISTINCT tbl_emp.employee_office 
752

753
			,tbl_emp.office_name 
754

755
			,tbl_emp.tax_desc
756

757
			,tbl_emp.npwp_taxoffice
758

759
			,isnull(SUM(tbl_py.this_amount), 0) AS this_amount
760

761
			,tbl_py.wage_type_desc
762

763
			,jum.jum_emp
764

765
	FROM @tbl_emp AS tbl_emp
766

767
	INNER JOIN @tbl_py AS tbl_py
768

769
		ON tbl_py.emp_id = tbl_emp.emp_id 
770

771
	LEFT JOIN ( 
772

773
				SELECT tbl_emp.employee_office 
774

775
						,tbl_emp.office_name 
776

777
						,tbl_emp.tax_desc
778

779
						,COUNT(tbl_emp.emp_id) AS jum_emp 
780

781
				FROM @tbl_emp AS tbl_emp
782

783
				GROUP BY tbl_emp.employee_office 
784

785
						,tbl_emp.office_name 
786

787
						,tbl_emp.tax_desc
788

789
			  ) AS jum
790

791
		ON tbl_emp.employee_office  = jum.employee_office 
792

793
		AND tbl_emp.tax_desc = jum.tax_desc
794

795
	--WHERE tbl_py.this_amount > 0
796

797
	GROUP BY tbl_emp.employee_office
798

799
		,tbl_emp.office_name 
800

801
		,tbl_emp.tax_desc
802

803
		,tbl_py.wage_type_desc
804

805
		,jum.jum_emp
806

807
		,tbl_emp.npwp_taxoffice
808

809
) AS SourceTable
810

811
PIVOT
812

813
(
814

815
	SUM (this_amount)
816

817
FOR wage_type_desc IN
818

819
(	[Basic Salary], 
820

821
	[HP Allowance],
822

823
	[Meal Allowance],
824

825
	[Non Taxable Income],
826

827
	[Rapel/Other Allowance],
828

829
	[Tax],
830

831
	[Tax Allowance],
832

833
	[Total Allowance],
834

835
	[Total Income],
836

837
	[Total Tax Component],
838

839
	[Transport Allowance],
840

841
	[Position Allowance],
842

843
	[Insentif Allowance],
844

845
	[Medical],
846

847
	[THR/Bonus],
848

849
	[Total Deduction],
850

851
	[Overtime],
852

853
	[JKK/JKM],
854

855
	[Tax Paid]
856

857
	
858

859
)
860

861
) AS pvt
862

863

(3-3/5)