Project

General

Profile

Bug #3461 » rp_trPS00_ess_20250228.sql

Tri Rizqiaty, 02/28/2025 03:02 PM

 
1
??USE [MinovaHR_Indomobil_Prod]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[rp_trPS00_ess]    Script Date: 28/02/2025 14.51.05 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15

16
ALTER PROCEDURE [dbo].[rp_trPS00_ess] -- exec rp_trPS00 '100', '201011', '00000324', '0', '', 'scriberion', 'triadblank'
17
    @landscape VARCHAR(3) ,
18
    @payperiod VARCHAR(6) ,
19
    @employee_id VARCHAR(8) ,
20
    @running VARCHAR(2) ,
21
    @paytype VARCHAR(2) ,
22
    @key1 AS NVARCHAR(MAX) ,
23
    @key2 AS NVARCHAR(MAX)
24
     
25
AS 
26
	------BEGIN
27
	------	SET NOCOUNT ON added to prevent extra result sets from
28
	------	interfering with SELECT statements.
29
	------    SET NOCOUNT ON;
30

31
--DECLARE @landscape VARCHAR(3) = '100'
32

33
--DECLARE @payperiod VARCHAR(6) = '202502'
34

35
--DECLARE @employee_id VARCHAR(8) = '20090832'
36
--DECLARE @running VARCHAR(2) = '1'
37
--DECLARE @paytype VARCHAR(2) = ''
38
--DECLARE @key1 AS NVARCHAR(max) = 'scriberion'
39
--DECLARE @key2 AS NVARCHAR(max) = 'triadblank'
40

41
	------Insert statements for procedure here
42
	------DECLARE @RunPeriodMonthMax VARCHAR(12)
43
	------DECLARE @RunPeriodYearMax VARCHAR(12)
44
	------SELECT  @RunPeriodMonthMax = MAX(run_period_month) ,
45
	------@RunPeriodYearMax = MAX(run_period_year)
46
	------FROM    hr_tr0300
47
	------WHERE   employee_id = @employee_id
48
	------AND SUBSTRING(pay_period_year, 1, 4) = SUBSTRING(@payperiod, 1, 4)
49
	------GROUP BY employee_id 
50

51
DECLARE @companycode AS VARCHAR(50)
52
DECLARE @companyname AS NVARCHAR(50)
53
DECLARE @companylogo AS VARBINARY(MAX)
54
DECLARE @paymonth AS NVARCHAR(2)
55
DECLARE @payyear AS NVARCHAR(4)
56
DECLARE @begda AS NVARCHAR(8)
57
DECLARE @endda AS NVARCHAR(8)
58

59
SET @paymonth = RIGHT(@payperiod, 2)
60
SET @payyear = LEFT(@payperiod, 4)
61
SET @begda = @payperiod + '01'
62
SET @endda = CONVERT(NVARCHAR(8), DATEADD(d, -1, DATEADD(m, 1, @begda)), 112)
63

64
--IF ( @RunPeriodMonthMax = @paymonth ) 
65
--    BEGIN
66

67
        DECLARE @payslipsigned AS NVARCHAR(50)
68

69
        SELECT TOP ( 1 )
70
                @payslipsigned = [value]
71
        FROM    hr_cu0307
72
        WHERE   ( landscape = @landscape )
73
                AND ( pay_param = 'PAYSLIPSIGNED' )
74
                AND ( start_date <= @endda
75
                      AND end_date >= @endda
76
                    )
77

78
        IF ( @running = '1' ) 
79
            BEGIN
80
                SELECT TOP ( 1 )
81
                        @companycode = company_id
82
                FROM    hr_tr0300
83
                WHERE   ( landscape = @landscape )
84
                        AND ( employee_id = @employee_id )
85
                        AND ( pay_period_month = @paymonth )
86
                        AND ( pay_period_year = @payyear )
87
                        AND ( run_period_month = @paymonth )
88
                        AND ( run_period_year = @payyear )
89
            END
90
        ELSE 
91
            BEGIN
92
                SELECT TOP ( 1 )
93
                        @companycode = company_id
94
                FROM    hr_tr0300_sim
95
                WHERE   ( landscape = @landscape )
96
                        AND ( employee_id = @employee_id )
97
                        AND ( pay_period_month = @paymonth )
