Project

General

Profile

advance_appr.txt

Luc Tran Van, 11/24/2022 04:04 PM

 
1
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]
2
--Luanlt 2019/17/10 - Sửa params
3
@p_REQ_PAY_ID	varchar(15)= NULL,
4
@p_CHECKER_ID	varchar(15)	= NULL,
5
@p_AUTH_STATUS varchar(15) = NULL,
6
@p_COST_ID VARCHAR(15) = NULL,
7
@p_IS_AUTHORITY varchar(1) = NULL,
8
@p_PROCESS_NOTES nvarchar(max) = NULL
9
AS
10
-- BEGIN VALIDATE
11
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
12
	BEGIN
13
		SELECT '-1' as Result, ''  REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này này! Người phê duyệt phiếu phải khác với người tạo phiếu' ErrorDesc
14
		RETURN '-1'
15
	END
16
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
17
	BEGIN
18
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phê duyệt phiếu đề nghị tạm ứng thất bại! Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt trước đó' ErrorDesc
19
		RETURN '-1'
20
	END
21
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
22
	BEGIN
23
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đ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
24
		RETURN '-1'
25
	END
26
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
27
	BEGIN
28
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc
29
		RETURN '-1'
30
	END
31
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
32
	BEGIN
33
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc
34
		RETURN '-1'
35
	END
36
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='S' AND REQ_PAY_ID =@p_REQ_PAY_ID)
37
	BEGIN
38
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được đề xuất từ chối. Vui lòng kiểm tra lại thông tin' ErrorDesc
39
		RETURN '-1'
40
	END
41
-- CHAN CUOI
42
	IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS <> 'U' AND REQ_PAY_ID =@p_REQ_PAY_ID))
43
	BEGIN
44
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc
45
		RETURN '-1'
46
	END
47
-- END VALIDATE
48

    
49
BEGIN TRANSACTION
50
		IF(@p_IS_AUTHORITY <> 'Y')
51
		BEGIN
52
			SET @p_IS_AUTHORITY = 'N'
53
		END
54
		-- KHAI BAO THEM ROLE NHAN UY QUYEN
55
		DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
56
		INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
57
		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) 
58
		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
59
		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
60
		AND TLNAME =@p_CHECKER_ID
61
	
62
		-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
63
		DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
64
		INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID 
65
		--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
66
		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
67
		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
68
				DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15) 
69
		--PRINT @BRANCH_CREATE 
70
		SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
71
		DECLARE @DEP_CODE_NEXT VARCHAR(15)
72
		IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
73
		BEGIN
74
			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))
75
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
76
			--PRINT @DEP_CODE_NEXT
77
		END
78
		ELSE
79
		BEGIN
80
			SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
81
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
82
		END
83
		
84
		IF (ISNULL(@p_COST_ID, '') <> '' AND (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) = 'HS')
85
		BEGIN
86
			ROLLBACK TRANSACTION
87
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Xác nhận phiếu đề nghị tạm ứng thất bại! Nhân viên ở hội sở không được phép chọn khối phê duyệt' ErrorDesc
88
			RETURN '-1'
89
		END
90
		
91
		--- KHAI BAO CHUNG
92
		   DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
93
			@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)
94
			DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
95
			SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
96
			--SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
97
			SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
98
			--SET  @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
99
			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'))
100
			BEGIN
101
				PRINT @ROLE_ID
102
			END
103
			ELSE
104
			BEGIN
105
				SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
106
				IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
107
				BEGIN
108
					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))
109
				END
110
			END
111
			SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
112
			SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
113
			SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
114
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
115
			DECLARE @tmp table(BRANCH_ID varchar(15))
116
			INSERT into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
117
			DECLARE @tmp_CN table(BRANCH_ID varchar(15))
118
			IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
119
			BEGIN
120
				--INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
121
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
122
			END
123
			ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
124
			BEGIN
125
				--DECLARE @FATHER_ID VARCHAR(15) = NULL
126
				--SET @FATHER_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
127
				--INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
128
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
129
			END
130
			--DECLARE @DEP_ID_LG VARCHAR(15) = NULL	
131
			--SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
132
			DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
133
			INSERT INTO @TMP_DVDM
134
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
135
			FROM PL_COSTCENTER A
136
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
137
			WHERE B.DEP_ID = @DEP_ID_RQ
