Project

General

Profile

AMSGD3_Script_271122.txt

Luc Tran Van, 11/28/2022 08:39 AM

 
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

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

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

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

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

    
724
					SET @NEXT_ROLE =@NEX_ROLE_STEP
725
					UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID	
726
					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')
727
				END
728
				--				
729
				IF @@Error <> 0 GOTO ABORT
730
					-- UPDATE STATUS CUA STEP HIEN TAI
731
				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)
732
				WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID		
733
				--INSERT VAO TR_PROCESS		
734
				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	
735
				--- 
736
				UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
737
		  END
738
		END	
739
		ELSE
740
		BEGIN
741
			--- 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
742
			DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
743
			@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
744
			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
745
			OPEN CUR_SH
746
			FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
747
			WHILE @@FETCH_STATUS =0
748
			BEGIN
749
				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')
750
				SET @SUM_ADVANCE =(SELECT TOP 1 SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
751
				IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
752
				BEGIN
753
					ROLLBACK TRANSACTION
754
					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
755
					RETURN '-1'
756
				END
757
				IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
758
				BEGIN
759
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
760
				END
761
				ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
762
				BEGIN
763
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
764
				END
765
				ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
766
				BEGIN
767
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
768
				END
769
				FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
770
			END
771
			CLOSE CUR_SH
772
			DEALLOCATE CUR_SH 
773

    
774
			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
775
			UPDATE PL_REQUEST_PROCESS SET [STATUS] ='A' WHERE [STATUS] ='C' AND REQ_ID =@p_REQ_PAY_ID
776
			SET @p_AUTH_STATUS ='A'
777
			--- INSERT 1 DONG VAO PL_PROCESS
778
			-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
779
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
780
				   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')			
781
		END	
782
		IF @@Error <> 0 GOTO ABORT
783
COMMIT TRANSACTION
784
	IF(@p_AUTH_STATUS='A')
785
	BEGIN
786
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
787
		RETURN '0'
788
	END
789
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKTGD')
790
	--BEGIN
791
	--	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
792
	--	RETURN '5'
793
	--END
794
	--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKHDQT')
795
	--BEGIN
796
	--	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
797
	--	RETURN '5'
798
	--END
799
	ELSE
800
	BEGIN
801
		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
802
		RETURN '1'
803
	END
804
ABORT:
805
BEGIN
806
		ROLLBACK TRANSACTION
807
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
808
		RETURN '-1'
809
END
810

    
811
GO
812

    
813
ALTER   PROCEDURE [dbo].[TR_CHECK_ROLE_APPROVE]
814
@TYPE VARCHAR(15) = NULL,
815
@p_REQ_ID	varchar(15) = NULL,
816
@p_USER_LOGIN varchar(15) = NULL
817
AS
818
BEGIN TRANSACTION
819
IF(@TYPE <> 'ADV_PAY')
820
BEGIN
821
	IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('TP','KS')))
822
	BEGIN
823
		ROLLBACK TRANSACTION
824
		SELECT '0' as Result, '' ErrorDesc
825
		RETURN '0'
826
	END
827
END
828
-- KHAI BAO THEM ROLE NHAN UY QUYEN
829
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
830
DECLARE @TABLE_DEP TABLE (ROLE_NEW VARCHAR(50), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20))
831
DECLARE @ROLE_ID VARCHAR(50)
832
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
833
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
834
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@p_USER_LOGIN AND
835
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
836

    
837
INSERT INTO @TABLE_DEP SELECT ROLE_NEW, BRANCH_ID, DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@p_USER_LOGIN AND
838
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
839

    
840
	DECLARE @AUTHOR TABLE
841
	(
842
		ROLE_ID VARCHAR(20),
843
		BRANCH_ID VARCHAR(20),
844
		DEP_ID VARCHAR(20),
845
		BRANCH_TYPE VARCHAR(20)
846
	)
847
	DECLARE @AUTHOR_DVDM TABLE
848
	(
849
		ROLE_ID VARCHAR(20),
850
		BRANCH_ID VARCHAR(20),
851
		DEP_ID VARCHAR(20),
852
		DVDM_ID VARCHAR(20)
853
	)
854

    
855
	DECLARE @AUTHOR_DMMS TABLE