98
                        AND ( pay_period_year = @payyear )
99
                        AND ( run_period_month = @paymonth )
100
                        AND ( run_period_year = @payyear )
101
            END
102

103
        SELECT  @companyname = description ,
104
                @companylogo = logo
105
        FROM    base_cust_ref_companycode
106
        WHERE   ( landscape = @landscape )
107
                AND ( companycode = @companycode )
108

109
        IF ( @running = '1' ) 
110
            BEGIN   
111
				
112
				DECLARE @TableCA TABLE
113
				(
114
					employee_id VARCHAR(20)
115
					--,wage_type VARCHAR(20)
116
					--,rate DECIMAL(22,0)
117
					,amount DECIMAL(22,0)
118
					,retrotype VARCHAR(20)
119
				)
120
				INSERT INTO @TableCA
121
				SELECT DISTINCT sumca.employee_id, SUM(DISTINCT(sumca.amount)) AS amount, MIN(sumca.retrotype) FROM
122
				( SELECT DISTINCT ca.employee_id, ca.wage_type,  CAST(dbo.GetPEN(@landscape, ca.rate) AS DECIMAL) 'rate' , CAST(dbo.GetPEN(@landscape, ca.amount) AS DECIMAL) 'amount', ca.retrotype
123
				FROM (
124
				SELECT * ,
125
                    'N' retrotype
126
                FROM   hr_tr0301 WHERE hr_tr0301.wage_type = '3000'
127
									AND hr_tr0301.employee_id = @employee_id
128
									AND hr_tr0301.pay_period_month = @paymonth
129
									AND hr_tr0301.pay_period_year = @payyear
130
									AND hr_tr0301.run_period_month = @paymonth
131
									AND hr_tr0301.run_period_year = @payyear
132
                UNION ALL
133
                SELECT * ,
134
                    'R' retrotype
135
                FROM   hr_tr0301_retro WHERE hr_tr0301_retro.wage_type = '3000'
136
									AND hr_tr0301_retro.employee_id = @employee_id
137
									AND hr_tr0301_retro.pay_period_month = @paymonth
138
									AND hr_tr0301_retro.pay_period_year = @payyear
139
									AND hr_tr0301_retro.run_period_month = @paymonth
140
									AND hr_tr0301_retro.run_period_year = @payyear
141
				) ca ) sumca
142
				GROUP BY sumca.employee_id
143

144
                SELECT DISTINCT  @payslipsigned payslipsigned ,
145
                        c308.landscape ,
146
                        @companyname companyname ,
147
                        @companylogo logo ,
148
                        c308.reportid ,
149
                        c308.groupby ,
150
                        c308P.description parentdescription ,
151
                        c308.sequence ,
152
                        c308.description ,
153
                        c308.paytype ,
154
                        c308.wage_type ,
155
                        c308.isdisplaywage_type ,
156
                        c308.isdisplaynumber ,
157
                        c308.isdisplayrate ,
158
                        c308.isdisplayamount ,
159
                        c308.start_date ,
160
                        c308.end_date ,
161
                        c308.isactive ,
162
                        c308.change_by ,
163
                        c308.change_date ,
164
                        c308.created_by ,
165
                        c308.created_date ,
166
                        hr_tr0301.employee_id ,
167
                        hr_tr0301.pay_period_month ,
168
                        hr_tr0301.pay_period_year ,
169
                        hr_tr0301.run_period_month ,
170
                        hr_tr0301.run_period_year ,
171
                        hr_tr0301.split_indicator , 
172
						--hr_tr0301.rate, hr_tr0301.amount, 
173
                        CAST(dbo.GetPEN(@landscape, hr_tr0301.rate) AS DECIMAL) 'rate' ,
174
                        --( ( ISNULL(CONVERT(INT, c308.[percent]), 100) / 100 ) * CAST(dbo.GetPEN(@landscape, hr_tr0301.amount) AS DECIMAL) ) 'amount' ,
175
						CASE WHEN c308.paytype = 'T' THEN ( ( ISNULL(CONVERT(INT, c308.[percent]), 100) / 100 ) * CAST(dbo.GetPEN(@landscape, hr_tr0301.amount) AS DECIMAL) ) + ISNULL(tblca.amount,0)
