Project

General

Profile

Bug #2460 » genmedplaf.txt

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

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

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

    
25

    
26

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

    
40

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

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

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

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

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

    
104

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

    
138

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

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

    
150
 drop table #temp
151
end
152

    
153

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

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

    
194
drop table #temp2
195
end
196

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

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

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

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

    
257
drop table #pa4
258

    
259

    
(3-3/4)