Project

General

Profile

TR_CHECK_LIMIT_YAEr_040123.txt

Luc Tran Van, 01/04/2023 11:28 AM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_Byid]
3
@p_GD_ID	varchar(20)  = NULL,
4
@p_GD_CODE	varchar(20)  = NULL,
5
@p_BRANCH_ID varchar(20)  = NULL,
6
@p_DEP_ID	varchar(20)  = NULL,
7
@p_KHOI_ID	varchar(20)  = NULL,
8
@p_TLNAME	varchar(20)  = NULL,
9
@p_ROLENAME	varchar(20)  = NULL,
10
@p_MONTH varchar(20) = NULL,
11
@p_YEAR varchar(20) = NULL,
12
@p_BUDGET_LIMIT_CURRENT decimal(18,0) OUT,
13
@p_BUDGET_USED_CURRENT decimal(18,0) OUT
14
AS
15
	-- validation
16
	DECLARE @l_BUDGET_LIMIT_CURRENT DECIMAL(18,0)
17
	-- Lấy hạn mức đã sử dụng đến hiện tại
18
	DECLARE @l_BUDGET_USED_CURRENT DECIMAL(18,0)
19
	DECLARE @l_BUDGET_USED_M1 DECIMAL(18,0), @l_BUDGET_USED_M2 DECIMAL(18,0), @l_BUDGET_USED_M3 DECIMAL(18,0), @l_BUDGET_USED_M4 DECIMAL(18,0), @l_BUDGET_USED_M5 DECIMAL(18,0),
20
	@l_BUDGET_USED_M6 DECIMAL(18,0), @l_BUDGET_USED_M7 DECIMAL(18,0), @l_BUDGET_USED_M8 DECIMAL(18,0), @l_BUDGET_USED_M9 DECIMAL(18,0), @l_BUDGET_USED_M10 DECIMAL(18,0),
21
	@l_BUDGET_USED_M11 DECIMAL(18,0), @l_BUDGET_USED_M12 DECIMAL(18,0)
22

    
23
	IF(ISNULL(@p_ROLENAME, '') = '')
24
	BEGIN
25
		-- duyet moi kiem tra han muc
26
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND AUTH_STATUS = 'A' AND BUDGET_YEAR = @p_YEAR))
27
		BEGIN
28
			--Validation is here
29
			/*
30
			NSCP theo định mức năm sẽ được tính bằng lũy kế.
31
			Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng.
32
			VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng.
33
			T1 được cấp 100tr, nếu dùng quá định mức sẽ báo.
34
			*/
35
			-- Lấy hạn mức lũy kế theo tháng hiện tại
36
			SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE	WHEN MONTH(GETDATE()) = 1 then M1
37
																						WHEN MONTH(GETDATE()) = 2 then M2
38
																						WHEN MONTH(GETDATE()) = 3 then M3
39
																						WHEN MONTH(GETDATE()) = 4 then M4
40
																						WHEN MONTH(GETDATE()) = 5 then M5
41
																						WHEN MONTH(GETDATE()) = 6 then M6
42
																						WHEN MONTH(GETDATE()) = 7 then M7
43
																						WHEN MONTH(GETDATE()) = 8 then M8
44
																						WHEN MONTH(GETDATE()) = 9 then M9
45
																						WHEN MONTH(GETDATE()) = 10 then M10
46
																						WHEN MONTH(GETDATE()) = 11 then M11
47
																						WHEN MONTH(GETDATE()) = 12 then M12
48
																						ELSE M1
49
																				END
50
											FROM TR_REQ_BUDGET_YEAR_LIMIT 
51
											WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0)
52
			-- Lấy hạn mức đã sử dụng đến hiện tại