176
							 ELSE ( ( ISNULL(CONVERT(INT, c308.[percent]), 100) / 100 ) * CAST(dbo.GetPEN(@landscape, hr_tr0301.amount) AS DECIMAL) )
177
						END 'amount' ,
178
                        hr_tr0301.number ,
179
                        hr_tr0301.currency ,
180
                        hr_tr0301.flag ,
181
                        md001.full_name ,
182
                        md003.tax_status ,
183
                        tax_stat.description tax_status_desc ,
184
                        md001.marital_status ,
185
                        ms.description maritaldescription ,
186
                        md003.pay_industry ,
187
                        md003.pay_area ,
188
                        md003.pay_class ,
189
                        md003.pay_grade ,
190
                        grd.description AS grd_desc ,
191
                        md002.job ,
192
                        md002.employee_area ,
193
                        area.description areaname ,
194
                        md002.organization ,
195
                        org.description orgname ,
196
                        md002.position ,
197
                        pos.description posname ,
198
                        md002.employee_office ,
199
                        office.emp_subarea_description AS emp_office_desc
200
                FROM    hr_cu0308 AS c308
201
                        LEFT JOIN hr_cu0308 AS c308P ON c308.landscape = c308P.landscape
202
                                                        AND c308.groupby = c308P.reportid
203
                        INNER JOIN ( SELECT * ,
204
                                            'N' retrotype
205
                                     FROM   hr_tr0301
206
                                     UNION ALL
207
                                     SELECT * ,
208
                                            'R' retrotype
209
                                     FROM   hr_tr0301_retro
210
                                   ) hr_tr0301 ON c308.landscape = hr_tr0301.landscape
211
                                                  AND c308.wage_type = hr_tr0301.wage_type
212
                                                  AND c308.retrotype = hr_tr0301.retrotype
213
                                                  AND ( c308.paytype = @paytype
214
                                                        OR @paytype = ''
215
                                                      )
216
                        INNER JOIN ( SELECT m1.*
217
                                     FROM   hr_md_emp_md0001 m1
218
                                     WHERE  ( m1.start_date <= @endda
219
                                              AND m1.end_date >= @endda
220
                                            )
221
                                   ) md001 ON md001.landscape = hr_tr0301.landscape
222
                                              AND md001.emp_id = hr_tr0301.employee_id
223
						LEFT JOIN @TableCA AS tblca
224
							ON hr_tr0301.employee_id = tblca.employee_id AND tblca.retrotype = hr_tr0301.retrotype
225
                        LEFT JOIN ( SELECT  m1.*
226
                                    FROM    hr_md_emp_md0003 m1
227
                                    WHERE   ( m1.start_date <= @endda
228
                                              AND m1.end_date >= @endda
229
                                            )
230
                                  ) md003 ON md001.landscape = md003.landscape
231
                                             AND md001.emp_id = md003.emp_id
232
                        LEFT JOIN ( SELECT  m1.*
233
                                    FROM    hr_md_emp_md0002 m1
234
                                    WHERE   ( m1.start_date <= @endda
235
                                              AND m1.end_date >= @endda
236
                                            )
237
                                  ) md002 ON hr_tr0301.landscape = md002.landscape
238
                                             AND hr_tr0301.employee_id = md002.emp_id
239
                        LEFT JOIN base_cust_ref_emp_area area ON md002.landscape = area.landscape
240
                                                              AND md002.employee_area = area.emp_area
241
                        LEFT JOIN base_cust_ref_emp_office office ON office.landscape = md002.landscape
242
                                                              AND md002.employee_office = office.emp_subarea
243
                        LEFT JOIN ( SELECT  m1.*
244
                                    FROM    hr_md_orm_object m1
245
                                    WHERE   class = 'O'
246
                                            AND ( start_date <= @endda
247
                                                  AND end_date >= @endda
248
                                                )
249
                                  ) org ON md002.landscape = org.landscape
250
                                           AND md002.organization = org.object
251
                        LEFT JOIN ( SELECT  m1.*
252
                                    FROM    hr_md_orm_object m1
253
                                    WHERE   class = 'P'
254
                                            AND ( start_date <= @endda
255
                                                  AND end_date >= @endda
256
                                                )
257
                                  ) pos ON md002.landscape = pos.landscape
258
                                           AND md002.position = pos.object
259
                        LEFT JOIN base_cust_ref_pay_grade grd ON md003.landscape = grd.landscape