138
			GROUP BY A.DVDM_ID
139
			-- KHAI BAO BRANCH CUA USER DUYET
140
			SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
141
			DECLARE @LIMIT_REMAIN DECIMAL(18,0)
142
		--CAP NHAT CODE TRONG QUA TRINH TEST UAT
143
		INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
144
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
145
		BEGIN
146
			IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) ='HS')
147
			BEGIN
148
				IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ISNULL(ROLE_AUTH,'') IN ('GDDV','TP') AND (SELECT ISNULL(PROCESS,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) =''))
149
				BEGIN
150
					-- doanptt them note khi xac nhan
151
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
152
					BEGIN
153
						SET @p_PROCESS_NOTES = N'Trưởng đơn vị xác nhận phiếu';
154
					END
155

    
156
					UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0', NOTES ='' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
157
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Xác nhận phiếu tạm ứng')
158
					COMMIT TRANSACTION
159
					SELECT '1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'' ErrorDesc
160
					RETURN '1'
161
				END
162
			END
163
			IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID))
164
			BEGIN
165
					ROLLBACK TRANSACTION
166
					SELECT '-1' as Result, ''  REQ_PAY_ID, N'Bạn không có quyền phê duyệt phiếu tạm ứng nội bộ. Vui lòng chọn giao dịch khác để duyệt' ErrorDesc
167
					RETURN '-1'
168
			END
169
			IF NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND STATUS = 'C')
170
			BEGIN
171
				ROLLBACK TRANSACTION
172
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được bạn phê duyệt xong trước đó! Vui lòng đợi cấp tiếp theo phê duyệt tạm ứng' ErrorDesc
173
				RETURN '-1'
174
			END
175
			
176
			--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID AND BRANCH_ID= @BRANCH_ID AND STATUS ='P'))
177
			--BEGIN
178
			--		ROLLBACK TRANSACTION
179
			--		SELECT '-1' as Result, ''  REQ_PAY_ID, N'Bạn đã thực hiện xác nhận phiếu tạm ứng trước đó' ErrorDesc
180
			--		RETURN '-1'
181
			--END
182
			-- KIEM TRA AUTH_STATUS TRUYEN XUONG LA GI, A: DUYET, C: CONFIRM  
183
			IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
184
			BEGIN
185
			-- KIEM TRA NEU ROLE CHUA CO HAN MUC PHE DUYET THI PHAI THONG BAO
186
				IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE ROLE_ID =@ROLE_ID AND LIMIT_TYPE ='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN))
187
				BEGIN
188
						ROLLBACK TRANSACTION
189
						SELECT '-1' as Result, ''  REQ_PAY_ID, N'Bạn chưa được cấu hình hạn mức phê duyệt tạm ứng nội bộ. Vui lòng thông báo Admin cấu hình hạn mức phê duyệt' ErrorDesc
190
						RETURN '-1'
191
				END
192
			-- BAT DAU DUYET THEO NGAN SACH			
193
			--- LAY HAN MUC CUA USER
194
				SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
195

    
196
				--print @LIMIT_AMT
197
				SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
198
				IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
199
				BEGIN
200
					SET @LIMIT_AMT =6000000000 -- TANG LEN 6 TY
201
					SET @LIMIT_ONE_OF =1000000000
202
				
203
				END
204
				IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
205
				BEGIN
206
						SET @LIMIT_AMT =4000000000 --- TANG LEN 4 TY
207
						SET @LIMIT_ONE_OF =500000000
208
						IF(EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD ='PTGD' AND ROLE_NEW ='TGD' 
209
						AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
210
						BEGIN
211
							SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
212
							SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
213
							IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID))
214
							BEGIN
215
								UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='PTGD' AND REQ_ID =@p_REQ_PAY_ID
216
								UPDATE PL_REQUEST_PROCESS SET STATUS ='C',ROLE_USER ='PTGD' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
217
								SET @ROLE_ID ='TGD'
218
							END
219
						END
220
				
221
				END
222
			-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
223
				SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