856
	(
857
		ROLE_ID VARCHAR(20),
858
		BRANCH_ID VARCHAR(20),
859
		DEP_ID VARCHAR(20),
860
		DMMS_ID VARCHAR(20)
861
	)
862

    
863
	INSERT INTO @AUTHOR
864
	(
865
	    ROLE_ID,
866
	    BRANCH_ID,
867
	    DEP_ID,
868
		BRANCH_TYPE
869
	)
870
	SELECT RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
871
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
872
	WHERE TLNANME=@p_USER_LOGIN
873
	UNION ALL
874
	SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
875
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
876
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
877
	WHERE TLNANME=@p_USER_LOGIN
878
	UNION ALL
879
	SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
880
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
881
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
882
	UNION ALL
883
	SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
884
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
885
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
886
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
887

    
888
	INSERT INTO @AUTHOR_DVDM
889
	(
890
	    ROLE_ID,
891
	    BRANCH_ID,
892
	    DEP_ID,
893
	    DVDM_ID
894
	)
895
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
896
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
897
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
898
	WHERE TU.TLNANME=@p_USER_LOGIN
899
	UNION ALL
900
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
901
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
902
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
903
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
904
	WHERE TU.TLNANME=@p_USER_LOGIN
905
	UNION ALL
906
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
907
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
908
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
909
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
910
	UNION ALL
911
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
912
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
913
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
914
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
915
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
916

    
917
	INSERT INTO @AUTHOR_DMMS
918
	(
919
	    ROLE_ID,
920
	    BRANCH_ID,
921
	    DEP_ID,
922
		DMMS_ID
923
	)
924
	SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
925
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
926
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
927
	WHERE TLNANME=@p_USER_LOGIN
928
	UNION ALL
929
	SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
930
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
931
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
932
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
933
	WHERE TLNANME=@p_USER_LOGIN
934
	UNION ALL
935
	SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
936
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
937
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
938
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
939
	UNION ALL
940
	SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
941
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
942
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
943
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
944
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
945

    
946
	IF(@TYPE='ADV_PAY')
947
	BEGIN
948
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID))
949
		BEGIN
950
			ROLLBACK TRANSACTION
951
			SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc
952
			RETURN '-1'
953
		END
954

    
955
		-- NEU LA TPHC O HOI SO 
956
		IF(	EXISTS(SELECT * FROM TL_USER WHERE TLNANME = @p_USER_LOGIN AND TLSUBBRID = 'DV0001' AND DEP_ID = 'DEP000000000014' AND RoleName = 'GDDV'))
957
			--OR EXISTS(SELECT * FROM @TABLE_DEP WHERE ROLE_NEW = 'GDDV' AND BRANCH_ID = 'DV0001' AND DEP_ID = 'DEP000000000014') 
958
		BEGIN
959
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND PROCESS <> '' AND PROCESS IS NOT NULL))
960
			BEGIN
961
				ROLLBACK TRANSACTION
962
				SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc
963
				RETURN '-1'
964
			END
965
		END
966
		-- CAC TRUONG HOP CON LAI
967
		ELSE
968
		BEGIN
969
			IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID) )
970
			BEGIN
971
				IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE)))
972
				BEGIN
973
					ROLLBACK TRANSACTION
974
					SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc
975
					RETURN '-1'
976
				END
977
			END
978
		END
979
		--doanptt: THU KY DA DIEU PHOI CHO NHAN VIEN XU LY THI KHONG DUOC DUYET NUA
980
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB <> 'C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('KS')))
981
		BEGIN
982
			ROLLBACK TRANSACTION
983
			SELECT '-1' as Result, N'Phiếu đang được điều phối đến nhân viên xử lý' ErrorDesc
984
			RETURN '-1'
985
		END
986
		--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND BRANCH_CREATE ='DV0001')
987
		--BEGIN
988
		--	IF(EXISTS(SELECT * FROM PL_PROCESS WHERE CHEC))
989
		--END
990
		--ELSE
991
		--BEGIN
992
		--	ROLLBACK TRANSACTION
993
		--	SELECT '-1' as Result, '' ErrorDesc
994
		--	RETURN '-1'
995
		--END
996
	END
997
	ELSE IF(@TYPE='TR_REQ_PAYMENT')
998
	BEGIN
999
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID))
1000
		BEGIN
1001
			ROLLBACK TRANSACTION