260
                                                              AND md003.pay_grade = grd.pay_grade
261
                        LEFT JOIN base_cust_ref_marital_status ms ON md001.landscape = ms.landscape
262
                                                              AND md001.marital_status = ms.code
263
                        LEFT JOIN hr_cu0302 tax_stat ON tax_stat.landscape = md003.landscape
264
                                                        AND md003.tax_status = tax_stat.status
265
                                                        AND tax_stat.start_date <= @endda
266
                                                        AND tax_stat.end_date >= @endda
267
                WHERE   c308.landscape = @landscape
268
                        AND hr_tr0301.employee_id = @employee_id
269
                        AND hr_tr0301.pay_period_month = @paymonth
270
                        AND hr_tr0301.pay_period_year = @payyear
271
                        AND hr_tr0301.run_period_month = @paymonth
272
                        AND hr_tr0301.run_period_year = @payyear
273
			  --AND hr_tr0301.amount <> 0
274
                        AND CAST(dbo.GetPEN(@landscape, hr_tr0301.amount) AS DECIMAL) <> 0
275
                        AND dbo.CekObjectKey(@landscape, @key1, @key2,
276
                                             'M!N0V@2010') > 0
277
                ORDER BY c308.groupby ,
278
                        c308.wage_type
279
            END
280
        ELSE 
281
            SELECT  @payslipsigned payslipsigned ,
282
                    c308.landscape ,
283
                    @companyname companyname ,
284
                    @companylogo logo ,
285
                    c308.reportid ,
286
                    c308.groupby ,
287
                    c308P.description parentdescription ,
288
                    c308.sequence ,
289
                    c308.description ,
290
                    c308.paytype ,
291
                    c308.wage_type ,
292
                    c308.isdisplaywage_type ,
293
                    c308.isdisplaynumber ,
294
                    c308.isdisplayrate ,
295
                    c308.isdisplayamount ,
296
                    c308.start_date ,
297
                    c308.end_date ,
298
                    c308.isactive ,
299
                    c308.change_by ,
300
                    c308.change_date ,
301
                    c308.created_by ,
302
                    c308.created_date ,
303
                    hr_tr0301_sim.employee_id ,
304
                    hr_tr0301_sim.pay_period_month ,
305
                    hr_tr0301_sim.pay_period_year ,
306
                    hr_tr0301_sim.run_period_month ,
307
                    hr_tr0301_sim.run_period_year ,
308
                    hr_tr0301_sim.split_indicator , 
309
			  --hr_tr0301_sim.rate, hr_tr0301_sim.amount, 
310
                    CAST(dbo.GetPEN(@landscape, hr_tr0301_sim.rate) AS DECIMAL) 'rate' ,
311
                    CAST(dbo.GetPEN(@landscape, hr_tr0301_sim.amount) AS DECIMAL) 'amount' ,
312
                    hr_tr0301_sim.number ,
313
                    hr_tr0301_sim.currency ,
314
                    hr_tr0301_sim.flag ,
315
                    md001.full_name ,
316
                    md003.tax_status ,
317
                    tax_stat.description tax_status_desc ,
318
                    md001.marital_status ,
319
                    ms.description maritaldescription ,
320
                    md003.pay_industry ,
321
                    md003.pay_area ,
322
                    md003.pay_class ,
323
                    md003.pay_grade ,
324
                    grd.description AS grd_desc ,
325
                    md002.job ,
326
                    md002.employee_area ,
327
                    area.description areaname ,
328
                    md002.organization ,
329
                    org.description orgname ,
330
                    md002.position ,
331
                    pos.description posname ,
332
                    md002.employee_office ,
333
                    office.emp_subarea_description AS emp_office_desc
334
            FROM    hr_cu0308 AS c308
335
                    LEFT JOIN hr_cu0308 AS c308P ON c308.landscape = c308P.landscape
336
                                                    AND c308.groupby = c308P.reportid
337
                    INNER JOIN ( SELECT * ,
338
                                        'N' retrotype
339
                                 FROM   hr_tr0301_sim
340
                                 UNION ALL
341
                                 SELECT * ,
342
                                        'R' retrotype
343
                                 FROM   hr_tr0301_retro_sim
344
                               ) hr_tr0301_sim ON c308.landscape = hr_tr0301_sim.landscape