224
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
225
				SET @TONG_PGD_HOAN =(
226
						--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
227
						--FROM TR_REQ_PAYMENT_DT B
228
						--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
229
						--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
230
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
231
						WHERE A.BRANCH_ID = @BRANCH_RQ
232
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
233
				IF(@BRANCH_TYPE='HS')
234
				BEGIN
235
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
236
					 DEP_ID IN
237
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
238
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
239
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
240
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
241
					SET @TOTAL_PAYBACK =
242
					ISNULL(
243
					(
244
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
245
						FROM TR_REQ_ADVANCE_PAYMENT C
246
						WHERE C.DEP_ID IN 
247
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
248
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
249
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
250
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
251
					),0)
252
				END
253
				--- BO SUNG NEU RIENG PHONG THUONG HIEU VA TRUYEN THONG --- 2021824
254
				IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690405' )
255
				BEGIN
256
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
257
					 DEP_ID IN
258
					 (SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
259
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
260
					SET @TOTAL_PAYBACK =
261
					ISNULL(
262
					(
263
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
264
						FROM TR_REQ_ADVANCE_PAYMENT C
265
						WHERE C.DEP_ID IN 
266
						(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
267
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
268
					),0)
269
				PRINT @TOTAL_ADVANCE
270
				PRINT @TOTAL_PAYBACK
271
				END
272
				--- END
273
				-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
274
				ELSE IF(@BRANCH_TYPE <>'HS')
275
				BEGIN
276
					SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
277
					 AND REQ_TYPE ='I' AND AUTH_STATUS='A')
278
					SET @TOTAL_PAYBACK =
279
					(
280
						SELECT (SUM(ISNULL(B.PAY_AMT,0)))
281
						FROM TR_REQ_ADVANCE_PAYMENT B
282
						WHERE B.BRANCH_ID IN 
283
						(SELECT BRANCH_ID FROM @tmp_CN)
284
						AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
285
					)
286
				END
287
				
288
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
289
				PRINT @LIMIT_REMAIN
290
				-- KIEM TRA NEU LA CHU TICH HDQT THI PHE DUYET LUON, KHONG CAN XET HAN MUC GI
291
				IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName ='HDQT'))
292
				BEGIN
293
					ROLLBACK TRANSACTION
294
					SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
295
					--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
296
					--+ CHAR(10) +
297
					--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
298
					--+ CHAR(10) + CHAR(13) +
299
					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')
300
					+ CHAR(10) + 
301
					N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
302
					RETURN '-4'
303
				END
304
				IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
305
				BEGIN
306
					ROLLBACK TRANSACTION
307
					SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,
308
					N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
309
					N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
310
					+ CHAR(10) + CHAR(13)+
311
					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') 
312
					+ CHAR(10) +
313
					N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN') 
314
					+ CHAR(10) +
315
					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
316
					RETURN '-2'
317
				END
318
				--- NEU DU HAN MUC THI THONG BAO DE NGUOI DUYET CAN NHAC CO NEN DUYET PHIEU HAY KHONG
319
				IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
320
				BEGIN
321
					IF(@REQ_AMT >@LIMIT_ONE_OF)
322
					BEGIN
323
						ROLLBACK TRANSACTION
324
						SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
325
						N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') 
326
						+ CHAR(10)+
327
						N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
328
						+ CHAR(10) + CHAR(13) +
329
						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') 
330
						+ CHAR(10) + 
331
						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') 
332
						+ CHAR(10) + 
333
						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
334
						RETURN '-2'
335
					END
336
					ELSE
337
					BEGIN
338
						-- KIEM TRA NEU LA PGD THI CANH BAO
339
						IF(@BRANCH_TYPE ='HS')
340
						BEGIN
341
							IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
342
							BEGIN
343
								ROLLBACK TRANSACTION
344
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
345
								--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
346
								--+ CHAR(10) + CHAR(13) +  
347
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
348
								+ CHAR(10) + 
349
								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')
350
								+ CHAR(10) + 
351
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
352
								RETURN '-4'
353
							END
354
							ELSE
355
							BEGIN
356
								ROLLBACK TRANSACTION
357
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
358
								--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
359
								--+ CHAR(10) + CHAR(13) +  
360
								--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
361
								--+ CHAR(10) + 
362
								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')
363
								+ CHAR(10) + 
364
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
365
								RETURN '-4'
366
							END
367
						END
368
						ELSE IF(@BRANCH_TYPE ='CN')
369
						BEGIN
370
							---LUCTV 24.11.2022 NẾU PHIẾU TỪ CN GỬI LÊN THÌ CHỈ CẦN XÉT SỐ TIỀN DUYỆT 1 LẦN CÓ ĐỦ HẠN MỨC KHÔNG
