Project

General

Profile

advacneapp2.txt

Luc Tran Van, 11/25/2022 05:31 PM

 
1

    
2

    
3
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]
4
--Luanlt 2019/17/10 - Sửa params
5
@p_REQ_PAY_ID	varchar(15)= NULL,
6
@p_CHECKER_ID	varchar(15)	= NULL,
7
@p_AUTH_STATUS varchar(15) = NULL,
8
@p_COST_ID VARCHAR(15) = NULL,
9
@p_IS_AUTHORITY varchar(1) = NULL,
10
@p_PROCESS_NOTES nvarchar(max) = NULL
11
AS
12
-- BEGIN VALIDATE
13
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
14
	BEGIN
15
		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
16
		RETURN '-1'
17
	END
18
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
19
	BEGIN
20
		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
21
		RETURN '-1'
22
	END
23
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
24
	BEGIN
25
		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
26
		RETURN '-1'
27
	END
28
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
29
	BEGIN
30
		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
31
		RETURN '-1'
32
	END
33
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
34
	BEGIN
35
		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
36
		RETURN '-1'
37
	END
38
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='S' AND REQ_PAY_ID =@p_REQ_PAY_ID)
39
	BEGIN
40
		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
41
		RETURN '-1'
42
	END
43
-- CHAN CUOI
44
	IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS <> 'U' AND REQ_PAY_ID =@p_REQ_PAY_ID))
45
	BEGIN
46
		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
47
		RETURN '-1'
48
	END
49
-- END VALIDATE
50

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

    
158
					UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0', NOTES ='' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
159
					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')
160
					COMMIT TRANSACTION
161
					SELECT '1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'' ErrorDesc
162
					RETURN '1'
163
				END
164
			END
165
			IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID))
166
			BEGIN
167
					ROLLBACK TRANSACTION
168
					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
169
					RETURN '-1'
170
			END
171
			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')
172
			BEGIN
173
				ROLLBACK TRANSACTION
174
				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
175
				RETURN '-1'
176
			END
177
			
178
			--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'))
179
			--BEGIN
180
			--		ROLLBACK TRANSACTION
181
			--		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
182
			--		RETURN '-1'
183
			--END
184
			-- KIEM TRA AUTH_STATUS TRUYEN XUONG LA GI, A: DUYET, C: CONFIRM  
185
			IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
186
			BEGIN
187
			-- KIEM TRA NEU ROLE CHUA CO HAN MUC PHE DUYET THI PHAI THONG BAO
188
				IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE ROLE_ID =@ROLE_ID AND LIMIT_TYPE ='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN))
189
				BEGIN
190
						ROLLBACK TRANSACTION
191
						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
192
						RETURN '-1'
193
				END
194
			-- BAT DAU DUYET THEO NGAN SACH			
195
			--- LAY HAN MUC CUA USER
196
				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)
197

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

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

    
708
					SET @NEXT_ROLE =@NEX_ROLE_STEP
709
					UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID	
710
					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')
711
				END
712
				--				
713
				IF @@Error <> 0 GOTO ABORT
714
					-- UPDATE STATUS CUA STEP HIEN TAI
715
				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)
716
				WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID		
717
				--INSERT VAO TR_PROCESS		
718
				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	
719
				--- 
720
				UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
721
		  END
722
		END	
723
		ELSE
724
		BEGIN
725
			--- 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
726
			DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
727
			@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
728
			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
729
			OPEN CUR_SH
730
			FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
731
			WHILE @@FETCH_STATUS =0
732
			BEGIN
733
				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')
734
				SET @SUM_ADVANCE =(SELECT TOP 1 SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
735
				IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
736
				BEGIN
737
					ROLLBACK TRANSACTION
738
					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
739
					RETURN '-1'
740
				END
741
				IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
742
				BEGIN
743
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
744
				END
745
				ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
746
				BEGIN
747
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
748
				END
749
				ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
750
				BEGIN
751
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
752
				END
753
				FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
754
			END
755
			CLOSE CUR_SH
756
			DEALLOCATE CUR_SH 
757

    
758
			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
759
			UPDATE PL_REQUEST_PROCESS SET [STATUS] ='A' WHERE [STATUS] ='C' AND REQ_ID =@p_REQ_PAY_ID
760
			SET @p_AUTH_STATUS ='A'
761
			--- INSERT 1 DONG VAO PL_PROCESS
762
			-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
763
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
764
				   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')			
765
		END	
766
		IF @@Error <> 0 GOTO ABORT
767
COMMIT TRANSACTION
768
	IF(@p_AUTH_STATUS='A')
769
	BEGIN
770
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
771
		RETURN '0'
772
	END
773
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKTGD')
774
	--BEGIN
775
	--	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
776
	--	RETURN '5'
777
	--END
778
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKHDQT')
779
	--BEGIN
780
	--	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
781
	--	RETURN '5'
782
	--END
783
	ELSE
784
	BEGIN
785
		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
786
		RETURN '1'
787
	END
788
ABORT:
789
BEGIN
790
		ROLLBACK TRANSACTION
791
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
792
		RETURN '-1'
793
END