345
                                                  AND c308.wage_type = hr_tr0301_sim.wage_type
346
                                                  AND c308.retrotype = hr_tr0301_sim.retrotype
347
                                                  AND ( c308.paytype = @paytype
348
                                                        OR @paytype = ''
349
                                                      )
350
                    INNER JOIN ( SELECT m1.*
351
                                 FROM   hr_md_emp_md0001 m1
352
                                 WHERE  ( m1.start_date <= @endda
353
                                          AND m1.end_date >= @endda
354
                                        )
355
                               ) md001 ON md001.landscape = hr_tr0301_sim.landscape
356
                                          AND md001.emp_id = hr_tr0301_sim.employee_id
357
                    LEFT JOIN ( SELECT  m1.*
358
                                FROM    hr_md_emp_md0003 m1
359
                                WHERE   ( m1.start_date <= @endda
360
                                          AND m1.end_date >= @endda
361
                                        )
362
                              ) md003 ON md001.landscape = md003.landscape
363
                                         AND md001.emp_id = md003.emp_id
364
                    LEFT JOIN ( SELECT  m1.*
365
                                FROM    hr_md_emp_md0002 m1
366
                                WHERE   ( m1.start_date <= @endda
367
                                          AND m1.end_date >= @endda
368
                                        )
369
                              ) md002 ON hr_tr0301_sim.landscape = md002.landscape
370
                                         AND hr_tr0301_sim.employee_id = md002.emp_id
371
                    LEFT JOIN base_cust_ref_emp_area area ON md002.landscape = area.landscape
372
                                                             AND md002.employee_area = area.emp_area
373
                    LEFT JOIN base_cust_ref_emp_office office ON office.landscape = md002.landscape
374
                                                              AND md002.employee_office = office.emp_subarea
375
                    LEFT JOIN ( SELECT  m1.*
376
                                FROM    hr_md_orm_object m1
377
                                WHERE   class = 'O'
378
                                        AND ( start_date <= @endda
379
                                              AND end_date >= @endda
380
                                            )
381
                              ) org ON md002.landscape = org.landscape
382
                                       AND md002.organization = org.object
383
                    LEFT JOIN ( SELECT  m1.*
384
                                FROM    hr_md_orm_object m1
385
                                WHERE   class = 'P'
386
                                        AND ( start_date <= @endda
387
                                              AND end_date >= @endda
388
                                            )
389
                              ) pos ON md002.landscape = pos.landscape
390
                                       AND md002.position = pos.object
391
                    LEFT JOIN base_cust_ref_pay_grade grd ON md003.landscape = grd.landscape
392
                                                             AND md003.pay_grade = grd.pay_grade
393
                    LEFT JOIN base_cust_ref_marital_status ms ON md001.landscape = ms.landscape
394
                                                              AND md001.marital_status = ms.code
395
                    LEFT JOIN hr_cu0302 tax_stat ON tax_stat.landscape = md003.landscape
396
                                                    AND md003.tax_status = tax_stat.status
397
                                                    AND tax_stat.start_date <= @endda
398
                                                    AND tax_stat.end_date >= @endda
399
            WHERE   c308.landscape = @landscape
400
                    AND hr_tr0301_sim.employee_id = @employee_id
401
                    AND hr_tr0301_sim.pay_period_month = @paymonth
402
                    AND hr_tr0301_sim.pay_period_year = @payyear
403
                    AND hr_tr0301_sim.run_period_month = @paymonth
404
                    AND hr_tr0301_sim.run_period_year = @payyear
405
			  --AND hr_tr0301_sim.amount <> 0
406
                    AND CAST(dbo.GetPEN(@landscape, hr_tr0301_sim.amount) AS DECIMAL) <> 0
407
                    AND dbo.CekObjectKey(@landscape, @key1, @key2,
408
                                         'M!N0V@2010') > 0
409
            ORDER BY c308.groupby ,
410
                    c308.wage_type
411
    --END			
412
--ELSE 
413
--    BEGIN
414
--        SELECT  *
415
--        FROM    dbo.hr_tr0300
416
--        WHERE   employee_id = @employee_id
417
--                AND SUBSTRING(pay_period_year, 1, 4) = @payperiod
418
--            END
419
    --END
420

(3-3/3)