1002
			SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc
1003
			RETURN '-1'
1004
		END
1005

    
1006
		IF(	(SELECT COUNT(*) FROM @TABLE_ROLE A 
1007
							WHERE A.ROLE_AUTH IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD')) = 0) 
1008
		BEGIN
1009
			ROLLBACK TRANSACTION
1010
			SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc
1011
			RETURN '-1'
1012
		END
1013
	END
1014
	ELSE IF (@TYPE ='CORE')
1015
	BEGIN
1016
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A') OR  EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A'))
1017
		BEGIN
1018
			IF(EXISTS(SELECT * FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REQ_ID AND ISNULL(REF_NO,'') <> ''))
1019
			BEGIN
1020
				ROLLBACK TRANSACTION
1021
				SELECT '6' as Result, N'Giao dịch được phê duyệt thành công trên AMS và hạch toán thành công vào hệ thống Core FC' ErrorDesc
1022
				RETURN '6'
1023
			END
1024
			ELSE
1025
			BEGIN
1026
				ROLLBACK TRANSACTION
1027
				SELECT '5' as Result, N'Giao dịch được phê duyệt thành công nhưng bắn vào Core FC thất bại. Vui lòng rà soát lại nội dung hạch toán (không được phép chứa kí tự & hoặc kí tự <)' ErrorDesc
1028
				RETURN '5'
1029
			END
1030
		END
1031
		ELSE
1032
		BEGIN
1033
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <> 'A') AND  EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <>'A'))
1034
			BEGIN
1035
				ROLLBACK TRANSACTION
1036
				SELECT '7' as Result, '' ErrorDesc
1037
				RETURN '7'
1038
			END
1039
		END
1040
	END
1041
	ELSE IF(@TYPE ='CON_LAYOUT')
1042
	BEGIN
1043

    
1044
		-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
1045
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
1046
		(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
1047
		BEGIN
1048
			ROLLBACK TRANSACTION
1049
			SELECT '0' as Result, '' ErrorDesc
1050
			RETURN '0'
1051
		END
1052
		-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
1053
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
1054
		BEGIN
1055
			ROLLBACK TRANSACTION
1056
			SELECT '0' as Result, '' ErrorDesc
1057
			RETURN '0'
1058
		END
1059
		IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_REQ_ID AND PROCESS_ID ='APPROVE'))
1060
		BEGIN
1061

    
1062
			ROLLBACK TRANSACTION
1063
			SELECT '-1' as Result, '' ErrorDesc
1064
			RETURN '-1'
1065
		END
1066
		IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
1067
									EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS'))
1068
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
1069
									OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID  IS NULL) )
1070
									)))
1071
		BEGIN
1072
			print 'haha'
1073
			ROLLBACK TRANSACTION
1074
			SELECT '-1' as Result, '' ErrorDesc
1075
			RETURN '-1'
1076
		END
1077
	END
1078
	ELSE
1079
	BEGIN
1080
		-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
1081
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
1082
		(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
1083
		BEGIN
1084
			ROLLBACK TRANSACTION
1085
			SELECT '0' as Result, '' ErrorDesc
1086
			RETURN '0'
1087
		END
1088
		-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
1089
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND
1090
    (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
1091
		BEGIN
1092
			ROLLBACK TRANSACTION
1093
			SELECT '0' as Result, '' ErrorDesc
1094
			RETURN '0'
1095
		END
1096
    -- NEU CAP DUYET LA DVCM THI CO THE DUYET LUON
1097
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM' AND
1098
    (@ROLE_ID ='GDDV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='GDDV'))))
1099
		BEGIN
1100
			ROLLBACK TRANSACTION
1101
			SELECT '0' as Result, '' ErrorDesc
1102
			RETURN '0'
1103
		END
1104
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
1105
		BEGIN
1106
			ROLLBACK TRANSACTION
1107
			SELECT '0' as Result, '' ErrorDesc
1108
			RETURN '0'
1109
		END
1110
		IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
1111
									EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS'))
1112
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
1113
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A  WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS'))
1114
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A  WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS'))
1115
									OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PR.ID AND  TLNAME=@p_USER_LOGIN AND TYPE_JOB='KS' AND STATUS_JOB='C')
1116
									OR ((PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID  IS NULL) AND EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID = PR.ROLE_USER))
1117
									)))