371
							IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName  IN('GDK','PTGD','TGD')))
372
							BEGIN
373
								IF(@REQ_AMT >@LIMIT_ONE_OF)
374
								BEGIN
375
									ROLLBACK TRANSACTION
376
									SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
377
									N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') 
378
									+ CHAR(10)+
379
									N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
380
									+ CHAR(10) + CHAR(13) +
381
									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') 
382
									+ CHAR(10) + 
383
									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') 
384
									+ CHAR(10) + 
385
									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
386
									RETURN '-2'
387
								END
388
								ELSE
389
								BEGIN
390
									ROLLBACK TRANSACTION
391
									SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
392
									--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
393
									--+ CHAR(10) +
394
									N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
395
									+ CHAR(10) + CHAR(13) +
396
									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')
397
									+ CHAR(10) + 
398
									N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
399
									RETURN '-4'
400
								END
401
							END--- END LUCTV
402
							ELSE IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 40000000)
403
							BEGIN
404
								ROLLBACK TRANSACTION
405
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
406
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
407
								+ CHAR(10) + 
408
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
409
								+ CHAR(10) + CHAR(13) +
410
								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')
411
								+ CHAR(10) +
412
								N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 CN: '+ FORMAT(40000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-40000000,'#,#', 'vi-VN')
413
								+ CHAR(10) + 
414
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
415
								RETURN '-4'
416
							END
417
							ELSE
418
							BEGIN
419
								IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
420
								BEGIN
421
									ROLLBACK TRANSACTION
422
									SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
423
									--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
424
									--+ CHAR(10) +
425
									N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
426
									+ CHAR(10) + CHAR(13) +
427
									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')
428
									+ CHAR(10) + 
429
									N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
430
									RETURN '-4'
431
								END
432
								ELSE
433
								BEGIN
434
									ROLLBACK TRANSACTION
435
									SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
436
									--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
437
									--+ CHAR(10) +
438
									--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
439
									--+ CHAR(10) + CHAR(13) +
440
									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')
441
									+ CHAR(10) + 
442
									N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
443
									RETURN '-4'
444
								END
445
							END
446
						END
447
						ELSE IF(@BRANCH_TYPE ='PGD')
448
						BEGIN
449
							IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 10000000)
450
							BEGIN
451
								ROLLBACK TRANSACTION
452
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,
453
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')+ CHAR(10) +
454
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
455
								+ CHAR(10) + CHAR(13) + 
456
								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')
457
								+ CHAR(10) + 
458
								N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 PGD: '+ FORMAT(10000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-10000000,'#,#', 'vi-VN')
459
								+ CHAR(10) + 
460
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
461
								RETURN '-4'
462
							END
463
							ELSE
464
							BEGIN
465
								ROLLBACK TRANSACTION
466
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
467
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
468
								+ CHAR(10) + 
469
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
470
								+ CHAR(10) + CHAR(13) +
471
								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')
472
								+ CHAR(10) + 
473
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
474
								RETURN '-4'
475
							END
476
						END
477
					END
478
				END
479
			-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
480
			END -- END DU HAN MUC DUYET
481
			ELSE IF(@p_AUTH_STATUS='A')
482
			BEGIN
483
				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)
484
				SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
485
				--
486
				SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
487
				IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
488
				BEGIN
489
					SET @LIMIT_AMT =6000000000 -- TANG LEN 6 TY ROLE HAN MUC GDK
490
					SET @LIMIT_ONE_OF =1000000000 --- TANG LEN 1 TY 1 LAN VOI GDK HO TRO
491
				
492
				END
493
				IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
494
				BEGIN
495
					SET @LIMIT_AMT =4000000000 --- TANG LEN 4 TY
496
					SET @LIMIT_ONE_OF =500000000
497
					IF(EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD ='PTGD' AND ROLE_NEW ='TGD' 
498
					AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
499
					BEGIN
500
						SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
501
						SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND  LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
502
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID))
503
						BEGIN
504
							UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='PTGD' AND REQ_ID =@p_REQ_PAY_ID
505
							UPDATE PL_REQUEST_PROCESS SET STATUS ='C',ROLE_USER ='PTGD' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
506
							SET @ROLE_ID ='TGD'
507
						END
508
					END
509
				END
