Project

General

Profile

Bug #2460 » genmedplaf revisi 2.txt

Muhammad Bintar, 12/27/2023 11:46 AM

 
1
USE [MinovaES_HINO_Dev]
2
GO
3
/****** Object:  StoredProcedure [dbo].[GenerateMedPlafMass]    Script Date: 27/12/2023 11.43.48 ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8

    
9

    
10
ALTER PROCEDURE [dbo].[GenerateMedPlafMass]
11
(
12
@issimulate VARCHAR(20),
13
@CreateBy VARCHAR(200),
14
@ChangeBy VARCHAR(200),
15
@startdate VARCHAR(20),
16
@enddate VARCHAR(20),
17
@paygradestart VARCHAR(20),
18
@paygradeend VARCHAR(20),
19
@empstart VARCHAR(200),
20
@empend VARCHAR(200),
21
@emptype VARCHAR(200),
22
@empsubtype VARCHAR(200)
23
)
24
AS
25

    
26

    
27

    
28
--DECLARE @issimulate VARCHAR (2)='0'
29
--DECLARE @treattype varchar(50)=''
30
--DECLARE @CreateBy VARCHAR(200)='00000111'
31
--DECLARE @ChangeBy VARCHAR(200)='00000111'
32
--DECLARE @startdate VARCHAR(20)='20240101'
33
--DECLARE @enddate VARCHAR(20)='20241231'
34
--DECLARE @paygradestart VARCHAR(20)=''
35
--DECLARE @paygradeend VARCHAR(20)=''
36
--DECLARE @empstart VARCHAR(200)='00000445'
37
--DECLARE @empend VARCHAR(200)='00000446'
38
--DECLARE @emptype VARCHAR(200)=''
39
--DECLARE @empsubtype VARCHAR(200)=''
40

    
41

    
42
DECLARE @now VARCHAR(20) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmdd')
43
DECLARE @datecreate VARCHAR(20) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmddhhmmdd')
44
DECLARE @CreateDate VARCHAR(200)=''
45
DECLARE @ChangeDate VARCHAR(200)=''
46

    
47
set @CreateDate =@datecreate
48
set @ChangeDate =@datecreate
49

    
50
--set @CreateBy =''
51
--set @ChangeBy =''
52
--set @startdate =@now
53
--set @enddate =@now
54
--set @paygradestart ='00'
55
--set @paygradeend ='03'
56
--set @empstart ='10000148'
57
--set @empend ='10000151'
58
--set @emptype ='04'
59
--set @empsubtype ='10'
60

    
61
SELECT EmployeeID,CAST(REPLACE(ISNULL(dbo.GetPEN(Amount), '0'), ',', '.') AS DECIMAL(22,0)) as Amount 
62
into #pa4
63
from PHRPA0004 
64
where 
65
	EmployeeID between @empstart and @empend 
66
	and WageType=(select top(1)WageType from PHRPYCU0305 where WageTypeCum='B003' and EndDate='99991231')
67
	and @startdate<=EndDate
68
	and @enddate>=StartDate
69

    
70
DECLARE @datatable as table (
71
HeaderSequence varchar(500),
72
Sequence varchar(500),
73
StartDate varchar(500),
74
EndDate varchar(500),
75
EmployeeID varchar(500),
76
TreatmentType varchar(500),
77
Plafond varchar(500),
78
PlafondRemain varchar(500),
79
PlafondUsed varchar(500),
80
MedicalFamily varchar(500),
81
PayrollGrade varchar(500),
82
CreateBy varchar(500),
83
CreateDate varchar(500),
84
ChangeBy varchar(500),
85
ChangeDate varchar(500)
86
)
87
DECLARE @datatablefinish as table (
88
HeaderSequence varchar(500),
89
Sequence varchar(500),
90
StartDate varchar(500),
91
EndDate varchar(500),
92
EmployeeID varchar(500),
93
TreatmentType varchar(500),
94
Plafond varchar(500),
95
PlafondRemain varchar(500),
96
PlafondUsed varchar(500),
97
MedicalFamily varchar(500),
98
PayrollGrade varchar(500),
99
CreateBy varchar(500),
100
CreateDate varchar(500),
101
ChangeBy varchar(500),
102
ChangeDate varchar(500)
103
)
104

    
105

    
106
if @emptype !='' or @emptype is not null
107
begin
108
select convert(varchar(50),'1')as HeaderSequence
109
,ROW_NUMBER()  OVER (partition by pa2.EmployeeID order by pa2.EmployeeID)+5 as [Sequence]
110
,@startdate as StartDate
111
,@enddate as EndDate
112
,pa2.EmployeeID
113
,PLAF.TreatmentType
114
,case 
115
when PLAF.TreatmentType='300' then pa4.Amount
116
when PLAF.TreatmentType='400' then pa4.Amount
117
else PLAF.FixedValue end as Plafond
118
,case 
119
when PLAF.TreatmentType='300' then pa4.Amount
120
when PLAF.TreatmentType='400' then pa4.Amount
121
else PLAF.FixedValue end as PlafondRemain
122
,convert(varchar(50),'0.00')as PlafondUsed 
123
,PLAF.MedicalFamily
124
,pa3.PayrollGrade
125
into #temp
126
from PHRPA0002 pa2 
127
left join #pa4 pa4 on pa2.EmployeeID=pa4.EmployeeID
128
left outer join PHRPA0003 pa3 on pa2.EmployeeID = pa3.EmployeeID and pa3.EndDate='99991231' 
129
left outer join  PHRBNMEDTREATPLAF PLAF on 
130
	PLAF.CompanyID = pa2.CompanyID 
131
	and PLAF.EndDate='99991231'
132
	and (PLAF.PayClass = pa3.PayrollClass  or PLAF.PayClass ='*')
133
	and (PLAF.PayType = pa3.PayrollType  or PLAF.PayType ='*')
134
	and (PLAF.PayGrade = pa3.PayrollGrade  or PLAF.PayGrade ='*')
135
	and (PLAF.PayArea = pa3.PayrollArea  or PLAF.PayArea ='*')
136
	--and PLAF.TreatmentType = @treattype
137
where pa2.EmployeeStatus='01' and pa2.StartDate <= @now and pa2.EndDate >= @now and pa2.EmployeeType = @emptype  and pa2.EmployeeID between @empstart and @empend 
138

    
139

    
140
update #temp set
141
HeaderSequence = a.HeaderSequence from (select  max(HeaderSequence) + 1as HeaderSequence,EmployeeID from phrpa0040 group by EmployeeID)a where a.EmployeeID = #temp.EmployeeID
142

    
143
insert into @datatable
144
select *,
145
 @CreateBy,
146
 @CreateDate,
147
 @ChangeBy,
148
 @ChangeDate
149
 from #temp
150

    
151
 drop table #temp
152
end
153

    
154

    
155
if @emptype ='' or @emptype is null
156
begin
157
select convert(varchar(50),'1')as HeaderSequence
158
,ROW_NUMBER()  OVER (partition by pa2.EmployeeID order by pa2.EmployeeID)+5 as [Sequence],@startdate as StartDate
159
,@enddate as EndDate,pa2.EmployeeID
160
,PLAF.TreatmentType
161
,case 
162
when PLAF.TreatmentType='300' then pa4.Amount*PLAf.Number
163
when PLAF.TreatmentType='400' then pa4.Amount*PLAf.Number
164
else PLAF.FixedValue end as Plafond
165
,case 
166
when PLAF.TreatmentType='300' then pa4.Amount*PLAf.Number
167
when PLAF.TreatmentType='400' then pa4.Amount*PLAf.Number
168
else PLAF.FixedValue end as PlafondRemain
169
,convert(varchar(50),'0.00')as PlafondUsed 
170
,PLAF.MedicalFamily
171
,pa3.PayrollGrade
172
into #temp2
173
from PHRPA0002 pa2 
174
left join #pa4 pa4 on pa2.EmployeeID=pa4.EmployeeID
175
left outer join PHRPA0003 pa3 on pa2.EmployeeID = pa3.EmployeeID and pa3.EndDate='99991231'
176
left outer join PHRBNMEDTREATPLAF PLAF on PLAF.CompanyID = pa2.CompanyID  
177
	and PLAF.EndDate='99991231'
178
	and (PLAF.PayClass = pa3.PayrollClass  or PLAF.PayClass ='*')
179
	and (PLAF.PayType = pa3.PayrollType  or PLAF.PayType ='*')
180
	and (PLAF.PayGrade = pa3.PayrollGrade  or PLAF.PayGrade ='*')
181
	and (PLAF.PayArea = pa3.PayrollArea  or PLAF.PayArea ='*')
182
	--and PLAF.TreatmentType = @treattype
183
where pa2.EmployeeStatus='01' and pa2.StartDate <= @now and pa2.EndDate >= @now and pa2.EmployeeID between @empstart and @empend 
184
update #temp2 set
185
HeaderSequence = a.HeaderSequence from (select  max(HeaderSequence) + 1as HeaderSequence,EmployeeID from phrpa0040 group by EmployeeID)a where a.EmployeeID = #temp2.EmployeeID
186

    
187
insert into @datatable
188
select *,
189
 @CreateBy,
190
 @CreateDate,
191
 @ChangeBy,
192
 @ChangeDate
193
 from #temp2
194

    
195
drop table #temp2
196
end
197

    
198
if @paygradestart !='' and @empstart=''
199
begin
200
insert into @datatablefinish
201
select * from @datatable where PayrollGrade between @paygradestart and @paygradeend
202
end
203
if @empstart !='' and @paygradestart =''
204
begin
205
insert into @datatablefinish
206
select * from @datatable where  EmployeeID between @empstart and @empend 
207
end
208
if @paygradestart !='' and @empstart !=''
209
begin
210
insert into @datatablefinish
211
select * from @datatable where PayrollGrade between @paygradestart and @paygradeend 
212
end
213

    
214
if @issimulate !='0'
215
begin
216
insert into PHRPA0040
217
select distinct
218
StartDate ,
219
EndDate ,
220
EmployeeID ,
221
HeaderSequence ,
222
'',
223
'System Mass',
224
CreateBy ,
225
CreateDate ,
226
ChangeBy ,
227
ChangeDate ,
228
'','','','','','','','','','','','','','',0,'','','',null
229
from @datatablefinish
230

    
231
insert into PHRPA0041
232
select 
233
EmployeeID ,
234
HeaderSequence ,
235
Sequence,
236
TreatmentType,
237
Plafond,
238
PlafondRemain,
239
PlafondUsed,
240
MedicalFamily,
241
''
242
from @datatablefinish
243
end
244
--select distinct EmployeeID,'Sukses Generate'as Status from @datatablefinish
245

    
246
select 
247
EmployeeID ,
248
HeaderSequence ,
249
Sequence,
250
TreatmentType,
251
Plafond,
252
PlafondRemain,
253
PlafondUsed,
254
MedicalFamily,
255
CASE WHEN @issimulate='0' then 'Simulate' WHEN @issimulate='1' then 'Save Success' end as Status
256
from @datatablefinish
257

    
258
drop table #pa4
259

    
260

    
(4-4/4)