1118
		BEGIN
1119
			ROLLBACK TRANSACTION
1120
			SELECT '-1' as Result, '' ErrorDesc
1121
			RETURN '-1'
1122
		END
1123
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
1124
		BEGIN
1125
			ROLLBACK TRANSACTION
1126
			SELECT '-1' as Result, '' ErrorDesc
1127
			RETURN '-1'
1128
		END
1129
		IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
1130
		BEGIN
1131
			ROLLBACK TRANSACTION
1132
			SELECT '-1' as Result, '' ErrorDesc
1133
			RETURN '-1'
1134
		END
1135

    
1136
		-- GiaNT
1137
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='P' AND PROCESS_ID ='KT' AND
1138
		(@ROLE_ID ='KSV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='KSV'))))
1139
		BEGIN
1140
			ROLLBACK TRANSACTION
1141
			SELECT '-1' as Result, '' ErrorDesc
1142
			RETURN '-1'
1143
		END
1144
	END
1145
	COMMIT TRANSACTION
1146
	print 'haha'
1147
	SELECT '0' as Result, '' ErrorDesc
1148
	RETURN '0'
1149

    
1150
	ABORT:
1151
	BEGIN
1152
			ROLLBACK TRANSACTION
1153
			SELECT '-1' as Result, '' ErrorDesc
1154
			RETURN '-1'
1155
	End
1156

    
1157
GO
1158

    
1159
ALTER   PROCEDURE [dbo].[TR_REQ_PAY_DETAIL]  
1160
@p_REQ_PAY_ID VARCHAR(15) = NULL  
1161
AS  
1162
BEGIN  
1163
 
1164
	DECLARE @TABLE_RETURN_01 TABLE ([NAME] NVARCHAR(500))  
1165
	DECLARE @TABLE_RETURN_01_DT TABLE (IND INT IDENTITY(1,1) NOT NULL,[NAME] NVARCHAR(500))  
1166
	DECLARE @TABLE_RETURN_02 TABLE ([NAME] NVARCHAR(250))  
1167
	DECLARE @TABLE_RETURN_02_DT TABLE (IND INT IDENTITY(1,1) NOT NULL,[NAME] NVARCHAR(500))  
1168
	DECLARE @TABLE_RETURN_03 TABLE (IND INT IDENTITY(1,1) NOT NULL,[NAME] NVARCHAR(500), AMT DECIMAL(18,2))  
1169
	DECLARE @TABLE_RETURN_04 TABLE (IND INT IDENTITY(1,1) NOT NULL,[NAME] NVARCHAR(500), AMT DECIMAL(18,2))  
1170
	DECLARE @TABLE_RETURN_06 TABLE ([NAME] NVARCHAR(500), AMT DECIMAL(18,2))  
1171
	DECLARE @INDEX INT =1  
1172
	DECLARE @INDEX_TT INT =0  
1173
	DECLARE @HINHTHUC_CK NVARCHAR(100)  
1174
	DECLARE @CHUOI NVARCHAR(180)
1175

    
1176
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE ='1'))  
1177
	BEGIN  
1178
		SET @INDEX_TT = @INDEX_TT+1  
1179
		--INSERT INTO @TABLE_RETURN  
1180
		--SELECT N'Tiền mặt' AS PHUONG_THUC, ISNULL(SUM (TOTAL_AMT),0) AS T1 FROM TR_REQ_PAY_METHOD  
1181
		--WHERE REQ_PAY_TYPE ='1' AND REQ_PAY_ID = @p_REQ_PAY_ID  
1182

    
1183
		INSERT INTO @TABLE_RETURN_03  
1184
		SELECT N'. Người nhận: '+ ACC_NAME + CHAR(10) + N' CMND số: ' + ACC_NO + char(10) + N' Được cấp bởi: '+ ISSUED_BY + N' ngày cấp: '+ CONVERT(VARCHAR,ISSUED_DT,103) AS ACC_NAME, SUM(TOTAL_AMT) AS T2  
1185
		FROM TR_REQ_PAY_METHOD 
1186
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE ='1'  
1187
		GROUP BY ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT  
1188

    
1189
		-- INSERT BANG TAM THE HIEN SO TIEN  
1190
		INSERT INTO @TABLE_RETURN_04  