53
			SET @l_BUDGET_USED_M1  = ISNULL((SELECT SUM(M1)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
54
			SET @l_BUDGET_USED_M2  = ISNULL((SELECT SUM(M2)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
55
			SET @l_BUDGET_USED_M3  = ISNULL((SELECT SUM(M3)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
56
			SET @l_BUDGET_USED_M4  = ISNULL((SELECT SUM(M4)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
57
			SET @l_BUDGET_USED_M5  = ISNULL((SELECT SUM(M5)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
58
			SET @l_BUDGET_USED_M6  = ISNULL((SELECT SUM(M6)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
59
			SET @l_BUDGET_USED_M7  = ISNULL((SELECT SUM(M7)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
60
			SET @l_BUDGET_USED_M8  = ISNULL((SELECT SUM(M8)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
61
			SET @l_BUDGET_USED_M9  = ISNULL((SELECT SUM(M9)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
62
			SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
63
			SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
64
			SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' AND RECORD_STATUS = '1' GROUP BY GD_ID),0)
65

    
66
			SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 
67
			+ @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 
68

    
69
			SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT;
70
			SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT;
71
			
72
			-- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS
73
			IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' ),0) > 0)
74
			BEGIN
75
				IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT)
76
				BEGIN
77
					RETURN '-1'
78
				END
79
				ELSE
80
				BEGIN
81
					RETURN '0'
82
				END
83
			END
84
			ELSE
85
			BEGIN
86
				RETURN '1'
87
			END
88
			
89
		END
90
		ELSE
91
		BEGIN
92
			RETURN '1'
93
		END
94
	END
95
	ELSE
96
	BEGIN
97
		print 'tlname'
98
		-- duyet moi kiem tra han muc
99
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID AND KHOI_ID = @p_KHOI_ID AND BRANCH_ID = @p_BRANCH_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A'))
100
		BEGIN
101
			print 'da duyet'
102
			--Validation is here
103
			/*
104
			NSCP theo định mức năm sẽ được tính bằng lũy kế.
105
			Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng.
106
			VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng.
107
			T1 được cấp 100tr, nếu dùng quá định mức sẽ báo.
108
			*/
109
			-- Lấy hạn mức lũy kế theo tháng hiện tại
110
			SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE	WHEN MONTH(GETDATE()) = 1 then M1
111
																						WHEN MONTH(GETDATE()) = 2 then M2
112
																						WHEN MONTH(GETDATE()) = 3 then M3
113
																						WHEN MONTH(GETDATE()) = 4 then M4
114
																						WHEN MONTH(GETDATE()) = 5 then M5
115
																						WHEN MONTH(GETDATE()) = 6 then M6
116
																						WHEN MONTH(GETDATE()) = 7 then M7
117
																						WHEN MONTH(GETDATE()) = 8 then M8
118
																						WHEN MONTH(GETDATE()) = 9 then M9
119
																						WHEN MONTH(GETDATE()) = 10 then M10
120
																						WHEN MONTH(GETDATE()) = 11 then M11
121
																						WHEN MONTH(GETDATE()) = 12 then M12
122
																						ELSE M1
123
																				END
124
											FROM TR_REQ_BUDGET_YEAR_LIMIT 
125
											WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0)
126
			-- Lấy hạn mức đã sử dụng đến hiện tại
127
			SET @l_BUDGET_USED_M1  = ISNULL((SELECT SUM(M1)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
128
			SET @l_BUDGET_USED_M2  = ISNULL((SELECT SUM(M2)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
129
			SET @l_BUDGET_USED_M3  = ISNULL((SELECT SUM(M3)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
130
			SET @l_BUDGET_USED_M4  = ISNULL((SELECT SUM(M4)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
131
			SET @l_BUDGET_USED_M5  = ISNULL((SELECT SUM(M5)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
132
			SET @l_BUDGET_USED_M6  = ISNULL((SELECT SUM(M6)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
133
			SET @l_BUDGET_USED_M7  = ISNULL((SELECT SUM(M7)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
134
			SET @l_BUDGET_USED_M8  = ISNULL((SELECT SUM(M8)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
135
			SET @l_BUDGET_USED_M9  = ISNULL((SELECT SUM(M9)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
136
			SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
137
			SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
138
			SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
139

    
140
			SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 
141
			+ @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 
142

    
143
			SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT;
144
			SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT;
145

    
146
			print @p_BUDGET_LIMIT_CURRENT
147
			print @p_BUDGET_USED_CURRENT
148

    
149
			-- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS
150
			IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR ),0) > 0)
151
			BEGIN
152
				IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT)
153
				BEGIN
154
					RETURN '-1'
155
				END
156
				ELSE
157
				BEGIN
158
					RETURN '0'
159
				END
160
			END
161
			ELSE
162
			BEGIN
163
				RETURN '1'
164
			END
165
		END
166
		ELSE
167
		BEGIN
168
			RETURN '1'
169
		END
170
	END
171