Project

General

Profile

Feature #2163 » CBIATMTOPYBINAMARGATARIF_20230511.sql

Tri Rizqiaty, 05/11/2023 03:54 PM

 
1
??USE [MinovaES_BIA_Dev]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[CBIATMTOPYBINAMARGATARIF]    Script Date: 11/05/2023 15.48.46 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[CBIATMTOPYBINAMARGATARIF]
16

17
(
18

19
	@EmployeeID VARCHAR(20)
20

21
	,@StartDate VARCHAR(20)
22

23
	,@EndDate VARCHAR(20)
24

25
)
26

27
AS
28

29

30

31
--DECLARE @EmployeeID VARCHAR(20) = '17040545'
32

33
--DECLARE @StartDate VARCHAR(20) = '20230101'
34

35
--DECLARE @EndDate VARCHAR(20) = '20230131'
36

37

38

39
DECLARE @CTARIF TABLE
40

41
(
42

43
	EmployeeID VARCHAR(20)
44

45
	,DayFlag VARCHAR(20)
46

47
	,PremiHelper DECIMAL(22,2)
48

49
	,UangMakan DECIMAL(22,2)
50

51
	,PremiOperator DECIMAL(22,2)
52

53
)
54

55

56

57
INSERT INTO @CTARIF
58

59
SELECT @EmployeeID, 'WORK', * FROM (SELECT FieldName, TarifHariKerja FROM CTARIFBINAMARGA) AS SourceTable
60

61
PIVOT (MAX(TarifHariKerja)
62

63
FOR FieldName IN
64

65
(	[PremiHelper],
66

67
	[UangMakan],
68

69
	[PremiOperator])
70

71
) AS pvt
72

73

74

75
INSERT INTO @CTARIF
76

77
SELECT @EmployeeID, 'FREE', * FROM (SELECT FieldName, TarifHariLibur FROM CTARIFBINAMARGA) AS SourceTable
78

79
PIVOT (MAX(TarifHariLibur)
80

81
FOR FieldName IN
82

83
(	[PremiHelper],
84

85
	[UangMakan],
86

87
	[PremiOperator])
88

89
) AS pvt
90

91

92

93
DECLARE @TWSCal TABLE
94

95
(
96

97
	DateSpecified VARCHAR(20)
98

99
	,DayFlag VARCHAR(50)
100

101
)
102

103

104

105
INSERT INTO @TWSCal
106

107
SELECT DISTINCT pa125.StartDate, dt.Flag
108

109
FROM dbo.PHRPA0125 AS pa125 WITH (NOLOCK)
110

111
LEFT JOIN dbo.PHRTMDAYTYP AS dt
112

113
	ON dt.DayType = pa125.DayType
114

115
WHERE pa125.EmployeeID = @EmployeeID
116

117
AND (pa125.StartDate BETWEEN @StartDate AND @EndDate)
118

119
AND dt.Flag = 'WORK'
120

121

122

123

124

125
IF( (SELECT COUNT(DateSpecified) FROM @TWSCal) = 0 ) 
126

127
BEGIN
128

129
	INSERT INTO @TWSCal
130

131
	SELECT DISTINCT wscal.DateSpecified, dt.Flag
132

133
	FROM dbo.PHRPA0025 AS pa25 WITH (NOLOCK)
134

135
	LEFT JOIN dbo.PHRTMWSCAL AS wscal WITH (NOLOCK)
136

137
		ON wscal.WorkScheduleType = pa25.WorkScheduleType
138

139
	LEFT JOIN dbo.PHRTMDAYTYP AS dt
140

141
		ON wscal.DayType = dt.DayType
142

143
	WHERE pa25.EmployeeID = @EmployeeID
144

145
		AND (pa25.StartDate <= @EndDate AND pa25.EndDate >= @EndDate)
146

147
		AND (wscal.DateSpecified BETWEEN @StartDate AND @EndDate)
148

149
END
150

151

152

153
DECLARE @TblResult TABLE
154

155
(
156

157
	EmployeeID VARCHAR(20)
158

159
	,PremiHelper VARCHAR(20)
160

161
	,UangMakan VARCHAR(20)
162

163
	,PremiOperator VARCHAR(20)
164

165
	,StartDate VARCHAR(20)
166

167
	,TarifPremiHelper DECIMAL(22,0)
168

169
	,TarifUangMakan DECIMAL(22,0)
170

171
	,TarifPremiOperator DECIMAL(22,0)
172

173
)
174

175

176

177
INSERT INTO @TblResult
178

179
SELECT DISTINCT md.EmployeeID, md.PremiHelper,  md.UangMakan,  md.PremiOperator, md.StartDate
180

181
				,CONVERT(DECIMAL(22,2),CASE WHEN md.PremiHelper <> '' THEN md.PremiHelper ELSE '0' END) * tarif.PremiHelper AS TarifPremiHelper
182

183
				,CONVERT(DECIMAL(22,2),CASE WHEN md.UangMakan <> '' THEN md.UangMakan ELSE '0' END) * tarif.UangMakan AS TarifUangMakan
184

185
				,CONVERT(DECIMAL(22,2),CASE WHEN md.PremiOperator <> '' THEN md.PremiOperator ELSE '0' END) * tarif.PremiOperator AS TarifPremiOperator
186

187
FROM CUSPYDATAPREMIBINAMARGA AS md WITH (NOLOCK)
188

189
LEFT JOIN @TWSCal AS twscal
190

191
	ON twscal.DateSpecified = md.StartDate
192

193
LEFT JOIN @CTARIF AS tarif
194

195
	ON tarif.DayFlag = twscal.DayFlag
196

197
WHERE  md.EmployeeID = @EmployeeID
198

199
	AND (md.StartDate BETWEEN @StartDate AND @EndDate)
200

201

202

203
SELECT DISTINCT EmployeeID
204

205
				,SUM(TarifPremiHelper) AS TarifPremiHelper
206

207
				,SUM(TarifUangMakan) AS TarifUangMakan
208

209
				,SUM(TarifPremiOperator) AS TarifPremiOperator
210

211
FROM @TblResult
212

213
GROUP BY EmployeeID
(2-2/2)