1191
		SELECT 'N'+ CHAR(10) + 'D'+char(10) AS ACC_NAME, SUM(TOTAL_AMT) AS T2  
1192
		FROM TR_REQ_PAY_METHOD 
1193
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE ='1'  
1194
		GROUP BY ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT  
1195
	END  
1196

    
1197
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE <> '1'))  
1198
	BEGIN  
1199
		SET @INDEX_TT = @INDEX_TT+1  
1200
		--INSERT INTO @TABLE_RETURN  
1201
		--SELECT N'Chuyển khoản' AS PHUONG_THUC,ISNULL(SUM (TOTAL_AMT),0) AS T3 FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_TYPE ='0' AND REQ_PAY_ID = @p_REQ_PAY_ID  
1202

    
1203
		INSERT INTO @TABLE_RETURN_03  
1204
		SELECT CASE WHEN TYPE_TRANSFER ='R' AND TYPE_TRANSFER IS NOT NULL AND TYPE_TRANSFER <>'' AND ISNULL(SUB_ISSUED_BY, '') = '' THEN (N'. Trích từ tài khoản: '+ ACC_NAME + CHAR(10)+ N' Số tài khoản: ' + ACC_NO + char(10) + N' Tại ngân hàng: '+ ISSUED_BY)
1205
					WHEN TYPE_TRANSFER ='R' AND TYPE_TRANSFER IS NOT NULL AND TYPE_TRANSFER <>'' AND ISNULL(SUB_ISSUED_BY, '') <> '' THEN (N'. Trích từ tài khoản: '+ ACC_NAME + CHAR(10)+ N' Số tài khoản: ' + ACC_NO + char(10) + N' Tại ngân hàng: '+ ISSUED_BY + ' - ' + SUB_ISSUED_BY )
1206
					WHEN TYPE_TRANSFER <> 'R' AND ISNULL(TYPE_TRANSFER, '') <> '' AND ISNULL(SUB_ISSUED_BY, '') <> '' THEN (N'. Đơn vị thụ hưởng: '+ ACC_NAME  + CHAR(10)+ N' Số tài khoản: ' + ACC_NO + char(10) + N' Tại ngân hàng: '+ ISSUED_BY + ' - ' + SUB_ISSUED_BY)
1207
					ELSE (N'. Đơn vị thụ hưởng: '+ ACC_NAME  + CHAR(10)+ N' Số tài khoản: ' + ACC_NO + char(10) + N' Tại ngân hàng: '+ ISSUED_BY) 
1208
					END AS ACC_NAME, 
1209
					SUM(TOTAL_AMT) 
1210
				AS T4  
1211
		FROM TR_REQ_PAY_METHOD 
1212
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE <>'1'  
1213
		GROUP BY ACC_NO, ACC_NAME, ISSUED_BY,TYPE_TRANSFER , SUB_ISSUED_BY
1214

    
1215
		-- INSERT BANG TAM THE HIEN SO TIEN  
1216
		INSERT INTO @TABLE_RETURN_04  
1217
		SELECT 'N'+ CHAR(10)+ 'S'+ char(10) AS ACC_NAME, SUM(TOTAL_AMT) AS T4  
1218
		FROM TR_REQ_PAY_METHOD 
1219
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_PAY_TYPE <>'1'  
1220
		GROUP BY ACC_NO, ACC_NAME, ISSUED_BY,TYPE_TRANSFER  
1221
	END  
1222

    
1223
-- KIEM TRA NOI DUNG SU DUNG CHI PHI VA NGAN SACH  
1224
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) OR EXISTS(SELECT * FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) OR EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID))  
1225
	BEGIN  
1226
		--INSERT INTO @TABLE_RETURN_01 VALUES (CONVERT(VARCHAR(15),@INDEX) +N'. Nội dung tạm ứng: ')  
1227
		INSERT INTO @TABLE_RETURN_01 VALUES( N'A - Nội dung thanh toán: ')  
1228
		--INSERT INTO @TABLE_RETURN_01_DT SELECT N'. '+ A.REQ_PAY_REASON FROM TR_REQ_PAY_METHOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1229
		--INSERT INTO @TABLE_RETURN_06 SELECT 'A', A.TOTAL_AMT FROM TR_REQ_PAY_METHOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1230
		INSERT INTO @TABLE_RETURN_01_DT SELECT N'. '+ A.REASON FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1231
		INSERT INTO @TABLE_RETURN_06 SELECT LEFT(A.REASON,150) + LEFT(A.REASON,30), A.AMT_PAY FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1232
 