510
				UPDATE TR_REQ_ADVANCE_PAYMENT
511
				SET    AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT =  GETDATE(), AUTH_STATUS_KT='U', IS_AUTHORITY = @p_IS_AUTHORITY
512
				WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
513
				--- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS
514
				DECLARE @PROCESS_CURR VARCHAR(5)
515
				SET @PROCESS_CURR =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
516
				IF(ISNULL(@p_PROCESS_NOTES,'') <> '')
517
				BEGIN
518
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@PROCESS_CURR,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N': ' + ISNULL(@p_PROCESS_NOTES,'')  FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
519
				END
520
				ELSE
521
				BEGIN
522
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@PROCESS_CURR,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' duyệt'  FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
523
				END
524
				--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
525
				UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS=@PROCESS_CURR WHERE REQ_PAY_ID=@p_REQ_PAY_ID
526
				--
527
				UPDATE PL_REQUEST_PROCESS SET STATUS ='A', NOTES = (SELECT ROLE_DESC + N' duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID) WHERE  ROLE_USER =@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID
528
			-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
529
			SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
530
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
531
			SET @TONG_PGD_HOAN =(
532
						--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
533
						--FROM TR_REQ_PAYMENT_DT B
534
						--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
535
						--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
536
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
537
						WHERE A.BRANCH_ID = @BRANCH_RQ
538
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
539
				IF(@BRANCH_TYPE='HS')
540
				BEGIN
541
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
542
					 DEP_ID IN
543
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
544
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
545
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
546
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
547
					SET @TOTAL_PAYBACK =
548
					ISNULL(
549
					(
550
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
551
						FROM TR_REQ_ADVANCE_PAYMENT C
552
						WHERE C.DEP_ID IN 
553
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
554
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
555
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
556
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
557
					),0)
558
				END
559
				--- BO SUNG NEU RIENG PHONG THUONG HIEU VA TRUYEN THONG --- 2021824
560
				IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690405' )
561
				BEGIN
562
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
563
					 DEP_ID IN
564
					 (SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
565
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
566
					SET @TOTAL_PAYBACK =
567
					ISNULL(
568
					(
569
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
570
						FROM TR_REQ_ADVANCE_PAYMENT C
571
						WHERE C.DEP_ID IN 
572
						(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
573
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
574
					),0)
575
				END
576
				--- END
577
				-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
578
				-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
579
				ELSE IF(@BRANCH_TYPE <>'HS')
580
				BEGIN
581
					SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
582
					 AND REQ_TYPE ='I' AND AUTH_STATUS='A')
583
					SET @TOTAL_PAYBACK =
584
					(
585
						SELECT (SUM(ISNULL(B.PAY_AMT,0)))
586
						FROM TR_REQ_ADVANCE_PAYMENT B
587
						WHERE B.BRANCH_ID IN 
588
						(SELECT BRANCH_ID FROM @tmp_CN)
589
						AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
590
					)
591
				END
592
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
593
				--- INSERT VAO BANG LOG
594
				INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG  VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
595
				----
596
			END
597
			--ELSE IF (@p_AUTH_STATUS='T')
598
			--BEGIN
599
			---- NEU AUTH_STATUS = T LA THU KI TGD / HDQT
600
			--	IF( @ROLE_ID ='TKTGD')
601
			--	BEGIN
602
			--		UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
603
			--		UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKTGD' AND REQ_ID =@p_REQ_PAY_ID
604
			--		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
605
			--		 VALUES(@p_REQ_PAY_ID,'TKTGD',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Tổng Giám Đốc đã phê duyệt',N'Thư kí văn phòng Tổng Giám Đốc phê duyệt')	
606
			--	END
607
			--	ELSE IF( @ROLE_ID ='TKHDQT')
608
			--	BEGIN
609
			--		UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='HDQT' AND REQ_ID =@p_REQ_PAY_ID
610
			--		UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@p_REQ_PAY_ID
611
			--		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
612
			--		VALUES(@p_REQ_PAY_ID,'TKHDQT',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Hội Đồng Quản Trị đã phê duyệt',N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt')	
613
			--	END
614
			--ENDr
615
			ELSE -- NEW KHONG DU HAN MUC THI BAT DAU XAC NHAN VA DUYET THEO HAN MUC
616
			BEGIN
617
				DECLARE @t_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
618
			
619
				--PRINT @t_REQ_AMT
620
				--- NEU GIAM DOC KHOI VAN CHUA DU HAN MUC THI GIAM DOC KHOI XAC NHAN VÀ TIEP TUC BUOC TIEP THEO LA PHO TONG GIAM DOC
621
				DECLARE @MAX_STEP INT, @NEXT_ROLE VARCHAR(20), @MESSAGE NVARCHAR(100), @PROCESS_ID_NEXT VARCHAR(5), @PROCESS_PARENT VARCHAR(5),
622
				@BRANCH_ID_PROC VARCHAR(15), @NEX_ROLE_STEP VARCHAR(25), @CURRENT_PROCESS VARCHAR(15)
623

    
624
				SET @CURRENT_PROCESS =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER=@ROLE_ID)
625
				SET @NEX_ROLE_STEP = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE PARENT_PROCESS_ID =@CURRENT_PROCESS AND REQ_ID = @p_REQ_PAY_ID )
626
				--PRINT @NEX_ROLE_STEP
627
				--SET @MAX_STEP = CONVERT(INT,(SELECT MAX(PROCESS_ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID))
628
				SET @PROCESS_ID_NEXT = CONVERT(VARCHAR(5),@CURRENT_PROCESS+1)
629
				--SET @PROCESS_PARENT = CONVERT(VARCHAR(5),@MAX_STEP)
630
				DECLARE @TMP_ROLE TABLE (ROLE_ID VARCHAR(15), BRANCH_ID VARCHAR(15), LIMIT_VALUE DECIMAL(18,0),LIMIT_TYPE VARCHAR(15))
631
				--IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
632
					IF(LEFT(@DEP_CODE_NEXT,5) ='06908' OR @DEP_CODE_NEXT ='0690605' OR @DEP_CODE_NEXT LIKE '06906%')
633
					BEGIN
634
						--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
635
						INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
636
						--INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
637
					END
638
					ELSE
639
					BEGIN
640
						IF( @DEP_CODE_NEXT ='0690405')
641
						BEGIN
642
							--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
643
							INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <> 'GDK'
644
							--INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
645
						END
646
						--ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
647
						ELSE IF(LEFT(@DEP_CODE_NEXT,5) ='06910')
648
						BEGIN
649
							INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
650
						END
651
						--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)
652
						--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID) 
653
						--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID))
