Project

General

Profile

stored_appr_TPHC.txt

Luc Tran Van, 05/09/2022 03:12 PM

 
1
USE [AMSGD3]
2
GO
3
/****** Object:  StoredProcedure [dbo].[TR_REQ_ADVANCE_PAYMENT_TPHC_Appr]    Script Date: 5/9/2022 2:22:31 PM ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_TPHC_Appr]
9
--Luanlt 2019/17/10 - Sửa params
10
@p_REQ_PAY_ID	varchar(15)= NULL,
11
@p_CHECKER_ID	varchar(15)	= NULL,
12
@p_AUTH_STATUS varchar(15) = NULL,
13
@p_COST_ID VARCHAR(15) = NULL,
14
@p_IS_AUTHORITY varchar(1) = NULL
15
AS
16
BEGIN TRANSACTION
17
--------------------------------------------------------------- START VALIDATE -------------------------------------------------------------------------------------	
18
		IF(@p_IS_AUTHORITY <> 'Y')
19
		BEGIN
20
			SET @p_IS_AUTHORITY = 'N'
21
		END
22
	-- KHAI BAO THEM ROLE NHAN UY QUYEN
23
		DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
24
		INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
25
		INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) 
26
		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
27
		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
28
		AND TLNAME =@p_CHECKER_ID
29
	
30
	-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
31
		DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
32
		INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID 
33
		--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
34
		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
35
		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
36
				DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15) 
37
		--PRINT @BRANCH_CREATE 
38
		SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
39
		DECLARE @DEP_CODE_NEXT VARCHAR(15)
40
		IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
41
		BEGIN
42
			SET @p_DEP_ID =(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE LEFT(DEP_CODE,5) IN (SELECT TOP 1 LEFT(DVDM_CODE,5) FROM CM_DVDM WHERE DVDM_ID =@p_COST_ID))
43
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
44
		END
45
		ELSE
46
		BEGIN
47
			SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
48
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
49
		END
50
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
51
		BEGIN
52
			ROLLBACK TRANSACTION
53
			SELECT '-1' as Result, ''  REQ_PAY_ID, N'Người phê duyệt phiếu phải khác với người tạo phiếu! Bạn không được phép duyệt đối tượng này' ErrorDesc
54
			RETURN '-1'
55
		END
56
	-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
57
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
58
		BEGIN
59
			ROLLBACK TRANSACTION
60
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
61
			RETURN '-1'
62
		END
63
	-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
64
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
65
		BEGIN
66
			ROLLBACK TRANSACTION
67
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
68
			RETURN '-1'
69
		END
70
	-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
71
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
72
		BEGIN
73
			ROLLBACK TRANSACTION
74
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được KSV phê duyệt trước đó' ErrorDesc
75
			RETURN '-1'
76
		END
77
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
78
		BEGIN
79
			ROLLBACK TRANSACTION
80
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt trước đó' ErrorDesc
81
			RETURN '-1'
82
		END
83
--------------------------------------------------------------- END VALIDATE -------------------------------------------------------------------------------------	
84

    
85
--- KHAI BAO CHUNG
86
		   DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
87
			@DEP_ID VARCHAR(15), @COSTCENTER_ID VARCHAR(15)= NULL, @BRANCH_RQ VARCHAR(15) = NULL,@DEP_ID_RQ VARCHAR(15), @BRANCH_LOGIN VARCHAR(15),@LIMIT_ONE_OF DECIMAL(18,2)
88
			DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
89
			SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
90
			SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
91
			IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
92
			BEGIN
93
				PRINT @ROLE_ID
94
			END
95
			ELSE
96
			BEGIN
97
				SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
98
				IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
99
				BEGIN
100
					SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID))
101
				END
102
			END
103
			SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
104
			SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
105
			SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
106
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
107
			DECLARE @tmp table(BRANCH_ID varchar(15))
108
			INSERT into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
109
			DECLARE @tmp_CN table(BRANCH_ID varchar(15))
110
			IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
111
			BEGIN
112
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
113
			END
114
			ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
115
			BEGIN
116
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
117
			END
118
			DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
119
			INSERT INTO @TMP_DVDM
120
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
121
			FROM PL_COSTCENTER A
122
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
123
			WHERE B.DEP_ID = @DEP_ID_RQ
124
			GROUP BY A.DVDM_ID
125
			-- KHAI BAO BRANCH CUA USER DUYET
126
			SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
127
			DECLARE @LIMIT_REMAIN DECIMAL(18,0)
128
		--CAP NHAT CODE TRONG QUA TRINH TEST UAT
129
		INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
130
-- NẾU LÀ TẠM ỨNG NỘI BỘ
131
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
132
		BEGIN
133
-- POPUP GỬI LÊN LẦN 1 ĐỂ THÔNG BÁO HẠN MỨC CHO NGƯỜI DUYỆT			
134
			IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
135
			BEGIN
136
			
137
-- doanptt 19/04/2022 set hạn mức cho TP Hành chính ở HO
138
			IF(@ROLE_ID ='GDDV' AND ((SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604'))
139
			BEGIN
140
				SET @LIMIT_AMT =1000000000 -- 1 tỷ
141
				SET @LIMIT_ONE_OF = 50000000 -- 50 triệu
142
				
143
			END
144
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
145
			SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
146
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
147
			SET @TONG_PGD_HOAN =(
148
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
149
						WHERE A.BRANCH_ID = @BRANCH_RQ
150
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
151
				IF(@BRANCH_TYPE='HS')
152
				BEGIN
153
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
154
					 DEP_ID IN
155
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
156
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
157
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
158
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
159
					SET @TOTAL_PAYBACK =
160
					ISNULL(
161
					(
162
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
163
						FROM TR_REQ_ADVANCE_PAYMENT C
164
						WHERE C.DEP_ID IN 
165
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
166
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
167
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
168
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
169
					),0)
170
				END
171
--- BO SUNG NEU RIENG PHONG HANH CHINH O HOI SO
172
				IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690604' )
173
				BEGIN
174
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
175
					 DEP_ID IN
176
					 (SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690604' AND BRANCH_ID =@BRANCH_RQ)
177
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
178
					SET @TOTAL_PAYBACK =
179
					ISNULL(
180
					(
181
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
182
						FROM TR_REQ_ADVANCE_PAYMENT C
183
						WHERE C.DEP_ID IN 
184
						(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690604' AND BRANCH_ID =@BRANCH_RQ)
185
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
186
					),0)
187
					PRINT @TOTAL_ADVANCE
188
					PRINT @TOTAL_PAYBACK
189
				END
190
				--- END
191

    
192
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
193
				PRINT @LIMIT_REMAIN
194
-- NẾU KHÔNG ĐỦ HẠN MỨC THÌ THÔNG BÁO
195
				IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
196
				BEGIN
197
					ROLLBACK TRANSACTION
198
					SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,
199
					N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
200
					N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
201
					+ CHAR(10) + CHAR(13)+
202
					N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN') 
203
					+ CHAR(10) +
204
					N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN') 
205
					+ CHAR(10) +
206
					N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
207
					RETURN '-2'
208
				END
209
--- NẾU ĐỦ HẠN MỨC THÌ THÔNG BÁO CHO NGƯỜI DÙNG CÂN NHẮC CÓ DUYỆT HAY KHÔNG
210
				IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
211
				BEGIN
212
					IF(@REQ_AMT >@LIMIT_ONE_OF)
213
					BEGIN
214
						ROLLBACK TRANSACTION
215
						SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
216
						N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') 
217
						+ CHAR(10)+
218
						N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
219
						+ CHAR(10) + CHAR(13) +
220
						N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN') 
221
						+ CHAR(10) + 
222
						N'Số tiền tạm ứng đã vượt mức so với số tiền của một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
223
						+ CHAR(10) + 
224
						N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
225
						RETURN '-2'
226
					END
227
					ELSE
228
					BEGIN
229
						-- KIEM TRA NEU LA PGD THI CANH BAO
230
						IF(@BRANCH_TYPE ='HS')
231
						BEGIN
232
							IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
233
							BEGIN
234
								ROLLBACK TRANSACTION
235
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
236
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
237
								+ CHAR(10) + 
238
								N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
239
								+ CHAR(10) + 
240
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
241
								RETURN '-4'
242
							END
243
							ELSE
244
							BEGIN
245
								ROLLBACK TRANSACTION
246
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
247
								N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
248
								+ CHAR(10) + 
249
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
250
								RETURN '-4'
251
							END
252
						END
253
					END
254
				END
255
-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
256
			END -- END DU HAN MUC DUYET
257
-- NẾU ĐỦ HẠN MỨC
258
			ELSE IF(@p_AUTH_STATUS='A')
259
			BEGIN
260
				DECLARE @l_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
261

    
262
				IF(@ROLE_ID ='GDDV' AND ((SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604'))
263
				BEGIN
264
					SET @LIMIT_AMT =1000000000 -- 1 tỷ
265
					SET @LIMIT_ONE_OF = 50000000 -- 50 triệu
266
				
267
				END
268
	-- UPDATE phiếu đề nghị tạm ứng là đã duyệt
269
				UPDATE TR_REQ_ADVANCE_PAYMENT
270
				SET    AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT =  GETDATE(), AUTH_STATUS_KT='U', IS_AUTHORITY = @p_IS_AUTHORITY
271
				WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
272

    
273
	-- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS select * from PL_PROCESS select process, auth_status from TR_REQ_ADVANCE_PAYMENT select * from PL_REQUEST_PROCESS
274
				-- Lưu lịch sử xử lý
275
				INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'APP',@p_CHECKER_ID, GETDATE(),N'Trưởng phòng hành chính duyệt',N'Các cấp phê duyệt theo hạn mức')
276
				--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
277
				UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='APP' WHERE REQ_PAY_ID=@p_REQ_PAY_ID
278
				--
279
	-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
280
			SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
281
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
282
			SET @TONG_PGD_HOAN =(
283
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
284
						WHERE A.BRANCH_ID = @BRANCH_RQ
285
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
286
				-- NẾU Ở HO
287
				IF(@BRANCH_TYPE='HS')
288
				BEGIN
289
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
290
					 DEP_ID IN
291
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
292
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
293
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
294
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
295
					SET @TOTAL_PAYBACK =
296
					ISNULL(
297
					(
298
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
299
						FROM TR_REQ_ADVANCE_PAYMENT C
300
						WHERE C.DEP_ID IN 
301
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
302
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
303
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
304
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
305
					),0)
306
				END
307

    
308
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
309
				--- INSERT VAO BANG LOG
310
				INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG  VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
311

    
312
				DELETE FROM PL_REQUEST_PROCESS where REQ_ID = @p_REQ_PAY_ID
313
				----
314
			END
315
-- NẾU KHÔNG ĐỦ HẠN MỨC --> CHUYỂN CẤP	(AUTH_STATUS='C')
316
			ELSE
317
			BEGIN
318
				-- Thêm vào lịch sử xử lý
319
				INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'',@p_CHECKER_ID, GETDATE(),(SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
320
				IF @@Error <> 0 GOTO ABORT	
321
				-- update phiếu đề nghị tạm ứng
322
				UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS ='' , AUTH_STATUS='U', DVDM_ID = @p_COST_ID WHERE REQ_PAY_ID =@p_REQ_PAY_ID	
323
			END
324
		END	
325
-- NẾU KHÔNG PHẢI TẠM ỨNG NỘI BỘ		
326
		ELSE
327
		BEGIN
328
			BEGIN
329
				ROLLBACK TRANSACTION
330
				SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,'Lỗi hệ thống. Đây không phải phiếu đề nghị tạm ứng nội bộ, nhưng đang xét duyệt theo hình thức tạm ứng nội bộ.' ErrorDesc
331
				RETURN '-1'
332
			END
333
		END
334
		IF @@Error <> 0 GOTO ABORT
335
COMMIT TRANSACTION
336
	IF(@p_AUTH_STATUS='A')
337
	BEGIN
338
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
339
		RETURN '0'
340
	END
341
	ELSE
342
	BEGIN
343
		SELECT '1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,'Phiếu đề nghị tạm ứng số: ' + @p_REQ_PAY_ID + ' đã được phê duyệt thành công. Vui lòng đợi bộ phận kế toán xử lý phiếu.' ErrorDesc
344
		RETURN '1'
345
	END
346
ABORT:
347
BEGIN
348
		ROLLBACK TRANSACTION
349
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
350
		RETURN '-1'
351
END
352

    
353

    
354

    
355

    
356