1233
		INSERT INTO @TABLE_RETURN_01_DT SELECT N'. '+ A.REQ_PAY_DESC FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1234
		INSERT INTO @TABLE_RETURN_06 SELECT LEFT(A.REQ_PAY_DESC,150)+ LEFT(A.REQ_PAY_DESC,30), A.AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1235
 
1236
		INSERT INTO @TABLE_RETURN_01_DT SELECT N'. '+ A.[SERVICE_NAME] FROM TR_REQ_PAY_SERVICE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1237
		INSERT INTO @TABLE_RETURN_06 SELECT LEFT(A.[SERVICE_NAME],200)+LEFT(A.[SERVICE_NAME],70), A.TOTAL_AMT FROM TR_REQ_PAY_SERVICE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID  
1238
	END  
1239

    
1240
--- HĐ & CHỨNG TỪ ĐÍNH KÈM  
1241
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID) OR EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID))  
1242
	BEGIN  
1243
		SET @INDEX = @INDEX+1  
1244
		--INSERT INTO @TABLE_RETURN_01 SELECT CONVERT(VARCHAR(15),@INDEX)+ N'. Chứng từ đính kèm: '  
1245
		INSERT INTO @TABLE_RETURN_02 SELECT N'B - Chứng từ đính kèm: '  
1246
	END  
1247

    
1248
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE ='C'))  
1249
	BEGIN  
1250
		--INSERT INTO @TABLE_RETURN_01 SELECT N'Thông tin hợp đồng đính kèm: '  
1251
		INSERT INTO @TABLE_RETURN_02_DT SELECT ' '+ N'. Hợp đồng số ' + REF_CODE + ISNULL(N' ngày '+ FORMAT(REF_DT,'dd/MM/yyyy'),'')+ CASE WHEN AMT >0 THEN N', số tiền '+ FORMAT( ISNULL(AMT,0),'#,#', 'vi-VN') ELSE '' END AS T1 FROM TR_REQ_PAY_ATTACH  
1252
		WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND [TYPE] ='C'  
1253
	END  
1254

    
1255
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE ='R'))  
1256
	BEGIN  
1257
		--INSERT INTO @TABLE_RETURN_01 SELECT N'Thông tin chứng từ khác đính kèm: '  
1258
		INSERT INTO @TABLE_RETURN_02_DT SELECT N'. '+ [DESCRIPTION]+ CASE WHEN AMT >0 THEN N', số tiền '+ FORMAT( ISNULL(AMT,0),'#,#', 'vi-VN') ELSE '' END AS T1 FROM TR_REQ_PAY_ATTACH  
1259
		WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND [TYPE] ='R'  
1260
	END  
1261

    
1262
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID))  
1263
		BEGIN  
1264
		--INSERT INTO @TABLE_RETURN_01 SELECT N'Thông tin chứng từ khác đính kèm: '  
1265
		INSERT INTO @TABLE_RETURN_02_DT SELECT N'. Số hóa đơn '+ HD.INVOICE_NO +ISNULL(N' ngày '+ FORMAT(HD.INVOICE_DT,'dd/MM/yyyy'),'')+ N', số tiền '+ FORMAT( ISNULL(HD.PRICE+HD.VAT,0),'#,#', 'vi-VN') AS T1
1266
		FROM
1267
		(
1268
		SELECT MAX(A.INVOICE_NO) AS INVOICE_NO, MAX(A.INVOICE_DT) AS INVOICE_DT, SUM(A.PRICE) AS PRICE, SUM(A.VAT) AS VAT
1269
		FROM
1270
		TR_REQ_PAY_INVOICE  A
1271
		WHERE A.REQ_PAY_ID = @p_REQ_PAY_ID AND A.TYPE_FUNC='HC'  
1272
		GROUP BY A.INVOICE_NO,A.INVOICE_NO_SIGN,A.INVOICE_SIGN,A.TAX_NO
1273
		)
1274
		AS HD
1275
	END  
1276

    
1277
	
1278
	DECLARE @ROLE VARCHAR(15)  