654
						ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06900') OR (LEFT(@DEP_CODE_NEXT,5)) ='06901' OR (LEFT(@DEP_CODE_NEXT,5))='06904'
655
						OR (LEFT(@DEP_CODE_NEXT,5))='06902' OR (LEFT(@DEP_CODE_NEXT,5))='06903'  OR (LEFT(@DEP_CODE_NEXT,5))='06920' OR (LEFT(@DEP_CODE_NEXT,3))='799'  OR (LEFT(@DEP_CODE_NEXT,3))='899')
656
						BEGIN
657
							INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')
658
						END
659
						--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
660
						--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID) 
661
						--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
662
						ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06907') OR (LEFT(@DEP_CODE_NEXT,5)) ='06909' OR (LEFT(@DEP_CODE_NEXT,5))='06911'
663
						OR (LEFT(@DEP_CODE_NEXT,5))='06922' OR (LEFT(@DEP_CODE_NEXT,5))='06921'  OR (LEFT(@DEP_CODE_NEXT,5))='06920')
664
						BEGIN
665
							INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
666
						END
667
						ELSE
668
						BEGIN
669
							INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' ORDER BY LIMIT_VALUE
670
						END
671
					END
672
					
673
				SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
674
				--print @DEP_CODE_NEXT
675
				--print @BRANCH_ID_PROC 
676
			    --print @NEX_ROLE_STEP
677
				IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@NEX_ROLE_STEP AND REQ_ID= @p_REQ_PAY_ID))
678
				BEGIN
679
					-- doanptt them note khi xac nhan
680
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
681
					BEGIN
682
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
683
					END
684
					--SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE LIMIT_VALUE >@t_REQ_AMT 
685
					SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE 1 =1
686
					AND ROLE_ID NOT IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID) AND LIMIT_TYPE ='ADV_PAY' ORDER BY LIMIT_VALUE)
687
					--print @NEXT_ROLE
688
					SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