1279
	DECLARE @TABLE_RETURN_07 TABLE (HDQT NVARCHAR(50),TGD NVARCHAR(50),PTGD NVARCHAR(50),GDK NVARCHAR(50),GDDV NVARCHAR(50))  
1280
	DECLARE @GDDV NVARCHAR(50),@GDK NVARCHAR(50),@PTGD NVARCHAR(50),@TGD NVARCHAR(50),@HDQT NVARCHAR(50)  
1281
	DECLARE @APPR VARCHAR(15),@APPR1 VARCHAR(15),@APPR2 VARCHAR(15),@APPR3 VARCHAR(15),@APPR4 VARCHAR(15),@APPR5 VARCHAR(15)  
1282
	DECLARE @POS NVARCHAR(50),@POS1 NVARCHAR(50),@POS2 NVARCHAR(50),@POS3 NVARCHAR(50),@POS4 NVARCHAR(50)  
1283
	DECLARE @DATE NVARCHAR(50),@DATE1 NVARCHAR(50),@DATE2 NVARCHAR(50),@DATE3 NVARCHAR(50),@DATE4 NVARCHAR(50)
1284
	DECLARE @BRANCH_TYPE VARCHAR(15), @BRANCH_RQ VARCHAR(15)  
1285
	DECLARE @PROCESS_GDDV VARCHAR(5), @PROCESS_GDK VARCHAR(5), @PROCESS_PTGD VARCHAR(5), @PROCESS_TGD VARCHAR(5), @PROCESS_HDQT VARCHAR(5)
1286

    
1287
	-- LAY THONG TIN CAP PHE DUYET  
1288
	IF(	EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE ='I'))  
1289
	BEGIN  
1290
 -- GDDV
1291
		SET @PROCESS_GDDV = (SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER = 'GDDV')
1292
		SET @APPR =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV AND  
1293
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV))  
1294
		SET @ROLE =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@APPR)  
1295
		SET @APPR =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV AND  
1296
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV) AND  
1297
		@ROLE IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS <>'C'))  
1298
 
1299
		SET @POS =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR)  
1300
		SET @DATE =(SELECT ISNULL( FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV  
1301
		AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDDV) AND (@APPR IS NOT NULL AND @APPR <>''))  
1302
		-------------  
1303
-- GDK
1304
		SET @PROCESS_GDK = (SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER = 'GDK')
1305
		SET @APPR1 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK))  
1306
		SET @ROLE =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@APPR1)  
1307
		SET @APPR1 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK AND  
1308
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK) AND  
1309
		@ROLE IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS <>'C'))  
1310
 
1311
		SET @POS1 =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1)  
1312
		SET @DATE1 =(SELECT ISNULL( FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK AND  
1313
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID = @PROCESS_GDK) AND (@APPR1 IS NOT NULL AND @APPR1 <>'')) 
1314
		------------  
1315
-- PTGD 
1316
		SET @PROCESS_PTGD = (SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER = 'PTGD')
1317
		SET @APPR2 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD))  
1318
		SET @ROLE =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@APPR2)  
1319
		SET @APPR2 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD AND  
1320
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD) AND  
1321
		@ROLE IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS <>'C'))  
1322
	
1323
		SET @POS2 =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR2)  
1324
		SET @DATE2 =(SELECT ISNULL( FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD AND  
1325
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_PTGD) AND (@APPR2 IS NOT NULL AND @APPR2 <>''))  
1326
-- TGD 
1327
		SET @PROCESS_TGD = (SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER = 'TGD')
1328
		SET @APPR3 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD))  
1329
		SET @ROLE =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@APPR3)  
1330
		SET @APPR3 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD AND  
1331
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD) AND  
1332
		@ROLE IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS <>'C'))  
1333
 
1334
		SET @POS3 =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3)  
1335
		SET @DATE3 =(SELECT ISNULL( FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD  
1336
		AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_TGD) AND (@APPR3 IS NOT NULL AND @APPR3 <>''))  
1337
-- HDQT 
1338
		SET @PROCESS_HDQT = (SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER = 'HDQT')
1339
		SET @APPR4 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT))  
1340
		SET @ROLE =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@APPR4)  
1341
		SET @APPR4 =(SELECT CHECKER_ID FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT AND  
1342
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT) AND  
1343
		@ROLE IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS <>'C'))  
1344
		SET @POS4 =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR4)  
1345
		SET @DATE4 =(SELECT ISNULL( FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT AND  
1346
		ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID =@PROCESS_HDQT) AND @APPR4 IS NOT NULL AND @APPR4 <>'')    
1347
		SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  
1348
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ) 
1349
		
1350
		IF(@BRANCH_TYPE='CN')  
1351
		BEGIN  
1352
			SET @DATE =(SELECT FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1353

    
1354
			SET @POS =(SELECT POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN= (SELECT CHECKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1355

    
1356
			INSERT INTO @TABLE_RETURN_07 
1357
			VALUES	(	(	SELECT TLFULLNAME 
1358
							FROM TL_USER 
1359
							WHERE TLNANME = @APPR4),
1360
						(SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR3),  
1361
						(SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR2),
1362
						(SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR1),
1363
						(SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = (SELECT CHECKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)))  
1364
			INSERT INTO @TABLE_RETURN_07 VALUES (@POS4,@POS3,@POS2,@POS1,@POS)  
1365
			INSERT INTO @TABLE_RETURN_07 VALUES (CASE WHEN @DATE4 <>'' THEN N'Đã chấp thuận '+ @DATE4 ELSE '' END,CASE WHEN @DATE3 <>'' THEN N'Đã chấp thuận '+ @DATE3 ELSE '' END,  
1366
			CASE WHEN @DATE2 <>'' THEN N'Đã chấp thuận '+ @DATE2 ELSE '' END,CASE WHEN @DATE1 <>'' THEN N'Đã chấp thuận '+ @DATE1 ELSE '' END,CASE WHEN @DATE <>'' THEN N'Đã chấp thuận '+ @DATE ELSE '' END)  
1367
		END  
1368
		ELSE  
1369
		BEGIN  
1370
			INSERT INTO @TABLE_RETURN_07 
1371
			VALUES (	(	SELECT TLFULLNAME 
1372
							FROM TL_USER 
1373
							WHERE TLNANME = @APPR4),
1374
						(	SELECT TLFULLNAME 
1375
							FROM TL_USER 
1376
							WHERE TLNANME = @APPR3),  
1377
						(	SELECT TLFULLNAME 
1378
							FROM TL_USER 
1379
							WHERE TLNANME = @APPR2),
1380
						(	SELECT TLFULLNAME 
1381
							FROM TL_USER 
1382
							WHERE TLNANME = @APPR1),
1383
						(	SELECT TLFULLNAME 
1384
							FROM TL_USER 
1385
							WHERE TLNANME = @APPR)
1386
					)  
1387

    
1388
			INSERT INTO @TABLE_RETURN_07 
1389
			VALUES (@POS4,@POS3,@POS2,@POS1,@POS)  
1390

    
1391
			INSERT INTO @TABLE_RETURN_07 
1392
			VALUES (	CASE	WHEN @DATE4 <>'' THEN N'Đã chấp thuận '+ @DATE4 
1393
								ELSE '' 
1394
						END,
1395
						CASE	WHEN @DATE3 <>'' THEN N'Đã chấp thuận '+ @DATE3 
1396
								ELSE '' 
1397
						END,  
1398
						CASE	WHEN @DATE2 <>'' THEN N'Đã chấp thuận '+ @DATE2 
1399
								ELSE '' 
1400
						END,
1401
						CASE	WHEN @DATE1 <>'' THEN N'Đã chấp thuận '+ @DATE1 
1402
								ELSE '' 
1403
						END,
1404
						CASE	WHEN @DATE <>'' THEN N'Đã chấp thuận '+ @DATE 
1405
								ELSE '' 
1406
						END
1407
					)  
1408
		END  
1409
	END  
1410

    
1411
SELECT * FROM @TABLE_RETURN_01  
1412
SELECT * FROM @TABLE_RETURN_01_DT  
1413
SELECT * FROM @TABLE_RETURN_02  
1414
SELECT * FROM @TABLE_RETURN_02_DT  
1415
SELECT * FROM @TABLE_RETURN_03  
1416
SELECT * FROM @TABLE_RETURN_04  
1417
SELECT * FROM @TABLE_RETURN_06  
1418
SELECT * FROM @TABLE_RETURN_07  
1419
END