689
					SET @MESSAGE = (SELECT TOP 1 N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @NEXT_ROLE)
690
					INSERT INTO PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF, COST_ID, DVDM_ID, NOTES)
691
					VALUES (@p_REQ_PAY_ID,@PROCESS_ID_NEXT,'C',@NEXT_ROLE,@BRANCH_ID_PROC,@NEXT_ROLE,GETDATE(),@PROCESS_PARENT,'Y',NULL,@p_COST_ID,@MESSAGE)
692
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Các cấp phê duyệt theo hạn mức')
693
				END
694
				ELSE
695
				BEGIN
696
					-- doanptt them note khi xac nhan
697
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
698
					BEGIN
699
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
700
					END
701
					ELSE
702
					BEGIN
703
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N': ' + @p_PROCESS_NOTES FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
704
					END
705

    
706
					SET @NEXT_ROLE =@NEX_ROLE_STEP
707
					UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID	
708
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Các cấp phê duyệt theo hạn mức')
709
				END
710
				--				
711
				IF @@Error <> 0 GOTO ABORT
712
					-- UPDATE STATUS CUA STEP HIEN TAI
713
				UPDATE PL_REQUEST_PROCESS SET STATUS='P',IS_LEAF ='N', NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID =@ROLE_ID)
714
				WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID		
715
				--INSERT VAO TR_PROCESS		
716
				UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS =@CURRENT_PROCESS , AUTH_STATUS='U',DVDM_ID = @p_COST_ID WHERE REQ_PAY_ID =@p_REQ_PAY_ID	
717
				--- 
718
				UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
719
		  END
720
		END	
721
		ELSE
722
		BEGIN
723
			--- NEU LA TAM UNG NHA CUNG CAP THI CHECK XEM KI TAM UNG DO DA HOAN THANH HAY CHUA, NEU DA HOAN THANH THI KHONG CHO DUYET
724
			DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
725
			@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
726
			DECLARE CUR_SH CURSOR FOR SELECT A.PAY_ID,A.AMT_PAY, A.AMT_PAY_DO,A.SCHEDULE_ID,A.AMT_ADVANCE FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID= @p_REQ_PAY_ID
727
			OPEN CUR_SH
728
			FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
729
			WHILE @@FETCH_STATUS =0
730
			BEGIN
731
				SET @SUM_OF_PAY_ID =(SELECT TOP 1 SUM(AMT_PAY_DO) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
732
				SET @SUM_ADVANCE =(SELECT TOP 1 SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
733
				IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
734
				BEGIN
735
					ROLLBACK TRANSACTION
736
					SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Số tiền tạm ứng đã vượt mức số tiền còn lại cần phải thanh toán' ErrorDesc
737
					RETURN '-1'
738
				END
739
				IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
740
				BEGIN
741
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
742
				END
743
				ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
744
				BEGIN
745
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
746
				END
747
				ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
748
				BEGIN
749
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
750
				END
751
				FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
752
			END
753
			CLOSE CUR_SH
754
			DEALLOCATE CUR_SH 
755

    
756
			UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, APPROVE_DT = GETDATE(),AUTH_STATUS_KT='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
757
			UPDATE PL_REQUEST_PROCESS SET [STATUS] ='A' WHERE [STATUS] ='C' AND REQ_ID =@p_REQ_PAY_ID
758
			SET @p_AUTH_STATUS ='A'
759
			--- INSERT 1 DONG VAO PL_PROCESS
760
			-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
761
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
762
				   VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị đã phê duyệt',N'Trưởng đơn vị phê duyệt')			
763
		END	
764
		IF @@Error <> 0 GOTO ABORT
765
COMMIT TRANSACTION
766
	IF(@p_AUTH_STATUS='A')
767
	BEGIN
768
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
769
		RETURN '0'
770
	END
771
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKTGD')
772
	--BEGIN
773
	--	SELECT '5' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Thư kí văn phòng Tổng Giám Đốc phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
774
	--	RETURN '5'
775
	--END
776
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKHDQT')
777
	--BEGIN
778
	--	SELECT '5' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
779
	--	RETURN '5'
780
	--END
781
	ELSE
782
	BEGIN
783
		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
784
		RETURN '1'
785
	END
786
ABORT:
787
BEGIN
788
		ROLLBACK TRANSACTION
789
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
790
		RETURN '-1'
791
END